From 2375a94088d1ff7a080cee1673619b1e27652d6f Mon Sep 17 00:00:00 2001 From: yifan Date: Thu, 25 Mar 2021 14:49:05 +0800 Subject: [PATCH 1/6] unify log framework --- config/config.go | 2 +- config/config.toml.example | 2 +- go.mod | 3 +- go.sum | 2 + server/http_handler.go | 25 +-- server/http_handler_test.go | 11 +- tidb-server/main.go | 10 -- util/logutil/log.go | 262 ++++-------------------------- util/logutil/log_test.go | 167 ++----------------- util/logutil/slow_query_logger.go | 76 +++++++++ 10 files changed, 138 insertions(+), 422 deletions(-) create mode 100644 util/logutil/slow_query_logger.go diff --git a/config/config.go b/config/config.go index ae645526391eb..263736d113eaf 100644 --- a/config/config.go +++ b/config/config.go @@ -295,7 +295,7 @@ func (b *nullableBool) UnmarshalJSON(data []byte) error { type Log struct { // Log level. Level string `toml:"level" json:"level"` - // Log format. one of json, text, or console. + // Log format, one of json or text. Format string `toml:"format" json:"format"` // Disable automatic timestamps in output. Deprecated: use EnableTimestamp instead. DisableTimestamp nullableBool `toml:"disable-timestamp" json:"disable-timestamp"` diff --git a/config/config.toml.example b/config/config.toml.example index a2b55143c4f62..d10d887231cc0 100644 --- a/config/config.toml.example +++ b/config/config.toml.example @@ -130,7 +130,7 @@ enable-enum-length-limit = true # Log level: debug, info, warn, error, fatal. level = "info" -# Log format, one of json, text, console. +# Log format, one of json or text. format = "text" # Enable automatic timestamps in log output, if not set, it will be defaulted to true. diff --git a/go.mod b/go.mod index 501cfc3086ba4..465a9c2c1aefa 100644 --- a/go.mod +++ b/go.mod @@ -59,7 +59,7 @@ require ( github.com/prometheus/common v0.9.1 github.com/rivo/uniseg v0.2.0 // indirect github.com/shirou/gopsutil v3.21.2+incompatible - github.com/sirupsen/logrus v1.6.0 + github.com/sirupsen/logrus v1.6.0 // indirect github.com/soheilhy/cmux v0.1.4 github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2 github.com/tikv/pd v1.1.0-beta.0.20210323121136-78679e5e209d @@ -83,7 +83,6 @@ require ( golang.org/x/tools v0.1.0 google.golang.org/grpc v1.27.1 gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b // indirect - gopkg.in/natefinch/lumberjack.v2 v2.0.0 gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 // indirect honnef.co/go/tools v0.1.3 // indirect diff --git a/go.sum b/go.sum index 8c9f963f61de2..073dce621f61f 100644 --- a/go.sum +++ b/go.sum @@ -506,7 +506,9 @@ github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sasha-s/go-deadlock v0.2.0/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZqiDbRupzT10= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sergi/go-diff v1.0.1-0.20180205163309-da645544ed44 h1:tB9NOR21++IjLyVx3/PCPhWMwqGNCMQEH96A6dMZ/gc= github.com/sergi/go-diff v1.0.1-0.20180205163309-da645544ed44/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shirou/gopsutil v2.19.10+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil v3.21.2+incompatible h1:U+YvJfjCh6MslYlIAXvPtzhW3YZEtc9uncueUNpD/0A= diff --git a/server/http_handler.go b/server/http_handler.go index d2705d721e3c2..0f0b258895f5b 100644 --- a/server/http_handler.go +++ b/server/http_handler.go @@ -34,6 +34,7 @@ import ( "github.com/pingcap/failpoint" "github.com/pingcap/kvproto/pkg/kvrpcpb" "github.com/pingcap/kvproto/pkg/metapb" + "github.com/pingcap/log" "github.com/pingcap/parser/model" "github.com/pingcap/parser/terror" "github.com/pingcap/tidb/config" @@ -62,7 +63,6 @@ import ( "github.com/pingcap/tidb/util/gcutil" "github.com/pingcap/tidb/util/logutil" "github.com/pingcap/tidb/util/pdapi" - log "github.com/sirupsen/logrus" "go.uber.org/zap" ) @@ -701,13 +701,6 @@ func (h settingsHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { return } - l, err1 := log.ParseLevel(levelStr) - if err1 != nil { - writeError(w, err1) - return - } - log.SetLevel(l) - config.GetGlobalConfig().Log.Level = levelStr } if generalLog := req.Form.Get("tidb_general_log"); generalLog != "" { @@ -1180,7 +1173,7 @@ func (h ddlResignOwnerHandler) ServeHTTP(w http.ResponseWriter, req *http.Reques err := h.resignDDLOwner() if err != nil { - log.Error(err) + log.Error("failed to resign DDL owner", zap.Error(err)) writeError(w, err) return } @@ -1224,7 +1217,7 @@ func (h tableHandler) addScatterSchedule(startKey, endKey []byte, name string) e return err } if err := resp.Body.Close(); err != nil { - log.Error(err) + log.Error("failed to close response body", zap.Error(err)) } return nil } @@ -1244,7 +1237,7 @@ func (h tableHandler) deleteScatterSchedule(name string) error { return err } if err := resp.Body.Close(); err != nil { - log.Error(err) + log.Error("failed to close response body", zap.Error(err)) } return nil } @@ -1740,14 +1733,14 @@ func (h serverInfoHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { do, err := session.GetDomain(h.Store.(kv.Storage)) if err != nil { writeError(w, errors.New("create session error")) - log.Error(err) + log.Error("failed to get session domain", zap.Error(err)) return } info := serverInfo{} info.ServerInfo, err = infosync.GetServerInfo() if err != nil { writeError(w, err) - log.Error(err) + log.Error("failed to get server info", zap.Error(err)) return } info.IsOwner = do.DDL().OwnerManager().IsOwner() @@ -1770,14 +1763,14 @@ func (h allServerInfoHandler) ServeHTTP(w http.ResponseWriter, req *http.Request do, err := session.GetDomain(h.Store.(kv.Storage)) if err != nil { writeError(w, errors.New("create session error")) - log.Error(err) + log.Error("failed to get session domain", zap.Error(err)) return } ctx := context.Background() allServersInfo, err := infosync.GetAllServerInfo(ctx) if err != nil { writeError(w, errors.New("ddl server information not found")) - log.Error(err) + log.Error("failed to get all server info", zap.Error(err)) return } ctx, cancel := context.WithTimeout(ctx, 3*time.Second) @@ -1785,7 +1778,7 @@ func (h allServerInfoHandler) ServeHTTP(w http.ResponseWriter, req *http.Request cancel() if err != nil { writeError(w, errors.New("ddl server information not found")) - log.Error(err) + log.Error("failed to get owner id", zap.Error(err)) return } allVersionsMap := map[infosync.ServerVersionInfo]struct{}{} diff --git a/server/http_handler_test.go b/server/http_handler_test.go index 5e5850178742c..adec566ad8cf4 100644 --- a/server/http_handler_test.go +++ b/server/http_handler_test.go @@ -37,7 +37,7 @@ import ( . "github.com/pingcap/check" "github.com/pingcap/failpoint" "github.com/pingcap/kvproto/pkg/kvrpcpb" - zaplog "github.com/pingcap/log" + "github.com/pingcap/log" "github.com/pingcap/parser/model" "github.com/pingcap/parser/mysql" "github.com/pingcap/tidb/config" @@ -58,7 +58,6 @@ import ( "github.com/pingcap/tidb/util/codec" "github.com/pingcap/tidb/util/rowcodec" "github.com/pingcap/tidb/util/versioninfo" - log "github.com/sirupsen/logrus" "go.uber.org/zap" ) @@ -1149,8 +1148,7 @@ func (ts *HTTPHandlerTestSuite) TestPostSettings(c *C) { resp, err := ts.formStatus("/settings", form) c.Assert(err, IsNil) c.Assert(resp.StatusCode, Equals, http.StatusOK) - c.Assert(log.GetLevel(), Equals, log.ErrorLevel) - c.Assert(zaplog.GetLevel(), Equals, zap.ErrorLevel) + c.Assert(log.GetLevel(), Equals, zap.ErrorLevel) c.Assert(config.GetGlobalConfig().Log.Level, Equals, "error") c.Assert(variable.ProcessGeneralLog.Load(), IsTrue) val, err := variable.GetGlobalSystemVar(se.GetSessionVars(), variable.TiDBEnableAsyncCommit) @@ -1169,8 +1167,7 @@ func (ts *HTTPHandlerTestSuite) TestPostSettings(c *C) { c.Assert(err, IsNil) c.Assert(resp.StatusCode, Equals, http.StatusOK) c.Assert(variable.ProcessGeneralLog.Load(), IsFalse) - c.Assert(log.GetLevel(), Equals, log.FatalLevel) - c.Assert(zaplog.GetLevel(), Equals, zap.FatalLevel) + c.Assert(log.GetLevel(), Equals, zap.FatalLevel) c.Assert(config.GetGlobalConfig().Log.Level, Equals, "fatal") val, err = variable.GetGlobalSystemVar(se.GetSessionVars(), variable.TiDBEnableAsyncCommit) c.Assert(err, IsNil) @@ -1238,7 +1235,7 @@ func (ts *HTTPHandlerTestSuite) TestPprof(c *C) { } time.Sleep(time.Millisecond * 10) } - zaplog.Fatal("failed to get profile for %d retries in every 10 ms", zap.Int("retryTime", retryTime)) + log.Fatal("failed to get profile for %d retries in every 10 ms", zap.Int("retryTime", retryTime)) } func (ts *HTTPHandlerTestSuite) TestServerInfo(c *C) { diff --git a/tidb-server/main.go b/tidb-server/main.go index 9c4e55e42fe32..0c2751232a1c9 100644 --- a/tidb-server/main.go +++ b/tidb-server/main.go @@ -17,7 +17,6 @@ import ( "context" "flag" "fmt" - "io/ioutil" "os" "runtime" "strconv" @@ -68,7 +67,6 @@ import ( pd "github.com/tikv/pd/client" "go.uber.org/automaxprocs/maxprocs" "go.uber.org/zap" - "google.golang.org/grpc/grpclog" ) // Flag Names @@ -575,14 +573,6 @@ func setupLog() { err := logutil.InitZapLogger(cfg.Log.ToLogConfig()) terror.MustNil(err) - err = logutil.InitLogger(cfg.Log.ToLogConfig()) - terror.MustNil(err) - - if len(os.Getenv("GRPC_DEBUG")) > 0 { - grpclog.SetLoggerV2(grpclog.NewLoggerV2WithVerbosity(os.Stderr, os.Stderr, os.Stderr, 999)) - } else { - grpclog.SetLoggerV2(grpclog.NewLoggerV2(ioutil.Discard, ioutil.Discard, os.Stderr)) - } // trigger internal http(s) client init. util.InternalHTTPClient() } diff --git a/util/logutil/log.go b/util/logutil/log.go index 48088318b2d6b..f300d7620dda7 100644 --- a/util/logutil/log.go +++ b/util/logutil/log.go @@ -14,35 +14,26 @@ package logutil import ( - "bytes" "context" "fmt" "os" - "path/filepath" - "runtime" "runtime/trace" - "sort" - "strings" "time" + gzap "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap" "github.com/opentracing/opentracing-go" tlog "github.com/opentracing/opentracing-go/log" "github.com/pingcap/errors" - zaplog "github.com/pingcap/log" - tikvlog "github.com/pingcap/tidb/store/tikv/logutil" - log "github.com/sirupsen/logrus" + "github.com/pingcap/log" "go.uber.org/zap" "go.uber.org/zap/zapcore" - "gopkg.in/natefinch/lumberjack.v2" ) const ( - defaultLogTimeFormat = "2006/01/02 15:04:05.000" // DefaultLogMaxSize is the default size of log files. DefaultLogMaxSize = 300 // MB // DefaultLogFormat is the default format of the log. DefaultLogFormat = "text" - defaultLogLevel = log.InfoLevel // DefaultSlowThreshold is the default slow log threshold in millisecond. DefaultSlowThreshold = 300 // DefaultQueryLogMaxLen is the default max length of the query in the log. @@ -51,6 +42,8 @@ const ( DefaultRecordPlanInSlowLog = 1 // DefaultTiDBEnableSlowLog enables TiDB to log slow queries. DefaultTiDBEnableSlowLog = true + // GRPCLogDebugVerbosity enables max verbosity when debugging grpc code. + GRPCLogDebugVerbosity = 99 ) // EmptyFileLogConfig is an empty FileLogConfig. @@ -58,12 +51,12 @@ var EmptyFileLogConfig = FileLogConfig{} // FileLogConfig serializes file log related config in toml/json. type FileLogConfig struct { - zaplog.FileLogConfig + log.FileLogConfig } // NewFileLogConfig creates a FileLogConfig. func NewFileLogConfig(maxSize uint) FileLogConfig { - return FileLogConfig{FileLogConfig: zaplog.FileLogConfig{ + return FileLogConfig{FileLogConfig: log.FileLogConfig{ MaxSize: int(maxSize), }, } @@ -71,16 +64,16 @@ func NewFileLogConfig(maxSize uint) FileLogConfig { // LogConfig serializes log related config in toml/json. type LogConfig struct { - zaplog.Config + log.Config // SlowQueryFile filename, default to File log config on empty. SlowQueryFile string } // NewLogConfig creates a LogConfig. -func NewLogConfig(level, format, slowQueryFile string, fileCfg FileLogConfig, disableTimestamp bool, opts ...func(*zaplog.Config)) *LogConfig { +func NewLogConfig(level, format, slowQueryFile string, fileCfg FileLogConfig, disableTimestamp bool, opts ...func(*log.Config)) *LogConfig { c := &LogConfig{ - Config: zaplog.Config{ + Config: log.Config{ Level: level, Format: format, DisableTimestamp: disableTimestamp, @@ -94,102 +87,6 @@ func NewLogConfig(level, format, slowQueryFile string, fileCfg FileLogConfig, di return c } -// isSKippedPackageName tests wether path name is on log library calling stack. -func isSkippedPackageName(name string) bool { - return strings.Contains(name, "github.com/sirupsen/logrus") || - strings.Contains(name, "github.com/coreos/pkg/capnslog") -} - -// modifyHook injects file name and line pos into log entry. -type contextHook struct{} - -// Fire implements logrus.Hook interface -// https://github.com/sirupsen/logrus/issues/63 -func (hook *contextHook) Fire(entry *log.Entry) error { - pc := make([]uintptr, 4) - cnt := runtime.Callers(8, pc) - - for i := 0; i < cnt; i++ { - fu := runtime.FuncForPC(pc[i] - 1) - name := fu.Name() - if !isSkippedPackageName(name) { - file, line := fu.FileLine(pc[i] - 1) - entry.Data["file"] = filepath.Base(file) - entry.Data["line"] = line - break - } - } - return nil -} - -// Levels implements logrus.Hook interface. -func (hook *contextHook) Levels() []log.Level { - return log.AllLevels -} - -func stringToLogLevel(level string) log.Level { - switch strings.ToLower(level) { - case "fatal": - return log.FatalLevel - case "error": - return log.ErrorLevel - case "warn", "warning": - return log.WarnLevel - case "debug": - return log.DebugLevel - case "info": - return log.InfoLevel - } - return defaultLogLevel -} - -// textFormatter is for compatibility with ngaut/log -type textFormatter struct { - DisableTimestamp bool - EnableEntryOrder bool -} - -// Format implements logrus.Formatter -func (f *textFormatter) Format(entry *log.Entry) ([]byte, error) { - var b *bytes.Buffer - if entry.Buffer != nil { - b = entry.Buffer - } else { - b = &bytes.Buffer{} - } - - if !f.DisableTimestamp { - fmt.Fprintf(b, "%s ", entry.Time.Format(defaultLogTimeFormat)) - } - if file, ok := entry.Data["file"]; ok { - fmt.Fprintf(b, "%s:%v:", file, entry.Data["line"]) - } - fmt.Fprintf(b, " [%s] %s", entry.Level.String(), entry.Message) - - if f.EnableEntryOrder { - keys := make([]string, 0, len(entry.Data)) - for k := range entry.Data { - if k != "file" && k != "line" { - keys = append(keys, k) - } - } - sort.Strings(keys) - for _, k := range keys { - fmt.Fprintf(b, " %v=%v", k, entry.Data[k]) - } - } else { - for k, v := range entry.Data { - if k != "file" && k != "line" { - fmt.Fprintf(b, " %v=%v", k, v) - } - } - } - - b.WriteByte('\n') - - return b.Bytes(), nil -} - const ( // SlowLogTimeFormat is the time format for slow log. SlowLogTimeFormat = time.RFC3339Nano @@ -197,125 +94,34 @@ const ( OldSlowLogTimeFormat = "2006-01-02-15:04:05.999999999 -0700" ) -type slowLogFormatter struct{} - -func (f *slowLogFormatter) Format(entry *log.Entry) ([]byte, error) { - var b *bytes.Buffer - if entry.Buffer != nil { - b = entry.Buffer - } else { - b = &bytes.Buffer{} - } +// SlowQueryLogger is used to log slow query, InitZapLogger will modify it according to config file. +var SlowQueryLogger = log.L() - fmt.Fprintf(b, "# Time: %s\n", entry.Time.Format(SlowLogTimeFormat)) - fmt.Fprintf(b, "%s\n", entry.Message) - return b.Bytes(), nil -} - -func stringToLogFormatter(format string, disableTimestamp bool) log.Formatter { - switch strings.ToLower(format) { - case "text": - return &textFormatter{ - DisableTimestamp: disableTimestamp, - } - default: - return &textFormatter{} - } -} - -// initFileLog initializes file based logging options. -func initFileLog(cfg *zaplog.FileLogConfig, logger *log.Logger) error { - if st, err := os.Stat(cfg.Filename); err == nil { - if st.IsDir() { - return errors.New("can't use directory as log file name") - } - } - if cfg.MaxSize == 0 { - cfg.MaxSize = DefaultLogMaxSize - } - - // use lumberjack to logrotate - output := &lumberjack.Logger{ - Filename: cfg.Filename, - MaxSize: cfg.MaxSize, - MaxBackups: cfg.MaxBackups, - MaxAge: cfg.MaxDays, - LocalTime: true, - } - - if logger == nil { - log.SetOutput(output) - } else { - logger.Out = output - } - return nil -} - -// SlowQueryLogger is used to log slow query, InitLogger will modify it according to config file. -var SlowQueryLogger = log.StandardLogger() - -// SlowQueryZapLogger is used to log slow query, InitZapLogger will modify it according to config file. -var SlowQueryZapLogger = zaplog.L() - -// InitLogger initializes PD's logger. +// InitLogger delegates to InitZapLogger. Keeping it here for historical reason. func InitLogger(cfg *LogConfig) error { - log.SetLevel(stringToLogLevel(cfg.Level)) - log.AddHook(&contextHook{}) - - if cfg.Format == "" { - cfg.Format = DefaultLogFormat - } - formatter := stringToLogFormatter(cfg.Format, cfg.DisableTimestamp) - log.SetFormatter(formatter) - - if len(cfg.File.Filename) != 0 { - if err := initFileLog(&cfg.File, nil); err != nil { - return errors.Trace(err) - } - } - - if len(cfg.SlowQueryFile) != 0 { - SlowQueryLogger = log.New() - tmp := cfg.File - tmp.Filename = cfg.SlowQueryFile - if err := initFileLog(&tmp, SlowQueryLogger); err != nil { - return errors.Trace(err) - } - SlowQueryLogger.Formatter = &slowLogFormatter{} - } - - // Setup log key for tikv client. - tikvlog.CtxLogKey = ctxLogKey - - return nil + return InitZapLogger(cfg) } // InitZapLogger initializes a zap logger with cfg. func InitZapLogger(cfg *LogConfig) error { - gl, props, err := zaplog.InitLogger(&cfg.Config, zap.AddStacktrace(zapcore.FatalLevel)) + gl, props, err := log.InitLogger(&cfg.Config, zap.AddStacktrace(zapcore.FatalLevel)) if err != nil { return errors.Trace(err) } - zaplog.ReplaceGlobals(gl, props) - - if len(cfg.SlowQueryFile) != 0 { - sqfCfg := zaplog.FileLogConfig{ - MaxSize: cfg.File.MaxSize, - Filename: cfg.SlowQueryFile, - } - sqCfg := &zaplog.Config{ - Level: cfg.Level, - Format: cfg.Format, - DisableTimestamp: cfg.DisableTimestamp, - File: sqfCfg, - } - sqLogger, _, err := zaplog.InitLogger(sqCfg) - if err != nil { - return errors.Trace(err) - } - SlowQueryZapLogger = sqLogger + log.ReplaceGlobals(gl, props) + + // Init dedicated slow query logger. + SlowQueryLogger, err = newSlowQueryLogger(cfg) + if err != nil { + return errors.Trace(err) + } + + // init logger for grpc debugging + if len(os.Getenv("GRPC_DEBUG")) > 0 { + // more information for verbosity: https://github.com/google/glog#verbose-logging + gzap.ReplaceGrpcLoggerV2WithVerbosity(gl, GRPCLogDebugVerbosity) } else { - SlowQueryZapLogger = gl + gzap.ReplaceGrpcLoggerV2(gl) } return nil @@ -327,7 +133,7 @@ func SetLevel(level string) error { if err := l.UnmarshalText([]byte(level)); err != nil { return errors.Trace(err) } - zaplog.SetLevel(l.Level()) + log.SetLevel(l.Level()) return nil } @@ -341,12 +147,12 @@ func Logger(ctx context.Context) *zap.Logger { if ctxlogger, ok := ctx.Value(ctxLogKey).(*zap.Logger); ok { return ctxlogger } - return zaplog.L() + return log.L() } // BgLogger is alias of `logutil.BgLogger()` func BgLogger() *zap.Logger { - return zaplog.L() + return log.L() } // WithConnID attaches connId to context. @@ -355,7 +161,7 @@ func WithConnID(ctx context.Context, connID uint64) context.Context { if ctxLogger, ok := ctx.Value(ctxLogKey).(*zap.Logger); ok { logger = ctxLogger } else { - logger = zaplog.L() + logger = log.L() } return context.WithValue(ctx, ctxLogKey, logger.With(zap.Uint64("conn", connID))) } @@ -366,7 +172,7 @@ func WithTraceLogger(ctx context.Context, connID uint64) context.Context { if ctxLogger, ok := ctx.Value(ctxLogKey).(*zap.Logger); ok { logger = ctxLogger } else { - logger = zaplog.L() + logger = log.L() } return context.WithValue(ctx, ctxLogKey, wrapTraceLogger(ctx, connID, logger)) } @@ -374,7 +180,7 @@ func WithTraceLogger(ctx context.Context, connID uint64) context.Context { func wrapTraceLogger(ctx context.Context, connID uint64, logger *zap.Logger) *zap.Logger { return logger.WithOptions(zap.WrapCore(func(core zapcore.Core) zapcore.Core { tl := &traceLog{ctx: ctx} - traceCore := zaplog.NewTextCore(zaplog.NewTextEncoder(&zaplog.Config{}), tl, tl). + traceCore := log.NewTextCore(log.NewTextEncoder(&log.Config{}), tl, tl). With([]zapcore.Field{zap.Uint64("conn", connID)}) return zapcore.NewTee(traceCore, core) })) @@ -403,7 +209,7 @@ func WithKeyValue(ctx context.Context, key, value string) context.Context { if ctxLogger, ok := ctx.Value(ctxLogKey).(*zap.Logger); ok { logger = ctxLogger } else { - logger = zaplog.L() + logger = log.L() } return context.WithValue(ctx, ctxLogKey, logger.With(zap.String(key, value))) } diff --git a/util/logutil/log_test.go b/util/logutil/log_test.go index 4961aa28e98f1..ecc9fb9d03679 100644 --- a/util/logutil/log_test.go +++ b/util/logutil/log_test.go @@ -17,7 +17,6 @@ import ( "bufio" "bytes" "context" - "fmt" "io" "os" "runtime" @@ -25,19 +24,15 @@ import ( "testing" . "github.com/pingcap/check" - zaplog "github.com/pingcap/log" - log "github.com/sirupsen/logrus" + "github.com/pingcap/log" "go.uber.org/zap" ) const ( - logPattern = `\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d\.\d\d\d ([\w_%!$@.,+~-]+|\\.)+:\d+: \[(fatal|error|warning|info|debug)\] .*?\n` // zapLogPatern is used to match the zap log format, such as the following log: - // [2019/02/13 15:56:05.385 +08:00] [INFO] [log_test.go:167] ["info message"] ["str key"=val] ["int key"=123] - zapLogPattern = `\[\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d.\d\d\d\ (\+|-)\d\d:\d\d\] \[(FATAL|ERROR|WARN|INFO|DEBUG)\] \[([\w_%!$@.,+~-]+|\\.)+:\d+\] \[.*\] (\[.*=.*\]).*\n` - // [2019/02/13 15:56:05.385 +08:00] [INFO] [log_test.go:167] ["info message"] ["str key"=val] ["int key"=123] + // [2019/02/13 15:56:05.385 +08:00] [INFO] [log_test.go:167] ["info message"] [conn=conn1] ["str key"=val] ["int key"=123] zapLogWithConnIDPattern = `\[\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d.\d\d\d\ (\+|-)\d\d:\d\d\] \[(FATAL|ERROR|WARN|INFO|DEBUG)\] \[([\w_%!$@.,+~-]+|\\.)+:\d+\] \[.*\] \[conn=.*\] (\[.*=.*\]).*\n` - // [2019/02/13 15:56:05.385 +08:00] [INFO] [log_test.go:167] ["info message"] ["str key"=val] ["int key"=123] + // [2019/02/13 15:56:05.385 +08:00] [INFO] [log_test.go:167] ["info message"] [ctxKey=ctxKey1] ["str key"=val] ["int key"=123] zapLogWithKeyValPattern = `\[\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d.\d\d\d\ (\+|-)\d\d:\d\d\] \[(FATAL|ERROR|WARN|INFO|DEBUG)\] \[([\w_%!$@.,+~-]+|\\.)+:\d+\] \[.*\] \[ctxKey=.*\] (\[.*=.*\]).*\n` ) @@ -53,156 +48,14 @@ type testLogSuite struct { buf *bytes.Buffer } -func (s *testLogSuite) SetUpSuite(c *C) { +func (s *testLogSuite) SetUpSuite(_ *C) { s.buf = &bytes.Buffer{} } -func (s *testLogSuite) SetUpTest(c *C) { +func (s *testLogSuite) SetUpTest(_ *C) { s.buf = &bytes.Buffer{} } -func (s *testLogSuite) TestStringToLogLevel(c *C) { - c.Assert(stringToLogLevel("fatal"), Equals, log.FatalLevel) - c.Assert(stringToLogLevel("ERROR"), Equals, log.ErrorLevel) - c.Assert(stringToLogLevel("warn"), Equals, log.WarnLevel) - c.Assert(stringToLogLevel("warning"), Equals, log.WarnLevel) - c.Assert(stringToLogLevel("debug"), Equals, log.DebugLevel) - c.Assert(stringToLogLevel("info"), Equals, log.InfoLevel) - c.Assert(stringToLogLevel("whatever"), Equals, log.InfoLevel) -} - -// TestLogging assure log format and log redirection works. -func (s *testLogSuite) TestLogging(c *C) { - conf := NewLogConfig("warn", DefaultLogFormat, "", NewFileLogConfig(0), false) - conf.File.Filename = "log_file" - c.Assert(InitLogger(conf), IsNil) - - log.SetOutput(s.buf) - - log.Infof("[this message should not be sent to buf]") - c.Assert(s.buf.Len(), Equals, 0) - - log.Warningf("[this message should be sent to buf]") - entry, err := s.buf.ReadString('\n') - c.Assert(err, IsNil) - c.Assert(entry, Matches, logPattern) - - log.Warnf("this message comes from logrus") - entry, err = s.buf.ReadString('\n') - c.Assert(err, IsNil) - c.Assert(entry, Matches, logPattern) - c.Assert(strings.Contains(entry, "log_test.go"), IsTrue) -} - -func (s *testLogSuite) TestSlowQueryLogger(c *C) { - fileName := "slow_query" - os.Remove(fileName) - conf := NewLogConfig("info", DefaultLogFormat, fileName, NewFileLogConfig(DefaultLogMaxSize), false) - c.Assert(conf.File.MaxSize, Equals, DefaultLogMaxSize) - err := InitLogger(conf) - c.Assert(err, IsNil) - defer os.Remove(fileName) - - SlowQueryLogger.Debug("debug message") - SlowQueryLogger.Info("info message") - SlowQueryLogger.Warn("warn message") - SlowQueryLogger.Error("error message") - c.Assert(s.buf.Len(), Equals, 0) - - f, err := os.Open(fileName) - c.Assert(err, IsNil) - defer f.Close() - - r := bufio.NewReader(f) - for { - var str string - str, err = r.ReadString('\n') - if err != nil { - break - } - if strings.HasPrefix(str, "# ") { - c.Assert(str, Matches, `# Time: .*?\n`) - } else { - c.Assert(str, Matches, `.*? message\n`) - } - } - c.Assert(err, Equals, io.EOF) -} - -func (s *testLogSuite) TestLoggerKeepOrder(c *C) { - conf := NewLogConfig("warn", DefaultLogFormat, "", EmptyFileLogConfig, true) - c.Assert(InitLogger(conf), IsNil) - logger := log.StandardLogger() - ft, ok := logger.Formatter.(*textFormatter) - c.Assert(ok, IsTrue) - ft.EnableEntryOrder = true - logger.Out = s.buf - logEntry := log.NewEntry(logger) - logEntry.Data = log.Fields{ - "connectionId": 1, - "costTime": "1", - "database": "test", - "sql": "select 1", - "txnStartTS": 1, - } - - _, _, line, _ := runtime.Caller(0) - logEntry.WithField("type", "slow-query").WithField("succ", true).Warnf("slow-query") - expectMsg := fmt.Sprintf("log_test.go:%v: [warning] slow-query connectionId=1 costTime=1 database=test sql=select 1 succ=true txnStartTS=1 type=slow-query\n", line+1) - c.Assert(s.buf.String(), Equals, expectMsg) - - s.buf.Reset() - logEntry.Data = log.Fields{ - "a": "a", - "d": "d", - "e": "e", - "b": "b", - "f": "f", - "c": "c", - } - - _, _, line, _ = runtime.Caller(0) - logEntry.Warnf("slow-query") - expectMsg = fmt.Sprintf("log_test.go:%v: [warning] slow-query a=a b=b c=c d=d e=e f=f\n", line+1) - c.Assert(s.buf.String(), Equals, expectMsg) -} - -func (s *testLogSuite) TestSlowQueryZapLogger(c *C) { - if runtime.GOOS == "windows" { - // Skip this test on windows for two reasons: - // 1. The pattern match fails somehow. It seems windows treat \n as slash and character n. - // 2. Remove file doesn't work as long as the log instance hold the file. - c.Skip("skip on windows") - } - - fileName := "slow_query" - conf := NewLogConfig("info", DefaultLogFormat, fileName, EmptyFileLogConfig, false) - err := InitZapLogger(conf) - c.Assert(err, IsNil) - defer os.Remove(fileName) - - SlowQueryZapLogger.Debug("debug message", zap.String("str key", "val")) - SlowQueryZapLogger.Info("info message", zap.String("str key", "val")) - SlowQueryZapLogger.Warn("warn", zap.Int("int key", 123)) - SlowQueryZapLogger.Error("error message", zap.Bool("bool key", true)) - - f, err := os.Open(fileName) - c.Assert(err, IsNil) - defer f.Close() - - r := bufio.NewReader(f) - for { - var str string - str, err = r.ReadString('\n') - if err != nil { - break - } - c.Assert(str, Matches, zapLogPattern) - } - c.Assert(err, Equals, io.EOF) - -} - func (s *testLogSuite) TestZapLoggerWithKeys(c *C) { if runtime.GOOS == "windows" { // Skip this test on windows for two reason: @@ -211,7 +64,7 @@ func (s *testLogSuite) TestZapLoggerWithKeys(c *C) { c.Skip("skip on windows") } - fileCfg := FileLogConfig{zaplog.FileLogConfig{Filename: "zap_log", MaxSize: 4096}} + fileCfg := FileLogConfig{log.FileLogConfig{Filename: "zap_log", MaxSize: 4096}} conf := NewLogConfig("info", DefaultLogFormat, "", fileCfg, false) err := InitZapLogger(conf) c.Assert(err, IsNil) @@ -258,14 +111,14 @@ func (s *testLogSuite) TestSetLevel(c *C) { err := InitZapLogger(conf) c.Assert(err, IsNil) - c.Assert(zaplog.GetLevel(), Equals, zap.InfoLevel) + c.Assert(log.GetLevel(), Equals, zap.InfoLevel) err = SetLevel("warn") c.Assert(err, IsNil) - c.Assert(zaplog.GetLevel(), Equals, zap.WarnLevel) + c.Assert(log.GetLevel(), Equals, zap.WarnLevel) err = SetLevel("Error") c.Assert(err, IsNil) - c.Assert(zaplog.GetLevel(), Equals, zap.ErrorLevel) + c.Assert(log.GetLevel(), Equals, zap.ErrorLevel) err = SetLevel("DEBUG") c.Assert(err, IsNil) - c.Assert(zaplog.GetLevel(), Equals, zap.DebugLevel) + c.Assert(log.GetLevel(), Equals, zap.DebugLevel) } diff --git a/util/logutil/slow_query_logger.go b/util/logutil/slow_query_logger.go new file mode 100644 index 0000000000000..ca32dd98fb870 --- /dev/null +++ b/util/logutil/slow_query_logger.go @@ -0,0 +1,76 @@ +package logutil + +import ( + "fmt" + "time" + + "github.com/pingcap/errors" + "github.com/pingcap/log" + "go.uber.org/zap" + "go.uber.org/zap/buffer" + "go.uber.org/zap/zapcore" +) + +var _pool = buffer.NewPool() + +func newSlowQueryLogger(cfg *LogConfig) (*zap.Logger, error) { + + // reuse and override slow query log file config + // if slow query log filename is empty, slow query log will behave the same as global log + sqConfig := &cfg.Config + if len(cfg.SlowQueryFile) != 0 { + sqConfig.File = log.FileLogConfig{ + MaxSize: cfg.File.MaxSize, + Filename: cfg.SlowQueryFile, + } + } + + // create the slow query logger + sqLogger, prop, err := log.InitLogger(sqConfig) + if err != nil { + return nil, errors.Trace(err) + } + + // replace 2018-12-19-unified-log-format text encoder with slow log encoder + sqLogger = sqLogger.WithOptions(zap.WrapCore(func(core zapcore.Core) zapcore.Core { + return log.NewTextCore(&slowLogEncoder{}, prop.Syncer, prop.Level) + })) + + return sqLogger, nil +} + +type slowLogEncoder struct{} + +func (e *slowLogEncoder) EncodeEntry(entry zapcore.Entry, _ []zapcore.Field) (*buffer.Buffer, error) { + b := _pool.Get() + fmt.Fprintf(b, "# Time: %s\n", entry.Time.Format(time.RFC3339Nano)) + fmt.Fprintf(b, "%s\n", entry.Message) + return b, nil +} + +func (e *slowLogEncoder) Clone() zapcore.Encoder { return e } +func (e *slowLogEncoder) AddArray(string, zapcore.ArrayMarshaler) error { return nil } +func (e *slowLogEncoder) AddObject(string, zapcore.ObjectMarshaler) error { return nil } +func (e *slowLogEncoder) AddBinary(string, []byte) {} +func (e *slowLogEncoder) AddByteString(string, []byte) {} +func (e *slowLogEncoder) AddBool(string, bool) {} +func (e *slowLogEncoder) AddComplex128(string, complex128) {} +func (e *slowLogEncoder) AddComplex64(string, complex64) {} +func (e *slowLogEncoder) AddDuration(string, time.Duration) {} +func (e *slowLogEncoder) AddFloat64(string, float64) {} +func (e *slowLogEncoder) AddFloat32(string, float32) {} +func (e *slowLogEncoder) AddInt(string, int) {} +func (e *slowLogEncoder) AddInt64(string, int64) {} +func (e *slowLogEncoder) AddInt32(string, int32) {} +func (e *slowLogEncoder) AddInt16(string, int16) {} +func (e *slowLogEncoder) AddInt8(string, int8) {} +func (e *slowLogEncoder) AddString(string, string) {} +func (e *slowLogEncoder) AddTime(string, time.Time) {} +func (e *slowLogEncoder) AddUint(string, uint) {} +func (e *slowLogEncoder) AddUint64(string, uint64) {} +func (e *slowLogEncoder) AddUint32(string, uint32) {} +func (e *slowLogEncoder) AddUint16(string, uint16) {} +func (e *slowLogEncoder) AddUint8(string, uint8) {} +func (e *slowLogEncoder) AddUintptr(string, uintptr) {} +func (e *slowLogEncoder) AddReflected(string, interface{}) error { return nil } +func (e *slowLogEncoder) OpenNamespace(string) {} From 9df32c5ac509e65dccdacc76729008f98d555bcb Mon Sep 17 00:00:00 2001 From: yifan Date: Thu, 25 Mar 2021 15:20:28 +0800 Subject: [PATCH 2/6] fix typo in comments --- util/logutil/log.go | 2 +- util/logutil/slow_query_logger.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/util/logutil/log.go b/util/logutil/log.go index f300d7620dda7..b62484658495f 100644 --- a/util/logutil/log.go +++ b/util/logutil/log.go @@ -110,7 +110,7 @@ func InitZapLogger(cfg *LogConfig) error { } log.ReplaceGlobals(gl, props) - // Init dedicated slow query logger. + // init dedicated logger for slow query log SlowQueryLogger, err = newSlowQueryLogger(cfg) if err != nil { return errors.Trace(err) diff --git a/util/logutil/slow_query_logger.go b/util/logutil/slow_query_logger.go index ca32dd98fb870..2d624613b46fa 100644 --- a/util/logutil/slow_query_logger.go +++ b/util/logutil/slow_query_logger.go @@ -15,7 +15,7 @@ var _pool = buffer.NewPool() func newSlowQueryLogger(cfg *LogConfig) (*zap.Logger, error) { - // reuse and override slow query log file config + // reuse global config and override slow query log file // if slow query log filename is empty, slow query log will behave the same as global log sqConfig := &cfg.Config if len(cfg.SlowQueryFile) != 0 { From 154ed6f744c6a5653d5bfe4c2d18e0ce3ffa676e Mon Sep 17 00:00:00 2001 From: yifan Date: Fri, 9 Apr 2021 15:12:59 +0800 Subject: [PATCH 3/6] fix comments --- util/logutil/slow_query_logger.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/logutil/slow_query_logger.go b/util/logutil/slow_query_logger.go index 2d624613b46fa..3910b6ecd1192 100644 --- a/util/logutil/slow_query_logger.go +++ b/util/logutil/slow_query_logger.go @@ -43,7 +43,7 @@ type slowLogEncoder struct{} func (e *slowLogEncoder) EncodeEntry(entry zapcore.Entry, _ []zapcore.Field) (*buffer.Buffer, error) { b := _pool.Get() - fmt.Fprintf(b, "# Time: %s\n", entry.Time.Format(time.RFC3339Nano)) + fmt.Fprintf(b, "# Time: %s\n", entry.Time.Format(SlowLogTimeFormat)) fmt.Fprintf(b, "%s\n", entry.Message) return b, nil } From 70f2a535e0d8fa061cc8dc48e5e6f79cca9ce75a Mon Sep 17 00:00:00 2001 From: yifan Date: Mon, 12 Apr 2021 15:33:53 +0800 Subject: [PATCH 4/6] an proposal in en --- docs/design/2021-04-12-unify-log-library.md | 122 ++++++++++++++++++++ docs/design/imgs/tidb-log-dependency.png | Bin 0 -> 128688 bytes 2 files changed, 122 insertions(+) create mode 100644 docs/design/2021-04-12-unify-log-library.md create mode 100644 docs/design/imgs/tidb-log-dependency.png diff --git a/docs/design/2021-04-12-unify-log-library.md b/docs/design/2021-04-12-unify-log-library.md new file mode 100644 index 0000000000000..c5c4633c5a40a --- /dev/null +++ b/docs/design/2021-04-12-unify-log-library.md @@ -0,0 +1,122 @@ +# Proposal: Unifying Log Library + +- Author(s): [Yifan Xu](https://github.com/SabaPing) +- Last updated: Apr 12, 2021 +- Discussion at: N/A + +## Motivation or Background + +Tidb as a distributed system can be divided into several different components, such as tikv, pd, tidb, tiflash, etc. Each component hits a different log. Except for slow query logs, all other logs must satisfy the unified-log-format rfc standard. +However, during practice, it was found that the format of logs is confusing, as shown in the following four points. + +- There are fewer logging configuration instructions in the documentation. The future needs to write clearly what logs each component will hit, and what the format of the logs are. +- The configured logging parameters do not match the runtime logging, e.g. tidb_stderr is configured with text format but the logging is in json format. +- The logs of some components do not meet the unified-log-format rfc standard, e.g. tiflash_cluster_manager. +- Duplicate logs, e.g. pd_stderr will hit both text and json logs with duplicate content (but with a few subtle differences in timestamps). + +## Logging code for each component + +### Pingcap/log + +First, the address: [pingcap/log (github.com)](https://github.com/pingcap/log). + +As a common logging library for pingcap golang, it does the following things: + +- Provides the standard config schema +- provides a factory method for creating log handlers +- hard code the log format according to rfcs/2018-12-19-unified-log-format.md at master - tikv/rfcs (github.com) +- encapsulates the logic of the rolling file +- Provides global log handler and related methods for package dimension + +Pingcap/log has a strong limitation -- it cannot customize the encoder for the text format; this problem has been fixed by the big guys, see [Feature/register zap encoder by 9547 - Pull Request #14 - pingcap/log ( github.com)](https://github.com/pingcap/log/pull/14). + +When PD and TiDB-operator were using pingcap/log, there was no custom encoder function yet, so they implemented one by themselves respectively, but accidentally wrote out a circular dependency. This problem is also fixed by a big guys, see [logutil: replace etcd.defaultlogger with pingcap's text encoder by 9547 - Pull Request #3480 - tikv/pd (github.com)](https://github.com/tikv/pd/pull/3480), for details. Same big guy as above. + +### TiDB + +Log library dependencies: +![tidb-log-dependency](./imgs/tidb-log-dependency.png) + +For historical reasons, TiDB has two third-party logging libraries -- logrus and pingcap/log, with pingcap/log wrapping another layer on top of zap. + +TiDB's logs can be divided by business into two types: slow query logs and remaining other logs. As mentioned above, the two types of logs are typed through two different logging repositories, which results in separate configurations for the two types of logs and requires writing additional configuration conversion code. + +TiDB-specific logging logic -- such as logger initialization, logger configuration, etc. -- is written inside util/logutil/log.go. Note this file, which is one of the main culprits of circular dependencies. The following briefly describes the key logic in util/logutil/log.go -- the two init methods and the four log handlers. + +#### Logrus + +The init method of Logrus -- func InitLogger(cfg *LogConfig) error -- may initialize two logrus handlers. + +First, there is necessarily the standard log handler (package level handler) of logrus. initLogger first initializes the standard logger according to the configuration. + +```go +func InitLogger(cfg *LogConfig) error { + log.SetLevel(stringToLogLevel(cfg.Level)) + log.AddHook(&contextHook{}) + + if cfg.Format == "" { + cfg.Format = DefaultLogFormat + } + formatter := stringToLogFormatter(cfg.Format, cfg.DisableTimestamp) + log.SetFormatter(formatter) + + if len(cfg.File.Filename) != 0 { + if err := initFileLog(&cfg.File, nil); err != nil { + return errors.Trace(err) + } + } + +// The rest is omitted. +``` + +Then, determine whether the configuration has enabled slow query log, and if so, create a log handler specific to slow query. + +```go +if len(cfg.SlowQueryFile) != 0 { + SlowQueryLogger = log.New() + tmp := cfg.File + tmp.Filename = cfg.SlowQueryFile + if err := initFileLog(&tmp, SlowQueryLogger); err != nil { + return errors.Trace(err) + } + SlowQueryLogger.Formatter = &slowLogFormatter{} +} +``` + +Regarding where these two handlers are used. + +- Some historical legacy code, such as cmd/importer/parser.go, which uses the standard logger by logrus. +- Slow query log all uses the slow query log handler created by logrus, code in executor/adapter.go. + +#### Pingcap/log (Zap) + +Pingcap/log is a wrapper around zap, and as mentioned below the two terms are equivalently interchangeable. + +Similar to logrus, the init method of zap -- func InitZapLogger(cfg *LogConfig) error -- may initialize two zap handlers. + +- The global zap handler, the default log handler for the entire repo, through which the vast majority of logs are typed. +- Slow query zap handler, which is only initialized and not used. + InitZapLogger's logic is very similar to logrus' above, so I won't repeat it here. + +#### GRPC Logger + +I almost forgot that there is a fish in the net, which is not in util/logutil/log.go. In main.go there is a bunch of grpc logger initialization code. + +```go +if len(os.Getenv("GRPC_DEBUG")) > 0 { + grpclog.SetLoggerV2(grpclog.NewLoggerV2WithVerbosity(os.Stderr, os.Stderr, os.Stderr, 999)) +} else { + grpclog.SetLoggerV2(grpclog.NewLoggerV2(ioutil.Discard, ioutil.Discard, os.Stderr)) +} +``` + +The NewLoggerV2 method creates a go native logger handler and is only used in grpc. + +## What to do? + +There must be something wrong with the engineering of these codes above, and they must be changed, but the cost of changing them is not small. + +Principle: For long-term consideration, you can't 💩 on 💩. The speed of output can be sacrificed in time if necessary. + +1. Modify tidb to unify the use of pingcap/log log libraries. +2. Then modify other components, such as br, pd, etc. diff --git a/docs/design/imgs/tidb-log-dependency.png b/docs/design/imgs/tidb-log-dependency.png new file mode 100644 index 0000000000000000000000000000000000000000..381db14954147c7bc2d33e2d505f2a921256d0df GIT binary patch literal 128688 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�lX61JvEC+91=wcLeRBEz z*t?MnlU5&*X^e^Ni7xGF2t0z;7~j(i4n3N)@G%(11H!DSfsB$ySZ#|K7jvDbqUX8m zV#O}N&51_|^sd#AYqbrhOy`QkEY{MEOf`{RdHBzb*_bywOXZcA+xp4fLjs(Se!xyS zz*GHz_Vc|`ve-D);%xE9^^muH$19GM!3g{j2AuCH*GaStUGnnS6e0tA+)-0^I2AwW zX;gxu-Qmt8fkdNFf^mS1M#6pU4uJ*U9iG!}zZ=iJ(s$mb%O;e}%b>WCZGS7#!uhP2 zDDYq%&)7{AhxF7ZqT||zZr*Kf1`HSu6c~pc5nUu&cf7D6zo}^F%2XmwDJw&Ut8xgM zqzc8Rgl=nSHmBNL0?&O{@|&H~*jy_r9d{ro2UOfkn#l@K8xCeX!76_#i%l8I08i(u zwbxA38D64iQQFp%!jo<_%R<@+SXtTWh8ba|%!Fbn>C2C;Vp+@Gq=16#aj@>)#sMc) zPJ4g|TsaQ5e{5%Yc71=F_6vcJ6CfV{b*HUsqAr9{aZu(&; z1=#xhs@290Em0ORrOnNI@klPvsL8Xp^$VAFupK0)krlZ+r8D^du=nNhP`_W_Sz07i zLJ?XlA(TSdqe8Z_W>>cC+4n6)5wd5`zAxDsW|SgiH^x56G8p?Zm@z!pjJof-f6wcF zzJEWj?;m*8@L8_wTxWTo_c=$=mBQJt$b~OA(Jptj6Ro$C8td=KC|9Q#j>eVJHv?+? z_#Mb*O=Yn`Vz-?p{+Xm2`c?#-0yKV_c&~9`6adEiJ^HT}@$q=#-ogocTStQFQOn63 zd;hVlo#zb3**Ba+g)gekCE~%o;O+U-Y5K2f?KYPAVR|^h&(~FC?6tbZGR#%nyWrLE zl~XBZ2tJOYEaPO6y5i#lU5HL+ue)f?Uf&tTa}wsoJzAlVC!@Dqb)zoIn0$gTZLHRn z#6(o%HhP>5Ux|2Q+wyHjHYSRxm}(3nHnNL78Po^IY<{xsG;W&u<@%IK;w!G66Oa>- zJk`KYcVCdN<hy4-A`$-Y39cYet8+LYt1b{C4?}BQ^>7bSvzOmcLc5PE^ z6?Gj8;`qGyJOE_{BnCj)%q4HsHcfF6mZ?Fk*-f^}1GV;Tx>`ohxKWNfAb~f!Au+th zGrBNERwS&LUVgcobza{$%&QJi(51VeE17Tgp6u^OST{uV&Uwye-yeIR5E{!5K@Yel z$(j}%eUrWdXv>*^hMKOaU(ITu#4YH<)wcMUWlpd)+2!54H8>W`JB%&h3Y} zjU+$biFqpU)p`6fjkt;H;8?bSeTMY(DM!@K!ld_)yb6n~2OrY~%swsdGu}@SI$HW@i^9dP=&C}6bymw(&bynf0c)D5 zPSpYvdEdIeqyBzik;ynr4*hj7(g@}FE+=xRbH37pmB(?WjZf}1%52rqEP0`B%&8ma z_t^iet17<6AJju1$33qm0$)YA&?o<5Fc0U3pZpzXrMKZdynH$?UDa{1nc5 z$>TTEa^|6K(Z17kf~{i0E{S~fEsui!&DPk@*Ab%K@ZcSjR@RF16sg=KF56-SgU@p& z&KmJlOKCpw1YR~lYsCP`ZbTl^wfUOd;6asIy`~p?)uFR8W;=#;Z;bit@W*^B^zzq$ zBRYxBV~l6fWIb25X^jd_4kG4lb4VA;fu}>ye*=)?LRNY#g?#U&v_+~exgOpHc|lIY1xfZG z3?3pf1aaJZI%Lu|8>BckFkzQoQjE2z|ERRtZ|U{fIGa(DUwBURe%qNVC)4nK8M4#t zS|6Q*^^c%QCQc0_*j^gRHqK&K)o|^K$JDh|<5jp-&^jO`N7F%aOOXSCtL&2- z20d7aXaHX&r;eH#tmKWQc6HZ=!q6hn?b~4p}|bCZ9;l zd=&2*X3)}+zaVrpBEK7W&=cvPeS!a3z(WNc#-9CruDWoFu!L8uN<^;c14z>C2P`&k z+4*K({Fix%~u4aL&3xx(IK0qr$;75NB}cvwz14GAw`lUViVU!6Cw%m!kXi)58*vZO0-Ni?`~>oe}yU*9?k; z1-%EZKH6ga&Z_cG{7Em{ql>jz_t{TJr`ra2Kh>WwzWCuVh@!VxZ(q8Xa1)Nom7W-_ z1&x3ntu;1mom)(48y_VFcf^ju1vwy9f+c&tm?iS@?EL-7 zZ53&`GwhejPf%RE!F93xlDvS~)f?>6GbRrL1x#LlcWgds`u(Ipm%x1!Ws0ux98{qv zrWQBqxFl|F=ZajfEkUf0Rt^|gEmk5uH}|(ZpsvgKwe}^BCOaOog{Ps3--LMIy6$`R z*F;0l1x-oKf1^RJ`Q)ZCa;w06vmr_9R$zLn_|0(#_4+Oub`N>1#u6gkTlu`6V zA+PgD{60-ggt>!H`&T!+*_mu9f!9C;&2+|op`gtZ zD*s$_m@*UYr$QAJ==6-g$Z|m4CPdi!9YVxO-MQgfetS@FjirW6qU%>t@_}$!&c^ZE zi@L25*E6;%@@)bATLmYR9288ah3cWC^}xKVZi^GHaMx7c+k==C88ns4yL2U79O}&y z2L0DA^b^1adQ*u%wc#<)r4|5}-3`*P$K2Q4ySK{hzp_-;F%-;14KFw3&QCnvp3ae3 zvu}FiF!SZGe5}|TvE)tp)+Ca2*`o39PDd+mwp{c^x-ycT$9~ty7M1qt_ zm|0||8-;U&$3)iWSCv{XXoA0lj5!BGXR22E1C!EA(|?;2wi5Yr29B&X}>O>*RRN;4mGKHS(Tdvwh3I3*{QVxo2bQH|DtTcy51_d|9n-9*Z90 zq2uRZ2atNNPHwVfZNU7mPBlI_PdMBcMzyhly+ba+Z=R-`SQ3?w9%l{ zq%OMPAxHE2*FgWKBjG~igH((+UsJUQ(^_?tEhG;1Kphj zK&P~Kqhwt_hQ%+ERO!AzYEpui9I>3(e8&65Wj~rnQ{8iH)5sORynGMz3+zxnRdNDx zR1f470?}TQ6bRf1_|ep!Jx475$0=C*C9#ID&r3$mMD&uj-B4E(rGmG z)6bGQs{QdvhECv?a3P$8^_AdAwZe|(^0_dUeuFzHcRUa86gLHBJ#272(GvDd#XP4k zrI&gN)f92rbT;~R&L=X8Qp2n2aa%@p{>)W002AK4>L zpRZuOeaF2u`f_M~P}y@7h8f|sO8bSTwL(<*e1yM^S$=JE$>IeXcKO_Smot2Z^?W?p zb}@A2)vZh&3JSHuhZk?z3?^mRt>=}wj@T8Wc{SL>Z=wxuTNjVXGd%EH%!D}aBj&#x z5*^Gb$v9p-=KAu`2=6Dmg2TIq2gi|CwmZ#C0u}lresO}HaPGX3MPr$LD@ptn3RbU& z)G514YxS$y6N9VE^bZoE^G?`6xyMU>hEb7V3T#Hsr4(Z5j36cQG{#qrrdgj7_@Vs z&3lMCtU;qOv8-F2rB-y^;W>iqTxCV2Nhh6`9Mosd)*UwgyzjaRUJ ztn2{aD7yj_ukE8(CX>uDP0MAn2Xbv25kcyS$%n@tFO8M&MpLjpxUl;3Yx%AimckN+ z<_*FmIVJNL_AIPzhBMpT=I4Bq0<`x={pW`2J^*N^K&jbkT$YcLT33_9is)Auj1cIa zzLn_b&WjoYH?SBgH|_CtPoDsfuAYoFud!+>N1Gk9GO;+pg0v2;tm#I70Uv`eTNTDK ze)@&>v_n;{B|2rWL%PoW$8q7TajaD~QI*4LXtc|cfEUwfd8$DQen=`$HT|XQ4QFy` zLgy}3WsZZ+RKJ|BXTo_V~p9*&m4=?#R{HYqjqt+S^@Y_GDe3`wHaRTM`2 zOK@VgESeQih-!_-;k>m(2AMn>Kme9YJG(o5RM(N;8yP437W}&fwCL(r*DG zsT63K^7BP#1o@yXg^w=p59Vv0u&1~v`^ik?b_rbI_*5G^Q**c)P^<$1LEp5>%?oT( zkRK#=aLbXE9#qbX{NI_yU#%ZP6!lB`h~o?Wd_<`z;3^I8ODt0;4O>mtlfp^4$>5wT9Kmc{CpZ4r}U zTP;7lM-)RAdbU~-adQ4X0QEz3Zm^P62^QNsYjPeQ?D58maD1x7NzfWW*tcyefmeYW znQqT|(xq~u{T6J^Q$FQpURpDrEMrM){5lFg;Ss~rdTUX%2ipa6U6SiP%?`ib z(7n~5+56E}UnWs|dgB#kWUZxO(?y`0wJLLxQC2GAvYW=3yS1)cHw3aZjdRo+vu78NztW!lB3%b|1=t;|Gv5kyne=h$igivDjBqyLOr(^)|N zOb~y*I!Xu9A1L5pay7lA9q_r}9%6dEqLycir?EJxvLNZU{ilYvSA5MoBb3|JyLbc> zV#h%Jwh?>RzZ(iS*^^q69i?Lex3KvVMwa8C>c>3WhxkN} zSkeUwFZM?@oOF+LA+-|mB(C2eWO1i&AHS7}*WKH9vkAp;FRT@fub=0Z5vhpN6udk> zs+w{mTswUSpACy>&WYgi8_njC}Hu=U|ff#ZnD{+& zzdaN?{Cf3Np~lF{nMxLc<@oFR1P8cldaNe}T0EW?RXAAsXwzNH^ug_Gp4kLX#qtJa zI&1+OakFp%rzC@|PG28*bN)k+K;x3IeY)2g{A{Ii!}F)Bm)zGrMh6PHPKWbov1t|Q zI7}z3Itq`IVERqlGkZ82Mw{5GF%8Q$QJnJiZma5v+D{f<99|pudoB5Tio*H^`>-@2 z4`=yk<}b}HMLY{+V>}x;n4h^Hb5zdL#g}in-6|cJ{f{(Z8H){}T)f;T;>1V7^4YVx zb~6=s^P1wDX+axdhs_+;tLoTgi95) z+W2KqvPpg3Vej`a^$Z}|fC#Zf9Lc)07le49A{sqO&wB2HMM~JN?9nta*;}2UZFQKd z_zYqp`jBXTPKnGpJqSCX>ilxFic)=he}3()P%&&$-LTW{+H>;DblZL+1A+8b7)r)x zdP9cRb5sgqd*>Fb#S^E#f0blYoBrneP6&!?S;G{RFk zhAzxvxy^!zl&AZ8o(ajUWtD1N?Lm{y13=>fH_;Kx#T;!>B!59w%KuE|ZungJ z7r}KhnlDkV5GZ$EZ}zp@YAZ_0$4WN~`U8;IuSeQiGf@5a(05jASVeN{3|3AkSqb~f zJJ4VA;a~aD*|)a%dKvznuL*6bg1Arq9qUikzSR~yBniQiGgf$t4A>do8TP^^hy+1a z9*wP*S80GwvZnL+msk9C$Fqrlg8=5ZBSeXoLo!VE<-hvytds|PCHuWJqAbabd zUPlO6&-d?hv+Ni7y4IOM>m%8{J!)4_sby|s9@=%b$+9%Y*P}_QSQsU>`PNv^(sv|k z8St#9PxV3Xcux-S?##s*nvCx5M5NTalzbO$1VBd08N0RO3C{r!L%a^I>KR{`$+r&% zse4_p{kD2mpObit6})VCZH^P(;HGtMG>_h3_x;1fmdQan(K~;6j}M8PC$)7PzsG;l z+Rytrip#y+=Bx+Yp^lA^F*kAAD<5!Uap!NQ}l z$!+c~*U1M1$*vcY*D0&W8j@6*4;J#9_eZ)6TYYs*D7K!fmQ+AsC;P7(UbKY8BHI=| zTIu085N}n+dhdl&WS$%$wO;-q@y@EWE}Y-9po{PxrYxjOft z^QRkp`EMq_zE8djTtyto&uf3MZjL?XAkc1XhGv2bXhj7Zi&aZ%oX+a?E!zyi@R>JD zuHD^43(Yfg>E3_=<5h2H@p89r`ZfA_M4V%LuBnZe^X3rLbd$tF)2H$IS~VTjDcPZeDAaa zzgw{M<>^hTO2jL&yk?cmy?yq)HUPTHD0rcVpL+T&?rc;tf2!0C{uS5&a`LA0ZoO+s zKfVUC>oTKQ5xc29BGg;wvUsIsR>j@-x>c+b3&uSfKYDb;vSbvxf?|)aGs%OlUg_U?#oAIqT&o|gO2P% zq>A;*9Qu#RN6x1CwRE5IKj{7(X8)IqSx9s-OFgeFG=mMG-VpuzJMh`6L{4$2rgc*0 zFBNpBk6s(vZ8AViNTpf}C8ER2wb(Qgrp$uw(tKSSZ!q^zv>Pp(@l#~nMG9wZVsnr} zQJJk?`{AAz0utHYEh3@gf^Df%q}JXq>Rw^nq0FaBT=l$NN;Bn5cf+d3OQZw&9QMB7 zYq;{LVHjfEQDU8l^b8wXOM1HM?x{m%Ei3iKm`6s0y9)Hqu2+pfhGJJ#W*YXTcZ_BcMh7BzrbjhvMnrCTUh?nMl2Dq^tQ_4Jp{OGraH4k+x zC6-vh3HI^Y$yVxpjH}vy6|#@_O!Is@wA`YW9c>%R*am?YDC{0(xrUYo{wnB^PJNq; z_MqGJFF=XVNEfszv!$!6Jq+vt&B84%=i{3$Dx5A2(xY4?RWIJ$d4lg9Tl0ZWSWaQv z4ds4jzEKy?eg$BxbC(Cc@ppLE{@o z)Kpx+QPUhuD)UjA)@7YzxY^6CY@5d6@}Prtmg?%y$jipfA7Xv+C5dYVn63{jmn8RQ zGa`jFxSND4+N(TNe1@U=$;K1i7geFJ1yg5wQkx~VN9@W#jI>DiBdD?(_1dHl+EL_N zUiYoMD}PzD;4As#Z5&3j%zcYRyFfo^?NXw8 z&hFluNz(a1m|PlkvSenIHT!c8hW{)PsFU?Yyxe(hM7E&M6fPH_n#%o^L@nU~z%Dez zqYroefaj68L6{qGo#_Lz8-{d>86&k3d?ST zBID^*a<`fDb0(OQF)Bxoz+S9ByX?_#QFE*}Hte;;x<(3hH7o`)%5V>*U=*cfPt&6g zgZ-ud&^*Cq?CIwXo24jSjuS&U2m9@fEo8F4^(C))@)@CeL6$m4j}(3P!T^DqjMe=@ z`iIZ(x|}E?_AZXP&QCra8C+TxgCK;RYxi za-rIbbF=4+_HkXXGIzL-_O&Mgg-O+LYn}LYH0QkFbRrbV$;(5nfltRC+4_h#pWYM` zS4XB8Gs(e^d{q~JM@r&y;laj7km(*d4zCgAB&phIU~d$1O%q(AP}HtdZ{~fR%Xig# zzJINQQ(R+A>&aMW@|wdsePEN;z#f2%PV6m;2FmAMIN1!I{fXCltiO+`>Gl+OmOLWZ0l%gMOt|4~$Dc3e1#H?|))b)|`Agc{ z8~8ba$#!_Y#r%wI8Z=Uh}#PX;v^b z@jyaT#;#oUlX?dhBF^B9ha6^P8*_WlT!hE zgg+H}58J?i_cf^BH@YBF^2T+wtLJv>i$6a{O%Y| zz*w&V^|3ek zDQj=e2$(uD$R{s7+L`=r$`zMZE@Gy6c1K^AOGhGZDDBFK7@4)W+_HGyooIZ9W2xEr zYeeEvtP>2iOUY>youb6yCN!kE1pF5F#j(>>$^7S4?*0l=K!LC=7`?D0Z8du4%E-L< zjs*@Q$ABm_Qv$iA0I^86Hwz+OcYVgoWrZwDsJHgq2}TREbL|ZSf6CUyd9Wfc!HS%8 zJMrgeGXD=m;5}eiYT{OnXVaUtv1qDd1w`te9|atmp-v9zqcb)r;!L`EOvi7Io~L2F`{J@Jb5Y6U2&`XU}hdK-Uo%FUMb9`hU6UjUEIK-5TwxeO?r_3u^w>=B}%+l_e>U z!_WEm)O|KH4QeBxl*TD?iK?;5v&*ht4VTDFx~ejYeX@9_i3x0y3sS5B0YF`i6U z-UHrY!W3YquaT5g3VTU z9@ur|P3cM1UtKLGZN@qhPS-6V=YQf!B{2lwNFPDx~J5!=1?a(f~lw-MbxdYP8%iO z0AG-9M%Tk($+s`VMV%u-6m!@sf}f7>Ds7!>6ep{~xs|gbm;8u><@|Mf{>sfs^AIPV z3^UUmDX%PCskPRrY;n%Qs&zPS`J65);7iUgs)0>1&Gz+Iu5ZT5cq-R*uB%p(3OsWu z_v<{TOJ-gEby?5%F(dTsYRe&zS*lEky`IS3R<+sg+8$5Kpy$0S?qB3uw}I0bs$I=J z<8j?HQ!7E%Ih}Q8`Q0vinOv}Xt9muec9$363aZWplpk+5R$+(Z_xA`nH$&f?WH3o# zH|!Mg4XY0WbeNMz$S!u`hS@jzMdt~vV*PNZPpwhnSEobhqlDYzqJr;*tPQWoN#DG1 zQUq|5yR`*q{|rLzst}X09-@Kcy`^8IhH7_86{LMHx%LLqkZP`a323qQm#W=!hZ#D< zCJo!+GGVMD=y|P)(9gYgmc}sS4QlU1l^Elrorn7oV-~nNvZZvi>k?@^=;8PpVa!C0 z%{{}t{uU%ZhFTu2&&+~;QBfUD43)t*hsrD@A;YR!@_e9{^zE6m)ddnd1AKd5;hca4 zzfN9cz|04!-rZuWH;2SbN2{=fV_4;D5R>POP`pVRI-7Yj5@$A+vrA5BI)0g=`)T?7 z1SKpLtH$EF`vd?l9-cP>bBrGo5YG$>`k66sV1$9UTuWIr!Tx-1UgNg?Qj%V+kG?7( za9OBkMMj5r|@RpWM+IqMPw#FI;MaA7++fK!8jUjhFaQv5(q^ z$;Dc+S&(Ubev`)jZx?DzD{c73*z{D-{)<`e&ER%UL&O$ba2E61@VE=|Eu%cYZp@i&)1LzOU`r?2QMRw1i%_?J^AxHuuHC>V0rY{Kn)yFqKoA-iXb@pvYRsayBENJQ5K92Mv*KXv-CO4 zZ8Cca)urdO$)lU`;Y8B8Q&T%kV#Uj+&%qs`^Fk9D$MsE^Cw#^Tvy8YrabXfLoI5ofqqg_vDu23b{a<7DR_D}Htmyp{0k zA^D(MP;um^Wb>NNBw%;f@N=*2EFp2U`G<6ARCG7j_8%K(oz$Gj+SiO2l_sKl1q0A9z3r@W>3kqe$f zIO4do!9(Ze7h9}?+a8Jc$wxx+mdf&T8(Q8UQ7w9MU8B0}Wbh%# zh$yW|Yei_WDb}OG6O_RRI|n~VZKc9Tp0K_llO3)zJEQ+v|oWUoB&H_6;e4lnr~1N`Fb?d294 zV{OuEpj|j|58}F)(l~(g9dOB3WU5u=uk*RjZ$oHN>7;cTZvc6gQ{ico zX~}P}bbIINs%O6P#SNg^(u70X2__S%|KDB%fsa?!m2l(F43ZyltoKOG<=lH*rO$sJ zncG>q3pejoVSSKtDPBW7U%ErAVQO|yEx#Q^<245Hg^XUr_k7-Og*dqxSIkENPhG&yP{sX+|55eCm{%Y`r9r=q zqAT~+R7k2X4q;Q;d$;Q{TYrWpPT@4$gC8O@JJH~r{tR~cv|e-wFotOsMc6ATH&jv9 z-K!cFW3a#i7CAqBOMJU3pUfAvL1;>q7H9YI@sec}m$gcAcO2lu+A+qNvjI_n{Bu$G z5fVPr{<14JS3=U@EC)@FT>3opcu0OWesNl7wmYB@Wb?>R|wDNhkWs1#X zb??1(U#N-Z&a-~qVpI2^Wvo?iOUc{?pbBHx&G~}&=9e5Q4c@ic!7dD?C~%^b_vRS4 zzGcW?5`V=4clMC*FY1cFG=2Gzvnw;iYc=1a_px2~{I$iVIcP5!}b27SrCDzB?uQwqz)ZGe}?rqmogPjjt4 z_4ADGU~pR`DM=N3p}mVLsr9-pD2Q76HCxIX$QDN1k>ig5_vAI;#n2itxsq32IV@%< zStR*s7xS7?=GVQ|=~WgNEMg?P zx-jmgC{ZY?+?iBkbT%z06Qsh`ZLmDe=1U9NpCz3eKNHq&Yc8Di7AHZ$-kwA-Qg80h z=ns9I$o+m6kF3rSr;E27V0+cBo`WLeY2oG8V+P(KQ)IcwxvyctuN#Cl4? zu0}wbtpW}e0Cw)D;F9iFhS$CFc7&vh zI_*(LBQ&z7I3*(}Nz9{Du*xMQZaQG15-wIE2G_>-$VKtRWSN%auZ;;OW_o6nXryA9 zx#bc`O7cWrbptaK)G2V@>=HP3?f>-Ht#g&SqAA=V&kUVM*C7r0Jq6d+CJzhvG(MHF za!UPx@flm2ca*8n(vn?nebPi)5zNvYK3Dm;c|(87`_)mX*T)bEJT3o+|e z3DgMK#Au->JM2!Cxu1Ti33cAcl4;+L7!zz^C;9xKv$P;p^2mc2Z#oX2Iz1O#i3O4K zh?GVHfHQgZI;GcbxJu?<;+4otp9k4J>>)gSmy>#ruTnQQHd=*4%W)UrQftz^vH44T zw!6q`TZLMuWOcV<*u5unAAQ!0J|EREJe~&FgVdqMHQ%LyY~}oO*)sasI4w|*KJV=H zeTzBsM@Uz0o$Du2w}Ei20z*}gw*{y%!8Q-%j2fJ$EP&#MxQfHvRzWXhNL?GU&Cq2g zqb;em7|Y+PThva7QBJf-YuCCj##R)Is8*GT8ok$)+<(2S(>|$^^)5JG^5*&V!dbjQ zzJb)dtH(V73EIuAto>V#+R*uiyEAWfCvU$h5L<1bnW|0KzEtTc#aYAIuu*(CQR*9Vf&iwrWP;DZlyX@immG%iLWXuC|U9u+2mA1z18N-@aWW1Ny9Q{ zI(G+bm6f34KJ%lF&GqGDX+L(fQ){R&d6wLBWf7>(`p#IXsrh~Ar$`d7t4C|}jZhPB zp`tTaVw6&NB5&(tW7%@T4c_rf?kLmyLV5&q_Q+ijJ$AKikMMC(WDA_V*-m4y++u!_ z7JBb;18184yzDCH?tO4W*QlG08IA z+x|AB8uJa^01>&11l;m^Hf1{qZD*=MEc$FSt?^!T7xFU{hvjgxTsc)T{i=c`-z{irWDj=@n~ zhGLN28k3-jQM+m`&gBXOR3lmFRhsxE_zFWICJ-XIQ<5bGrThGoEa%s2i!3*>&~4)?5zjAWE#!<2_a z0H$F+2ZW&;YY!t|LhG1@8(^;rOQzfD7TEzYtv&ztNLF8>AtM%zcQlW)=2uoE6!^DukdF$J658^kjsJaG`av!`BL^GmSWBr-$q0^h=SQ$^jyt|jN(n;gjlFTju^D^>J%}WT|bKLUC za34aS>eB`=By9KEg7m$s@oob^m-ZYPIUd0djP6@r#G z6W>-!x*37CnB%pgKHHh2Qh3ydk_HpDmWL9p-lv56?%Ku`8dm87?1afeX({jpyQ5s! z>ayIhV&14yAd*4ZFm}k;Cvw@`Ce(qY=|WL@$&DC#KFMr-$2Lw@`xwLg6qOX-Bzb2z zsyMzn=lG3HvJ@oO0J_c!hq!+ZJG(e8i7oiZs<`6!C7jg|ry}MqgQw{)KV`-Pig$^N~k_w*X0DSxjq0 zCDr$4i>U$3`>@6OoRuYYm-L*v4b|4y^~X-_p^~|5MOgJ4C;E_br4F6^Yim|J_`RMN zPcFm|YoD^yGeBb721*5>%75hb(90W5FWB_fc53D0H=DDv&~eTh4Yp}}*%QtLu3t~k z^kwlU`9~~YU2kA$k87ZJ6WY1zd9>b)Imk7hllCaDplIeW0c><0slQrM|48cRR~-Kj zjicUYHaKhJx(2yy-kbMmgmY8pWIjoU7m89h@37RET89tt>@9m}Ar)jtcfFHz|A8Yt}gOh<5Mrhu#z zVblqHIWCo2elku%ZS%9KL#ym%v>euY50(cpZ@16WDokax((E>L9Cftz=F0GP9Y%H$ zm}diy4VT0lio$ueJTB&qU`zqxU6b>i1~5no`GB$E;VtXi7lB<`tG>GG^;CaZtSpiK zp%2zjDo^sGxUV7qn|Y@Gy49qQXp?<@PBM{H)YTRcgmT~@J-=fox><8aCa#m zPOe0QlPMhc&n<{>$yj7qCDcLuqnLvQTFx6Ql*(;IzZgv&VEN#c2>)G?rGh*Ae5HHX zRi@!xUnEv`5045PZSYiK>1KJW93%9~#2do}Y`^p)sL-gVEuN`SA06)KjjVQiC8nBf zX~3m9F?5CO>GJJ#HJJToEWHV9+-1+sZ?DR=rs^>sE0pGYxUR43T5JS{&~R08M0S#Z zNfse1w~^BQn7cv$Ryyut@cA!X{BeWl7xCm+UFiN;$|5>hONwx{P2$RQ%smSk=pF##eS<&5HdA_d0 z>yZ8wba!fQCrCk=s}=I0OH^UblXeKkO-Vkv1hJ3o=!W7~YdPVDP94eWls~*1EJu*7 zo8ss__aC2*9&;KyyIZ9PA|;2Px133V`5ck|r{?n@*nB~lm3;cz_dxKHNHDVacQWLE zhcynsj$etlCqiK2@Gjv3|7ewd%}TxiFvbA#6Xg>G*#;N*XWr2PDTN%&PG)8^dQZg( z%ogDSzeX1S@AxE0_kef4AP1a{3nWd}0Lw-2sas1iU{-H#pO>gbWW9Dl?C;MG%A!cf3yBpJRhD+w z`3cV>Mc`fr&4q?fm;!6sM76i;IM<&QBI0K9$xD9g3vIqK$wB=^!D0F$T~0w!XU&`) zpVg=CwTkC7at_#lzafRkpvVw}((v)81_U$Ue~k_p`aUMsrgku7Jt$GaDz;t&1{JAs z*to(K&!77H$-q;e8s6uhzh;sv(g95tor<>}(nu!#GZB8lD2ABw)9?&&Cvwa_gED1N zMLVw({GeCVdD{`pqH6A43g?v&8WDxQdH8?*xh7==%gx8ogc~i+32v)DTVaTjkiA6K z11t5LePKz2cnh}9t`if>FXI7~<^9;o1%BZFo?pQ%jznH@cW_=ALl{JzN*2i%IehTv zh4e(Gj65!Y8;^=#7&1kMF>9tq?)*W51KScucyOWpE59llRl!cab7H{wS4jyreCQM@z39YLF55JwZh9i@A}=-%k$QF!26f z<_E5#pVSH9JQyEi$ZjHBeY?3MvHfLhltvIG4=heLl0)OSm_24+$pDmT9$uaNxuaBP zFD&X-YyST1mmK=V9Eji&|IB@Y=p2(Fh+zHP9X$b(D!cl;zHIr1=1`5GkF2gyuH2gH zzyBOunm~sCKKTZntXn0QGFn?C!o2<`ck~eH5#o9`1%7xzlpLv2aH~(p0}*bd*2pc~ zaHUnGn6o83&0(%rz+B4rx0HcH;f@}NA&}m)yHa=)7m&4m`DzDJ{96JqoRlXrCVI0! z9Eh#I5s2~vdMIHZ$p;@H*Ms2&?PYX4>N$Pwu@Ca6TK`K<(&!&II2Y7oeZHVSk64sY zvlcc;C;bmG;Uhja1jC3TQZ|p#5>}+P=VF~A=|b*BPOB0-o0TOoND`$X^aZb*@UjW;xIpU!;EgXhpJhG1=uuWIc#}C&*$)`snB{Y5RRV>4}LQ z-I|8?j6{F*JP?zn)#8@j1i+^qab6r!!_u736~S2c=t;Ptn18RhR4zH=*4$+^dj3a! zO7Yk3jOXj?!nyubREJ1ih-H=|AG>ZHC8`rb&x@d*4(d-?r;Tv3^&Xq~CT;O*d%No@ zTBsIQPesi4q>HUl9GjBwf4uzG}9GBV5#XyuQq4^8WAp|K8QX1HFPUm=q(v z^pi`#7v~Tbxf>_%$9#6GrNKiUNkXQM!fJ50zYmvC{k^v2JSz?bnq{^)e#?YBfE_uz zVRhUe9;nJ+>X1OL08@`fY!2e93s=Fvn|=xfEnEUT*qrYvoZ;ss9PUzWSJ|<;BXhW3Gq~5_(6Iz5E5x)I0PR@_{)=WkG zjV#-MBbJS7d1~$0RbzIgHue0_Us|t+?s2&{B-(B><;fsMiHRNQ=uTy${!3r|dUVLa zqYqmpfj$Kw$ROYuO;h)SW(6opGmZ}Z7;`mU>(8_74mnKOw#FY=@LO%AUw%HZX37Px zh(9mxu1bZ5H$a?lD>DD__@FckJpNY7q!;n=?SZZl4MYAoX~+V~ex>#s)=Q@N_3mO8 z#tM!=wbNcG&iCm57LJp-Qt|Y>rcGhY`JU{H`#Dz=M74f@_FE>mWC$k}=d&Q%`G&C3 zCxd`cPOfxR{^$k7pzyjmRBD#>*IkOA_uF&6Rv=I-=;y4B)2iA|3ragH+ z7F^PXVD+_rmT{nx{Hhx}V0QAMVacW)14Z-Q8Q~J#?etgQNe}06ZU0HwCLvz}%?SZ5 z7(X76#7f+UFmM7|J~COZPJ^H4-M-BB^w!B7Z6Yr@!+S~1b1QaAK8kTT@8A@Dpaita z$Bdgxmtiboxl*S&6tApTNWS%`^m2#a|7Cc8Y5ba0qK4RV+_$$S{FnbNK>c7oYM1{i z4v;v{FEM1?mj_MQlWvZ zI*7c>sg*uRP(6wV^3m@64Nwz^oI^(clr(1n}$>k}7O z=B8TLb}Hr^9#H~7ESQd$TdiV6#JKrwN=NixCfNV+MIvjEN9a-r@$kPE1xsmsKa#dP1_#nna)&Ji(aqW4sv~r@GN_HeneOgabZqYlkY+C;a(Enfo}~uOR425VN7DUY!g-)mFH{jkfAtWqr-e1l#xrb_xG*pM8^c0_ z`Zf3-3+T6LT*;VMzIuX5Os6vya$$9nJ$AI#Q6b<6Rg&Aej}9H+QO9HPIyI|9-Dv`I ziFQ*!%zRX0MKrkG7a~j|Z`wbVUoj$u;pd3^VwBn_S#8%|nJ7G+j*)%9u)o{4{Du{= zXXk z!Hm|fp;N^DsnQt;lIwT*a4;R$CA)!qc5HR=*l7d<}MmneW$=ga0av@{=kg)cOX1K}D$j*K~;?_kL>%4ucsdAy+&kfQ+F zDzwHbt%+|XO?AfbV6H~S{4LrS3AZ*TaXE$|SNrveU)&*NBZidXNz5V9m+uw-Y9aP} zaiq=@^>7&3$a{qYNomvpz7*PvqO_>o)a)-A`W>bu5s7V!U%cBB4i0mv27nwzYzZ96 z_;W-#{h!}BiC&JVJ+kcAC9OgHQ56OpWD#96q7(a<=?AxMd_&wZ<LQ`F*qJ>BK;Uc8k~Q;F67+gjcEg_f`JgmH!mve+3Ni|NcEI|7tK2@_&`_ zzjozcYyaDg_{$Ud*Kr{q{MQHj*PSFk`LC1zZ@ltv==Gm*1c-|N4TxJl9)hTJ-BBJ5 zI*8UUP*c`F%=80IT$_8e%kx6Z=+0lJ~ab)H^o$$j2_q9DlWj$IU?=uF`Qce-G zSSG#2L;#UMm(wz{)=TcGp2`o-@N(0&#YLHynbNe@D<0s^zhT%>6#`JrU&&4kNpYl4g!KHfY=sJX!j8c zNNq+GlfbMy0$Qn0EYd6Mz4q#kU(uB-??LJ)@x#kpi_YDhwYeXk$}~LnYf4gYhD-9f zmzze34V67mUX*W8oJ)z!QO$PnHWqyJnH(C}6GnJcqw2;6&ou;c|65jp7NIwz!&E=l zkmo|pf{4?%%~Z(}z17<X90V@ImHbkik0!pJ%R0Qb?BmqK*(jg(CB>_T``vc$i+uz>f+;Q%?W1Ml%7Ikqx zXLt1KDbJx&Mg|2e7_o$Q_?&j>9)JnFu(0c+F3B#Zdptqq zf4}V;0e71Lu7yu7qr9B|iTv$M_}7!&yr~!&jNV;2-h)7l&HlIE+iyDO+m0}2z9 zP6W+mKENZSH(cEpaHVNYCY5%}Vvlww#@@*tgbZq27f`f~b;kEmw~MSAt9#S0-JJwN zu%o*FITYAH-VNxn?8*ASD5)e?81x|o)uM3pPNK!jkz+1W8f7SLhJ2Ac+DJfILuX;2 z1!eYaAl^!R8zlfL++TK&*M<1-VU=%{OlyE}^OU}>r-$r-Tw~)}7N&=g<>lC);WRNf z{#^p**UtE&Tq zjoBbp8d&8GqPYT13$2z?eiqcUV?XZPj2)EJg>xy@aD zcB(7Wv!s+amy?~1?LxZNz1t>@jzP@LIp>0N1sP{RrOm!p=6{sPSp50@)sf}911b_r zaBmuEW!*mRTeMt%D*Vd7)C~9`TX#p(ki8T~$(;cfhK8~sITFU(bWYgSi+I&c<8tqk zo8*?BZkrkN**i2B$Q04Q5Y1uCHrQqqizdBqY!tVgFr+4B@-urhbqU-Wj*IC$Iow zuwVPYS!_tRA5qfH*Qp~;u=Tdg`U!FA8{5nOj7vbY@@EUZgOMYwWuO=|QaNAKA@E;} zz+wOXO3o37QaSsbCAbw1OyT4Q;y&wQpyhTH#!~EltU!|R4eHjps*Uqexqr+0$K^1P zu>aYRtMl3G-mD66YlH0O`J|YCX$YS|^3$-x)G_7zDqBw(wQ{{z?{3?VOH{Q5ttkeco&zY#{?$d> z#a*4(l0KrmE2_3(U?v6k%MihPM-pIk8``*>bo2J=dN!AIqUIjgfAi|djk9GE|49Q!cNM+{le)I+>%Q#_K7ILRibPwM%CAp4()@L;l^D3Z zne{cM=WosgvYpHyTME6EA_b2=;L&QMZj4t8o@63P&)O_AU;b;r5+I?ZtBz^PdH~u49Lpij9)+Xp~oF zY^2ymhVxln{x9SHW2kbN6tCTJa{?kdnX%51BH5O8ed2b6h;Tt>fMZ}=s!K(zunpoL z%lRQ0Mj*8)`>L!KuCJ$9`#&O1>zEWp{89ctrrURNXVB@$FBw3QV2-`wVrSdR#}oMw zcI?#LP4wvVul~SYd;-_{JX)&5n$oEy;>z}UYJ%b^{G+Zp9f`)9#BPQD+^Z*^ejOKm1VX9dT~ zKjHR{Y#wLzjyTyj+Da5C8;p>hu08D(`p4v-!fz31b_1%k@s<9Kl|JFY&E2p6-Krtq zjx-qJe}?fIXi~6ybiv?KTR&`4(4*xh92Y|Oo;zHSDUeQENch_a-Kyc#M{KWd%rwsB zeQjDN%2oNNl>f81yDhPE^c~w3a~(VbfcSuz#Q`zTw;Rkj9IRaX-G7tZGy?sR?LC+3 zQXVO6!)HL?-koFiCJ^j-e7@f(i)M{WKV@^zgZ3A>}mJZ*Q~bs^xcKOI+3N&&Gs&NT>!lofy8%a$;^cPmk0S4CboFkBz8ZzQDjxO{a2YQ{PZFd7 z#e2@~+Y)8A^S74`fNd?S?)|^*Am4XQZ1m(upqe+(GB@zwgB)h1NH%5Y7eJE#OcmHx z0?_w?I|=^`^{m9%wo`Ua=6?z7F4^VFXWOLrTU3!ah}#GF{{KEfmak=nsF6tfNTKy1g zkb;YCEoEvw97N*d-8RBJcl73lU-Cmh8Rf3D_51wMa2yu0MLZUgIhyDicOSRsQ3Hf6lVuE8Y&K3jTV3@B{!x3k&1|H-a(5hD%%jCp6f z;AEFT+Wi;uURJI9S5*is5E#Fl~2f(O% zPQh9_0h1Yk{qGv@!O9wmJAV+$31Ele+gobk$L`Dg3$Qtx+8w8HD*&*j)zTQ?g4sW! zy=4Yq^#y<{x~*UOh5W8+0k0j9(JH!tx&G#!#RJKWFCDWzf8d=jOA1pozY z2^#?Nh5pav`~P;lfY&YGzdP2mhK9gkc`F~|024nB_=x|r6zIPv_OYGW^uG~&E%Hms(U*8{)bW3m-ZwuxEdN|5n4lnC__>`oC}?HAYS^f12@U$@7bq#W@~Dxb zc|T5nOPJRN=^G=8@QJeV+j2(IXR|6F$3V7;PS-rAzi*j()XgNnAimd3mVR!s>XD>~ z^VB&L^eb#-Y6*G*pSmEJz&KRFni6@z+VgcP&8f4aXR70yFp_wzghEmsRnzcmSzT(C#dV|a8o;C5aI z=dcTeEP+{8=PGyJ0A?9*;=jOr1C_x>t)KDfg0U{5V#Be`Ya8j@IRy#2drZ7@)d zTc&B_u_O@USt#-lkiFQ_I_l`$T=wNJMSOI4g3QxeS30TAJR^9_S;|!XpTqk(;50** z{{xy21Grl;v1SOS3&62&{{@Z_-fBK;l&i~Qz>ZJ6@#x>|OI~~erQ+;f`7c*M%S7a8 z<6fPAP3w=sNxw3Q2gGW;X5=x^ox;!{S7qE<_ao4rlJAPEP6|O`b{~waGUl^GLyV$Mm3z;UWNyce`EP zQQGfEdF|%16NhUbtj?2@m7go>ax5q(bZXT*L1;KX`<8E~ba-%{YkgB4(?|RI#=5yH zxkv~X>*xJ9`w-E+0R=vx&1-F8FGiEh^I;2FSdTag#zwKsptv&Nm^WU{`zZp_-c0NG zP*RbF7PPs1%&s+QFR7=Z`Wd3b1-A4Hy!|*{!Qn4brwHYR>=LWkLDJ|kTc`0P%Dp;ojkw`e4*xI1S;ze zq_+)c-@7K$4kK+X{;X_HVd!r^&50RPN@DC4zwqNI2N9Xj3C8<&3Kaz`u{yDCHF{Pu zRt?LOQBy6g+oGy{GI2Ll)>`JrE>zQWC*E$4I>AtJX--)IlNmz>25}zue=j&?z0E2q zjnCRjJZ=yT-rk;b4)zRpiLmBVC#j!RonBASkA#WAS}oJrkX6+pLCd!#(an%18W7$( zUh$*GNrk%nbx9!iR3PRHIeE!kQ$(m$g;<%qXu@bx+{86_Y%Gtrkek-@GhR?f7h2er zNvCyWn!T+&uJqod6RYrQ^!8r4f$_l;b+l-3;xx!u)lA^H z#W^yxd5pSpKv#r=%N=4n4p~cKJ+-2@Lquxa4yi2ChdLu@R}ScY3}u6Ge-;n%2NcX@ zXvm2{nflnuC{r_b;2Z^F+pNb8+Z6|*gSHmtkv-+k^wlo)_&CINb?t=NqorvPiiq&q zJw|2Y+?He0hw(mtTTk=Jb50p)zPPiE#!J+imf`~C6Z=g}vM&J4*J2+t0z1sXw$AH9 z-#{1r$|lAZ%TX@nP3J?_Uo8#t!!~~Q)(OE{Ss{p4{_um$<%kjGfG55^W)RkkCDrds zqrN&57lOJRz>Luwj?>@g8^=AD7L-goYmZdA#7U^vg~e@7s5T}imo@v@VeX(Fm9@P4 zF$mQTVLp!#8vN=)0^S0;TERYiaZGnTRwH)K9RkN^LPLm{Mg8fq6jAD^*8tT!26_p+ z{=wccor0jvjR2d96Y4+B?)4M zI|uizuw7}MZZ3=&kK8)~gp`<(GYjnaqph8m2Y#fdQ@`@tL^TQE|p|@q>l94>5muO+}HZl!LEpvOJL>lpX^k7 z`;PW4t!%t!M1WgcPMnJDtWK8ek3hk-VdFIAS{Ep}MLj^#Uk<;33k-7j+fmr><|u^h zMYm4uRcZtRCrp8_G&;$xqoX) zWGHU)>-4qpS3nxSO!1T9#kO*sb8y?0f_#yw$mtq4SkQfTU+qt~&YEXivQuM#j3kyy zNQu4Km|e%sPW{#;H005=a)0q5MAEB=UIAI3KMI5?7vKMq;_7?Xbny2aog`S(rvTD1 zjt-c7Yf*$!jzh{cK4GM;hx(pqVJvwV{Jb#6IpUTBS8QvUUhT23H}eCrT*=K-rN#y^ z=-VOK96j98y2|a$m8n+rW_L+>q>I=JKtXyjPPtX$KoSUU^#Ct%;MW>F0ZPZFI(P8f zH(zXW-+ZaD)X=2d>*5z*k=3*YA&yin6n$V^4D&wwCmD7t`z{bB;v5lrc6;mUUZoO1 zXf^$%gq@J$T+!3?#J2Tgc5^sDWFG{Cc0@)H2SgStZ0CVs4cL!B!FvpAg6LVu$Ni&@ ze0F~8;WKM`USYAkb|Qhp4_~Z07v!CaY3ZrIpmL|l52m*AJtr<7Gcxg|kV~_@TY{p^ zqfS+9eG3+2ogB?yk0r;RvQtkRZ$#c9PiX8Hn5b7}r_OZ=p?gHhsvbgPYLxl;E&52$ z{z?}<)x5Y4=HpEG3X$dY{m%k^*UMggpggSc20Xs&A~u#+2NN1Q8213cP?p9U#=3}o1S5BnMU zJ*t20VY0K0logNvv7oi<4@k|6#V;807~Q3!MaC&h|Bo9Ty7*M$O=%I88@@m(xb@T+ zh4HJT2U#YD*nAory;`CoI+N>&Zbg~dh;#sLyG{$Tq{UHIe_UVfW~|a|YOQngv_4VU zqp?x1wf5EDxtkwFyF$>f%eFZb77Jt(NQH7!Uh;Q=UG)&EAJV^YrOllHIG!4l>)%h= z)uT;F^Bh7q+gc{kAp3eSlyYNjEl%aU@2F>wQV|<6r$Q3uVRg{^FE-@pKA~%ES;O>r z^#{VE+4U5j0((>pwLUgeED_?F-4)zN71@dI}Rag!M@C9+ncF7Y(l6 za0Rj-tX%GzekB)DIUhLiN><2hTE&teEE-9-h2$;Oy+D6&q%-O;;JC1^sUIMZI=aT-+&u9LQ&Gy55~}90en;dtfl;uCJyTdVsxkM{75HBi~DQu zW>Zs(#}roTq1c~wxQOfGZRM&~t{v03hYB1*mVgZ3I~7a?!vP_dFVxKeV(eChNb}Jz zk>$oAzl6)uv64WZ@1o}|u4D7x*{M7{s*>&qa*GL}4(lGXncx?UhTrELscY3ySR=n* zh%i5ESPi^6o$QRM88=_C7r=sQFx^)?FDPdvt z8u^Y_-c((|GP6}J8q3_MZy;=GPHu{Iiec8xdgWuH{-a&-U31S<57hM`gVZ_D+{IpEyLjITrf9?*|(RDRCA7$Q4-TdpL?xtjAAua zP7jFv?p&*2s@euoP!@1{eAW1|E_@BbFYaVKO971Z=vC{%kh=qY$0c@Qv54FA)wr&& zBK(;ly`o6(x39KXxwaLYNM$iUm4WMTWqt*(cXhsSS>=DNwqe(#@VjqgddOfA4Dd-V zfBEV6?W8?DMlsUTDNFRe8pC@XH&X)b1&1u;*$>a8}lF6f6YtD z{dUUPE5L7u5$06eSdZVpGIe{M#;2h+5EZYbYkgAK ziUiH8B0lpUrBDh`Qu4S41i-D#0P!|y#kO*W^l;0Wn=9xEHadfbkMoeJGufKo7{k#A z#9C#zghKpxus>y}JZt$-E3KdGZkrh1dsn>w<#qNe=k;y}Y8vL! zqz56IC*BA`Fjw2yWbaC_)2VnJYW0k}2Oo)=LR&+mC2Fne{fZ5i zm7_5X^gL7YT`=WZKcL%})dNrR{xFyX~VY{at*$wRflv*do^Y`qgtzn7nYN)8~ybnFVWlJBxL%O!`DgG!IIA= zn^TKmxDWbHe6GO*vR0ia^ldNtoA8|Zz?RwT+H@Jd0q{ygOw}j5BH~~*lrw-iGu`p& zDHMUczGQh@z*l0XszpkI+VhKNwo9h7KXAOm;{8o0rG=Xx^PAp@hF5(j%)wg0DOroQ z2s{r#f2{6d{h(2u^SLYU5j7d=!9VM^syap9>$M)Paqm{)c)u53p?bDYTT?|$$E-hj zQZ(}3n6!e_X@w`H8S0SRlQ>%Cll~0L#o?mk>H4fJHO$uto}P(j$PAP*`^~IDm_M&#Gp>!#T-~%x` z&wDb=CgO-z=lh%|J%0GjajCU~GT%#?!J>D?>Es}s8pC9tUOLGO+WdLK5~kB}-TAzm zGGxihS>C_WnlWXS>(lYFAmQTsI1v2Zp(0})CV~?E?b84O$v+X-`uyv@fC3$JFW6_d ziIilIR=4DcfwT)kuMaEsgnP{;%U?L(JsYVk#}y}%g1)QvUJprZ9YS~%^lUY0`aG36 z$$iS(O2|2l+1$iRyfWzbrTqb+^q_!w(fL=P`uMG2dYAQ#lP=gGP4cFk0 zGz}Q%Wz5SQ(el3251g%ATP$O{d&gv26OTFcY}NG?e!QD!In`0_hV@%GfA_Vq{n@@k~rro&x3{xUgA_+~N4N)*IHYt5VqGR)- z;@2A!9W4j8X&A6<$m$d4!B63Cjga3fogyjkVL|7~&1g0#HqWONs`U?1}c^FERv~v4;(uk6%>MY8-9@Am$5LW zPi9T=sBesSj+}*LsZ@KgLd>glyW*?8KXcfdw!vuXt8XkdzXnpCj2Aw1yqPLz=`|Bi z<~j3R===^~*jeic+)UiTj12u@(yJY@Ah)eVMF6U&8^yA%24 za+#Uxceidf1c{g;J>#dLnn;x`mAugf&y=p62Wc((i2puq$CEm73o*RP z3b^qp!*})E zFW{aMHvI@;ob$1LXtPy#S6;XI^VY=6Nx__>0I$>Jlc~%5T_>7Bk@7CW;i~t9p^_h? zpJMcj`DENld{0Ahz8m}b84RAW9Ih4LA0EFVLlTE5&ZdJ@J_j;EO| zLcinF6iUuY#|3_lJP?+8qJeLZtH-&8_abrHpA{z(*Z8D2zGZ(M6N3dA`C8h}u86g{ zkCvuIpONdRu%C~aC^OSj6OuPNruN~-3!o4!Q8;+(J9iJ>D{8Jk$-mSF$vJkV= zLlvE|T{T_t{2JIfnO3Iw6=VMp{s{rQ6chC*b4gp`7%Mffh``x1kU4XZPx}hx@tZ91 zk`#qgQkIh+XeaCpGOyl#hAR9$)`5izl<;X>D&)JrelK)MFVg4F{qA;E;AXd#U1xK_ z2Z_}y&(~n-MpByUt#@?|PHr8yBb-8JSs6kOR%XVgsZfSiJCoE^(HQE~Goze7L49QR zmjj?Yu-u%P5@KRwMPzyYeZhlE{LP4@aVU!s>qD>kfoFpNFismY*3Wu_N-nZ}a7mr0 zG`sT7MiZ6T9Rv2WuJ}qQz8QG4JgWN+z`*r1d=6kY{vCkNfuO3cwV^Qr4mQ3*IXQ@i4!_?eB9w%Bd)%2?K49Md9 zj@iW-O2M!oD>Xri=FE_JD1%%Einp%Ycb#L7SnRW^Se#T1{M*J{8NSkGE&pi-UUx*b zg1|K8bR?B`_$J|ljMd24&dXzJtj2)5p6F63P1AYa?*LWL8)16ju{V0`R1K7o(g1-| zBjQ<@E^xC!pF%JzH?Oeuv6`_$Ghgvc=Y%lMU^ErmY|E_DK%hE4V<@KdVVP-;63Rp> zSRJ``=V2hlZ~M1$*=I)4oUMD9st%*nnaZRytzWwd(&&X`He(77^DF5Xc6IOR$3=qomQf6T8vyKg$euI^SJJMy(NOD9XsKl2d5mFz3!yn1of zmY|sX^cyjLdbD$<{bNnF2lg62-Xpw>Qf3O=Il&^Dvj*PD*X0g;xD&6E@L=^s-{pWP zCr{TfH)6rpnM8S&+dx7IZPH|8NwoyUncTf*TfUwdcwvsRTZyk@w3Wlrca_H&VOH zQ-gHR2?@@UpO6tR0ta=V#%9rdphcZ<2d>xME25yzh^ojV3mebHD_2SA_ z@bU>4EHjVjoTpEJysG_qef7INPuE9sNOA?{%sVZSvPw56DWH0le5xP7vFK~`C`~ME zM8K}|9-xMAA@2Y(Ez~2m{JmScA1*S)^s7x35yqNDIaUPKY{ZmoehHL$1*a|~HZ{yQ zfiCiA235O$=f!+-fwDxQh3?*zVZXsAX|?mdQIa;&d5DcOLsiXLK6(b~E4h}eJUlcd zx>(Tlf`tOSYilxUuw@pqTKue!q8r~{4LU4y)en~9jM@b z(PnY@+L5`fbpQvKBh+kaLteSzRV=H&ixumv5*M2eD+^JBSNiH#nZL02(L$%7viG!$ z-CyDg&cT8&+1!tTOX+7_FRCrJ)e}D@E!ma$?PG#^k1tBYqqWOe<@NO55rsS4*DmrV zu)~iONZTT&m1o!3U@|<-<3bP+*Yq^VtI~)rIn};K&X`4l=r2s)oF6Q$oW~Hk2**xZ=Xs zqm`u`7&tuES7xr)xja^%ZxZcZ+ZTD~`jk{C)7Iyw`x4a#W>hlU=g>a?2F5u-#bA;3 zm1yYe*h1Lxx021lPYh{O^FMO}y_|p67DYF#tzqkKF$!3kB3gcw%)%_A0&P)zk-8v4 zlY@5U1Ury7*}l*4maRfT{<6NV0O5RuOln{~)hG@)r(no93L#r0bo8@b-DlxuRlb|02{%bv-{y@0!#^f^9?@pzR;J+5MHexL zOVylu?PGCvC}ONLG_dBe^rpZ21%hL>*VH3tlU}C7vz6|~JXUnzY!o|Mi0aCCIA$&= za^*V)3s_1XU@6aeDr+2|mRbJiS9MP6(@aq95!Mg6Jg^y7BW9A*Ze>yID4 z+Zb?wM)D#4i*ah}m2Qm>Evf@*ns8MK550r)jiknDA!GFhTPQ2osqnCmNzW*P-WR%mG`D+ksW`W zZG;DcU|-M$V*^FlI-4v%`wNT^#y#_GSv*BQEU%wM_ugD}C@Q}LBHU>1P+;yGQJS~O zW=`~^o_keQvKaty={aX}+|2>G+iUds;gg(?*xctjX6MwOsAVf*Wnv3mlHa_?8PA&7 zGQS_gFX4p3^NAE^Pr&d+#i-INYour!A>f^*wbNC#DWg!grBBwNx`#GzTT7TK7RYVt zDLVorqo9p2+pvH*Qn0d6QaI=KJCoFcBbNx9+pOb&xR|4aYcT1g9IcX* zI=a?;IYCjgMVQc~C){9l-v|6uT02b|INlJ)DLIYrQ~1H`aD~gTkLgP)2b22G-Q`oH z7!j6CanJPL4hsZNkZf1Cd%A1{w+%S&)U5_T@fyU`*g<&$Zuw-AoPh&&Yi&92Ptmk0 zA$It=&jn)aG&byzuOz_cIly6{w(^&Ci|4nx+n@eAF!NHtFa1E+t-b5yJv=keKC^F$ zwyHBWDA}Jw>phKLt9Qa9;VAq-`h^9Y74Mdy9V>w0p#>^$lB(>Zcsg!s$Glo_6DYO1 z;^*U%M+5*hxs`P>Nh$Vco?jqJc9lMQlpXm(5&(u@^geVe==dQJNJ`GZxt^~pna~RP z#jL^(rmNcW1;DnqbC{?cy>KEvt_N9sP8|5iPzE>Lnw_LoUqaln> zW>Y?P^5ElJX90M{Fj+=V>FXFxRhLbz2=tV~l&(U~8P7hLa-a*^d0=a`R;T;j$_5oG zSp6ueH$1{hPe38F?FRxnmNdQt;P%XD4e})&IE8(GVM>Ge5I%f%^gC%tC7s&jJc~V0 z^iqC4$dYrC4jgUp?e?Q%9N4M**DB8|u~VN(8~pwXf}xwE^n)@eh`nS?j1Gv4(?X82g2k8wN{=rTCWv^D9Oyojt7Nud}amJq)I02k3b|u+zhn!5H_X4kKn3zdua5$TCpg(cu@^hVVL|l_u8@&8! zmP)bC^5^$fCLl$thDWdF-CJXd%oYZZvDoP;(||k3F-@5kIkeec*iC7CAk=EY+=e@l zIE8|o3RmI$4+xYA4x$^Lobu(cU^=SS)Fy%FDY{ouP_Bi;wV*kG5`FN#?@GUzb zX~#m22s|BApg#Oz^M=5NO>Hs5Rq{P|d7%cbJ62)R(p2?!$|=0q)L|j=WVw$eYI#3I z64$6qva|G;;TlOEYASH_;iEFRjwE_7HlhZKNN{Yk&T|8)%DG}#4$1{pZDYVEf6BKt zi%Q*+1TDNnHeKArHaSGOv62_(rYdj0Qh}qz+Tbr9-ulB%7sk8GG#9b_V#?4D zbSthZgIqNWA37~tk#?epcO}jitF809e#ku6fANjX_`0}@p{whn@NoV>hS4l>!M)UX z+nc*m&`(Az26E5cX43X^IJn|F$eB3jaM(%H+xDU{SB0$Kko`SqfK~8ALf%YO)k;%U z`ZQVHbP737oKNp^V5tCz1rA)$=Nulc5b{?!6gj3_3h zY4Aaj7g`$G`Bw#3k=uoa!tMAM8grqHLtymsm(u zN=Y106%)e3llByUL+`}EP=g%G`QAmH&GJ>Je&Qb07p;^x<$ZCrmz*oq-W0S`6u5dT zUkc=IR?*o!am}sRlBzId!wA^$U%c*h+yi)PCm%ciBkd?VIa%xYj4A3)U-0TlyNb~k zo9?>JHaPaD#z9fj>L+lAEbcNB3lAa9rgzU`8hwYCCfv&L8=As0Psn5bB+Wf}L7!h{ z0cHqm*+|coGVYfo@N>8da)qBh_U14La)_;ne_N}DS6k7W~|o3W3Zdtq$!k{Cfz zd`ZP(U$cJTo5T|X>K=r#p!h9hY58I`R_U8bXc^&*f@f|}Hiw@5piPm-=H$VEn_iCg z4|4~qlf={Ped&Ts!6b`4#HQ}tR*;UrJ#s#%T8P0BS;o!P>v ze=xm4f*Z#q*p}+@V}pU%0MoJaNSAq`VXhL=ckyB{Wc^L8H4rci=|Ivr>~NKF+$~7U zEIxvgJ#daER8{vB^Np^rBLf@V5Hk+qs%pU>t~*-;=SW+(SULRN!@)mw7+?b$o*!#F zU|`x@F`tYN^kmgM;G2{_#oVQU481i1@D?1mi(rVne9m#h_gAz@mm^dTgFkDm+`O6{ zZ0!JSB}U}wgpeUZpo1@WWoLzpL?bu0_06)0*2jX0dY@)op^K&SU`eTqmud)&FX}wv z)>=Kt-Jmm)v;&ur;!{r;@ivYW)Q1yEu@_3x9l&xV+?$lbWX*lOrQ|U;QmUS8rB8cG z1AldXvL(`;wP(=0naejTk+w>yce@|zHkJMB>@Q(E8OxiX$dpQ`7P%6u+Wd6nU6m)3 z$obX}|25t+nBAg4KNGSQWIxm;q!wi1lipy?q>=UBgIHP`DDC;rTp~?#GLPyO2a$=- zRQZh)j#?`shpKBd(gCM*EnG)6|CS8JVI?A=Ak~2oO%gz^yKK(*pgvT*+xntBBR61S z4#}h`wuRIL92{N6`8nD!;WyCALHR9*Dlp2AZ}0&s+fnS%vtnEiChC+UbX4K~@28@! z0mm(%u(}r3;Pr>OlFot&m(A)4>)($Y2M6;8iC@EJt%9XHP0gzUl?rV`yO^XU8B)yQ z{&JfO2E{4<+iAz9YwE24x2PH8_DP&qkb`)*Si-~QM^VK}`}?o)-EM_@3^2@>Th02d z?;Ljm2!T!Rs_ymb36L90ClnAKQwGg}g0xd39U%z8l>sRmClF{$0BfPHV^(<9#iYkt zb*4W_r)9Kh6fs638f+8St>>OSl8Q9*bFd&ai)9iUXcWLYHW)z)A$bBT`>WHUF5L*`l3yy5+99NNq(fL+8uj+P0g7hWrf zD5)yQyaZ;a(#4yEOYR)97td0MEqVsOdAPpWsOxhWl-Jx`kgX%wlBg*XXfcjaWm??1 z2^G7wYFRaQHvL(h@4Usm`TLW3{ic!)^ye|rCpn^( zz+TKWs4J!VRr?N<(TW~6BYIO+M&U^LHtEtk-OS=B=K^PPOEX-$OOfJ=NCBd|Z%r-$Ur$we)TEMh<87Tl+}hp|VP}h7;$;BQ-9EKL0Dffk!hH%Y zzHRPnOXBCHxzvJOWRb1s$fii=?EPeZ+R8h|fl3^*8*bv%uf#cm4G|GNARO!AKINA0 z)a+dC+F?F>sp8~-_yzOY=Set_lOnUSu`F;ojUV@wYF?Wje}`+2TJkcw$^4v*+WW}dx&FyXJg70 z=IVneNhgfT!ehFOL(4EgMEIu3>0rvDsl8X)Ro~L#3L7kdF2nJGJ!kkVx#kI`aePdD znrEo0^VszT+V6;XRgi*t_IRrrXEADmA?q3_6 zOA%CfP^FA}Mo1DxsoMVbjk~Zk4Q~SsNUvGa@?p$Fcej8t5DU~Z!QmQw+C^~^p|g3g z7|YL-Z+i%RCe=BJc-{U0D ziwia{sfQhbk zcwCK)SH(xk26!o(H#)C8TJ3xNM&?F|g82DN%~pGNg4=8>sQx16uAW;uuO0Tr={48Gee%tA&{i!tVgZ#~0yQglO>XXM@M~NGUQXH|V~NV1?WRfYsGvZUc$_^18Syv2N%p)L(C=Y0XIJrgQpwy$B z3N}#vch!*jcdaNLdHD&7icbBQ4+{S=!Q`E5=F6jYgsqec>nk%RGABB6zxJpWa~%mj zjPBZk^a*N2bt7ha%1WC1@jdLmHz{ilja&S7y5{{^N%!6!+dNchPy~BhWb6NVL=PZx zn)H<8yU{x>ZFtLjznd;X&=)6!Y)vo@Wh4rW<#a1kq4k70P^;Z?^~^U(01Cym1l!zh zc_BS?Nk8$!Vk6I!#gVe~LtE3wK_>xjnRmrWO)Om???Qgqe6T5A5oU?Ur^uw^5Fjwe zl|qCHzQHl3QAqA@Y8~Dk-tq$gbNTUp)ac&X=&{Qpb(`bXr%=-E5)O-3#A36q(RdsW z5;^G*ow4YF51p$D#udNpMr)R+d`W@IF1J9E8eBlR+Q>#ormtuoD&l0HXW@>E-8!S4 zOL9F}seB~ZytwW%k+#r?0dL`g2K~mCsydZTgv7v-v8Tbx;x=!Zz=2GN^OC1|-+%}TvzX!^c|^Kf^rst~Bb}!60Oq@Av1Yqq zB&!wNMREoX1sLLJ589~t<)VJDJ`1Zl?q58F7;g?CoF2&mQW`w3?*(m&05SoWGh@%x z{pDTT2Je;=G3KZ`*Cw2cfRaY)N|xe17@GxC4K#QR>BMT`sZJoXdfj}JyV7TW(57yC z>)Spd)!q|^Vaph7eYy*sO1xsD?0dZ@@R9{Pyc`)alrO7McTeGx5SzOp`+P7B=OlT| zWn;0dqSxT?wygT+VJ1kq?FhQgWndky!v5&aUqD4k z1$N&JRm!8FZ#_<~DZ&)ulv}WmL$1p9Qx2ForhHqJ69%upalkQ@@pCRF&%$($B#bkF z_a3yFS?@YHJGqsqt+UoLW8*+Gn?kQt^$Dr;ZdXqIHQo?1WSzbwPvQASCoA?mOnbqT ziUZ{(?k&@60O!8U6BR?Oqly!@;GzX$8Pdcdj zj-%M##Oe&9sGOx~tC@f3B;N*a2crg`Ddt zOuUeqq>h4Hd{sY*zR*|R;DG`2|@a>kc70|)Q9oV1+-6@><7a2Llc_?*lR zx)zvNa>KZeyA)qgQPoXxj*fE!%^Nm&E`3ljE^Tl-ymPF+bLc?(Yc{Ovjp3A#`^|}K z(E?j-u!WnbL27LtA2)y*%8l!n(dW|DjmM(-XQl_#)6+xBzf3O{>pUf#=w+ji!7vwf z`mNz!7Ak(_i4w*gD&eKYdCN4v*B1+OUq`000@`)RJ0SoPkPoR4U@2>6smxl|vwrQ_ zECj2YkE;IgA>Xm~@V08sUC!W+jOl_UFQDm#v?y%}R~j2KBJhg+25_N)t>W$+#l;Lr znHVATy9D;qxhpA0NHRu2#f$DH6W{lTjTP0L zWHcKRNO7du#Lop&Og96k?t6hbToYdM|6wouqQ6@OgDAZ9yycfF2$~qEp$0#yiyyPJ z?N30%dy6Uq(e;CQ$&7CFs&_}jJsK=KA(`K$e(-TUsk#4+A1Oy+!6oCW_DdY&=XmSd#Its6e?R8re$f*3}6(4~Wy++=AeIUq@Ogd2DvGjimzPY5oL{M& zz^_Gp08WSlriyt!kWr|I3hSFv!1hngzP07+Ijz&smdBzugPBc@T79y44wIS5pFpV7 z2#@PkJVVtQ;ZqgG@5V9LK`~%kP~DOL6lCKv^_vKc1{2oP1ZqY=5{C95Ref(nimhy9 zxdDJ9p#&B)LgXSLvkDsX>PGkn^e?&mjy8qZ0(C{V(eoO^H!y*VIaZ;5Mqd>zI&bx7 zcf3&xoSS~9q!7I&QD4QAla=ncGm3rKce<=R;EAJw*O33`z&6liA`s-<(;V<_MCzn)Yf7NWk9rQVA z$-RN;fa3kZ^&^^8| z)Ii0xkg~5!$Pb$t)c=&vGrB;wcLf6%=enKdFF~ytJ#d*nF*%@W$R6$}74G(YHY^N{ z3EPL+cVgGi=^hBW>e>*UCD&P6o+M!IWmuBzI64&lf3f%0QB|&8->4u6f`W>ONC-*^ z0viyJW`lG}H%Ln7qEkdvN?N3plZv0^Ql<_R)JbsEeYOD%s+~(KjWFPoY9$gjOtrC z5f)zf^h+6bGoiM?lB~!Un}s3BM&*~9VwmSI3$+kTeXTa~$*DSZ8B-Ydrt01ZmdI(v z@<~y=sXe6{L>w9CwdPl4?azn3zg2)RM0usLQN9T>Zksky1^yS%!4tQgj$s7Mx-$Wf zSv6;}FWK8ddqKfhx5(2?^Rv6>CTCSxZ(c>cJ3N7ZZ*<)!=iV_6U&C-~T$+}*na80? zy9p`Z*weZ);%XZKKD~e_U=UdN>S~?_Yp1!x|H!bcKcx%f-+r63Z0lRAR%@r4vbL_* zy&GD+P-F9_tt{_Bz5Bv@6@Zoc^yDQKt69%uHNx7duvOYCQ|{v<^S2E~a&%=NVKZ{P zE-zUXXypxa8iCv!z|`JY6Qnz^82X!^P{iGFhJ~?oBU7*R4?0XM(N_u=(oX>;{Z5jO{-`(1q;hZf ztBYXw`aV$ueb^cuD(ympW{7rbj1wHtWH3_V95U+C`jiraQ1QS1%Pu z0=+9XV)mt<$9UP$BZvfc#YgW{o6&6Dh%B;Nx~Z|>qzgLSo$_RZsX?%MBTA)ntX0iy zi?N`iL358)&YJ9NWAx0~hgBY&(ViiJlXF-YOo_^#X(Ip80BvNz%zl(BVM_^f#U1y- zM8-}tZ)@H8PxK9;&l)kg0sC;@c&~?TDC4`HgMi3lk6gL)ivlxR`13~iW?imRT-x{~ z*v& zGYVhgDN|Q)TaphF-9HL02Hv7-yg2=At?uFXywUfR5rI48*4cN8pmA_L({bDV64-4b|L5-h&Z6WIpYHchWLl;f*;@)^`#~p4v>4^s@5b&D z0SlqLZnQsp0;U>6CC56E@#fFAxrK#~Gc3AMX#_sQz>a~O>SwWp?qubM3dorOC0~}u z;p3Nt>3q2yHFo144U*8;4;n(96gywhCwmR^_o{Wr2f>vtyi!MLvU;ooeD5hhek(_urXn7WEgul%JRKp-)>m#t&je6 zCvEuZe`(^w4?&}bs?qJ=nzH8#NNbO5qsRaBw0sY7TMvf!Y7A3* zq(F37VWc$1Y+!VTYZxYf>ZGR?O~DN8ias&NRn9M=Q8|$_k704&tQXstQisQ4RBiX( zl-}QSPGgm^J#$p99!X-fBv~u87IJ#w_(+8-9*H0TaU@;!UiSgxvETx$p}LXk%2HAl zo_@F0kh7E1>SdB!NN?SQ*?5e61g$Oa1bb%8YQgO`D*q+U2>PVric6J{ofywS_t387 z!alXY=Tr?`GzYt&@zuK2n+18yB3ckaI^xanw`_WgTrx)n7QwlvQn8vxtJ;+Bo$hq& zkbC7O!>`~XHLgK1#T#um9qoyRUb$9UNLeNFhTdat8jRg*nZG@J4`z{_U$9h-EypPx z9ksRE3B#Ec^DeR}y(fBfnKP#Jc%ITAR*m`_$wWOH_fBRGkfi1LR-f>K$*Qnh+#kaZ z?_ZCizeV>X%q-FTiGi=I@?4;HrgwL|lm~*g4)Uo$Ykx>_DqA~q-eOWu*F}EFB=>m! zQO)qgO#`Uq^U$k)2B7G#dVZ9Hi~GYrdIpq#&(L_hYPyR z(}$n;3{2QeSBp*O-`v`N>k&IF?)Ch%^v!$m8!%gneM12Cis!bvx7Aqf(Ey{I=MC|* z);Yh%NqO*MsMbA*PR?q-r*@&9pd8ZRb$SGGQ!A_F(s}?}nl~$}FUYSJ1=h7?c0s;T z$L>nYf>a;yiXw{B%UKq>qg_mQlM4(jx}0DdTfDi$y7Bd&wGzn&wgd3fqwuPxP7&^N zw3w$$niDHo85Xq3oHBQ$GONkBS9`L&>)@l+sy5R#k8%e8pe(50`{Y^T79&&}4LteXU%wklz0gHMHx)YJ%0=NX02nEF?x!|{U7&Z+^)*|e(* zyYFPO5$k)BKfgjU4RA(}G^8Q~sfXf8!e?!lqB0|es9OmWfxFK;%HAthe05w4XF7;r zH|lt*?qqk6xZLL5scE!2jU#;U*2dZK{9j4R?D@TTJkHBe2zIeB34x!TTzc9}6V7%F z2Sf(v&PVTWD^R%cXEmDWhrdVYM|NfN*-vpEy=yWvnJJ%R_n9<3d@;f{(YIX}uGx}n zW38QmZ{|})Gvu)Q&NxF~&o$MMV5Ad&YpyjibtX9`eV}|y%L%FuoVhF_W4ZtwtNXf` z8|ks*E2|?=v$NK?&|Q6Pr1rG@-;{6VLZ)bkV!xfnbA?~arj5HvHFL19uUY!SAL(i# zpny(ocRdX=X?i2Q#qSoJ0&^T)8|$|}z@1>93UFZ?;$^c>d8U*ldDC%*&?EA=|}N?qRB(Ysc- zbNev^(#z0$io==aPoN$0h!LZ_DC~IYXR5?}y46@WC~XYTzl`%k$~ooMCWE6zi`Ar& z^fDos(pfC^DkZ8VaaYd;ExZ^jn#|Ey{Iiq-0QFfxTyuH%^%&dpx;5Lmir2T;FB3rYI304ZH$e?-!Ro ztxu%uka^@-Ii`OaRuUtHb!~D(XRW{)b?I?`~vAv)2o5o zQRMmhX@sN7B=t zEjCKRwG2gL>qs20whJsD>JrxR#IlDx>&4-I1LY9JS#4;lGO12|PS32&Nq@tM0N(mO z3%E*SC^NlV< zqo8$Xy3VA;Qr5;6(3D!mXBOR}6nD3I;-U2O7RkJtrLQb)Gg%Z{eDC0#KVS3uoMQUg z9NNep^@iEdCQ+XTwLG|Rouj+ff^zHg&zIPzuy>#KCYS0{1!Y({>n~`WEtiP1KeP5Z z+ZA&>HJfpYjMbAei9rO{|CtA&pAxBl$$lK0v|vH}A$_1ii+hJx$XS)FeP>ZducGgZ zR;x>km_@*vIX#7*&w-{_yXsT_Ot}+1N@5b*sd5kA&jbY$kIkva^h)aG*6U8&A1o{EJ?3y!I`N4Ar285H{JXo z331aZR4VIW9AZp~CAIX`)h(OW0_fW+7%Nk(Og}wQyomw_pcMCWTUD9Dds80IcwSQO zdRv;S=6%XkwqqV)ZsW_|H0X#(*Q?-A>scF7=MBDVP8RPmG5Ba(`b~q68E5D>dQ2@U zq>oZNjL7Ob1A^V?y}WPU{^`PqetN{wPDYckPe#Ri5*G;DbSt}f5%8J2xaC6G%F7E8 z&W|Zp^Yv?`^*pI-Tf5<=zEfrDtcRO(Vcm|}RmMe83~I=bY0;I@y7KGBwZQOHCVmzc z|Fn-kN*QLh&$0xmSa&q-`eT2~ETee!%)Kvyb}?h5K&J>or1$yd^FyuLNfTKdP>%Xu z1HjqC?(Ar)Y|vKYV8Yl!j9_M)gJDAV#QO3|@b560TBhf#+bH@uei_l{t|$o&$tPK* zavLCl(F`RP&4ECadvYSwxvFK9SDd7x6g#wDX(%hHO;XPCX~ge7xkX?6la#43)UFDd5PD!L#y}aYmYR79)-l zWjZt$R5>MB=M?kp+hfV$Mlo@JHh>oB6H);tNmy{irDN-%MDrI2lO)QKKca{*oEgfR zHZ-c6oxC{ncLIWLveLOL{WYiQlB2GEFZ)jS7QB9Dz%)hMMIF{Z#P%J8)*)j08#DB_ zF7Qy0CWZAss_P*B#$*J;h>dIX0+#L45 z5^sr@bH~wAMGsAx;M-r*m0>6wcYh@v>+gg1I^OahKZFZRcfh=NxZ_OVU+i zyK4?H+hp>V(bnP-Mr8l!9)ED!+8jg!5E!o6pB8YR$xwYn=1r{E!3|wcTSCHny6+jd zD9?;tJ6L|`NS4V~*d1*l9_ZLTQ5xQEfs19UTmYX+k6-O~ZTS3WzbHl1$H~i9`@^%m z4bwZ_-0X(CFG)YY(zj)Gg!#ul*6gl>leDm}(q*LBF6^06VZMWT&`atD}h!PX>P?)*; z0)aQRt?p8!TW6&ywfSM+=RBFuLrqXQuOKihHZ-{1l`gpWY>?G#IrfRu6tCyTWPT!3 zTbYefVwg1e>Y!xe^bY>bVRys{bTvIRE?e6J<|M8wVS{+^rYy&U;ufrEd0={lt$AEY zJMahSflX|AV_m`5S|Ee1UNS^Ze=JW10k^PPo6a_=WIOeM>1U}H)OD%lm4--Z+h~;V z{;=5zIXZZDfob#5N4hMIr+uV(nm%0B;oXOltIsjfOKyIqaoe+(%09cl@y#`VZsueu zV_xdz2Cx0Z{nR0$P0DKrC;Zr>QV{|y=Q{O|EEm_JnxH=6j+rc-LOwH5Dl3s4J8?-}rKfERt_! zt0U|_f2JPGfmrC8K>FEvkj^>m4Sy2NmwTBfY$FH~hB(bqWhZ(H({uN=R|!0Bnzv}Z zpM~(8ePqU+DLN~B;?0x-QHh!C?JO;L7^X`+HCLiP2@sy4@%x+_>W~7Q(Qnl@`Uudb z{+6NFXUy}-8tR#^MX}sjG4HD(Tg^=B3%xL(&d4y@2&YF8GWQTBWt0l2BMRC04gz(K56WhOvYXYkRAV!xl3Q7ZOqRJgK}na5`q-ds%b#fqf?0b~ z)Wmos5&YSzW3^m~D*7iIYG2y)5a$9Cp&dMk2Mv+$C?m}VM{DC$nM(SzJGCrhSNeF) zcVb!FzYx(cP!reCC?n|9zrA7;ui}zXDJ;wz&xz-16Wv;;4za$Bhx<$vutvE(uTV~d z(})XH_nV^#!bQ9z>Je?^y@G>pIG2xIGV=Ff))Tr$N*h!4C}6#t{Hbo#(vW(3_UiC~ z6k=cY^T3SHIdcgJoQZ<$*LRWh3o%Fg@sv5-sqR}D#k_AaS(>K8EUycQ-d;x_XL!r%_ z;0C1u44z_SQCyz3Ux5v*QfMTe2;^;^HXV$uHj!?BxLJPU0Gg|OyvN?Kee3nKf)Lpb z33Eip>Oz48rQ3HiRd6#d^(4nusQgu@ATTgZC$Q+^&kIQ#_Tc2N`|!E->d0Jxc4ksX zekNWdBCUX0CSS*4eVkJrW(9jX>+Yp;*-8NJDT8om-&W1pg)geCb#t3UTUdM5PslhN z1-yRK{i!`_WuV&{(pG13>MjLz?M3zr&$2KT9EJUCoyv@73VQB$5!v8^1-Iv?)nbn> zV#HN3VGA!p5{SkZk+%GIm~_6b=gbB?zGM# z&&Ha~O5lyh$jUI}d7_Z>=I1o2MBZ%ZSUEr<4O81`5zF(*RR=g6vYVvU;pOYAvnm~O zbgR^Q4=S-fU6u-L!r5Ods-67OdRyVMUZ?|M0b&mvMzzdl*r223`ik&ILFObQm424{ zjjh2|eW7|)%fUhjeLj@^+@k5qNauqJ%b)eXBG~Ha2=;18H^lA6-R*DuhcA|-9Ibyk zjHRhT-&Rz16Wegi9p@`fxk&_XMM3|PVTT8C*=UOuNcvI;aQp1{GgrmOl4og^oLj>C z)67WS5Z9M{4nC1(#kJTHL{r2Qdq}4(B;q=Ru3gozvIMi1oO0)JihCvssz+bpt%5rwK^~M*y#!X1iNP&KA zO17n!Wf%rbE%yWW``cU2?*GXS29@~ad?|1!jaaA|F@HtDT>6-^)K8uY-xB;;rJbW2 zA12wv{h$SBkk93wp6IlVT3ast2U4Uta{`(uWF$GvE|WUWspA=cct}6|WAe(jL)9k=ko!zAtgLR1O9ThxPU=(2rd=P7$}IUPdgj>oFL|^M=gnr}yG?oc z!jE(|B3Z1p;_~&rcNBxR>c1vKr5n5m6^qr#cI*L|ZeRVmlavFfOmb3%|lhBewO zlHWvI9K-J;vJ?E(=1Sc_IOX_9O4lELzD+8r`F1CRbLFt%7I*2GT~etihCYE_gWB^t zEhShiHl17|V>cOh=rBIf$XU(eYR}||J>2by{EdsAs3$0_-rn(x7fqGan@dCW>4Q6o z53&2(m4%pTvln7+nU=D+W8k)-;hxIc( zA%W@7i>Sk$+hUfm+x2Hn+_)fyRSrKtdDhRpK03GO@!A$ivqs1Cb}}4k?%sI@0C~u; z2P;xEJpEfV=%_L;_p9gLee^*-n!iegX)hy9HTgViO9;X}2PL2cG2zf>)h9OBS7rA3 z=3>RQ+A%L=#D^&~Fbth8KsAm!3$5-R@RSv zZLQPeG_3p%J@@u;dBKO30)!j|EeqE_+t>NsMWwZXrcLj%4I>+nzzT&_QirV*;(7(B zc&A~%yMdS+)!Ak5jk(@8SfghQ&0Sn`M~`EH+w({_j`Csc`UeZ8d}qP>{THGDhT(Q4 z1@tRe&lU4sUu#stnoVhVUr-;@a#=76pM>?u%Z)i(J(e(@JMtjAQ;!bo6==vn@mOc49o{LCNa{rGIBq#;@>duzr*;acdOz~g#8^N&>iYcx z9wbQQl=y|WMhPS+(sN#Z`tI{6N&F{#`rA^ zeoIdz)ath|_$>^6YX<+9t5V^Y*T$4;o`qkstc5}e$=KC;l5459;2s+6CLJ^o*l;bB z{&rxfyzjav$JN3_U5)oh?e7LJFuwoNbfmd3RZ+G~Au3gLA{kd2?Zd%h0NOp3!N+yv z%T2#u{y*HX38!VMCW#P-JWmF1&#G$k)SWkv(S{P0B&HBKA6>zqYj3XCY-X}_tyWnV z`>)&&V1t1D7cK;b!_`86gw=CYXK&$;z%v=R5)!s(LS(?#1lbsnI3gr}nO{>3z{cc4 ze#i(W@-Y1j@IA|13T|8X5At_S_L@pZzmNVu{B{UAhqzXSrCI*Ti!**VYB9W$u4`xm z>D!%;_1?9E%j4brT`gsn=>~q7rg0aLa5Oeom`Vd>{(W;V|4M?K5S1)2aGQ2pBzB4c z1^v9ks!bQ2t;(U!LdK=?eyJT9(n1-JRHK;wpi)VGYU{^99&g~dlusOg%z;i~Mr{cA z4;JY73p#0Q^xi={Kke9(BzM zG;)mf`q0JkABhpPCKh4vByQ8|=uKgJ{Gs0a@)+cYZ_e=ASaG|{M0xY(&94OiG2Foa z*`eGY&fe^3{__=n0=6afDoF+u`T4CwJmLsj=QTU)4{W+xW5;7=|M)zE-Q0}NLVIJt z!i@HLl|`O%Nro&XH_MeUVbu#?E1F__&5*EYt6l{h%Znwv0o(KBuSQoA@K^47xj+JT z&p`%9|0aAA$xmjxFLnRd}^yB`PRRV<(Faq3SGOUYbmH2 zwQG%vptkZgTlY(`vcBu2whOC6N*PMDj+a}$f%HPuiQ*OurxFT9najk+NgN)w-e0Ji zZ}0w}ME(cLN$h{<`J5X?^mma&{!@;Z*S@mnXXIlhO&{5&T@08n zHl6B2h7L%~|M@B>LmgDZT#x5!7S2=ol^KfOm;=zgS-4wds{n7+ z3gL3Xh9Y}Sd%3vBc^uyuyPdiHP3UaQe^_?k%Noe3(6kmp)Jnzft^cpN7oz8W8vI-c zHTREK!Q98L6K*VlbUyK_t=u zQ*b;T&U|t1DGjlF&XQSbdEK?yD%muSW<5`So%OE)z5urg2#_~Bwy>dIY6PwjzF-^Y zYdQd{Wc!_Mu0<+{%ew12nQH#yhZAN0p%rCJTJ3sPSpDg6u8seye9d2=Hm1q1@X1B6 zQ4w9?YL;j2E_(Jzzm+&Q-xZeVOA|uhg8`F-r%H5(R4BwV^5}W?{mrMJF_Uu&tMg6P zU=htho$s52F6YIZ{)z>7qntd>LHI=VH2YNwTMj*ceb z>iW?`O@VR0W{3OiNB#L(WY^G4xKaIyp;`%u{ivD_Xd0oq!HDFeHAMkSaun*2 zN)}K{)4X`=UnU@$NT@lVS7AI5!@Nk~^@%Gyw9Mk~0p8{dH(^{hJ}O>VgdPWZP{{1HCoCWlwR1o97B^_@xP-E)a^3s=>w|ch(TFNW0x0H&7mo zi6;2xH}6)w3@<%${ZJ*-v6K{f-`R)$>V3JFEJkR#|4Z87rlSCo49VP~0Z6%d;|h?+ zFYF?XHg8=mOnoz^UG@PsRghez{OR^1Lh}o6QZj%d1@S~vNjV?4zrBiKt=KRbI zzI`~DrF6Pp@xN&QD~k3-PrK~-QJ2nB7O;#~Tf1xelo-x~e|7?@=~T~Scj-dbG;-Kw zaAWYsbR@mF;SO$%o)0J}L1$Y1pN$Tie^EOwjW`&`MmN2=Wf=bey%<-bgP)^pS(8PPG*0>an`~F6&N96o(^S zTu${}9~N^Zqnj7`cF%5&7Mq0)t_*3*YkI$_i4cHVoo&mw&HoI1Xx)p6rcpFs3R4ZD z?#3_Pi%%(0B7>X+xTfd0pT1!YyTo_&nT*>uremY#VJxdY7n4-tgR0>5L8D|I`HmHnOd8=FNY^^P0rE63`7m{A0)q{2n`cnVpuz7>D-oOu(H#6;xk-O6y&yzMPhIFzI@E@gb@jtQhMlMuC=) z*vmp^FQJ><@9#uomzYYWv{IHZXZ{jZXttcRMsX$d^qPYwn&glovDN0~2iCw#e5StV zmCkb0Ioj$mc^Wsf8bOdlQoW3&c|buzs}*$!ew9px$89$c?N(JZi(eR}1zAmg_6w$9 zd(iK22Yn6x8gC!87w5v*tKB4bAV6;%QZ^Dyb=}ax!*K3;uut(+(S2`)D61c5c8Zm= zGb&u1n5lz_l>M0&`n>%rA8s~R%yb+y2T}OL(pF6}FuabDI^Jv#wj(WiITttY5=zON zn-uNFrbdoGsSAh?3cEi66n2Uo7poDM87U-G51?T}qnFwv#5(SH>N4JDWLQzoaF~1( zfcjVw=w$vywAgikPP5J=hx}lLzBRHyE&cs9iYJm00z1KT?srg>{r58W-=kN!{n&vL zy+Y8Wl`nL%?S}3Z3=lNVluc&w54;}f&p5dGr1k@2w6QvKaY_A0Jw54owIqdbkq99~ z6o1kmUov$yLXkqoE*9%7Gt^^ce`aCuaA$jfwZ4rI6sJvkC}FbyvuPVv2fChq1*)|MQdgTi^oJ)IsEJxj>IWU z#5_k+tOw@#@yz-BQ3%;{UcZz8e3_D#kaVTP?dRiRA^*N-pv-{00xz#YPwnhc1c!lD z3U;m651Bn<%gY9pcX=e}IQ&?%%sFq_2kQ^i@qHKYbIRrpDNdJ>$=kP(49y*zoyK+$ z``3}*L9ykFtad=g`*wdbEh_%_rcZU*%Y3ff zuP^brmJgyUU?M5zAMXiUp(9u!z06A&B{C(!_2Sj07XJ)({Y^7eTxgs|%TkOZ z`T?pmu&>|dfKHRd%=zzWU5s{v40UN4%{g}RpdYxQ1i0;oJ&^%UZ_KBE9sjR^-iDw~ zt7xlgAp!jWF4E@MtOS;snN0V;*70ju-^EdqYV=^z;o?|ctAKrRodokMNjLr1jqppo zHcUm`+E$)6JZ9(zL>R#l^4oybd&4dUDteBxhPVVP5-uK~20auBD7nG>tg=Xd zE#X4*K>g}B3QT&itz^mCJ?IDgK7ftH2?JKu@8kJ>JpYY*&doODe^`G#7Yg;!Qqfv_ zUA#fl5z(PXb5)Zlg+U5e^Wkv}XEE`Y;@c*%A0CXgs}IWBc2I&M_$ zC&YQwE!Fg#ZyhIY?DKKV9QN!Sug{!L?I-^79Vnt`S-Tn1`4P=#cB&2J1|Snf@)MW! z>gwUcLu0JbaDJ!`*?(n)t3Z#UYmh(4{)vm`o)lStlC8Q*-{9O6lk{IX`@f6`Ug5F9 zv|6%S`LE1_L5z|gsyY?H7ypigI3)s+^Lvp0Ce(g!*T3lbH+B8ylmB)n{}wBke)9>M zFn-@Bzpvll+R87R=)!4s>9>IVEg=7|Q@HsWG1quG)?|m%jrz;$uTD{fo^Ypf zg|13Klf7yw$%Dr0Xg30Jc1){3U87Vgd9#Yu(KNGH{v4O;vu{JVepttF-h}b~bgjeg zi2g!X9LIL+eV?{6*a-1m0a0YeSBeBx+!@Ezl#5KY(+W+{9)~Wda+$vDPbeL_HkOLx z$0SB|3AjFRuN9JX>)&b^EWt;cRdC!cZGM0wrLdsw74cm^D_s||6JBK2VVLpWPqaGQ zk~mzSm)ghqMv5}2MCd+%3Z9Ri*HrRr7Nzj3pK40Qa_P1mWjw^XfvfLF1Zw#>E_O%S zmL{)oSx>KB&1-Tg4ZeoF>Zk<$y2kI*-tjqjk)@HJFqr#X_t?Mr@fJm+Gu8twlv^W( zaPS!XyiyYER=u=#fmWm$@F@th-DZhS2XsPGI5Df(m zy#!Sj@IXF%+Rzij7dh$OnkQ9O{uCW}zm2~(<~CUAj%nrp>QxAcGF_L(jrSgacaidY zR(kSVe@YPY5u8risGB2@N*Cx@%b&1`)V8gnojx5y`P~`>FiwXEeDt7N}w)0YtL*yQ=gCIEA{Dy_jSd)ei)a-|IVG9Rab6a|C6yv=P=Ah0PbfZQ& zVya`~${e;4GVIkLhH+|EU0-@$?+tHst8!Yfs4?sLK<)p;d{DBw1`(4cAI*py-cRx- z2rz73^61H*4lh=#B0$+`Vpzk>r5QShl^mRYxrSq z8|3RmFe}qRb-}}cN^m*+QpcHU%Qt3NwVl@^t_z*gkoip0F0tyBQkXEV`!v;W9l`oD zB?u?hpFFr>j&jt6muFN_qK_CvP~~T@Dz5EfjebckH0Lmt1O+-5{`w+X#H--dE1*=i zd08oE*1dL96*z2|LJpt*S zVBhgVMAuA}WLnKsaSR*S%EZVf4V`J`D;K>Q%vPixcD{#V=t1I-_3mY!Titk?l@`$_ zZYxT;`0cUW1-q~z8HT+*5bYIUc>!_r^T2G+YQa^Vh3*`!Z7TU0oqi#HC zmfR_^L(=xesMSz+GzVnL9rUFdl@0g`r=enT5*=ELyr|VRA|nQ}bRyv|K+xMXh0AvA zLARa<^DqT(Tz^`4IdP{9Y}-WC@qs%E3!o_equN>Bc}7gexYQXZ43Rh%o#d&MA$KO( zpDvf#h4@1eE9K80o8b@pHSlTF&Nuyg7cykSMYKi==mqq=$1)R90DVw~wFVST+Me!; zb6A{oOU7pbqDS`d$K^*Kgz6Reh_N30i4q;RhS^3?{^c9ufGA!(A;r4}nrR$J9T~!P z%%_XfbxLdKbIjvfO_m)wX%DU2UkP0mK#33rro!`G%@uZ+q{q|cQ%m=@7uz2WfQc9q z3d|26k@ykf21ENZGINXF3!o#E;N`EU--*~ub+y~O?k5~nDk9gKBKKo*qh2O3e52iI zotS7*;mtKtj4DAw7;&E>IE)QcBX-aB{hzX7ri%eoHNI38(Nm-dMRF*r%2QEL2dFkfFkU$@>S zVHacl>eWbhr`VKn?)xY~f|ZNu5lR`JQG49BnC!hb_C(oZ(6x5F%xnBB)#q#^o0Ml; z#@eH(6^;9mm;Fc(bcxTNh{NR@W>)%X%D_q1^R*XoXZ=BobRB5d{P$Z=!9}a&Giy9n z=~G|CtehcR?DSLQk;-RZ)U*;vG@vj1RR-XNpmNtM`{M2KW7&Fgb`5y-!z$DR$c@PH zJyS{iM8Ve{ao_t7E?U6vcPtA?JyJxlQ$sK@vr&)B65;r4YA}NRVv; zMD*#iRl-5db5fiUR!tE>_o6S)FM^xGI+*I`XWH2ziBy(*Yn;v=g?2B-KG*v1mrvMm zj5ARA`Z{7}_9le4mifL&UI~+86ws2sLvSBHDTQ`XQq5wmI(qM7Npt(CmT!z1kq^{aYm@TYeFiW4TA(hA z>^#kuAf$?MV-YDQ1pj=&#gDnxK>z({8s?OxWbqS1)*i=V{UfoE9w})rVczj8@SdiH zl(xR}5UQB*hFVP(>TNHy!>nh?Ft9`z3SSJ+JyI>tRS262zE7VXbbHG@^%W{uBP@bd z4nEgBqSc`v%Ssl=tY4$S7{h8i_=xH=>Ix{AhD8^lg0u`EbeGpa6VP|#YT@PNV4U|P zk;!Erz8xQamU?Keky2UFak0F2cb3bRnMk*XMq0Ld)$$m30FY@FfY+#;Fo|7RRv{~+U&H^VH$&_eudRR@9;c7?uI~UKqIPA52X#VVRB%EK>?UtfD`fI({1Gi_C6|Y^xve{lRsZx&kbrd`Tt;Ia*@WGMHuJGn2G+|2sOIk4qzB(7HvWWYJ(S*GA8%^1&qN4r+!UT>X?5I@;fa zkcANJbtgX5gx8Mz&1@=|BB^rv>=@3It{j5rI`_D&E!K9`qC5JbTB?7`1V#KOAD@UVo>vYntDT!< zp2;WxWf#n2$Z|w-j6UfJ@5^0T)wsc0=zn$tdz^rbWzMXZt6KM9Ay%nOnizb|&khyi zA=u~aI6&P_w?U4ZnpI;C{2uf-CVCL&oJ;-7=jRO7J-JG*^ zDhs>J`?}6CtWZjjFx4|m!oB-6#|kHlD|rUrFpC`r7H=SAxpALm3h#Ly&bRfYCIzv6 z5~|NlK6&mWVmE|hgM2&{&r`_Z&vS)gsaTf81YU>lLpzS_Sg(L;58`#Er*@Cg(y0iL ztWo%1Hv)l);*$_pV%m-`_vtQQu=%L)C&8n)zxLNx8Iz(uf!;{n)6(f2;MkOe@uv=e zme`0roU6~8Ubf%vA!N&KOSkc4F6>q>L*Da8aoaZX&0d7`ZZQ;|AJ{+AfQH(u z9D}lH%ME_wiI|u_AEP4LJ+R0k6a<3-M7Z;Qq|yHTaJBGsj)YlNy4-dKKK4a&&#HJa z&-u*7^upGqzSB0D6|Ym{)IMNY%UcFispQuO*PH@@mZ_4bsT}iIceQHt7+$MR(3MC; zLDHj&63?##8ZP&8f2a*4^k~^WFbZqm?~Dy>uDpwdxrM@!wN{9a0!R#DxzpIMS^!|l z!mq&D5Pc^`@DUkIu=;_fD(W^e;Uc@Xrvs&3pgXL$?s1|y8XMk#;YVM_S2$wfVhFo` zy7lwO==&k+bc)SgwC|rH)O-C@DSdPnuTw;9%0ES;X#AexJ@L%U?9wama&!VMqUO8K z&l98C;7_k%jG*M0uC`SIF3Rxc1;3{nC5b|!u}1eIglwi5n@j71_q@gV^%eA(DU|oi zcToK83&_OU)QdV&&3j`-P_x+B0Wm95n#BfwD&DhKQSt+TBLKgQl(ko)t15eZ1E@?1U*F4^J1%QcSBU8D39$a>-u4wf!2~*8v^yy0 zuvTfccK6ZoU!q8YL{YdrzSTs9f;5+R-_!0ufTb;=lS7J@MpYEQ=#0?Kp;B`d0Wd_n z@10D_3qTi5^}wdQMt*C@`}@wu^~edEs%CF9Ewp-VCv0%~rAf(t88>x_bbO8;Hj-t8 z+$1oGIeKq~f(moXwaU4jxCm|;wO^taBNJObQHWkMTa81W0~C&58LX=Xna6 zjdf6SeGh(T;I-Q2j#Z4w5hG32rF6d32O(_1Lz)K|HVd#VnV(79yK3df8xGm zL*f4l6R23%$as`^onfYHKCXS3pvYd{KaN2?UpG2xf$?tU$~5S6ztYzPt{N&G)IHJ! zv1VsMNm?=RJ8@zq%{`#t3!IRxkGGFrCE_Pjrcq#_fAbv+cTeIk^zgzjvGgJ=QTM7L`2D?{#x26wOB3FhARk}%C5jpC05oetz_RCd z6?h<=uR@0uJpLJg=gJv5nxE#OzB0`DCk2wTF8O^1tmQu&RPBGYa6J>GP)-M^p;ovL z{ytT*C>zcM^qDHh&S<2Z%0{Zd?8?Cd0OkW)N9z&|q7NEZ8rWP6bzk{Df~j=Xm>C>~RUZG2ci~p=hT{0f7RNdAoX`MgQA$=v7K0QMiA*+$Pve*;+(OYi6FX^R7pC+$~=8hCQK^by}28zC@y>zcs^+}9$8(H^0gKs20j#) zQj~|R5+q%(Cvlp+*8vEVwnXiGB;rF+3^+QX;|vqjkp5FE*r(6%l!m5uJfw8a)~r53Nq{dd-XHyBL&5oFY`rH{|~^KOZ`4Flapz zEw=bcpjqo0xOTeowQpu^U4Uk6z5Ujpz78LurI1WUh@R=%Haz&wwsE2%(v@>zr2k}- z$Fw?jqiQI3`GQKr0*DSwtNmOa<$2&bk$_J+m;gtLFC*{=WOv;L9a)eGrP?D{5E5(^ z+(NSu?MIgy#EOk1*wyN53Gz|MM>U*E4a(P3wW4b08pcVH+IZIQ*7Nf(| zYKe1nZ4dTA(*I<;&^-6L&0b`E(#VF}GibzB|1snG1q{h6^b>m3E*_SP~zT`9K=P z%K^7gmwpKyZMg%MgpaG5jvcXT#*1l{9(&zi0%%$fkSSdcGT0bdUm;5`Fp|{8ljPw< zx<9qpcbkW+i94<@E~F2%HNdU72#$Pyj`*9UIsZ%&cg*~GJ#8;1J*2wIt}~Cjv%6x_ z(B^%~iNn~JV#qpWub??cT0}F>5sv3bkut{K5Yxy)EVIP?U+~CrAMZ$k3GboC#mnCQ zre2$elwEWX?Wkz2f|xCxPWx^vm5M5d)lqC7$Vm;kkmvY7(uecxGeh$g&XwlZB>*VW_W0YGCqJ5|hVZZ@&|L&(IR3x8ojU=n% z@(FC8Nr}!nzOefBov9p|prj$pdy!{0>t+rRwms|qFYik!R63P6`VCUn`bCUScMP(~ z`(0LLl8O)O6YvVTy(+Zz@^0_+*zWM;E!>mqkW9Q|lBW1>O)$Q^V2V|)lVHyrKTYXu zEHHi6Q7ql6tTEyNLbp6{*{9U*upp;=;)K)LmR(GZdD_B?l7C&*t<>SqR7$I#i`q6Z zd>d6wneoZo6fq_x++^0+K_-#X5I5s03=!%+K(OyJf;uiY2{cSYed_0#bTpJQ<(a!b zaY2~d=o&&he8_`?1U=z3o`voq&wK59r~1o9Ug{AVIZ0EmVdtAG++8hs`R-)@JUpf+ zQ8|f4LwH(uFGQ!tv-$41wt`yJpbH&0GH4PFi0>=S3Oza2E??o!9dE^+WFc0F<%lzK z6oSApvul8Vgq=WUzr_AYjwb@?ontJRDZCF|#n^irs^3Qcu%0V{WDU-`zaYDj6~EEN z@;u*HR%5znv{zdaR8TfMJ6`aM7)x(U zQF#zQ&l06+BX#F|3MOM}^}&W!ewY1qv&$Dlo`pyVn@{j(LW`p|TjQ6ly}?@oN?$$) zYabzl&BBJjNlC;+lGqvm`W*I3*NTT2@5So7)3xPM0jA(RciYrMs0(dG@EXy(=0t4w z@GTrbF9-7mfF2|6Bdki6U9NM69z(8bylU@KTxB&^Lfv!>?9<=d`3aOg(2K;_WAi>L|# z`?I_Ek+n3x;cYnEX`~%HIn{f#Bm1K2a4|k)XOuYC#h|{gBIY(roGAXMlIH5pQMhX@ zsIXtpml}}P8>Q55CQoZ#wqY@M7PAuL?R}xU@#VX&+S^m{NtY&WeE9(qWy=Q|cQ?v?4_T~ssuHgiUoGtJ zMZ%XS8?_Mv`r?j})@~xn0qkEkJdGwi9JM_fO>9LOFxN`z zb)z;Gtz&H$t->KQC-W=rEiIH01uySxm|N9%W0ari!A)AH%cfZK#Vvhn7mjf3*ONY5 zV~t*&HC)04>8PO%QjpCEAiWWt+%o~zi*}5FQn{EU^y5ID{^F#2^ZChs^89L_jJ$s3 z@>tYH-LbLENN5tfi-C68S3Xb`bv^3wDP6iR0<2#n0T;Rc#{bv#KMcntr1uzlT6|_n zoW8TX6yh#|R}UAW9oli>CRpLk{xWDCcd$>RSLGy^)G^*(dCcorzRT{Tpr6c_N<;?Q zPaP!Wek@T{>zZQJ9)Yv9tTA^@?uO1YJJeTL98z&(KCPw;yWx_4cGnAq?v*~9-mst3O+HFr30wBAk|9pck(KpL z%v8KHc0BMr**iD7w_-PHGGL>G>v#}|t36UH@@Q+JwaD0x)=7c#Jw{X-Q7(6q(lcM{LPa|b5D0i-P_4l3R|#+AB4oUcVuUDmWcWZ> z3Hb8q19+DJ$_&7ioEe61deJCRkzZb$2~CR3=7ApQ^t~r)qEW5(@Eo7TD?A^dbUPS$ zBg$UB8`(9#O8nkP*MDkJ0Ll$;9US4cSINftsA`!|D>>4`=y3SSyT<%(;-Is<2{M~af| zwVZP5|A~}|WPh(K2}dc9ATKWGq9zv&l(DZ+y35ZGm&B}-VQMdo5I@hN! zfI7A2tjoWnoqWJ8$M{h2fasyWoJ#?B)3F*4WN92iv0@HgDA$FNQj z#}&T({tx;CIZa1b9tTFV->mA&pGrBT7OOw$cBt20F1dGeGONHmn!nQryt=5Uu?ftC ztt!mT4)i};)37o-fJHN(KXSM0PE>I_V)i~^=Qh)pIu4#P*E!%RY0vTkpn^wjqyTf%Wo85cy)vM{?x%I}tfV~9J z1>4NpoGy?^Z`yr%kxOTnDDN4>L^QZj9wdI__mT+*@u)kwH&3H_<^F75!pz8#thqgq zdglk)nr1;~^eZhq!gF?Sk7Tdnix<@JTZsF_WC=CSFJxWl(4s$J$I{W-ap&& zTU^!H-C91WhY)qvPrR#AXjsy3E!h7@x^b)C+5d>i0J!P$ilBrFtvmB(oqvn$H9S8N zk!F+`OBWY%9=I&znZOvA+O;omyKPQuR!`R_d{4qAkWMA$~$Z}NeZ(7t<4SXIia{L2Of@)1SrXg zm+jGa1aogl7Xf=cyl|K*nL{U1{_t-0nkQ(>FPRrqucTeypYnGgAF}*4;`iUz;UP!p zjv4n$^GFy_;chZJSo4cf#HWcLc~(o)5#7r_HC-MstZgEnUmtJvS1V(&SdSs6m04cN zLGIg8{@7-F)&+yL!$3~?fYq#=JyaR1ojI}gh^wwnV*AsH(94xz8Y_6C`jmrEZLr{? zGuP^9=nnxiPW#J$KPN%hS9g!ouv1BV zDoS+AL3Yzne;@6R%A1=5z2+|6ZY%LHZF@%jiOV_t#pVxefQBNUYDHfC#*1z8y$d83 zjNa#e^Q$7W$Bol;!CDitC5i=85>j?;4l;1EBlCX>47BlmC$&m)6|i3P5lIS) z;T5Xa7lfGGpErQQGCX7=`p-65^NcqEHZFeSlA>GqMTYSYcE$kKTH)5i;?IU2Q&$LA z>_M&@CLn{YlHATv`!M*d!*hpLwtISQj&{cl3yzK2eE+-o_@=tb-Cqww1IIKyO!AT72^$ZPJI}g{Q0jXo{jXp(YPjd_lgbHA}R!zo;po^jMSql~d!5y0*7| zo+52#oQ3*X?vSh-atcgZz&$p&OC>z1K(gU z7Pqc9(*lz;T;xM5A$?N*mP71IGqF}#yP9#dD?o}CjMj5J`2Ns^1>mWVcW6g)w3dY3w%and^MVDI59-iG=gqlOEZKccy zd*PM@VJ_N&1vDR4UbWeEpM(B@6kAWmoJ>b{q0h>VOnD@HE-xlp{)tIzhMytJ0!}Q9Be8BF5KA5)I{C4UZ-(Khq-4N@cig@zrZS8H% zJcb7s`6&7Q@7vlM0O!i%RH&)WWqa3ELTP8saMiG|&a~a*ue{VcqdP63wstNn65R_h zRKM*dilVKL&!OTnzV({AD?rKQ^R^DH)~1xLoJ$g1v<$ zTCVnr@aFXh=2cPR=NuDc)B)^X_K;C6^@?xc_XyhPy{%)xp1pxMyH4tmy^T?psOgmo z`c}obn=CouWV6(Ccto#Ni$!b4zy61^ucTi+I{Ohws61~K{&olk4=pWzXM~WQcbh(D z9XuW=!RB5C$aHCY_NY!#d4?wOJ6%U#ChI6(sVxVGO24)=*$cL+!f9Uf$$vGcIA@ua zd&G%s$iw~QubUfj#i0jRrHAZa0ztnjbKdn;^nGc7n|7W?u5Ht=Fa zTB{<9^W8$I5?p@6?mCPU>o4djZSv)^Sw+~flHzIqEY24oCH)UK!|`GTK-NXmMq+`w zz14a5E&!!-=hYD2z{qmq5^D8vpC)%XgAVu348OY6sVtIwvn}V^x`OD|fcVN$E$U?r zRa`wE?pbS~_9z!^2v(G@6ZMhmB4Hl&RihTQfnmU2Hcw86tx`)T3fT8pbAtroaU=e3 z!j7_UdN;E9DRm zy#|?9M7t*h)z*w45tQw;DbG;mHecz)15`#Xo>oHS{ls2F&40QsrCHl$hJ!hbiR(O* z98XYdtM{2$342fudXH!91fpP;!OOox%NnMy`({PZpVO5|VWlbt0?*4KpZI{bSvxSz z(4G}Nl-~Fm(T}1ubTo|MoBM4Yh~+h;jX#8@U4|36Doe4h=*a#p={7+fOtuq$<+T68 zWj%$XtH5Uu;d%cyN76mt4&6BExRS6nV2i5wq%FqaPuR;I46U1}VlpW3fYohxjR0nY zBC)kG5RmferYt1bM|u<16y3%g7y%mzMAmCkG`>DjJ=bK4;?Y9-Ef(eXHy6fOJ05=f zFGtk4uW9DvQT~_rB3pdBu9ndKd~+4#9WJ6x9!r2D?Z4V_WmGn2n@EMpeAs7;E=AEx z&EuTVS{k2v8dl>cQcw& z04_Bt>(6Oo`>dzB>EL_>YO97}*>U?cMghG^nADG^t=3=X8|TZ9Q7^!UE(aJ?i$UZi zrlDrzN{ssl>atIHV)IDI#ID?kvzCmmd+FW3Dr&-Us?Np=@i^@-tgHV#)XS195Z{|u zpR8yRVMIs7#(8dQ+%7%pXnQ}Y-Z(P5mi;Z;er%uS383*I^_=+|Pr=_2;#QI6e9_aT zmP2dxFlUCXJ1* z;}hzMM5Ogx96{Alt4?4t%q{DEog~wWnwNe(l%uazJ|-(FSbiuh(0|AF@nlWovTCn9 z|MAY(C5yJ^gi1i~L(%w>ox5og+A%5pxh8v-h>Jh#z?NYkTe#Lmgy)yqI?lxcsq`w$ z1a)m;H{vs;?J?Kp`W`hubV+wUEz3uRHbx|AIgOlh*K{fzDiqmn#256(P=&1`?NzLl zmbSbsuA(*f{_%X+jKh`4}Sm{0Mo#gMumwjy(cwgR7iZn6o9nf4-#)7E{30(W*v}D_tj+@n8Vp zct)_#ffX0m%3J9`b7`;~h_TP;cxMnUy@A&Z(PGrT}Un znW*tMA@-VDTHJ=`ZX=3}d9N|!L7dCU3qP1wbLgMHkO?W{)bLz+)x9lD9Z_+Yt-b0` zCcW(j3=k((_6UnrE_9!zs}bR4n(eYJBlpf|kr@r^4cuN@wQG~j8MnZV)&3Cb+W8ol zwz(3O!0zJ|KP{phrO`GbL(6tJ|G~^(#nu=AGFfC@?Ogen{7I|eZB4#?R-AkFz|Xzj zHS$%opBJbh$8MMq;~gPVrO~ED{YSdQG_TlDqW;l)DQ)sYfs1W9YCZ*ry@Z9Iv;Cgb zUO=zVZnyz!VQtYmaH+r>Q_cfTlKb5$!p&9h?v007N==0cQe-ykm4L) zmXJ8XcCd$X3#JJv4Jy_gC!J$ba&IGF@&56S(M(T9hfB5X`09yW&BxEy}vmZ z@bnEU`>ZD8QKd^W&0OIw>2Rg-ISX_wZbVp}&S$N$?e=hiy{=fC}_v?aIE zxxP#rwtNycbyD~JJ8HygUNqm2LqoY|w2Uo1(U-O(wjcUl8jzV7M_ zgWa7NHJvQvpgHvAbJ^bWKhQ)Z_*($@t`uhQuH4dQ~ zmThHHrCFm{JBi_WEubl8Muk>k^K06g8w$fu7UB+otUU1wt9X8Ox7OV$Z%uLkaYrjD z`kfa8Fl%U07ng84gMc`>;mGa0^)u-Da(Th~-wm%c-YZ z?<81Qg^3FN3@e*oG%aXcMW&XOd1uJ7^C)2hfnaE-5yISd{)_(8G?=~FunSOaBDz|Q;nfW@O!R;a+`wK@aB$ ztj-R)@=2WQK5vrempaK0D^fr<%K8V+MN7BwV?K&v`U^JnRVG%?|CY{$m2m}J;iAd* zgOhCT$L?(VRv0p$*q3Q0s5b*~XzWIbh^-r}t2h;z38JWbomJM_d($XqIk|=_1MntY z1(z5!$?0>J!bd%lx(nX%=*D0X=0ks zc(qQOj1{&t>ZL)Rn@jd5P8annwT*W*-$U7Imd~$+ZbcPwmVj@;o-FyydeXk;)D`E-@+ZgaQLiuW z+0!+Qq*1M3*ym;D^E#DJGq5L{`s~lzg}Nds_gZ06I>`WQ~7l{94bk z!uc-%PaKr}W@htINdug|_qb-Es$%9PEk+iA5l2RBex7{k)AgRUHfGr)8??f6t=XH zL;?FOCv@dhH|3StRCbUa;!BMg+A7`45@1&2-Ilm6Puu9H@UAct0cFoQ|IXilxNZ4! zZF-{rCg^&+)^e_T`?KQ}0WwQgEKy(e2y}VELC$~0er|BBwl&m^1yZz)&`Cg5-Lp$JAg(8z zDlB?N7Q3kINwk!#nR4+FaYT+u4rzbZsk_0LP!C}SsZucdR&u3r9fru$;+2KFB)x6Vk)W~sU9UGL-hA+6zxxE6SN&U`z27? z&+eU_0$%qHZ=KU7pZ|@qsEU)cz<;0jSw75z=;JKs&d#+Y4c(gj%k?~ zzD|YmyOFFX=$|ST^mxs(7Lk0uZ7JAj<9zA(JGUN!+KA$}zgJo#3|?j4hv8P`-QI&g^h}0x zy7qI`XFnRQv*uZK`v#JsPp4}v9XRnql`>UjQ1J{>IDG;6hW&=r9J=-TvsKd|uaaHE zSvQOayzeWo-kvOq_VGUJDp@|<)q~=tiHHZK0Lggf1NJ|5~t>BUz_C z-ZZuTP@CdAPK0XJS~B5ng}D=FRBU-x5fIk7y3RPd=+|j`jJ75d{grPHWzyLU-*6|3 zB<`xZR^rt@*XwzX>t!vqQrZQtwY{fo%n`Wy1__+0@E%#hHxfRa)Bx$=B@?gGgIE8Q z>lg4zerQCfsV^_w4F~Qz`wWQvG0xW%GxdtNSps6Gh}*-6JU*@CYg;1S2g$HCg2@vy z#|^PE2NgjfAFWKXyeFGrF+nRs9oYXw$vP}7fz4j@t%F#K^kk?yTZOIBi3N9i z(>8mfqIGfsEMU5h?m!2WB{v4ZGuWk(q?#rQrX_?jNrT)XAAAY8w1(UmIOKE)a6bSB zzaN6XYYXy!(t5m{^@OLfp71}t~Xhn+cN;TnQxq!qpb^rc)ZMiAVCM?!i27HYVwf4DhikH zv-mTP7~5OsfQ`*j$!LSQOFDvLvPBV^ipZ%HyF(}CFBoNAH*z)+cRh(MZ*c;aU3hO2 zi4%2rX-+E1W7PByD>JNtsiR5MR4<=M`_QD`Fp#W}PP)pJ;*}l&&V2PV9nN%Q_FC-#-GR z{v_%0bX5no>x^Rpht0RNK6%**#lEzb7tQeGaHtpa6jOM$DnUVOpTx&Gfiz~kZ+Y`9 z)?efKrgND&?-|EjF^y5$^u)Lzk`-nsDR%8g(WFngA+f>QA!F}t6>(AI%&*>rNzmPq zrie5TNPHI2$Y)xT=rkXn%tn7;WNQc9Ro#r}a|(U3*`?yUb&7IP@0XN%+~bYxAdbp{ z&@KMTBb}9sk9k)8apxUv_pkSIDqGGTcpVwvmgHhk;1QpB-S+sz+>wgXM@<{L-qEj* zoNqH0m(i6wcLg#gUqaMaNLX*~$kCd!53LV!_f`At%L-QQ0`&jUIH^=|ZU4K1?wpNq zDUh^+y6^ijlh0hV2`57OrVvPcV@iE5S z{GqGukYestOjo#UG~v^lRtw2i$VXTCnap3%;F*f}h4e8=Uf}ut$Y-JR#UnD?2*pDN zj5zM7+D3c&#_Y#Byj^G33sll+l=B(pg$JLtoz#g-JHnugF~-LvqqXis#p~(G*nRjt zB~M@YxUc7JZ^24VLx6=!>)0ge19kdlFHeT*ZtZSq?QVFzp-mkQ>vg2EJYm%MmqfEp z(Z&hOwP{&_5axwaIyqfJ_x+C=BxT_?0AeRD15FB5YtV$;Lq*GYqmbeCnLJM@uSv2- ziM${ms^$FPXLb_XhXGoxIWW4gkHIYH4S>rMt6=!5mXyA_+?@l;WC(@lFPLHqw z?Y=zxZMUq*WBPi&gG6YHmm~U9PPsi;n0&KEirWkE&rXD}V+>{LO7$TBEz8#CGJK`< zqF{M@9r7OV)BVK6OO-~@`G?&iSwEU;Bg!4p-^V|VsE@CUF1RB!aZ&m4S=G9tW-lVD zOZHa%>Y36r&mv)dGvVEzXr0NjPQg#zFEKm>tbO;Q`@(EKv-BtqX)VR)KEDSFx|@MN zAHV>-o4*ofwO`GO_v_U*2lT3lyM=dtd0-4=#h@d^1nZ-!91VuNmQHRtCsl!wsd3ifQYhfRKwS^nVDCs}OHR~T^p9Dv8=iO9 z7!*rN6ZSIb^DzbZ_>plROJjm0aj>|{>I!Ii8b$fq!Xsl&t9=UNgrt2Ebs?;26Q=*L zeC#|vFl%=stE3=~Vke$F1dy;;cT?A+@&~YA8W=dRA36KR-xGWuf#=1#y%tKGL&^v| zYeN`j$&E}@sM6}Rm2OsX(cU{~U2tov)j_il`2#$n?CydCoy^2sLf2YE%RKuLjiOYW zlZS79wMnR+*Qo*Cq^%j<&9VBAxyn5!e<{b>{^an*>BRV-*zT%9Q-6wQpy#`8(B47K z&vJ#FrJPaEEx1jI2$M|pRJRij$Cmnrn z20ZF%(d;9Afbs0<7oMQ+)c&*x_1L~)U9Kh3!EiTSK9+$kjwbaCYS_ zoINmYxr8EO`!sCz#w7H{LIUad)004KJef!0Fw023(cqd0*4)Vb*m#%%h*o@gFsHDM zkIMpx2a9ZtP9s3b*bm~>yL2=j=#$=%WhpDqUY0vVu#}dCtZI}064CH;bjIwLUT5ct zkGdv%(?iwmKody$^PX~bE_H3idFto%zj#V>MS&Y}xgBi$U}QL2#*N*l62M+bQt6*= z)qJJ~@O3uhV8v1^w?Ri1uD+IUi)dUmooot8@b5fOo|E$aJP#E9HDa*ZI;&tyKsaue z`u#P!v!@(6EicSaPOEBJIDLVv8(9E*?TY%IXn5HA*omS07_(R10Nfx zcp53uH$AbzJ3-hz51iIZ64E{r=0ED!sMbbDs*e-iG7D%v&Xgj{ji;M>Bb@|~uf!;p zIVC4a%iAMQ3jV5rdsVAw;MYCa-mZA&hkdn}KQbzh83}YJAe}&RLFHOa;q|nGTaKW; zPbb7~U`a!Z?7hn$=Og68I4odn{dF^m_Fy$O-G_PXb1NK(nUY(L^I7##pw!M~ty%|r zcWauz)ARq6B~zn`~yb1E9P)gO7|>B6b~Kj;EDMK zG>gp^p$1SS)R!zl+3PyfiMB=71IS({R=wgygj@I+ouD2f-FE%b_j;i7sWu}n8}GxbZY>C@c!GBG4Jl$f zMj{0Nt@zsw0H-FV*YL{wm;VkxWP|!E;RpYwn^tSalPcQ|z0HmZ&AFUMkkB>5ipP1y zx9Ixrn7jg>8Husr_lBZ-scu%RmPyRDS~%!)9fD8aHT`QrAT*O?Vtu~FA>)tS3PlRs zfIt^{(ZLITHvr(9;so%A1K<@w0nh-36wcycB}y&xf`PWJ?}uB~H6NQbOJ6-qKsdJa z;+TS~7y`%m05UdoH0-XFv_q+*iAF8`<<)Hf&8@=}IAVY6e0{aC}B6AN0 z+iU90FjSy1A|!|>`Pd(+pBo4LJ)eVbxfxqewi8P$M4(RtJ}Eg#h6;uFwd?XgCwOlT_269m=#k`=}btug3E;8yysdL zyPL5>($UCaohv8Tjt@!HuIUXk&Lfkd31DD5o(^8-AZt1aCCuL$RO<*Q{$<8_hpX9QMVlF{q z&mvpAJA+K%ol*WLdeGy;vY+4umWrY1Jc`1TKQ}%Z9ekM$6gpTVex5_Xa1JQX+X}w> zygl~Jv<$sU$Z631ePJOyN>UYePpF$?dJ2uw+!gfFY7?Z5R4m-EZd~lllgT!c7{e#>7uEB4_K7j4HuU@n?15N9Cw=yFkbbww-?5my?hhJPvN zPRKtlo4tGrIOsAkS(BwSuQIIa33Mkhz8yJc=uA?I5vLGi$?YZe{sID^i|wAcq_%Gi zD2WNM?7`nS&Cvf9FCZUU(r85SgWEjygrB&LrK0=^RTHtUi!PC{N2pR6c!ERci$k z=5G3R0M@2imrZ*+7^7C~IJX8NpZ}6=u!O?lWR*%CwLD3yFQv5SyAKPydW9Xk3QkJm zfsWou^7JcJZvGa=%`d=x83j&;zxDim$DQq^;ozV?VTLWFUo`@yQw!Qn zGDzQBrH8eIsg!w(yqPXB8!?SigtMrBXG!@JV8uXanNq}Lw{mBa)c)RD3 zf;ed!tG3y4URQ{@Aj(0h+Wblmez)6l3NF?M@$VApyD8zw5OaEpzehc|@pEL{fL@p! z{(6IzL7%Hg>HZ52a6Hhr$}?xZ0seYfRpVZ4LBT}6h!z##XLk3V3@0LXHOtlC?y_yhXCM}sZ)TC%A5aKkF*_&;*c+yBEQc7v6(Xzn za?SnF7gjuTy>ZKIU4nRf^~`r)K{jTpwr$^d9FF zM-@37(}^M;0~cJU(dP1~N&I*Ugi!K|$cjU?0d5w5t(dmZv^5?>504|WJ2628dVEVi zV?TdATYPr-pQHQlyt_1i?(Ca$Z!WdG36kTMe|%f+#o6J4*q~!~{z-KGqAq9lsA(dr z%s3>edsVQ{_@eAqE@{JfAY*QBj_x7_aK-fEFi;QV^4gc_YRxZJce(0Yv(=nwXx`^{ zXP0wZkZT4@*I2?M9;iLEe5mihi3zJMGQ^oWVBbj^Cn3e8u$NOteZ1KcG;h20s-}Rs9e=R- zUD&|(J)8yJv#t~gLzwcc`j{X;M0n$Nt_$q7aj<-j7zAm@kZ17r*&YC?dZ@Gy zh4%S3;8wIlu~+<~T&wShv8pgz0JrmMh9E#zUIB&_bDs_D=bwTJO!gcvt{+DYj zc8bNRl<5A_5Q8j_^Wpss5RM~j_!ZE9yxzIFtT6g42yr+Q*HasB-?7K^gh_CFX_hQf zk2&gM9DZt*o^Xr_pawUz*CAf-$7=IKT7jzh%Yje{w}GUM(uqt#uiOwd-|Oho&^%FK zoL{3|bQ4@(wh5z1>MVL>HiJ9Dg6r6cYHjQ=4p+%7uY98AIeX9X58605f6Hn`HKByJ zbhp+qczt+Y#qkc)`!e;z&iY_f(q-%Fm#Pp*VcI}T;AjCZ)wSI3j4VUQ4z>+^B zfHi)$`a+^UVL7$bTT9zZUZK8YXPn|pedyVbBkk$g8`aDhskp1u(jf?ytmtl5cxCT} z;v;~Ou3Tq2O&>w5n@g1{J&D?(rUH=|Halj?G_2M`4rYtIPL&zonf)HxZ8k4G z;sFE3@sf%*ANR`Qx6+k*`cuDsY`S-(^4^hOcp)(*3MR)J*Y)LR>;>CGcx#{AUgQDp zcR;zLV0Nic^j{w~2|u&J#2{`yxV92BM6#uj3zM^FuHxD#m+#G{PY?s{ZNB7OaZ?}6 zrk_g6s_6oOI-88m?4z{Yu`0Wci|3qnQoD37J{LQ?;$1-Ykz=u5gY$nz-<$0m&CP0F z{vr03?LYi6lK6r%wqa6RDsSI)YldDDdKHKq0};fVh&mLeDfYktd_2X4cx0SAJ)5 zlpwpy7JA^BJ0p*yaUkXFtZP@P)?!*+@yRpE{g6$5HDG{bqxqycMbTmEX4#N-*mC}f z=e6&L#zpi`$ept-G`vn7x_w&>$TMT|o#C*5A@bJ1DEcJzUS!d=uVK5lhMQ3`2aR-rr@d?lyQkh)NhI(?|Qc;52&9+SZEHFq~#kmQtfD#8PQe;$SVHh;Pi zc>TAkXJk3z3LG!AIfq*4ikd2#eh&@F8c(|Fof&zx^O@Bp$V9~>8oUl+bN}@?gCrCe z*vfFoY~@68y6P)hPj1`BfWGkdx?wn5sLu#69E>Z8zGd3*0iKSHM<7gR2Q=sMPW8)_ z8?CoGcNx2D`0KZ6GZB{c4)N?i9b?Xp**1kRyxMVrN-DmMsJcUq4D^25duq6H)IQ{1 zPko1OepAS+TJ&4VVPDF$xsQG}km{+HYkM)?3Kl6}5vKo__vEqw_zidoEqE(DMC3+ScfOXf7sN)Sr!2}omW8{OO?|w% z4pAR@cjrt&rdm1~#PJHZDKovZYbNl~S6_Gs+hky+WZ+4TO&WJ|T@kaoY;Tj+;u3M8 zucXFJ1`@9uR|ON`-I_}*@O_`i)Ck;bilc*Tm2q0*yDq!#oQOOV@N=Y$Q51YI zd=-6ij;6wUA&?dn;7s)0oYV#L_O-)h_hZ>-hQI*%E#k3v|?)w3{Ry(X+3AjA!F>B&#e`b&wa_07G_g^(S&Ob zLjc!VelCX@Dg)iy24o#}KdNx#@$%V~PESpUN=|PxWz=162$`$>a%s#Sda=TMmRMIt@OWB*mru{(RlD9R`j|-9>HBl|Q zKisVI(s*u~MxIj4OH-svUH6&v81iJ_4eju4QFd6nKtFYmc|14x^ABz>7z|a4rm~H3 z8y3nAhWhjU3UcNb(#vB6dv(Y?E5~vX2Y0w%1h?+d_B@AZ62pFWzeS7;JOU9BwpSZf zF^U1~O_yDLF?zJx3VZU`0-V3n+th9x$Qjiyu4Gs8u2!^G&<5`fFTJ9f<>5M>B>1WW z2x#^pm^?q$o?3_J*QS!ifu>2N?R*sQW{u z&tS@+=U&jyC-oqnda?aW7up25g$sZkhnLzFnru&UdvQt;=OyeIJr5$u$$lj0T|hRf zI_?{&g@$Q1%7O`zMpH)tDc8pML`9OrmshDX%`aYkCQ9DAP)86KJGvZGjR?)e-}}jS zvZ1~*(KfnrS*?6^Vz9#xrO;)oy%X6yS$tLYkjMfT2p* zfEVEV8K(;MH*VuBdlp3$oo@@NXkC?4;XZNbF zYiFe?L>2MzbwhWQ7*bnZFBv?g@EOM4}0bn&zm|H{lp4_NmZ=D3NEwL+`t z3Rk_-Mn`AMaC!HRr(h;nlJGcZ`LT@Ti0cxjM#MQkgv$CPG=U92gH;Ri5EK1UPT_d1 zm54#Ry$fD|0jr^J(K`|uEIojH7N+X67blbsoW0OM`FMuy9By4c;E z^%o*J$?}}Wu@IR0e(c^4_HfQn8JKIjKY-zb*YnJl_@;G1HiBcX&6a2TTxMg!>wS>) zIp57WK4F)v5SO50gySqLbg4Q;Ondm?OJOk+4tIM)p-E@CE6li#u={w)OohC(;GYXj z!ozW6H+gGIA>*runD*K}JiVMnD;y%UB+q%gVn4m5UP|ktOWi&^-NU}>MV!xL;)LP4 z*62P)HH{HWZxoozPAxqyj@kRd4&RW$rSGrygf|#1*4b&Y1#vZ9<(OkgeBsv+mymM2 z!GrXSnz#gN>8@LyyGyOLUoMbm7#`o_D!^^PNsORJjyZzi{n%j%?!-ft)I2eeZ_X`{ z^Rr)kHZ^y7Glmg}Ti69_yh1h7ko7?SguJtuqdK%U4S=Pd{9@Q#bFF;@Y*m<}S|8(5 z2PD?0#+!YL(*Jg!F9(FQ4emyP20o>02#@#1`Ima#yRG#A=Kp}F1pkex#@i0}gg>6z z*;UG5kLz34JS!!~DU3JSI-GuFb?79y@r0oW`?*=aow=^3#vmXit4EJG|Raw-H(_uy;f4&=0&Q+kl0Um%hXyLZ*1du+1d9B9<`4MrSka{#hKlJ}EnTNA~yuY?Uwp~Te}C*^psf6}SO2FLay#!U;!_?o{*EwY>nl8%&>b zRu`zlw5_M}`dpZ9_V3>K&F{4d@lHmI0!KRaIZBULkcI+Xy`Gr(!?a=F-Dw+5ofXAZ z^7w==ieL?GZI}*hA&+xde`G{!gBr`GSb1cTWBMmApY5-8YX+IKBSeuQEzMu;Pp8$l5j~Xg_wsUgdhw+uI}BFqehRHr+fs%r+Cz zM)O8{&FX}*sZZ`8zKu_ei}e-b&&IcX)Gl=8YGqe7NINYOD#5rR}Mt@hPpKtCGCzUcE<2uF8j1q9^`Xv;BlTe<>qibCQk?N z({2Qe#+YkcaEG)}cXRzrG4pOBoTa!W>-z!1z^E5WdPI7A`Na$9(zBE7iIN|ti4sZE zwnE+APHr+C{pucIhhJy!>rb6KDcNFw=#&7t_jr2<3y&Zd2>d>?%)Mv-0G6hjVKn)*NitVRts#G9o{SVOBAOSgp^~2f z9p5xmJUo`G7{1e&(Gc>4{BHV>&0;9Ho!jg#)M~eYFAbj{naXhof9*?Cg4rE~n=e1= zl(v8eek#Ma;Gbb4*pm&Ub7B&APHmqJ#m}7IB)4~LPS4!)$M7nDQp{QmkqMYj3Rjn9 zGDM0eU=U>8JE^CHwFC&>^evd^dc<3k@zw!yN;9oXKr5|&j0YS<3$P}4dM>?V=P z3Yp)CzW?qt23zkCRnCVcQddu@clwj9-;SUs&w<|adS^jvA0?hOMYJly4xY>QE zQhkJR!%VOP<7?Y>a!A(R)n$ritwI~s&A`KNJrQ@xa0fKhwADagb#?ZOg2wrvN{mp>L zn_Ty$o}HU~6D3e=)l~7wv_#e+ok(B~y+m z_owuGLU_w?zcciQomS1cSZs+e`>{}nMCu-7n@YUgowjwVM=mgATWxxr(Re0rzVsx1 zmiF-TGo_4{JYp~z0~d!yn)+yw3jv16e3iua$|a2c*j~Y^_U1pt@nDcaZx2GOE9nI0 zsQLjXX+40Mm;Cao>jCMudSx}P`j%MRFyTX$(<)uh`tAu`Q4N0HUAv-Yf78G{ixi$^ z84!B@%Rc{mISz{1Hl#)+Or(mGJ_;BU2ig?i$XD+OM6Cd7mR3o%`a5TDMZE-A zAUdv|`$vI{Vp-$UXY=ykdmVjHAdajG?i6D8VPhrh$6!q_ZcTm(_~9GM+$|#hD)y;~ zw@q7N^7xIBn)?<_Bkk3Q^l2OS?wfn@2gy;!iNdhI<$)|P9Z z^O+OjQ%_k?wn8nmEMkr*=PvO&q3~<+m(10J)p6~orcOAbcd*#c$afQ@Tp8%a-5^`3 z?vENXZl?}tTFNr0%GO@QW+K+5;HJ#IZ>3b`W%G^eq4X`|&KsBi0RtCuPtDZ*0AQgs zb`J0u@;5+C@T`_(UGL=scM^v+eG3g$Hqb`G^Am`$i05<9M#72+rW!eEW3CAp@&m;>SoioZGVc4``A<9Vp|2-H-GWGYV477=!O~W$F7y~ ztC|6sz_umxsuLBM-;W`rbwAVsEw$cC_p^b2oy;{M^*s;s|H-jsqVDt{((vVkkA71OWic4c_q$Qe{zSC~t+@3-mh8YUG zV=KN+rx?Q2HX-UcEz@(aJcdJ^?~RZqMs}Q6Jw%5$a!Dq#uB#w+9MZCT(0GK2`jbYz zx&}Z|L8tB1yAg{*SnK1#hr>g@^<`G#P8)$wDY-c{I_(`K z?7nUHC-|E8Kj*&!pMPwgIt9p&X)-eZ`$vf46sv3_ZcP4YsdR#tJgR+DfiQnNhGc}lta-(- z+JhvgOb0M*RM9EDTt?Yd0>nkxEf=UpBA06X{)Hlkug)rK|m(j++iybXEX|tZA`mW}`gu382Ihu+Nq8 z2@xBsva@+&Bowfa9Wi{yKJ{92f-;hpA)+0w)V>;mh`3DEEw6Qn)17#4 zxJXYCFDR92#GvOAmibP zQ!IqITXes~nsa*7!%rf>a@m5u|HG5;Ugi;__oa z)S06G% ztD{^o>~_@$6D&SYE|KLnj<#6t-x_)REN=xj+sOR5D>73XqmAiuyP*};kqDjKWL=i0 zsX@;<%0a^lk^os!OnB8ef#hNo44DJLdqfbydgo9T4%JJkMVQiByy)za2~?_Seq83e zb!Nd&WKz;w`SgteFX|YumbOhj?7uT?1t=Q#kK3U%t8!&E~B4|>mH}d zJ4~9~2NX36x@FcXk@AtOilC_r9f_z)aWfqz%molp6D|k4AUhkjnl6~Y#k2|XqDQF(#UoHb$(F8+$qz_rE;ny zzgEOQEGSa8UTWTHft2w%MIsNF`X+t)1rkso&g6(*FAkgXePfiX)&A`hYZV+-$M>~# zQJXsFHsA78qk$!(<2=2Er~#cqv5T|)oJP%Y6qhe<($!Lg{dLxN<}|ziUE(5IixV?$ z0Z|kT!9wIT^xDPf`ct!)jLix_%ISKG{z9s)#hLDM!6DU8LbRK<3x}lpxqS<^p`dPO zBMt#{{lKwjr%OR$vfd^3I}e$TU3QyDyfF1qJ9~?I8@ErvIoZ`p1Iz*@lpIloAvVBy>-@YvO!AgB6>93*zcNm8C{H*4Clr{ z#^c;KI^^;?QW7MxkGv1Rm6s;ZdD;?t{q>{U)%U>Iqshn~Ljo;7$p#YzJqDEo8Dp7I z;y~#^I)|eXvlC2&HkS<6jQuu_a6 zRyn(wkFo>D&vVRF27{7|5iM*}YRT|%iO7R&znOsZ&6yJ$rMzoTW?yq|oA?v9%s@m1Sk-&KN)Ez$==NcNBG{`3w zE2!_)j?wPj8HDp?1MdQp-jC|@U+Z2ZqgxWiqIT#xS-Ep}QfsR%2JANh$!+=T7DHm< zV)(TPZmAEg1CWad0dw1FV*io_g;1Hc`sZh*afcawDK0Hdaa7ri{wi7jOKxl!PB~uN z#nB8EYu)ZVxGxDUz4_J@#Y`PR{VF7zmvp1`sLw@mxM{MRntGddgOVXey>z&Ui^f40 zEV@2`fxDx?4jL4Cak)i^<%J*_rU3<9Fzqcs#id~;YfyNHm zaVvr(?97Ynaol{iHundG>fT`d4^hxil8Ned&h#s8%;0=gp4frHYIoafVfjGNoV=HV zTk9|LeFrbtR)$d>IzXdEAkke=3Z8)JFw?<(0YUP-gybv@fo0d zm#6QMqQ;h~@@6)_>ks3RQtPgE)GfA1wynXE*=y=;ynEI4hVly{YBFgYYV;@x<9QY2aF$x6{YF*z9)ejU^6nZ~X}AfW{JE2z;) z0b3GSFFb*1k_t29x-Gf9ShZ{5*&N4)tR0Ri=H&J}#Ih*vcv!c_FZe zahP?;8053~OU1tR^wl@h%uJQ}Lhbg1WSC@U1`>BX{Mf|m1>#&yd`ev!Xi6~ZyfA3M z<;-mtSL^x+paEUyvqx6n;AQnAJBAq) zKFolmD$Ws@#flVdty>1N2^evbJqB@1Sx|NF^t&k4}lEAE`C{di^x0N@Kpgj6hgA^pJ zl+uVa`M6Mq)y0O6Ots;|xT)#lhMw<(&)E@v1V)S79+Qk$>N8}cd|uCVmna>$yG=8H zLl}zaBFt2pRK}h`q|fnBLEw$m)4J}${@kNHHw(p?L#TC~Z)agAL&B0}ww!;!bC8tY zLUm3`f3R`2Rr9s=tTLo^G6c_ivUP_lFsO!LTjv;^RY`dGmt-A|TdQfXx zX)BTEy5y8Tn5>w@uLZKJp*@#%(VkcoZub(Yk<<=uIr^;hTIZ!3u54mdHY z-9EuYaImLhgqLWq)MhkB`4U&C1BP~$5ox7;WaK+E-1idsBw@ID0K(cGFGEfkO1U#? zQva=zbJp}@HoxkY1bOaPn2lUEu z&Q}_a-+dJ!HqMhS2s-Bv(2-dO|!KY%$u`+Hg^P0qi4P%b5^H>>XJ<9{R#B=M~t=fOy8%2 z4Mk)udPlkv1l_(Zx2E_GWJOqp%7UkPGiNk>g?8)~s{=dxAbI`}ks3cb5$6(5kRK&Q;^YOT373}U|=`~t{PP1CC)~&65D>MTABW4T#_$ChqNAf`l{uG z?+M8$(t5goU=^$Can@$6p_i-t+(q2>fRn*yeF!W%2}ciH0oSMU&RE`Ar=`0cifcs{ z)20i6*BQ(c&rg1E`wQE|s_n+GuJ^ICX9S8|xlRYAVaHx|5fNVkmtaTraG$QC55p_P zM8$$%R^Vm4d<-#VDiV9qrSyV%cWXgQ-|}>_=Bw@SwYxieJ8!&zX{Yo!-FaUXrDTbd zCklFHLeHwyf6)h46QrXzI@zJP6euo3QZWe1hURFrwTthN-Ye`eG}RSy&J&k!%UCpQ z3hpU1i2$v}1Lp#EUQ**+Hn3aTNfs@+>ka&$jt{M_gJ^ZxX3?wLA7$ta#?E7s&4B$f z?`&;Oahw~D;%;52tV`_}U_dIyx-DxcF&_dHDL(k2+m*>igXO7jt}!l`w!01y!yiBx zL`Ai7XVK8Ot1xQg-d5QwP5*3d1NYIv$~n-?Ek&VedzFieqjyRkk(Dj(K%@N<+Ux?9gPxx4QZ5 zqT|fD?(PujFHqQ+JQ>2}0kko&$O*uWiMzYFEMeC=RUC3BMHV_bbx)9><>GXzg_a(- zmk-+}`S0vOvk>~7SufOtR@>V*Z$8?$Fpsv0H`nyohakHtgI}w<=^{Stct0$(&{W(k z4!&7oi7&^0GiXSj#$UIdUoaTf%TUfZ7008A21+h$07Gp^v+fwIW7=`h_pW?{9V54LwL zK=(fVHW6zNE}SKmqP=7zYqO9xGLJ@UgC$Fqb2yq+|FWD+^MEXu5{1~LIUCwZ%X8@R z7r*J=h7&mzOdsS)!FtKZW0q}Jw@8`8Ijr=13R+Vf&QA;^dj6QtexK-zvO1ly<}N+6 z4xOdK`J8dVl0DSjWt4M~u$gr>8T*k!XRnIZZI& z%8+`5n>_&Kqd|)>d!Q^IYSk6;qGTLS8VvXS^2WPi!SB=C$Q;bX|DM8m~D#Sqie~^+kC)kh?0QQJ`+Su^^2<(yx-2T$bQ+ z^3~@@6#JaTND(@)qg$>od4CVaMJ#}gUUp9fG(8~TJ{`<-$Dcv4$9AsZrJ`g9RaJ`E zeDBC7aIMZAu~M1FeJloO5O6~{SHY7FpnQHxuU&0MjEAmXD+L=U%h-ysF`C%;{M?&? zy6q+ru$c;5yO<+MVs#}p<7U^HK9+~8Cut#Hx`GM}BcUj>&V-}zVfv8AW{qE6(4iCP z`LGk{RW;o@u!SPwh~+boau`hsLkkaOtB9!Q*6XywW)A|g8MAbIn;vXyVW7^=$i7F%`QyguhChr9yC8@M|!_cq5#=kbB( zb94rHVVv!3=+-0BhMG8Ms<{X^@q}n(vbrCG;sqz$x;SM1NNs=)Uw^o&BD?%d1wFxl zZXH`e^?pwQwI{!=l3Od2=Pk!xWxp14`6SMd=|v?d!y2RU_q4RMIjT6+^|hm9s!YVg z>>5%smLVOFB+d91%OPP0p1|>_v4$9wMO$`LIlr#Z=>UPSk=AmowT;)oASrTzppx%% z;Sd)(r43?j_P!BFxArrxsGM$d4O^eb6L*)`WOQrqu2cy`3$GjBalu-(MTJP1pzb#j0(4C zYoj>*uXbQxm4TD~$cOUycOcZ!PJ7wvOT3TcB6mc#3v#|IXUwQK)9pS3F=QR?F~T3g zLH60cL&=qk&C)GzJ*QO@D2SWk2!Ye`$QT~R!9GArGwpW;`+x?diKvWuFLTdQq{#%9 zERHwScVv#XrbstUM+?FSwwqeQ6|(jr-qa~TaINXCn@_=>4#3^FJ*jeWXYjvHp1yNU=QMDTkExwh@jv;TaK*;2oM%?1O4hV!#L}sDe`yW}pW8F!zAg=GTm= zK{sJs;|ed*X<4gp_P*QpX7L059>UsEesFV>4&h5d18vST^>;WOz*CXj>RL1GNrdnq z42?uuh5}ktAcV(U=S<#RM!HTtJ|!QjDi!?KNp8&oGCK)SlM`|;NX zEcVT2(ok6Hz&C;ntKNO=&q@Itk_FxV-S1G&f%6X7Ly5~79NyV%)q=De@upBB0qY_k zC|QEAd4qXn`Ig}2f4kOt8xok!awf_wN=S09)>A<&wz4d2@hG;^QR^V(ZVBH4>mv4anwecU_ zD1-Am2VQl)%%F+TpfZ zRE5qd(F2m9S4)($wKVb!8fbFmlCK19VqUZI+us@9ny+DQZRWwtnYjo-jHm!pJ-VnR zQW>v+4Aag*dOglfrsGHcg|$E6F!1$2>>jI1NmNoxnE0*vasf9o6m z?f7D8L6pP!8B+MSZT{kggoO_QXU9MJ?#yqU)IWoTn`s7*)tt)TF|ho8n!k)7-V2;< z=pWn({o_#G$ARk*)V*_<^7jk&%TN_WK;YH)3a|7Z=Y(Gb{yLV2m-OksRO^=k{#e;` zu-n9l#e}o}aZW=}=67>gI0-na{9y#`P|Pby?mg9?evonwJR>a{mwrzS$6$Upz#so- z0s>i?w>S+6q1pdwV)jtF=_30W(Vv%;ABvo&AI<;soUVdI(CJkw8}~miDLs(BN&7R6 gKhNp^y_#;5lE-{LHNP~dOa%T&ipt&0zM=Q Date: Wed, 21 Apr 2021 14:15:41 +0800 Subject: [PATCH 5/6] move proposal to meta issue --- docs/design/2021-04-12-unify-log-library.md | 122 -------------------- docs/design/imgs/tidb-log-dependency.png | Bin 128688 -> 0 bytes 2 files changed, 122 deletions(-) delete mode 100644 docs/design/2021-04-12-unify-log-library.md delete mode 100644 docs/design/imgs/tidb-log-dependency.png diff --git a/docs/design/2021-04-12-unify-log-library.md b/docs/design/2021-04-12-unify-log-library.md deleted file mode 100644 index c5c4633c5a40a..0000000000000 --- a/docs/design/2021-04-12-unify-log-library.md +++ /dev/null @@ -1,122 +0,0 @@ -# Proposal: Unifying Log Library - -- Author(s): [Yifan Xu](https://github.com/SabaPing) -- Last updated: Apr 12, 2021 -- Discussion at: N/A - -## Motivation or Background - -Tidb as a distributed system can be divided into several different components, such as tikv, pd, tidb, tiflash, etc. Each component hits a different log. Except for slow query logs, all other logs must satisfy the unified-log-format rfc standard. -However, during practice, it was found that the format of logs is confusing, as shown in the following four points. - -- There are fewer logging configuration instructions in the documentation. The future needs to write clearly what logs each component will hit, and what the format of the logs are. -- The configured logging parameters do not match the runtime logging, e.g. tidb_stderr is configured with text format but the logging is in json format. -- The logs of some components do not meet the unified-log-format rfc standard, e.g. tiflash_cluster_manager. -- Duplicate logs, e.g. pd_stderr will hit both text and json logs with duplicate content (but with a few subtle differences in timestamps). - -## Logging code for each component - -### Pingcap/log - -First, the address: [pingcap/log (github.com)](https://github.com/pingcap/log). - -As a common logging library for pingcap golang, it does the following things: - -- Provides the standard config schema -- provides a factory method for creating log handlers -- hard code the log format according to rfcs/2018-12-19-unified-log-format.md at master - tikv/rfcs (github.com) -- encapsulates the logic of the rolling file -- Provides global log handler and related methods for package dimension - -Pingcap/log has a strong limitation -- it cannot customize the encoder for the text format; this problem has been fixed by the big guys, see [Feature/register zap encoder by 9547 - Pull Request #14 - pingcap/log ( github.com)](https://github.com/pingcap/log/pull/14). - -When PD and TiDB-operator were using pingcap/log, there was no custom encoder function yet, so they implemented one by themselves respectively, but accidentally wrote out a circular dependency. This problem is also fixed by a big guys, see [logutil: replace etcd.defaultlogger with pingcap's text encoder by 9547 - Pull Request #3480 - tikv/pd (github.com)](https://github.com/tikv/pd/pull/3480), for details. Same big guy as above. - -### TiDB - -Log library dependencies: -![tidb-log-dependency](./imgs/tidb-log-dependency.png) - -For historical reasons, TiDB has two third-party logging libraries -- logrus and pingcap/log, with pingcap/log wrapping another layer on top of zap. - -TiDB's logs can be divided by business into two types: slow query logs and remaining other logs. As mentioned above, the two types of logs are typed through two different logging repositories, which results in separate configurations for the two types of logs and requires writing additional configuration conversion code. - -TiDB-specific logging logic -- such as logger initialization, logger configuration, etc. -- is written inside util/logutil/log.go. Note this file, which is one of the main culprits of circular dependencies. The following briefly describes the key logic in util/logutil/log.go -- the two init methods and the four log handlers. - -#### Logrus - -The init method of Logrus -- func InitLogger(cfg *LogConfig) error -- may initialize two logrus handlers. - -First, there is necessarily the standard log handler (package level handler) of logrus. initLogger first initializes the standard logger according to the configuration. - -```go -func InitLogger(cfg *LogConfig) error { - log.SetLevel(stringToLogLevel(cfg.Level)) - log.AddHook(&contextHook{}) - - if cfg.Format == "" { - cfg.Format = DefaultLogFormat - } - formatter := stringToLogFormatter(cfg.Format, cfg.DisableTimestamp) - log.SetFormatter(formatter) - - if len(cfg.File.Filename) != 0 { - if err := initFileLog(&cfg.File, nil); err != nil { - return errors.Trace(err) - } - } - -// The rest is omitted. -``` - -Then, determine whether the configuration has enabled slow query log, and if so, create a log handler specific to slow query. - -```go -if len(cfg.SlowQueryFile) != 0 { - SlowQueryLogger = log.New() - tmp := cfg.File - tmp.Filename = cfg.SlowQueryFile - if err := initFileLog(&tmp, SlowQueryLogger); err != nil { - return errors.Trace(err) - } - SlowQueryLogger.Formatter = &slowLogFormatter{} -} -``` - -Regarding where these two handlers are used. - -- Some historical legacy code, such as cmd/importer/parser.go, which uses the standard logger by logrus. -- Slow query log all uses the slow query log handler created by logrus, code in executor/adapter.go. - -#### Pingcap/log (Zap) - -Pingcap/log is a wrapper around zap, and as mentioned below the two terms are equivalently interchangeable. - -Similar to logrus, the init method of zap -- func InitZapLogger(cfg *LogConfig) error -- may initialize two zap handlers. - -- The global zap handler, the default log handler for the entire repo, through which the vast majority of logs are typed. -- Slow query zap handler, which is only initialized and not used. - InitZapLogger's logic is very similar to logrus' above, so I won't repeat it here. - -#### GRPC Logger - -I almost forgot that there is a fish in the net, which is not in util/logutil/log.go. In main.go there is a bunch of grpc logger initialization code. - -```go -if len(os.Getenv("GRPC_DEBUG")) > 0 { - grpclog.SetLoggerV2(grpclog.NewLoggerV2WithVerbosity(os.Stderr, os.Stderr, os.Stderr, 999)) -} else { - grpclog.SetLoggerV2(grpclog.NewLoggerV2(ioutil.Discard, ioutil.Discard, os.Stderr)) -} -``` - -The NewLoggerV2 method creates a go native logger handler and is only used in grpc. - -## What to do? - -There must be something wrong with the engineering of these codes above, and they must be changed, but the cost of changing them is not small. - -Principle: For long-term consideration, you can't 💩 on 💩. The speed of output can be sacrificed in time if necessary. - -1. Modify tidb to unify the use of pingcap/log log libraries. -2. Then modify other components, such as br, pd, etc. diff --git a/docs/design/imgs/tidb-log-dependency.png b/docs/design/imgs/tidb-log-dependency.png deleted file mode 100644 index 381db14954147c7bc2d33e2d505f2a921256d0df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128688 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�lX61JvEC+91=wcLeRBEz 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 gKhNp^y_#;5lE-{LHNP~dOa%T&ipt&0zM=Q Date: Mon, 31 May 2021 22:43:02 +0800 Subject: [PATCH 6/6] fix build --- go.mod | 2 +- go.sum | 6 ++---- server/http_handler.go | 4 ++-- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 357f25076275f..ac4ef88fd215d 100644 --- a/go.mod +++ b/go.mod @@ -78,7 +78,7 @@ require ( google.golang.org/grpc v1.27.1 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - honnef.co/go/tools v0.1.4 // indirect + honnef.co/go/tools v0.2.0 // indirect modernc.org/mathutil v1.2.2 // indirect sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 sourcegraph.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67 diff --git a/go.sum b/go.sum index 811f747571a39..6336c1749649d 100644 --- a/go.sum +++ b/go.sum @@ -496,9 +496,7 @@ github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sasha-s/go-deadlock v0.2.0/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZqiDbRupzT10= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sergi/go-diff v1.0.1-0.20180205163309-da645544ed44 h1:tB9NOR21++IjLyVx3/PCPhWMwqGNCMQEH96A6dMZ/gc= github.com/sergi/go-diff v1.0.1-0.20180205163309-da645544ed44/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shirou/gopsutil v2.19.10+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil v3.21.2+incompatible h1:U+YvJfjCh6MslYlIAXvPtzhW3YZEtc9uncueUNpD/0A= @@ -930,8 +928,8 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.1.4 h1:SadWOkti5uVN1FAMgxn165+Mw00fuQKyk4Gyn/inxNQ= -honnef.co/go/tools v0.1.4/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +honnef.co/go/tools v0.2.0 h1:ws8AfbgTX3oIczLPNPCu5166oBg9ST2vNs0rcht+mDE= +honnef.co/go/tools v0.2.0/go.mod h1:lPVVZ2BS5TfnjLyizF7o7hv7j9/L+8cZY2hLyjP9cGY= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= modernc.org/mathutil v1.2.2 h1:+yFk8hBprV+4c0U9GjFtL+dV3N8hOJ8JCituQcMShFY= modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= diff --git a/server/http_handler.go b/server/http_handler.go index c0b97bca6a8bc..0642924359210 100644 --- a/server/http_handler.go +++ b/server/http_handler.go @@ -1898,13 +1898,13 @@ func (h ddlHookHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { dom, err := session.GetDomain(h.store) if err != nil { - log.Error(err) + log.Error("failed to get session domain", zap.Error(err)) writeError(w, err) } newCallbackFunc, err := ddl.GetCustomizedHook(req.FormValue("ddl_hook")) if err != nil { - log.Error(err) + log.Error("failed to get customized hook", zap.Error(err)) writeError(w, err) } callback := newCallbackFunc(dom)