From 3d19a515fc170ff1f0b548a2c0500d41d5d0cdf7 Mon Sep 17 00:00:00 2001 From: simagix Date: Mon, 20 Feb 2023 07:18:35 -0500 Subject: [PATCH] scheme redesign --- README.md | 5 ++ README_DEV.md | 10 --- audit_template.go | 81 ++++++++++++++++-------- charts_template.go | 21 +++++-- images.go | 1 + legacy.go | 29 ++++++++- logs_template.go | 26 ++++---- logv2.go | 16 ++++- sage_says.png | Bin 0 -> 163903 bytes sqlite3.go | 2 + sqlite3_audit.go | 149 +++++++++++++++++++++++++++++++++++++++++++++ sqlite3_query.go | 122 ------------------------------------- template.go | 108 +++++++++++++++++--------------- 13 files changed, 341 insertions(+), 229 deletions(-) create mode 100644 sage_says.png create mode 100644 sqlite3_audit.go diff --git a/README.md b/README.md index a0ea27d..44ea865 100644 --- a/README.md +++ b/README.md @@ -30,5 +30,10 @@ if you choose to view in the legacy format without a browser, use the command be For additional usages and integration details, see [developer's guide](README_DEV.md). +## A Smart Log Analyzer +How smart Hatchet is? A picture is worth a thousand words. + +![Sage Says](sage_says.png) + ## License [Apache-2.0 License](LICENSE) diff --git a/README_DEV.md b/README_DEV.md index 3c231d9..8c54d7b 100644 --- a/README_DEV.md +++ b/README_DEV.md @@ -80,16 +80,6 @@ SELECT SUBSTR(date, 1, 16), COUNT(op), op, ns GROUP by SUBSTR(date, 1, 16), op, ns; ``` -### Query Long Lasting Connection Duration and Relen -```sqlite3 -SELECT ip, context, STRFTIME('%s', SUBSTR(etm,1,19))-STRFTIME('%s', SUBSTR(btm,1,19)) dur, reslen - FROM ( - SELECT MAX(a.date) etm, MIN(a.date) btm, a.context context, b.ip, SUM(a.reslen) reslen - FROM mongod_1b3d5f7 a, mongod_1b3d5f7_clients b WHERE a.ip = b.ip GROUP BY a.context - ) - WHERE dur > 0 AND reslen > 0 order by dur DESC, reslen DESC limit 23; -``` - ## Use SQLite3 API Different drivers are supported for most popular programming languages including Golang, NodeJS, Java, Python, and C#. diff --git a/audit_template.go b/audit_template.go index 65958bb..5f8fbe8 100644 --- a/audit_template.go +++ b/audit_template.go @@ -8,6 +8,7 @@ package hatchet import ( "fmt" "html/template" + "math/rand" "strings" "time" @@ -20,16 +21,21 @@ import ( func GetAuditTablesTemplate() (*template.Template, error) { html := headers + getContentHTML() html += `{{$name := .Hatchet}} - - - -
- {{getInfoSummary .Info}}

{{getStatsSummary .Data}}

+
+ + {{$flag := coinToss}} + + + +
+ + {{getInfoSummary .Info $flag}}

{{getStatsSummary .Data}}

+
{{if hasData .Data "exception"}} -

Exceptions

- + Exceptions {{range $n, $val := index .Data "exception"}} @@ -42,10 +48,10 @@ func GetAuditTablesTemplate() (*template.Template, error) { {{end}} {{if hasData .Data "failed"}} -

SeverityTotal
{{add $n 1}}
Failed Operations - + Failed Operations {{range $n, $val := index .Data "failed"}} @@ -59,10 +65,10 @@ func GetAuditTablesTemplate() (*template.Template, error) { {{end}} {{if hasData .Data "op"}} -

Failed OperationTotal
{{add $n 1}}
Operations Stats - + Operations Stats {{range $n, $val := index .Data "op"}} @@ -75,10 +81,10 @@ func GetAuditTablesTemplate() (*template.Template, error) { {{end}} {{if hasData .Data "ip"}} -

OperationTotal
{{add $n 1}}
Stats by IPs - + Stats by IPs {{range $n, $val := index .Data "ip"}} @@ -91,10 +97,10 @@ func GetAuditTablesTemplate() (*template.Template, error) { {{end}} {{if hasData .Data "ns"}} -

- + @@ -98,7 +101,7 @@ func getSlowOpsLogsTable() string { {{end}}
IPAccepted ConnectionsResponse Length
{{add $n 1}}
Stats by Namespaces - + Stats by Namespaces {{range $n, $val := index .Data "ns"}} @@ -107,8 +113,8 @@ func GetAuditTablesTemplate() (*template.Template, error) { {{end}} {{if hasData .Data "duration"}} -

Top N Long Lasting Connections

-
NamespaceAccessedResponse Length
{{add $n 1}}
+
+ {{range $n, $val := index .Data "duration"}} {{if lt $n 23}} @@ -122,7 +128,7 @@ func GetAuditTablesTemplate() (*template.Template, error) { {{end}}
Top N Long Lasting Connections
ContextDuration
{{end}} -

@simagix

+

@simagix

` html += "" return template.New("hatchet").Funcs(template.FuncMap{ @@ -143,13 +149,21 @@ func GetAuditTablesTemplate() (*template.Template, error) { } return toks[0] }, - "getTheGuyImage": func() string { + "assignConsultant": func(sage bool) string { + if sage { + return SAGE_PNG + } return SIMONE_PNG }, "getFormattedNumber": func(numbers []int, i int) string { printer := message.NewPrinter(language.English) return printer.Sprintf("%v", numbers[i]) }, + "coinToss": func() bool { + rand.Seed(time.Now().UnixNano()) + randomNum := rand.Intn(2) + return (randomNum%2 == 0) + }, "getDurationFromSeconds": func(s int) string { return gox.GetDurationFromSeconds(float64(s)) }, @@ -162,8 +176,11 @@ func GetAuditTablesTemplate() (*template.Template, error) { "getFormattedSize": func(numbers []int, i int) string { return gox.GetStorageSize(numbers[i]) }, - "getInfoSummary": func(info HatchetInfo) template.HTML { - var html = "Hey there! My name is Simone and I am your assistant today. " + "getInfoSummary": func(info HatchetInfo, sage bool) template.HTML { + var html = "Hey there! My name is Simone and here is the summary I've prepared for you. " + if sage { + html = "Hello, my name is Sage and I'd like to share my thoughts with you on the findings. " + } if info.Version == "" { html += "There is not enough information in the log to determine what MongoDB version is used." } else { @@ -299,12 +316,22 @@ func GetAuditTablesTemplate() (*template.Template, error) { if seconds < (10 * 60) { // should be calculated with duration html += printer.Sprintf("The total impact time from slowest operations was %s. ", gox.GetDurationFromSeconds(seconds)) } else if seconds < (60 * 60) { - html += printer.Sprintf("The total impact time from slowest operations was, ouch,%s. ", gox.GetDurationFromSeconds(seconds)) + html += printer.Sprintf("The total impact time from slowest operations was, ouch, %s. ", gox.GetDurationFromSeconds(seconds)) } else { totalImpact = seconds } } } + } else if key == "collscan" && len(docs) > 0 { + html += "Let's move to the performance evaluation. " + for _, doc := range docs { + if doc.Name == "count" { + html += printer.Sprintf(`I found %d with COLLSCAN plan summary. `, doc.Values[0]) + } else if doc.Name == "totalMilli" { + seconds := float64(doc.Values[0]) / 1000 + html += printer.Sprintf(`The COLLSCAN caused a total of %s wasted. `, gox.GetDurationFromSeconds(seconds)) + } + } } } if totalImpact > 0 { diff --git a/charts_template.go b/charts_template.go index 76a2db7..0635cb9 100644 --- a/charts_template.go +++ b/charts_template.go @@ -24,12 +24,14 @@ func GetChartTemplate(chartType string) (*template.Template, error) { html += getConnectionsChart() } html += ` -
- - - -
-
` +
+ + + +
+
+ + ` return template.New("hatchet").Funcs(template.FuncMap{ "descr": func(v OpCount) template.HTML { @@ -84,6 +86,7 @@ func getOpStatsChart() string { // 'hAxis': { textPosition: 'none' }, 'hAxis': { slantedText: true, slantedTextAngle: 30 }, 'vAxis': {title: '{{.VAxisLabel}}', minValue: 0}, + 'width': '100%', 'height': 480, 'titleTextStyle': {'fontSize': 20}, {{if eq $ctype "ops"}} @@ -123,6 +126,7 @@ func getPieChart() string { var options = { 'backgroundColor': { 'fill': 'transparent' }, 'title': '{{.Chart.Title}}', + 'width': '100%', 'height': 480, 'titleTextStyle': {'fontSize': 20}, 'slices': {}, @@ -169,11 +173,16 @@ func getConnectionsChart() string { 'title': '{{.Chart.Title}}', 'hAxis': { slantedText: true, slantedTextAngle: 30 }, 'vAxis': {title: 'Count', minValue: 0}, + 'width': '100%', 'height': 480, 'titleTextStyle': {'fontSize': 20}, 'legend': { 'position': 'right' } }; // Instantiate and draw our chart, passing in some options. + {{if eq $ctype "connections-time"}} + var chart = new google.visualization.LineChart(document.getElementById('hatchetChart')); + {{else}} var chart = new google.visualization.ColumnChart(document.getElementById('hatchetChart')); + {{end}} chart.draw(data, options); } diff --git a/images.go b/images.go index dd82289..a508b4a 100644 --- a/images.go +++ b/images.go @@ -7,6 +7,7 @@ package hatchet const ( CHEN_ICO = `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` + SAGE_PNG = `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` SIMONE_PNG = `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` HATCHET_PNG = `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` ) diff --git a/legacy.go b/legacy.go index 1f9ac8e..0440e45 100644 --- a/legacy.go +++ b/legacy.go @@ -74,7 +74,6 @@ func AddLegacyString(doc *Logv2Info) error { b, _ := bson.MarshalExtJSON(attr.Value, false, false) arr = append(arr, string(b)) if doc.Msg == "client metadata" { - data, ok := attr.Value.(bson.D) if ok { driver, ok := data.Map()["driver"].(bson.D) @@ -99,6 +98,34 @@ func AddLegacyString(doc *Logv2Info) error { } else { arr = append(arr, fmt.Sprintf("%v:%v", attr.Key, toLegacyString(attr.Value))) } + + // extra effort of retrieving driver info from COMMAND + if attr.Key == "command" { + remote := RemoteClient{} + _client, ok := attr.Value.(bson.D).Map()["$client"].(bson.D) + if ok { + driver, ok := _client.Map()["driver"].(bson.D) + if ok { + remote.Driver, _ = driver.Map()["name"].(string) + remote.Version, _ = driver.Map()["version"].(string) + } + mongos, ok := _client.Map()["mongos"].(bson.D) + if ok { + remote.IP, ok = mongos.Map()["client"].(string) + if ok { + if strings.Contains(remote.IP, ":") { + toks := strings.Split(remote.IP, ":") + remote.IP = toks[0] + } + } + } else { + log.Println("key 'mongos' under 'attr.command.$client' not found, report an issue at https://github.com/simagix/hatchet/issues") + } + } + if remote.IP != "" { + doc.Client = &remote + } + } } } diff --git a/logs_template.go b/logs_template.go index 430e3b8..48f6581 100644 --- a/logs_template.go +++ b/logs_template.go @@ -53,6 +53,9 @@ func GetLogTableTemplate(attr string) (*template.Template, error) { }, "highlightLog": func(log string, params ...string) template.HTML { return template.HTML(highlightLog(log, params...)) + }, + "formatDateTime": func(str string) string { + return strings.Replace(str, "T", " ", 1) }}).Parse(html) } @@ -90,7 +93,7 @@ func getSlowOpsLogsTable() string { {{range $n, $value := .Logs}}
{{ add $n 1 }}{{ $value.Timestamp }}{{ formatDateTime $value.Timestamp }} {{ $value.Severity }} {{ $value.Component }} {{ $value.Context }}
-

@simagix

+

@simagix

` return template @@ -106,35 +109,34 @@ func getSlowOpsLogsTable() string { func getLegacyLogsTable() string { template := ` -
-
+
-
+
-
+
-
+
-
+
-
+

{{ if .Logs }} {{if .HasMore}} + class="btn" style="float: right; clear: right"> {{end}} @@ -150,7 +152,7 @@ func getLegacyLogsTable() string { {{range $n, $value := .Logs}} - + @@ -160,7 +162,7 @@ func getLegacyLogsTable() string {
{{ add $n $seq }}{{ $value.Timestamp }}{{ formatDateTime $value.Timestamp }} {{ $value.Severity }} {{ $value.Component }} {{ $value.Context }}
{{if .HasMore}} + class="btn" style="float: right; clear: right;"> {{end}}

@simagix

{{end}} diff --git a/logv2.go b/logv2.go index 24caebc..c476aa7 100644 --- a/logv2.go +++ b/logv2.go @@ -235,7 +235,9 @@ func (ptr *Logv2) Analyze(filename string) error { if (doc.Client.Accepted + doc.Client.Ended) > 0 { // record connections dbase.InsertClientConn(index, &doc) } else if doc.Client.Driver != "" { - dbase.InsertDriver(index, &doc) + if isAppDriver(doc.Client) { + dbase.InsertDriver(index, &doc) + } } } } @@ -350,3 +352,15 @@ func (ptr *Logv2) PrintSummary() error { fmt.Println(strings.Join(summaries, "\n")) return err } + +func isAppDriver(client *RemoteClient) bool { + driver := client.Driver + version := client.Version + + if driver == "NetworkInterfaceTL" || driver == "MongoDB Internal Client" { + return false + } else if driver == "mongo-go-driver" && strings.HasSuffix(version, "-cloud") { + return false + } + return true +} diff --git a/sage_says.png b/sage_says.png new file mode 100644 index 0000000000000000000000000000000000000000..8a8b19315a925ae5f8b862fd4be52ba54405ee50 GIT binary patch literal 163903 zcmaHTWmp`|wl40$gM{D^JXnIe26wl?-Q67mK>`f!9^BpC-GUCT!CeOKeEaPEoqO)y z=lIg-7$#*CpP@tfo-bsBEQ-*?qBY}c~jz>a(ToL;N!wES- zJ1a|yKvhnDJo@XJsiu^foE#KAA(*uH(aSQT;U|=FU3`KDn zasV2P{%v{6jI=ock?@$Riom>p+4o9xFcjjLM;-U^m@tp$?y(*1x|QuRpW%Ox99*q* zGIceXnz^|(c6SzlEsaJf09e&XnsAITc+fur#Jm6Rze4C_n2E5CE3{1iq3~aIE#S(x zd(`3n-+TX6tO@6Y23_Vc%xYoV|L;%uyVgK(1?>M`yh{M1e)-dQdgc57rzeq!I*9*C zivN1XFe{{=G`kI{(!pH=Z!@lRu<{$0&+4x@jUb+bSm(D(H2>bV|d zvKN^cpO)q|yA43K!{SoH`W_JxM{lkkSA_pH;p+V;B9mF5uhjEgP*^p_f09Os04c|X zfY0IQn#WGG(^<=bw63l$f&FR@L_OV?0YcK!k>lx{3Vsh;h?d?4Z8@WeWgc84oxdjX z|L4mK5Z~ky0sNk}FL0|^nXNYL+o4_JD1$U2q>h>L)jEms$vm#U^ZG8JN{18!I=2Sn z-*p#QPS$;e!br@h1yLD|08G8>iVsVz07+18!q606r8ZT5aV%bwwP7R`Ueb`Amug;q z-Zj?&ce+p44Cz>mFRv?wE5lL}(dTw@i=Z~Q)7cXgndHw*@F=)QA2x8}meW^c!ON3DSL_bN?%bP<;kh8^yC@Efh(=`VFpq*`sJ(KetqQF$gU z`AJ$GrDOFH260q8CLLU}vs0x21#;c`kjAazo zQI`q<*M9FxFnxIxaUCd39*d)t+&eJvzw<4q0{yuwiX!CK7I^)GQ=(Co1!9S7Uw#OZ zP_8qRBV@4vP~}fJ>7L*grMuZUfnUwuvvKeJ#FeH^Im#3bN0<6xU6}xWz8`aD=40k; zYUfr-`Lm|k;FP#Fy^Y|xzx*b(>b*Kr`<5h?-gX}6cE7=ZA@Bll%bUD86D-3o^CoeX z6|wOtI#~N%XC8awQ5=5r_J@7B%f5?qTCJoJU%5eB?Y!f~uhts$dD*9&q@cvf zez{@6n^=BBMH$0-pih$2hswb3QhZp0LA{g;yRN}W^m2LWGoRs?ZTdQ-KTDtnkjlUT!JcyvB;;~{j zM;i>qS^$zre;$>oI_w--W6~9)1C#jclK8$T(doB0w`AJKJXY9`ad!WX`p2*fO!ycG zoCh*q;&wOQZ|bMAcn3*T8%9ewNuf1C)<^7vM&T1hd*|EL>NoT!7`K70F~+vlO$ z<$RXEDZc(l6YdHw@H;KZtL{}X8u-zAVp>6mOO8i(RhYvLMAkK#U4-ho@TeiP)juvZ zk-^Gtk*iUmONT@=A~ho1_bBl3Zi3~=!QPwjYC^GPYjCq}Ytmh+%wi^QQb$X`pw6pd zzEVjCnKE`n=e#|0&*P=TqxJZAw#71QUw#(o7NxWxh0igbpk46wmqGt~3`F#gKNrf> zN9?FCL=h9vkL{Z*6C@q6rTC2U@;iEs>uX^ysOxPj>^jAh@eLavsVCIJv*`U_Ufa+f zuNWS;p3hAO%L$cBoJ_%1nQ5+6$#$TLa_dm3kH3yGdKjndWsd1X5^F1`cq^bS#2xnJd-+j!nka5J=6$B*zS&^2NPY zm8&qQ-eOIp^U*ZL=K>tAT%tR`ViajJty=gsge7#6p*J3ur`#-+Qcg3Ds^1jXrWrq~ zQx&Eu_sCy1xxspInDD*x84>wUaGOsF?q^+18X_saEL9nVyN?&NT=Gn=rF2R6T#her z6)qMNTK~Q%^EcMXR)o+p${VIcPiP7TX~aPGfRRg>uv616-+uuUYuq(1TD9XIvrDgBK}?|Vl?0e-?;Uel|rWcw_*-r zmyF;h?)}H!5|oT3q?XxCgTr`9NVA4bc}cp4MzRhV8A#BH1*n2Qp(TYf;E!^fXXg9o z`w>xBq=SkkD%I_DQz?Jv{dsU7>AFf^!SOg|oTc|2Czn@3{Bg3#0^!%Ja-%^Nf4}FY(>J$hI7(mF-5c zPYz?+986{gbvK$^VwWi927R$zRJEEf&+RMM>=coR{#Y_K!ch080!W5UdhV|!6!zVD z(`YP->1rpX2BjEvH_f^#>2sBP99Ey?u*#b^kEoSs;$}E$2t!rtthXRHx0XZ<0i9Y| zRw0NJgBBkT?)mOC0TtM^9Tdv;`JBsRGv|f-MB!FnZ8@u%KhGmX*$Q0PN#vq)vf3_< zSh;L|H&UEE8yODoKb7q3eLrH+aQh?m^nh1y{>6wJ>=Ii-w)kPrFSF=GctZQD>tk7F z1um48y1;MF!Q%evs_>Dky|DtZh>W^i&d>gl_TKv2P*UvJs%RTS=%gWGWv`&`iHe_bCbx4^r@!-95@A+d`*z$A$$}<8 zZ&Q^I?u0>>D);GY??j4#DEFxrx%--H@yqM#IooTo)9WZv0gPtUFuwbN&h9GI*Aq6CgRTio(28 zWV91xS(4V3ZD&&p|Wc7Dhsy??9k8h><-QRf@aNyy&GNWHHsp<)ta4qHB2&DycI>4p$M<^+x}|y~ln@s~Cvi6D`N2}i5!#pk#@aIn41QXB;gzBLlp!{> zv0v%E>pvwxiF6XzZG8W_-s;D_bhuQhs#9t0Qo(LXr&1Kv`MSHK0EF^L$EDBEznAAd z{i4<78GOeOP<=NIi*Zy8`+ zz!Ups;V^Wf(m9m-?3y(x6%vA4$qhhLh zoI=&WaO2%V6_y>~4f<+g33T`x!hw|Q@!bSeMA`86x4(@E6}Un9OzUqnqTF@tsVt*~ z6ee@RS)M$U?W@}rHqGyOY%*ZI#%OzHkvlHn$iY=5tZ6#OyzGw$9SS8KZb%tsX{x^@uh%h(2t?0pb&FTCR<}&uz0-lQ&pg5y z-n@JC+t4h@sOh+t!)UC6i%p zq_e*YJWMTqqj~ky{K^%Ps%BQ08fVV`YS+NwJv)`)`ct3Z>zJ}=drVsv@cXQ;p4PgB}AmW)h;$q5f?)F6Ful`x{l`1;=o|mSNka*z6=D=l76sole>|1O4ob`$e2GWj}O|_VDnR+B6NEr%tO(>yk!~ELvecskSo8^eCXXl8U363LDN9 z>FL-i-6UO^Z&Iy%5@8{D?QrOvuQD*uYKg*rsc6nEe!T|{;un%fwtkz@-m6$ueBbc; zg`h^@J&)JTcN;}%HUE$+bdeIR3Td^9@;n9Yr*ma~qTs#Y%k#~mDzeX<;1649xh|W$ z)lo?M^vb^J5g?Mkqh(B_K-bkpYmz9b;qvJMgHK0GBu5wDeeMU`ueRUxfeg&Ink(p! zZr{~;)*LF*$_cqt5&YRSKU+D)mFw4O4@O;IY;{^r8hkNeAikKou*_E2I|(!x1D~EP zsl$R1Zg3cBH%`Ho>O3w!&G|mO4?2Xedk&s^%No1;c$_i|>}8{<3LQE5dmZH9@L^*N zf&KKT`=?2rb6}e`h#D+-$P6p^fmV%PEv|4Z$tpCI^XCqg>QhY4)r-p1$xFv=Yxq#w z)d?>6A!=^w=c@L`rz*bt$jN7wSg&$6rOF5FNIVDFF0<(LP&E!v^Pk(1A5cl?iS+8T zC;k z@#}j?cLqW;zO!((X6OjZcpl&AdU~?fZq{wI(F$|Zrz=(m(Ox-no5y*v!Xp`G}-#p@RDU3dz&avBrup$UBf(RD!~R)qaCd&n*NLPc3sy zz`79D`Mj^=i*{h}HidAwx$fOgnXKy-fw!rn>)+9PwGc2Ph7wzArT&5DM=lcRy^7zX zmiERrYq)vp$n}%}O|q^_gep%*p3CW)8UvyxTVN1O?-1<4+G?A7)obJV-7z`7o=@Cj zb=}K0PlF4T2myv_QHwL*DRfWfQ-t$a6X>)u(NNx*hd6G`KXiekWKTK~XJ;x8sC?{5 zJQ?er@B5JxL55^2nRlbcUo{@}%U-Q!N;wBn`_4B7vN6U1|~6GCb_w#c+n3uQ=Xv`E5JJjq?_GvK6E=N6rza{tlSe#_`B zfpdo@dTEN;#v`{nWC!&2nut=YHtn+#Uno?J zkot?93S9)>6OIP)xSotYIPTo8ynHQNvS2rcD**I+`TR1ZR0!rU#QOEXjm&^Vnd3}4 z=VLL19=kj%`1X=t#c996Xmf8#OHD1FU8$Mni}CVl(!uRBm&0L>I?@1l2+cMj#|;s& zo)YyJ^f$X^0R{OhB(-3Kck!R?UEY=L=>1xJ64gZDipZqAAdX8=tp{LvZni$})d&!) zvGpK|`mmwB9-}@MycM$(=Dm`tQK zT!Cf_^+Du4qu*;`L8SMfC1C+|dB#gEhvmKGBPNMU*0}d+5WMW=%LxtGDtpL#?AxBq z9;l(`q`k{!!{RLrmqB$NlrMXq(i48swMm6wnY6Qs7S91d63&Nbd2>@4B!%%hbO^vuC-ZAM&EYgM7jA-HE90l~qbF=?_}vWM8P0h@ zAYKw9Oq@_RE$Odw#)^R2e3wmdH5GYC68chO@_QnUFjXE*?t051iNJ`i`(tl@&X<>= z++0B;ym_gVW&_tpHKTGOO*W{xPUB~Ee$-R66FzfPzF$TIF68}>Yo2y5uqob}?p&5& zo>+-%g*_AWg9Q2BFM{#tRAb4Nn^6Lr++*l&=d0AF(mKmGX-ou8lW+Vx8SgY1K-BHyS6GG_>%9C+C-XLhC{d z_Aen1oynleXk}>lAm-FeY32Fa_o9R3#Vtkaz|X#sc!LxCoI`f@ZYqLag9oBw~}Vcr#eLWVW!~^9RHrqUW>zhSABwF#`lWn)~`z zWZTYZd>bhH`K_MM@U#4ci#4kO!jH#wRW~MS>5K$gTlx0_v+6LN=bQIXYy>N+nwttwhiLXhDTRU_$7LEjf@ZGf$gvRCxm&9`c(ZihcX&Ryap~AZ)~Ud6)xQr z+da=D!0my^v4kl>I-PkZbAziyo%ShF-~`bmq+cJAxDqkeCQA#0BiI-Rf;~q-HS21& zi3Z`ywLX1L9Ro#OEXy5BO$r8(whXr*$SjSEyyA5cKB5{Q!B+e_BTFJjz11E)Kkxcs zuY_`yKEE^X;S4RaS0{)ep#e@EOTI_YLhLh%I+K6VU1E*O;|!9R1+U}_hq9oZDrLSn zBKtX#%tMLC%Sa4iUN?{=8@CTw$5XuBqmkb(J+aLbvCd!3l3EP>ESJV{DZmEv^In1^ zYt45^uT@~vzxPNpp7AT!n-BjFg-1?W>c|qJ$v-h_(#S7ASXKoO$9lYqF|xWAj~Zmr zaWl^yC(#kOF4~_~tm_3Mw4{Y^XTnJ>#U-amIttFieSHm(J=e?aR7(6LTszhRZB=v_ z4l16}%~X*>BSQjzS&-k4k{cggH(}S;n6Zk1Qv}xY9R<~pHy>sKqC`eRL_LGyp=9KG zbFrzVf0@dVO1F8hjN-()s|LTsIp|N};vvRCfI^9TDWXQ(=_GA;J-1|Bd09@3)zX(K zv^17)=v1dm=LWt#3#06E5}}kBn%a)1YD*UIz)L1$Y?BE2XY|vCZRj_;l;YM?hT4^? zxW@iq`N4Yn4sq8bQ6nkc<%!dp#p04g@Q@>f{ZWxdd z*drSsmeZS$j4m)V!0enYx~H#hQ1a>uIqy%*sJ}N`X7FSY@zT}JK<|tH4ygA!wOVfQ zPX1!Mrg}VInjgH)i*~h_eJgi6CHM5nCMW;$b~@Jx;Ok-3==tM-G_u>sz{D+kxyS|9jM^hr;P1sR z4E;`p17-Lpq~~=e-MZnIpap=sKpUm&7?y|gitu=_g1L# zhmj1GEKRzk_LiD@onB#_r^ZAuA^mhhzPuFQF=Nb>TK(p z)%f(WsrAjCq)5F*8RMyN1)Ge-Ff(b@ih)FyVc2*6Yjr9jg7{8^RsZsxAgM2TGM4-E z7AFwpy`_0v{$SLsK;|g$j?vzPgVd;GU;84>mLToXMj#m zJd_cytVf!G-?O;i!zJRQ+isJeuUw|qqb!sExQ2ZF@?Cr;tJlp@?hXJ|(SP@oum3ss z`B%%s)Wheq=X2oP)$#|7Btu03A8k0wCR0?ra9=Ylp{<{Kg|M^|>6?2}qN+fm8)ZF~MAfwT$OrCO}?f9OHHYFt@>8cIDVSw|fN->4KhOuBQ$ z!jV`5>y)R^>5pp8m%Ai8GoLEHR4#loN|fTiNpt!zs*K_$-Lp(7;^g=>p;MO|>vXlP zDyzls*k9p<8Y^Td5_a!B`xMt!d4AG`P=|L1v!fMRZ=_*>Q>mp-1R17Am42Un>Y4wA zpPrzB&l!A+@IZq-NMMia)|eP%nygn8yY?<%c%3h!7#}?>w2MowE;oB< zRY|&|o`ke`1s0VWa`A%bs8;nv29HW35MR!eR*M@uI~r_Onx%NJceNmyyHqkmV(*S6 z6|0g$`Z%(3F_N|;CBoMehsSHsvX%ElFeG3}#@<1dj=xI08ls35A39Cm$m+QY)WZG< zsJ%61|GFwnTE;Rc@xT~UruVbY` z!&e0vv;AI6ZvL#Q4E3q!6hxdOmXrD9kT(EVatJ zI=Yz~+yFzBVu09WdM&pKi6bDGF(VyGBrfA0Jx*eJ75D`_KNs1+;Xm}4huru1d3@}z zdabTAyy(@L8OuYj5ye^aZQ7gT=Sk_>$F^@DIPJ>cqtJfPd=1#%Dys_rhWH*~$n}K` z?n*)6d4BcMVd{(1Bp54m{yx8J$6M4l z9!^+3ZNau^eD}wZt#m?SlW*gbx4(z|twh?{#j1gGHXAW>26@;FD0Xq_zTP(9-D>#a z;`abk(?(vCXaBQ6WH{%7+xP24s8AefzlUkSvr_vVQ7;VO=J$-3j8ZYX6v*LIJGTT( zEJcL4YR3P_H;3viX*{6qS$d~wR zE;2kh%U`K9%QY!r*}#ep`8K42i#!84Ci{!#tFDGnSQ$oXJSKAU45wCIuMJaW)rI^GO7F6Ype6)WfwlF05?hL=j1}qu+7Gf` z4=|p43-Ya%4pX)UTa591a36j-#%Je32nRhG$2-AHB*PA1 zv9TD!N>RP)XSgmf;+?hM;2$ybjlM^!uFN*K(vfT~R=>h==Zw``pSt4B@fj{dN#TH4 z#Kz~oF2YeHnx0jV_kG9gS*2U8?~offgPKUbwf%9=YYEkd^}>(LGr$y2?!(s^2+lq9 zdt4s79sm0jM&j#GhoGC8cy?XV1}1^4S7pMV^(KwvWk48+*SK))v2gN}M^XN2t*O_{ zMm3TcK_JX?{9Um^z9iRGMkM+{eELF^pRK7B-~%^G80_;sDh#TasL49_>H#iYT4gBp zT4^Ff;aW+tl{Hk~czC+Twz)=hBK>ExYwM-Tibj+1@}Zt9DBB9wWeiSY^9O#!yI~|# zlGmkLPvvhFN?n~wsFupbQej$J<`3mrReEje${5ARr(&=Jf$GVogqA3Xoxw+Nu%Vpy zlo8<(?9*`#_SOqAxMdnuNupL{JPj|F$`#sQ&le>p@7>NfDwf7BGsgk_@j;=e_$a(4 zIb4D9^D$&6OBKnZYV_V+O2ag3!3uW?=zW zFJJB?Eq$%6D{^{E!%Z2(=g~wb(!O515G|J*bsTi-S6u~iL6QcUy7@i=57(X(e2x>J!yA}fZI3YkczVmxpEH>S^f}{rMNdCda`3F;KQ%szURY0kf`1%O*h)tcl zE^;HR)lf8c?)=-3{Z1X^<|_;s8*YVk3<*MfE_hVS?7wI{c+jM9quKhxXNoe6^y;O% z*Sim$j6g-jv_(4#>PR40C#sRN{l6GtfqWu4B~Gf~J`BO(a;>@>r$xTeFuBFQG$ssJ z?UEBcw`h6YGyJ&$DJ%x!octS)%mg{`-3jOLxm7sh3q@g(nG1SWA=0VLUnHbX5h&7d zO`aSVS_ATC1zre4Oe1^JZ1A6B`EO1Bi=0M-2jf;U5OK?IYx!?w|Ih|RmsOb6lhoG> z2g8};HtWsQ?%1^@e@CJJgV)wA6)luHHyWwNmrx15^EbTwuV?1Pk~6H$eYy+WF1}!-^Gq$rXKZIFs*0 zb^E=burQQS*u|w@Op+l}4*CR_ol2AAZ#Lln>`lfzQbv6wBJR6zbmDkhokl5T<@k?$ z9zyXLpGL4;4a#tU%7OXnqO_(VlEgi4F!7qzIaE|s-*k1$aX%}IMdC5hUm{;(<5XvA+J3t}pE z!Y_1dDba1I{j=Jn&}g@wrZTeo!=p^KgyJB}yE2N9T|!w|nIf$?-M&+++v#$9pw?t0 zKF86(p$EPdBc0FFY1(1m@E3<|?|W77Zi0dUoq_LdV!2-1;@aYnbRxYJ`03Vk{+E)7 zfe(esT#=kBVX;EC9|bR zKQgTo2UWT)Y|2U!j9Kl!46w%9qle$aXy|(us{T?GMnL~~NdIz)dsv{%S3oQ`Cmp88 z>puGG`+OTvZS;u3wEOXQmw_^n0%k!3S32By5lvI*BmbR@3~wnTg_yep$$)4E@Ux!w zXc7YhBnn9A4Mmm7?G1&n8?dp7h`iSr$cyCCKl#5t7V}+?vv2UMR~ZO$KmV!Qo0Va{ z-9UAlEm5I4-+}N}%&`HaUWeo@hj~BR4Kceh`x*E6VUS{2uwOfM3Y^2Q&hldg;*S@~ zyz?ceKH=Tb-8IrxRzfqj++1S7@_3 zvx!-hFCg<4$Mr%Pd~S!$fY0`J1@3$WfxYhx4_EEGCV=ZNLCLE=yRKk1D1pmRWxgge?lhL&k|4WZw2IvD9h4e9NN^+Zlw&sriD>TZ#nEDbx|HC)0bFD zA-sn+b4rgq$o79#T121GepIZ~YWUBASF>doY%? z>OJOoWcDxV@N%D}RCaR|cH(-O5F|zszc;YE@a3kAW>n62s-S=8dA^N7xYgVzXo4%{ zLg^!WtFyg<8c573^0uRzvMVlNlXir(20=n*n;nh2BExSKhlaHLN(}5fAB*ZOW<-`; z{fGG>))$|Vks_Q|W5JR$lHVCCBmYV1VaCh{gB!6VJQxIdbFI%!H%IqW5;L4*L_HXHhiMzUC=_gT8PKj5|$1 z%6Avia&qqo7Y(3*@{CQwN8RH@A%$}C%5ILxiA@>b-_E<<@cd{=75NwqI&}fGV637> zT9W&oAumC2fA1u5q-ScbA5Z5QxNogWCnTR$*&K~>#tp)0{M9@FZ|>i3K=S!gAPrn zbA;Jk4i$X`T#r?KZ|<4f_Ac!7W65!wjc_Wwk-+UxuBlFK2*s^Q>)- zA*0sS=N#U5He2|SB86DT;C2r`5e5Ye7AE2cX=mWKkdWM9+0kgtyH{573wE>Eeh?Ew&zjL5_psslPmFURt$_j~`4<;9^ z%dtw2Gu>l=Ogid$#xYu|Kf95I0Eywg1d|^p7=`Q#fEBM+RQ|tSD7c`g-$qyO$Y1uVzA^gQYUUM2_BJ{ziw_1=+ z=MuR4ZG5$4;1556-n(5^)kz;hovGbmb#wt49=9lKYu#vsa-4Wj^K!?lX$7XU=K0N^WtAmLhdut@wp;4JBcf*ZANI5Umjn2F5Sgdh z^+m(bW;`hs&=6=5SOUMMs0iRPXrkdNbs9RwUyMPcBM_Nuj~`e2l$uSXm10EQH`1A> z{K+szu)_V;KUb_k`naENA0#ny4=-3=VnK?E$2eUyuGy*7g95F3zOHopX>J&BrhwA z1|H)VT_yr=F``(&BzEMwesrcZ zMg@_IY$;?*b%cMCP068w$^hfJ{%rh~{zXhL-@vQ{3ruyIW*^ZIlPmP-pwcxA!Z+~A zJz=|ydre}}(PeJStr}8*LXq%elxaUMEvtut6;5cjoC5Yt%WFRWV1atw2a91I$K4AvOu!MT>S-F zW`&_00NEWtVU{RG3YQx|Pyoa*`@`|LLs06+-Dh^YCI=E(e6We3Ydo%>W)$#V)F?!hh?DL@vqXxo90-#}U*k9!`xRkEnX?o5! zB1;k*`rMemKlZ)+E%l2PPvChgoD|ReP5L=sRx^QhKfLt7&IIa7=t<-|hcm?XNyc&y zHXGk4n5z5CKb*pkcdxa$2#EH#cxS5-vCWWg^~ z%P<9!X-d4iKnh_|NBZ`V2w1#ag|I^HRfGTWR{gT5DtE(0XSF^ZO@vVE>1NRaj? z(uZRPi6{N(3Z+P5 zW;ea){8q=lqY#n5Jgpnp6Ky}TDWP}p62p5o4MG^i=}F~zKFp8x%HQTEkV~pm40AnM z^vo82f-~!()y;66%PLtt$Z(FS^xvhM9n(^5R&;-;+}vI@=eq9W21Q-mq;n0z@*aP- zCVJFIB2M@u7q6lQBA(<~z2ESjYV#?xTW@{J*wdZlqL^t?JU=9QD4NH)I)1jLBNBmP zk3-@FZ0l;{mHP!^xe_uS?fRL6J(b49Wp>?y{h*0h>haw$TR zKCUdEpYMuw6U^Zz6+si4*=aSC1q08W_v7sTLyER(J^`?xjQmTwJvX|fBN>8layaZ@ za|qNPX6?LjeHE0R6mxv2fG`kAC!bef#r1-^^6R0hPh{qEh}G9sAr5SSS!!uxVi^5H}%yU!ccy~1Ap<$wGf4DgIS9720~4q zi)Q<8h2mSme*shY!0}Ol!yjr`u6gvBxOJMR8;7^d4^xu?m)IZ7*O~B&l_O!_`Ra`dLba zX6F*4`i)1g;b`=#{s2OSs3xJ17E z67#1wGzUMqDjQ6AEdJ7CH_`67iqo0GWJy(XkDq~=i^w^ZoCfH9gcE@5M_T+~Y?fIo zGk!L$$-3zKO>)EN}!Pj zEK(W#N6gu+7IFfD?=CM`pb)-5LK&)*p3uuF6!L!dlpH>xk-n(UB7DJUdw`<&#*iY< zzOZ*Z$OzkXnM=?c^49C~A=(DK^$ zCu4r=K@G+C`Hq!>Jk*d2F#T!>LmUx)HRC@=nt*4i@3w5JO&+AYyY3Ep_q0y1R421l zZ^@WF%wUUelgiIP&1q+`V>#;a=>J2WBprr9{+Z^H=%mCvYAlYRcuSICDfPSX zFLR$jS)Dw6xH2M$=lqXVv|y*oFZFJ#h@Z_F)o=ms4gZ+;s9Wnn(m%k7WQ@_{Lx{oC zN7{_1#L$9{s^%jdq>Q;+2HgFvVJKRts8D(?5g*Yflof37hZhbw1sP(qUW`2ZgAd|J z=hGXCe5{w@4T0n#UJuLH+Yo{W2iFFGGX`IKG!M&vlI1KG%=Y$LecZZx%8j0!)9;!=6vf+D2-Hk~ML^QVuCXe^>+(LRS+Cw^#+) zxFru(GkX!xvj)qqJl=k138%|`B=;d?6M@gf$YdAn>nAr64+6-OQ&Ks`Y<_1OVmVv; z0mu4VXr2*=8%d7q zH_M4F5Zz@Oh-ivw(iuD#5*3(kA8bh&OuS+>%z`}*6zN>$J5CpPljX;t{sP#r0-}rc zaOMgIM7g4ixanh$LLEof@$Z@XVR8^08j@s0N{?HTo4Lyoa|Bm&hmCUfV%j1bg@s!C zh0(>Tf?#&w`ufUY>QIrqIztMBosZy`<_(8!!4!;9sj1X?8-3q}KcUZ&)UDtjxR8EJ z-y|Y{p76nmnG|3o(3fcDU|#@c6H*MPbe;Sld#mOP>ZT)rA4Bv+SMU0cKZf>1PGA@! zat!4OHnN{fZsikcfo*3+ z9aCyM9Pj?%@4YI&o>)=46-r~yy+S5HrkJm&A(kb@I}fZ+NL-ShW)E==#~N-|1MX-G zO_=`jOI3;~;p}HQ7VM`{tg|;bvSBmKH3>*!q?7KZ<@qG}8F{3+mEBD<<|=l>_s_;P zvIeMe?oVXEu`R_M)G<-2v`Io^fu zbb_C6Y#uX~oo`xui|{$G*>bk_DXaR3t|<_hibaBaxR+i`X|l}#d91tgV;!6F($K8(Ve5J(m(q*S6zO$?vOaAMDj&tWot zMN2x0E;|J{p19ASGrcgvG}>g7edn1U%`;;0JM-RWijHVkm7Z&&M$V(IyiYd)5A@zh zk8&@klc1N8nKR-Jh9jkvhi(me>e0?^%F>)M*bu=4f|hO^M)ii-|9PI!Ji|tgR0Z{- z@v5WKb}B})!bR(5b${M?&SOfJn7iQFCxbG`SL7n;TIvUQnVs7 z0oy?Li)&GD03L=lALn^^Bmv-X`$~8>oJ;8?Z9`E4b3u zpCT#bE^svy0D6I;A9e~>pWYv}!$mR|pJ>pI_Yt~h_=L|@A>P7d;p?OSka&__DOUQN z^5s{4Cuo_FhJf4Cco2^LGhFW!2rOh=PFN>Lys768R;l)~o4vkY&j4p3;~x@~zp<%@ zXf6}xorU3ac`_Hr&_r!R3%iUJLHOFcj8gK_i-cb(Azu&puWtdUqa#Po03L(=yV+65 zprU5G759txrJiQc$o6BDcs{B{OH7&36~Y-dE0FMYQskLr^GG6P+%NIDGE0Bpu)}pE zU)iOjiM1fbLNg3t&744Hi^7M{bCd9*Nz8t~eo1xF?aWl7x(?kZN{|TA>?~O=M76sD z@JJOu3ZB#-dSuGF{c6@Uh}n#J9~i+t&#UD-X~QhIxKgu-5y(&$iFnn`8H)Tx8oTpr zFs`&X61#JX_C3boh?Vm@8iid1lfbRn7e)F^>Q55*%STc>n;px;LJ_#JKDuUSz z59bsmSoNzjzPE2{&QGLRKCv)rX=(>6CpA}-u#7Ru^5n+c@B-OsB9jTwu?R<8?E& z3#~sUmraP4@Q06`4_p0D6#Ioz7{<7Kdz{}=l;dD;)PrO15kr*(&$`1luVIpQjt#(b zVCAdzEndou)z2lN;*v~ST%5e70afBSTJzYS+u{xC(P6gV*`4=PMN$p|V+vqZww5DR z=m_RrqpYZQ0|&94$G4#+zEhKmUvdUQ<(XZYPo&WKPiE|4eV5%1#2z)jH!Mw6Cog?EUhG_1M9>99WjWS zA>?9;v!}NY)6B^S(X6y)UWlN$l4xr&1l7&Nme;el94jov<2w#CF?AsM1=(9l?G6zv zTV01{u+X?{H9F4!Ve1@&BkQ7fAKSLkv27b2+sVY{#I|kQnAn^+6K7)EnM^$Ye($YY zx9ZmYcD{7i=~I37T6;gg=UHN-tPSJtyR2sbX%nc0I!cQy4`==mvVW@FqP-(m2r>fjX>rF36>~8CB-i=X8hxEY5K_j>361T{cT~ z>C}Z^8OFd4r=DwWA>UXxF)KOp3vdWNyGWnR{_xW_k;mEmS2)iE69vQ4uNE4DV;Gv1 z{U@g2gNa56j|6@LIl6ax?S?B&iubv0m>5coKMY&_ysAc9TZxjS)^**ga3;v31V&*l zJQi6hZ@$i_LPV$R8M(Ubb!Mu2Y8}>YaPM=?B~plsD6io>%o8%$-aVXQlp0%Fo(tCij~H5Mj)g#clp3_K1XtGj7N@4qDL17f2}N z;-Z(ojWax48${q;^aR7-vZgBOSN8U!h)W!EVL0$>5S;Kq(1l?m`V+R^Er094I(PZ4 z)E#^w-Q+bw-1BjdICOBDo%;+YB1v3A8mV0rFyd#1a8)evCjJ_l=r@s3nr2YZTT zsq51SM;q%%N)pD(56U2b_%pX>z;YzunlG062PpdkyOn_D$K|rtre8NMtHd!iZ9(cc zT5>pc^JsI?0KsoGgKO@IUU*P5br=v4OIKT?lR1t7ta7{(!SG>pQnKvxaItq2^Kx)? zXrUOPh3LxprXTsa?0opjZi#nuZVkE-Ik$E<&;rAvtcO46>;9H9 zQKp5mLAgcZ(?GCu9I*NTG>{IJwss6gd5M| zA2X58m$-*4C1nnET6A5iU`srnP@}f8^M|)2+(k>(>fJMkP$Gsg|47T?m)bVLnP|h_ z^@cEf6jns=hm#b1nixH7cY?>_i6eJm8_eZb)bT^%RpR#F^=dce0oCp7k@Hx{I{)omofHpB)v6b`3KRuVUjRO2#iAZWSs$#f6f;tXWTUhr@rzPXKCRheOO0b!| z9sbI|VE!g>m_s`@pJCUJQ_B!_xl0&m$>|IsM&DA!U@_=i5U`W;=Gl!mtUW_y?Wiy= z@~05xyR>X-gU?Lo&QEVi5xFb-Vxysa<>kK5dHNuRTtN;ro$Yg; zU=I8UiJtc1^md*HH75o|jV6q2Vd-(VP!Q8(=y0!W#ioolGXg^ifJfkwK>F(w?98ad z{&Hj8L+RWH^re2@J}-}V&Uduvw_}(`)x(6zOs4?+d+88NCdz4hD_|)O?I3FgJZ>2i-Qh(1+xLZ`z=WMo_8lw- z39C6y6<=oA!HeTM+AuM+9XGh^nQbDaRN4A;qzbU%gFwshL1V3`xxl4}_=mNv0jSD& z9pSw#^vDDa4XeLR?6QiA3!z^2_IZ-EiIW(xrLwFOCg-q-hyD?&4FQZliYQc*6RJq% zBbGG+BEubotKr~6Sg}|e0Hg~$MuCUOYF+Y{$7PF@qOj8{o&^ruont-YTmtvJyU^dD z=oQO8xyZh)*A;MFMh8K)Vny*us)|X(x3g3}43Wugn}N+lb7sX$$x5HiIeq{b@dRIv zq1X;*Z%~%aGdiK(n1dIsv{H0=4uaXrXZl^ph{*7u=plz$OsjmY$I#zY#oy+N7RMJd zzF})Cf;Ho@4l5P0Lw6@)BkYE{5^xNQnz}vo4(wWJs~Md}9O zmu>Z5PbuwUFd80IqNpWiM^^}iDQwgm)AVhf#Zs=omXMwFu-4itt|{?}6A$GDq%^M@ zZ|~{vp$_f-<#t&j9gJhk9b?4V^ry%R@9Cx0_!PI1BQ8xu>d2#MOy*xKP@M}=;1$o_ zd}=-$j)X>lDrI!(C%otZ(&FKsjkHQ^I4n6XRTLBxP3)>^W%`^v@m{wx1`prQx|(0P zE|K6**sOs(Du49{0FYYo0E=}t1_N=Ikf7L>!~pRA;Y?a`Wu89_82@!8V@j_r`U6`g z1%!tvA-r0>KfxTC5VrR)mGKy#bOM77_8>WKzZ?YtcjZr3FW*mPoq%Xe;i-qSKQ^puu^% zvM+`~pl8KF%MvQ$y`x8kAiMUv5v1*W{0$&lOq73h9&KGkqA4WJ#}moWOZqk={@Ofi zwPdAKrpWil^rt=wP#Hkt3aB-eip|Ec`oa2T{Z1hV&_vU^lSfG%szYf#&3Hfo$1|9D z`E^6#T?9XYl)xSFC-lB3&x@~(P9I8{2uit3I7wFxkHhMO4OcpP#uXV)o-xP|Tb*`J zdnP+&a9!Lxd4hko>(gVd%-UQi8I2cx(_HzXlyLiz_^-8kQRm{A^;AqYfr?Wus z#A*#wRVXIC%EFMHdK9sK?U;9ke~X5mW)u{Gv8Wt_d_Bx8Tdg8i9SDU*1(Z(;Ul;C8 z)i$QJ+G+4?M7`Wg{_u|CRZW2VWhC+Sp~f4su_P!8W=U+v2g#>D9m=>t1-f}6(EXGC z#2{hhL-VT}Cco6gfo82ZooUh~YE3wt{HkzBr1eE^I!?rb_*us&XZEUX#H4V~H0|Pa zA4I#kBH!xv;v9peX?L)}Mxp%b$=Xlh$pA|zC*L#yD_NsAGI<|_aRW-|A)72uDU&=` zQ&WUzxJSrFnr2R*BL|DqMJx4VJv})?w2rW|oZTaLo4M1NP!RmkfZ&gZm|~!o#~{kE z-{_U1r@KA7hd-KA3lJToCwdsszAKE(dotY@k@8)maDE_nrg#p1;bj%D&+{|pbfvcH za|zaPjm7!k6*XE(0Hn_DlReTK zd$;D$zE;C_;UQhTo}4i-ryTUsIlpg~d{B2$r!$!{5h}Hl=)dKkW5)Kifk4Io2XUi_ z9-PbXp~TORpQZruXYv`0B=@{-0>g)D_k-Wl^KAtL>+p1#gS9U#EVt1b+mM^tnr$Pa z%%4>BYYw$IXb=XJ7Qo(1~>Kp z{{Wz~0r{SbqqBjf?lo+mU-%9SelYPq@fakCjzS~?B1B|W;n8VyCjFijcPOvUFr})Z zM&vCJEWtv5(d2D%8hG}eZ}({9lV zMy-9^y^G=tPEhjmdv>n3>hn!%yf&r%Lo+FKJ{6vSWr-{xGW0o4&u&kfQSq^K;M#1^ zjS++(W~L`osv$Aneuu_2AOrCNJ}|87M%U$;MvK!6?1FHI6c{dH$p-DAEq^v1=S3Pj z`asB;X8YlEEL;N5%p(NlE@vzaPSRrdC(Ha3GU53ph~T;~3>F`oCh+@Rx-mwf;eG1X zUS!ol?nyY!eC+;dHr)@RtvD^XDTT)0E+HkXCRvxB| zDVRh}iSG1JnSE#bOyu$)(aGS&;P+}qCB^;vrFLOi=)R!! z+0NN^2B6IWeyx}?8)iWEy?(4}^{=8Wo~BMk-Mr?1Rr=)eJ3Ws{d2Zw2`SG*9X2%x= z;hOKWdPWlIW4mtSszgcQYEZ^*vs{ZUmI{1QOzQp@)s-Jo*moozuU)4FOR3TzFas5D zZZ;I87J~dni&{+}1jTLPO7eT$pEX#RSy66MZo5@QBfonoC&q!#=iJ)c?;siyLByM^ z&P@eNT-W*f$5;4KwR$4pb#TcOeH?zXPFHQPB#{u8^6zdTm1fOoRL-s-^ZA^Blw&uW zboW5&4>?sV6cB`1+uT#sX1z~Z`>ilOgEUa_`CvpjD1)8i?xu%r%2=Ytbtm`!>;AjP z79B|nN(t3^WqYCGFL{{6!GfAhDS#4K194kp1Z9j%>Dxhv7z1h=MTyRkH(h!bS@>b8 z#rzP~Mt~?&kLvxE{5BJ8YRZo>iD-q-fRqj><)HS`hX;canh_%MKF5!Z=)<8C=rVlF~u$(+LKjZaVW=iW6QM$I{I(6Tzd~$~Wqtzn0j{koI2h@(q)7h_~ zkmHxu54C}Z5xiXDrq_fM{R5XTi%JaYgr6Mqqjal1LA@Ujrd%$V+UX}3#p)v$xQQ;3(Ac^nQ-X!9voW{eU z@_mpcM2=6rj%tXA0x=`DHr=Taa)be8L7Q z^hv2+F_EHwAcY4Ve37)gM2GBwD7$FPUDd{;_;m>pxfP(ygNgO4v=!rS-7ee60QADm0PpIAf=ZymR!fua{a)3Mx zpvVHTFoFDqA-jNtuY|Gh2P1|ciI&qlN6Cr5=V~l}1=(!cU^8KLwavwQSY)V^L2}dx z&)kPMF`Qkhc1Kq39qr=%iyl;6(nK`XDhhx|N4PlLm%8py5F<7i>yJR3xtxbX9Z~{` zTyo3ULAm3~Qn_+`jq9rJw{!E6obPuOX)R%@0@~v>&T>-&!wJNjKjtI<*v3|Y zf($Qqb5?3sT;l7DJCwQUth_ff>RZ&av#!;wK7G?RK8=p=Fm{mu($Ci$wGAsO`G;_r ztsg?Zo`@%(1&=~+!u#mTsi`S#Ayi5()H3O}nRGz_MYd(rv2~GvQKWz8{o^=W4t982k zTOjPDDzxe27{tu~66d@%NAZ4~!t2&Pax&p z=kXPUie`h%-cz{!;I9yFQ=A~s!qUvUo(G9m+t~ldc>b-JUfAWYQke+WVCI+py5une z=vuP5+4(iSaUN2hE$2`kz5b<0(txT*nYTT;*AepcUccYWN~?c=Q|5lZ%_w&wO?pdT z?CF=ACrN1}5u{&Rj!p^O;Vl|ryr{^VqsO$VdaDMy0)GIQ2CnvOZ&5N`%E+DO zj^?g8kpg@E@Rq>iz}nQEH)~Hw81&sf%!fVM#8vEaBI#3?B{V(Hk->~UXFc4QdIvp5x;@I%IuEMlk@zq-+t=tizi_Uk?|G$`0I3vkZ8@_keIagTKTk@&mv6{oj#*t#t|9 z0rNtC&zw&-gD^FEy*(fE(KMl6L9n%bec7^U=JE>kGV&Xef zjzq}(xETyP@tG?EAGAMs=#<)T6VrPLZ?zDjAi7cM)j2h3SQ6sO5$&E|S8)y9ljp!< zyvHq~xQ{p6b!_*EDj76u%0^lgLz+&!-mg0@-~0ca-OlPLZIcU{H>d8|34=Nb!++M8 zR_ufLGz(pz-&~Ub6C<$h?%8!K98SCQ$TUxzprkiSGUQ0yUs|G`0i-}lW3b^F`yUZVu3hY-;DxayW?!c%w*H9qbp3{ax z!dUdS?mb3WUj62-!Pl9X(sT1*j$&za$ETc^MfSsXj9#}qNbqq0iYq~iZkMivRV`$O z?RPtqeB|rrU#RoVHB4b3dFUHot zIh7fhyaP|?;!OMB=z&Z_G1@p3^2y(=+LXP1mBbP3etlx5*`w7SdVh6EasjjPaZ|lc z@9R4-(y2|X{OEA;>U5IXSmwO^=Y39xU@2CUZPzAKy!Ih~ihW0-iUbE#VJLY=Wu&VQL{os-xOX zgRR>#62(~t^HtQG!WCMlHAMjM2&vPj(vzmJ1$(ryG**$QrwZtg8MKoLR_GN*Y%Py_ zmttk9sjaaRfpGyf56#Xdg)M&T)dcG(8|@ys7uMW1&`@&#?W$|$OqRbNT6H?rvo|2? zcX`K)L5E|#mh#!*+n?{;#Md9ve}qvOJM1?~)<%oNMDGW$a0voiEkX@>N=gu97475n zruG|5PnNYMk|F!+&co22ffaZmlP_1T^KGQTa;Y>n(pWI*)JRgXI4eUY5GDb5&cGHj zxW^f~!2^{N&><;56U>;%*NX&$G3$94$XQU4E_FpYAC&lG67(t&xo3|C{`;)lt=Fv0 z5PnGfYqF>tG4$IR=D@j*rT^cT?|!88&e1Gk7yl3~%W93s-6J9>hZ%Z+iQ{^jvr*KiPQu1NV z%68|+j+PHVK^5%<__2wbG}BcH0_A1wktf2ZC))jCmGL{ts5G zn4cBf&91t$pAYMnHwR#-tIdD2H4F|`cy$_dtd>xqsyF9$DF;{>>J)nve%4aPPCr>j zPd$+LHNuBy5^hQO^SnW0r2t?|&tOqW@{04xmKRr78w_jTA%5qjZh@317c}GlPCNBo zPNsMH{*VmC|5!-FJm#2b1qv@$tIKr6|Ndcjxdv3bL-8-m{hpu+bxle>QN1u0O$tG4 zj%|+QZ@<~@@B@_y&*$v{R7-UJ&eQBZiQpP}7rS4r0~^PTn@oa9a?b?F-=G#n!6Zy1 zi*)vN28j?JW#jQ_27(i)5pa?M96YBE;-epi((b-3NArL->@5I_eA-B?Uk-uaE4RB* z-@MdAdU*x=W-)1MM?1bzl!APXdNz`Q3FfkIF5{waOQ4c{adyACC!nm3N`6o*^xz*o zzuP(NKaN1-Sw*^Rj`h3Z<}7MiWL(-C;bzhHD%nzLA6^wz>~04GLHC7bK7e4 zF4tyK^u2pSiOtPAEtbVW(A>`DVAns`Fw!iVUoO!a-3v`V+)qGj5=N_I%G}#BDw2jS zNxX?{_V6g-uqY>QI>x30cS*HSj1SXy(*e|Iw9`3U1fLJKV($gMD7IpLcY9Dan>1RLxp{fQ_rF?C(KS&~C$HIO6t-umz-)^`~88xqcCnb9{KPgNP4n3XtmytboxK4o^Fsy@f#oUXYR|L z1VvkWyTtKo5s-_i)r$hl}SWeG(HR=p8(1m z2888>FT7-xkVdOK3(1snI!C5>244U0Q}SdQyPf~kPI(v`T!hbH$6E>r!_8CpuJpXj z(T5qX#$QGk8BdLXo2ITpM;)HNFzE`nia9nmQ9W0iMm0(;Z?;b{)i?q}r|nm3ztyh5 zeWjdH536oDpk_j(HV05INlk0QuY^|45ZT)#H>53U-&sD7?XE14a=SJqSWHtD6Fz_X z;iiyq0ekMHA^3~!7s!#BL04r&p;_*sb3K<_*Zyx573$b!#QOryZI9GPD(G8L*hZLX z@Gs67xK*AM5j+bRF1U%<51kVeD|Wo5eC1fQx#@I<$`Q<4Vy~^@Y}do}8W6<2gHO=* zn^n$w!!(5)O4G{GStI;mkTm-kGo3;ES(t_?ix{q$=va!^B8!z{@3r4|h6;QTDa{Mn~F5_fwPx0H|}~wN1@5CzrB=QbD6b zH14yLs%;gwW{|HtzVz>-k4A5Nu2Mv;;&VXN3YFskhXu26fbvta>Q=gNh(~(TB5%#e zb&}d>8U_j};E58Bz5l2pAUuXLuYb&#xSTn{_K@}Gj4}nU0qAU^8xLeyTKU9T%NOuk z9memsLR;qL|C|ep+1+~pb?ukb1aSECf{$_i@geCh<1;XeEKAR-Nf<2tr)1?sV=CjV z^TKu|i;6;@f(UbwB;RGv5|Oh5a=-F!tyUv*Pm5U-N3%>95j=?=l3Xe3#}77zLv&|z z4#+WFpr%WG+P%$lv_7b7@Y&D){=*1m9%8@k;(O?O-QUaXFSu3ilgg6f^+d4$0wM6| z3m{LaM<5D|=sSh%xhT&Fz+LN*F4v?}%?qbi(TEALArnO{ z-WMt66Euzk5-W=Jen?uPyQnHXU}*@H_}tuoeJiB41<&EBREkyq42V%1_p!RYpT1j= zfL?hygg0(B>+OB+rbT`XyjYf);xo&`7)`}$G!~_kle~9=*68CVhalB$aou!)moLt$ zdl>|1!Y0_(#yJfrp-k%)dt8>vXGE)?lc=@i!3G`=&vBVvyS`t;rc=;~>ALu&$pL(p zd#hy1T}@A)FrF~pWF6s%`@2J*>3K#}U_f#&v|3BRL3 zi6`?pf9tDYQRMX8X|}r+svYD~FhMX0HRPr-h3I{$`r@Wm&3nvkN{SSsd^81gdQhX4 zgN8`4`3;rr&2qQ6c5|%4;vIQ|iXAdgX66?i@Oa$rWJ_dd4n?+4pKSc`eLMI!oJ%l{_p!LYj<~<7Dfb78EEA zFhckNRROk+0Lf*R42rEu;>F@l2ChB{U71&=8f?TOi{j=LgF_$*DC#_Sg`mi575j22 z>MVmvN;kX+Ns}l>QXB8J>(4WSWKp&_WD6Ax!vJMvG|c78`5IJQ)F)~JX&Mr}f-r@Q zCsFFYfI9LbLnzs0esH?=;eA3C_`3Iw2ZIX}`8G5Us5A-NS~&h82&ve&g!(h2pxQAOxxnPvW_;(6?hF(o$+sh(&6fc*~nmd`6#n6*$cU3=#^IEsML}4LLGu z_~W7K@0=J9R>0gzNNqYf&D1tMS&OSzynylJ*+mo5h8GbyEAT*Q6OyG9_J`V>G~iyC%qsh()vA*Zz&6{z*+o(r%HTCkmP$6 zIdPQ)aX=R2rvVnmEq4%Xw$InT4DcAWZxf_3g_yDkBsAbKZHQ! zr_f%({-2Q7BbAM^L5m&|OH~Y%Urp;2ruXZVixZGSjpB)Q)m{pGo{H7X7>AxmG&Ibv zjeXC0=OAY>hVKbkMKrN6ZSe<5&J#)uiK=%YMc>I7&F(KrbX5$mbxz=wa%w_kXhwFY zwH(j>iYN9{(3lr~fa=95fz2xmabjM z5ygPj&vB%mU)g6oV+W&PJ#~z~ju+oYV`3!r_v{8tofmyd9N_gv3j5m5%LLVlDvs6! z4AqhQMrt1{KV+knNK~1=T^Z6<-q?huNhP~t+NK*{O4)ZOpZ7Fxw+I8T))c>sJN9>w z&(}XQRbN!4KNr0Nn4f3LHaRvuebL1r*%gF+o;=k$cEpElQ zTK+UubpotEc^X zv3q<;F;q8<#*l^DfY)%dKMINW2&v)BS&U!eSL`k&>F6|B6ZLGlBXHm2KyE+xN)2~9 z?`vNL=96p!CZrys$;y2~r6MQY6}7aU3ANrtYfO@7+$dY8EGybx^ZdBx=evMWnNqxAOiiZHv;PG%bKT@}xN^Nx9**G2ZKcr?92< zABF4igZKeM(Ag$WO&uMNTm$kt@9uy#c@X)()6lS|;Vgs+vH$R{bbwvP^2qgsm#v`d zLn2sr-}yU9`)AnDKkGb0cb9Pfd4slDcGVV^z9d2f^gXrI3Y}<)MJg>QI+$&|53;Bl ziQ-A4XdrDd$-p}pwpSjEA{uK|Wr%ulL=gkJou9T1>ZymiRM0T}w~Me>Qrh+|Fj# z=t34q%VwFWVqZwo`IkGb8Ehcr9&UO>PcAe7@%4yO$ivC;(=d~a z8f+(H(_;lRXc9!T*X^2p4SJL>7_=11N;D|a?e6rMeqF3!G}2*fJI7;f(w7bNNJkt& zTj0gXJFJbc=)2EnI{Fy7P^j!D?I)KCd9P;h{v>1;-Pmx8+*Zt6a5njmK6b!Mq6gE8 z62*|a5jv-kpK>S%oYqNmV0IFgJzsL82vtHnirBT3AIaz;C8_$eM`=K6Pv(b5cMbJ492 zu-Jp<_wRm!RNKSA0?ZR}$SGg;B)YqLsNO^Z@hJIJx{oadXa z8QL5cYN0kvUejX|Ugwhl;+oohBK?n7+DVS1pLRwL{LPjA*xy>SRTU2Jh9#8jtS17b z^}U@El4(Pd8|OL8?joKX321Sj^f>#dZGZ>iv5En-0d@f#3CZ?>*K{Qf+iZ)_e=925 zmx1|S?YIzj_Uc5Dy1SdPbx*+rtP7qsFV`C?DRuHCs$;Q)d>VF3Wv6yl3vwa~o>Zi8 zX0|3-WN`_Ux-Y9+)5|PPER^$rPg&MTGME9jQ-EIukFxvkx?2Jrkf8A>tFFDZ?HEDZ z0f_GHg|m-`AJAsaq~ROu}LN(A0+z@}_sJC&aJngOPE3Zx9_wbn!{ z;bJpJBrIW188jl&U63@{L?X|Fn0}C!tjaVl6Z_PZQzD%=<)2%p8RSY8C;ro1;qA`d z9xtdA+H;==loxeRMOT9!7?`}HGzUoFFP82WI+>i zKXXI3xf*5UD4iA5`$FH-l8V+jAxuq2x0QNQRGoc$4?KN-O`Z(P+ZQjppQ8Y|yc+=e z3@g}|RAA{*WE%7r*CAnH zsQIO9xs70`B4x}(S)XZA7o)nw;()%}>XP-cz?rv!<;tZ|IfnRFL;pW3Qz(!EzBld3 z6MAvlkxCwA^26Y;L`6u#YFAkWj88#Bw=!*o-(#@;mflO~4V^TQM8ho3jJ8$#{)C4} z^lSL#A8`or6-Ak#+8qLt+cX+;yfBxMV*}v=&|FUUWE6f;5lkP7M?Euxav~}`vpUZz zylXW}09$_9vRJ!kwZyzOeNpAD6=sfmxx`Is zX3|fyR41I#qse*1Bf+x!JsVbfzHJ(;Vqu5*ER8|cg;^*3PtoqqKdq+vZ;d zlI^_rf^5gz8tYGi6C>saDQg?guWww$G%VT#`+DsX9zxAUNq7tM+eLR(?6zDw|=S(jN{V0b4YIBFG- z`v(d@QFTaEBZ>aKP&h+oLGZp=ibUFf^{P6h7hzd6kmb_3`W<=PhI6s)y@2ND?=AgGBQgE5u$B zm@nujt?~7crw-$e$@g8SD<}7(Q}CBlQzGr|Mq%!CN!E1Ag#im|S5mnJfLP}=sou4l#hdox_!FF`z3{^PE?Xn*;#l^MSo@4!MWFC5OT=OWYejV;)P_D3 z?#s@_6GHgWu;sTvj}Ilo_pby2(Lw!=@7-2N1vH3Z`j`B`ATk`m&PiVKD5X!yiii7K z8@x1^-b0L=LhEP-O6rB|T87&Ro_R631tBg0HPv;SI-cb?6$z(B)UV`)y?wgMFg94K z1@tkPY;dX?QJb#?-%&YLw=FxC@6EBLsN4{^*wnxMa@Gh*{om^eO)NBwd^W&GF2QG- zKh}?$+hvIbGCb#?_F&_)y3^A}!r&tiepXi!5QZpP@0Z|#$>W|hd(QNk%OmeCPRF_4 z{01XY%mOQ2q4h2@A`0zpNbXB#Z~%*mb3>R$!rL3pI)$<(*5D>Y;Rhr~pijNjzHSc$ zLP@V+eiX_7tOAlOPorH?`xIAXefYZ>y!k~E$K85N5Tn;!`ss9x5;)LU=i>6)*BmnU z;87s28LKRW6o|79)UqB}2FhesVbZ>t)>fl9tVSY(d9V4dhR1L6&uq}K5sCgw&OR-b z@dXBkCXGHL=HDn45RHEHs57sqH)CWh@zc4OmIWA;91<}E5G~N{rK#H!-hu}Kg4!es zcI$&+w}7{*;X}m*BVJ7C2wyxXSz(7LU|^Ngu#jnJ$6^dq49qE@;!|ExqjphqUt6tZ z#3Bw})I`4ST!l*KmGuiiPs1;ekFsr^()m&*CSPO58$={vm^27BxDUO)2R$gJiFy)j z5;2WAmdJ0xtka{CfL9~S^NaM6A`27c;%$*N2?nyWib`}4TmU=!aPJ0j1)~#EwnHUv zkX@O%A==sPt_aA!jmhvdNMK&R^VXcj25tLw`aA+knsJ^ME6vqNGYk^n{st z@ubupcIG>f<>Jm<5&g%R3eL9{-|e2wq7eOEYXw+c6Y|=0G8nAk3T0{PhL-CtZ+~3{_=X1*f_ltZx1J(KHgG zqxjyGj1@$X`7`_5puqSx`JJ2zrj%-AoS=%!lE{`O6Hxv7E zA^vsLQ1oB3;r1)RIY-8Ul<7&acI96Stmm_7SH4aI426NuU3x^#Bc~AC@B%2F0)p~) zq!*OGXlGEUVaQD01IF0f0#VPkvLc~H?AgeO1gO5JG#v`9h}{c2aI&I=KqUnfMM3-n z=7i)k2$(@Yl9LS;cLzZ=7a=XL9CT}K*pt1eqBdeFaztFG;9V)~shGRiE8_ZibQR0* z)7+T^q4rL2j+l1dg>jC3EZS!GG#EwP@TsBjADJBcm$IdJ^6U1Mw7EcRkpNS6u^vxF zQyeK$nVC?$4VGQeisPZ=S)A2OpY?u$k}bLJ&=~j3I!iIUTy3ml)lk2;tfln2dd1$l z1*vc~rJh3B;bruoK~eqA?ZliVW{8P(dl(@$gW%6&{gDR99x^n(Dd5~KZo0tXZq_bO@(DS%MsR%TCWo>sTed@GO2QMy3vuJ;6CHTPpfUG&v+blM@#Zq z#h+xwQ76w!534`;=J-(7R}%uLQ7C_`Zuasy2|S0Z_{d7tg>x?c!x=4J{ShE&AnAge zlfsb3e)V&-S52yj$)m3R*v^jF!R}3Kr(+RzaRo3G;-1Twy?7uPY{U*{)J8+nt}Snj zM#j4NI+f#! zg!5^Wx*d3kfgMyq^IWsGV1qax%BZY=97o=?oHofs`PA9%haVIZsoV~(p{ErkVs1)h zd9mqbgSD-alA3&1l}}mV%h3%Ho7hb`w5j|BZH4qW2=}o0z`n#G<-jzs_IBKslbFuX z%!XW4tlxnr%1UZ*v}&s8HBu`}q1-)c(7hb){BCig(Kf8wp%d~@$BG6^QP`xuFs9z7eLf61xt6Yb8t760`046k^R-8!q;R^Gt zK``9|aVA4EQmyQ8@O$Jjx{8cA$-E=3mstPsQJ2^kO@GsO*rJd91qh*6)u)8l(pwr? z8bn}nk}Op9gimhEahK(V&N&32evBKBpiOkh6RXYJ0`6?}V3nkf@fH32CvP@#&e!`ExPYTWARq zD--op@WNl~43sk5>0#>&J|-Wif_o#~9L(l>E>S_ls3M(Yd{|>Ac@oynt<*+Jzf*Q+ z!M&}~&})We7fYPf)Uj|m-d4AYxo5E48g=^{)nwWV4&+9x$zi9d!oY?5kWQ* zCP2ZQxrC^gjS>fe9Sl%J*o2Y5ku2bZO(SdjI^GYOpgxM;;v*!1t&7^gcF$?-h4ClW zbS4);kiA4=kZ=ac4T^!|Krx|ZoF7U}-V@w#!)w^zNJ{2JOjenR9(Wbw9fA(4YQ1~9 zG6yI#636M~u%Oo*Vta^|mu5py2%lra_t`3oOV^v=EzRd$$)j zom=j$$pIu9XI0-H1|j$3VffqJlDT!=^OX-we}#lUJSebCJGlj_$5O;3(M3ZqQRK&J z!(Is>ZI{SK*l!qii_VHyTd3wk?7MptYBE(BiP^voB68PgSK%N(1v^6$@(jV`jRtq( zvm+pP_^d3vz$>G1M=^jwlt_c&0HDQK$qB;s73GEZ465z+0$2@Lf>rTK)=fuzp>KdP zGoiaNYIx@t{Gy)ge@*bAAe9M2_)|thnMtKk=;T$%C>V~5x>{@!L9qQ4>{zuvLrR~G zLXwiubnt(FrJw&jpZ|3+6Ff(8pVUQ_s{&WUnDq8Xp^DvpY7vMWQbXr%*-aNzST{OC z^YZ3SCp8jBC66yz^xH(1U(`sH92^Xs0$8QhSZm)#bbK|ENnluHVI`9y87=b=alIMc_n~%&*hL<3ac0oFb^1Z7lCVYx; znGLWZS{>1CqEmAjqGlLtY>1~-?}B=cQCH+0zC@DTU<5`2CJr;WBUTvTA7Ay4EYK#5 zE&Xy@1P+nkfDIl@*F%3}pS^HaH3L!?#ey&CzgOeG3zKBXd>`Pq=BN!5T@-s)6nB2j z*oJM>#$qz#VB|Eiy@t9J*&wP=Vv`^U)C2T$6vW4H;dPH7+c2$KYbdxu&l-uaVf1Ra z2nz?xcnAn_Rv4KMy=L!F2N-!iFgRxld^DcO_kRdGr|8O}c1`ctuGqG1+qNpIq{51A z+eXEbKjNUDqaPOT!#t;st8^F}duXOF1? z7RF@q7_Q#)Qb0vSMk-4_rXmSE8wIwDT%;9k*S7II?*#5<)YR|+J=wS%zo)1k4T4>$ zYxK9#o7%#>cdK!5##BP=tBM}O3Ysii9{AUI*MZ#6ZuL!7qw*XF&gQfrP}^)@)kbEs zaxp*$#RCh)Lw+3x#fuai{Gz034+0H6Pz(ml+O6-o-1N>^&wvgzgE2vxdHVY^-rjSjDoAEb~3Llp0N72g?@OIX0k zfL8{>Sb#zf`56&Om`0QcA9Snm_qHV^*{k=f&0-IH@{y4|@=1o_S`vUr~sIHVWwlZ<9psQAA z6XjPD4-l>7HG95Jt2EGu8mO^N=jWyS`fO1|6yWMAx`NSs0TynP+`b$$eZP?Qs*xnP z852bkN0t=xc$C{v%nn5OI>>VLx}D<0G7Ze0;ifo*fu6iWcy=e1i0=dCPTPzhP$*8Uiz1CReU9Smx7g@_ZWtV6pdPqiF*MMGKxKvNbib!yTQk;qIH2)qT1VRof{On%>PQ+wLTrG6%&p~{$7ywBM zBfy0dCCxD^KxOysfdeb&04`3h7l9n1k0HMN8#o1(GKyJYm~Pu#5Kd@<8{kLFfzJw( zW|qHvU$LNRhIY;uv0%shZKUe+U*GpRdeIOkTWXvZ-WZ5BMURKG=fl=lE5OPnlOAG6 zp(N58@*eWYXN-xGl};-a#kLPFq~ApBi0KwzsM8ezM4p|h-$bi}&#L!R>pRy7;@73KispIhIwj?JN(OG` zOd_}AQK>kT>|pkj&&Mluo-xqQT^`q9F*8gdzk8&*gQ$@Jvyx0a(~u|nij;WVGzM0Z zJdtJQ({}&D$L(DchR56}GyGSVOjTfb5Yy@0frH!Cw5^ku*O1_Ih1xq(45*L}k||Wo z7k4;tv%XzeJxl;YZdOFGxIcYUgp;;QAOio^-b=C3^Z8IyczV^mZu<);ik`?9k30Zo z#bj}c`E3n=EG#NKWJ9m0C(|7gvLx^Yo5XpMB$?K%Dt7blyL7Q_~%UqDzb3i-UDCgD`bbRuR?X}4zs9H zoQhctKn&^}911aNwAX)B12;TJlto&ukr_s|#;($%^H#y7{9G{D6O7y zoEr<~#*{Oiz7KK|*SVoFKCV@{@LSDYT64*u3lB&iL54BiSm6%FK=67nq;t^MA+Ne_ zw`TdY$A4X!yB&0$q5zP}RAjw#A3_eLmPgEKj)!+N>rp#_JqrDVr<1HR|5-2Oc$`r; z4U`S!+V{h}s^N2w5Ib}yM4jY!R>7SDMf{BnY01j=2Z4@7PJ{MNzFTYWTJ(|2=jw1J zPVUl=7r>?kh`cA8ddcV~Ey$xlxP~QEccV$hL|<0?n#J3*Yut0UK_#h){)&z08qb5s zZIfGap+Pg(aO>@5tO8gs4(uMo;7OeX(h~mhSIeZkp)c*+)JC$Hkr4@^q0TxPq(3&6 zXP7GLOHGtnreq(^k(IW(zLsZDUc$?f&(OeB`6edOL|gNT8qE4^DRd7j<(boaE* zaGUydx~k3i(0rvu-6(ZB+xrUus3^}$K4U*Hb#?W6k0~8(L`&FD8O>A~ck%QEjpg1q zF{RaHq7@@KWNv9TA4oUjEZ%HzmOL4dIAUm&!iaI17w^9BFFOr2hryi16One^q%}QH z-JNf%Ew`tff};uO6=YbjG&NWbMY$WV8s;rc$^^0qyj6&Pqo(7E1ACH>bg8oJzS85{CVA{*XjIECbq;@Ni@ zE(mOkOKXQSzKV0p5H7|R%E2i5>C)_5J!VPIP zxJ>7x1&lwnjz$Oq{h`p5)pE95G#T3?(B*c#OP`7X*b1DGGtL++$?Bo9E~Z_cpYAoa zpBR|yKs zbT|)?hZ0zIHQeuLKvdlXmf|UM*=~iJz`F(Qa+sZf!@R4mt8QAG_%_>8 z$#hE&9X-xe)Z6<3SmB;NZWU~J)w!S87ig(DvIFt*b~6HFaIN#?;JTIGT633NW^1~a z8bkTVVU7fI0g6gp!k!G$zK_=2hrz)5-a)O(Z`gozMq5)yWQHHp55*+#s;0aCv*Q4v z2V@=O?T(h=IABr>51ERnX3K4Wc7|_X`S^hLyc|+54U?gN)fL~XR`-FwUC@G1Zd^?R zee^z*hUhr=IC#Y&P@en`>z!qf&w1*|d*{o`Mw{)T!D@_iN6*`(m~I1$c_UO$#_>;4 zebvpoG0NPenx0Rba=Pu&?a#*+3h8JZc9~+u-0B79)-)j9^0v59ES(3BiNts9rxT`n zkl|pT>fGxG5^bk^{|4+e&~P^rXjNSY%J+wl!4*pp|26IWW8+~*&VlU#iV`t+WjWcv zzLer(! zOs?ih^l?l{T0BO%&=;90PZ7=hn#5_2^TOxNC`AM|=xbs=F)T-_v0t;u6+>X28W^HB zQOH^8{nHWWl@G0_a-l}wWmSAp)JOLd$g|x&xJ@_T0lOM1u5N&WfH7rB{GxiH2N?Y? zH@?%tM5m>N_-4YDoR&=&U1xsl6(;8?&qn;;;SUGEo|tdLQ*J8;+ICY5O+PgkF;;W5 zW3g?4H90h+am1o(ofo=Z0){5QD~UW4@O~}5p1K=xD=jV@gY98yvc%UcCnfJ$+4g$c zbdCO7--Zw^=e;9}#9!DwqQLuiVMVjP3wfgp_+wGmW}k5u@OZo^dzKhOQ=!OdxFU_! z9{K!y>Zx$NjpSR?D>ds{prOEE2es66 z7!1GKwYHv}iaTFUzYgxO9ZhfQ%}^WNi)b!Wb1|yp*v-&u5&Xx{_b#EG-ftY(C_;4r zQ@Oc(ij3V-y?Kby)QI}Vm>0rq_*^Lr&cbB8uk7ldrPsuZ&CbgnLLJ`xpO#=(%l5BlNw0I=`R zAtauE(M5RDxOItaCzZ(3BS~4OvapB0&z4#OeHnAYl6kZQ!w0=Fo0PeocM3|?9Sq7# zN5E{qiff{qGf%2MMslVd;zU^q&*4dd_l{w}SNgN~zM~|8Wol?~5Yz6j?@*JG^%UK3 zn6V@H$6`=8DeJa(evCeJ6amjm;nFQ_QDf7s9rH+r!vp{W;i~o)Fxz_{D#K+}u&i_xM9~OD_8iy}3lWz$j~3M4R;{ z(&phHF|htHg+p$OKLWEP8**LXC0ze591XubR=0zL=BEay&HAKwaeI8Y;TZSqJ%hjB zrb}eMxkQ&$r0eG4h!|6pCn!459Q|gzIkM@lnHPWj^=^@`&l&CfLAwdnc^4xp9m@A9 zhUM+J=N<5?Kmr2b6$W~)z`sZ@_w(JYpxSZrz_sJFxHN%{>r5(C&#}qyp#q$g?c#n6?DX# znyKSRZgV7sg{GMGTvWGh))8IqnDJN{M(mDPM?*ZfylP! z!)0aRnl?NfSn!1X*9VDQ*qB{#gut^>r|}&)OZyw4!GS9~#_>0-eWMMwfR-T)-O{l) z-_JWjz;@T{@THAheqNpsy;hF<5jJ{^A83)dqw%tAWJE5oSu1+iUF74IfZrp}@Jnfv z(#>HQ+X8USC@T1&*c9*d`EtyelI(wbdpo;*RW>+l`4&J!E%Tb3ybY|*H~>Q9N-FS; zH*rz6T@M;fSfneC>ozUFzg}YL^xN6AXA7TNcRVlZMrI8UD_miYkb$t>X~`l#gHdZM z@5@1Aa?Y1s&qwh%GxA;;IB6y7IS8gdo5(A$bj%puOMOTd#fSEO3$N6HelnhUpyJ^D z!$u{`B=LBfHq~g5*p+=nK}#1cRZ@^T!Nvo^Z0i8FR7-7iKNlS|j%j$O$`fa#t)iCL z-bK!*t4d?5tJ2^R*ZQv~Q?AAy)$O|J_^H|L9c(V&wefcav!X1XD0CmQazpD-;K8Nx zLxyv<%??l?qyC^$GVnV3*nd@nIf?_H!D*LM?pujg2{v`U1ANSsVpKJL36b;;i_`f6 z%PZ!kM@eJ(0vyaaUw}7d?pP4XZ!37Jp##UCc6h3Nn&)B5^QufBfCz$9Te@;ND$yp> zeb(|?3Y{!=q~La>-Hf6-e)5UsWfV2n z^$q7X`mdrd<|A;{J?GP$1N)JeuqYL)TlZj_D9CCh#|IsKz;3f$1SCMM4_mZbY_rc~ z)xb0Ra*K5pvh#%Q-*@`H_Y_xaj4vh86vT<^w+}cMOWuAMl!{={z$g9sLB?iepklo$ ztPX?q>%h@KGM`wx%{+TDyG3feyiQ50Nu&GAp?VT*bf;dt$WF7z>2wW0@dX7yNmD4R zAANtisEQroL`ukDEm((ApJzh8+1@L3#IbHo>fN%Y;gkImEw*QdK*C$x$%*lOKQ{`;EDX};r3kZB_j`S{V?X{_ zqC$D%*P9?CvJxqs>k&hbUTE*&2LTkul(Aene%b;AlTbwGdjuMq3ND7#@Fgau_i^^I zq@?v^eapr?Dd$F780nwYdb9T&Cc3k5w5AUZzVHH7ucjH^!}y>_h&zbHRtQO0Et)684HkD zfpp?^x<9?c-?TIs!uEZ>8)2Y`!DnaYKScG?7ep zb~?`9T=6c2vQG?4hs)iMeFDTm(@>{0%qZ}6+>TRGG~4n8hT{0yi-z(j9fK!wQ9{P0 zEY_^)^u?IMCnk7Y+>>J*Yjm$8aB|fO!GS^hUs@3s@U7rk7Rvoq24;BJ9nJAx_d!-I z2r!CxhV_LYVT*8 zo*zD{BQ>##e7hoq+CTxyUi`-+>)QU3?i(O$$(ZE?>IAKqgaLZug+oqiFAeK;4hn0x z@;1xzZ#Qn`SZc>%+wq=?${skC1ae=rcyxSXrX2@GVs0-qIYP)Uw5h+h69+xZAXzs6 zHP$n$kC}HZOQ9kK;Arl$3jlosi1BF#(dBAQt&1Uw5 zu8|?Eq1rYhT_EJFGfN4V3Tz0Iw0964gO_2B)8hC%8S@iD36JDT@i!xOkX-JpsIo17 z5d|yCszL3YqoD_yCcH8@mwcVZNg2|;6J>1$n)Rj$4+Df<;y);l`?yTMJA9q$WoEIW ze(=9C%^&wTR5DG!q2tnUDn`+3CLj@hWgyM|)-mYYxL$b!?hI|C-jt>$zSp6SG~V^6 z)vO-`g|?0*a8Hws8Fd>)8=jtFt`jW7Ck+yFNq+D6p}@X^Og`J^F*x)hMJM*swHnga zdh9B2k{6iKQ%t7$xaDcLsL^^&UOVU_^j(h()GsNBD6Ee|?7O!KVILQ@{(vj>n2}3=r)%t*sdxSQ>9aKAdZ_ z#@f_#4hQj)d;a8s8B-pJ4KwiqY#(FUm0C-el*3!a^~@ zvwKMk3tIn~TuOb9dsIO(IGTxNX=nFzQ1t#4`Q1Xz)$dG!h+LWy6mxw;JK+J4#4mwE zQhwi7s;bM96?<}s4ZS|1#q=Riqqt4CZrSTi7kNspp@m}7?$`5ctlR$Dhl4R`HS9p0 z>L7Lf#N@L$I4V`>1&QY@*Qa{QBzCgy47n1K5vwdKO$naR9FGbT2Y={7m75F3bG%?j@s&HGKIDjO3`9 zS%*=OL}KDTsEqtP1lD3*w1V`$ zZ-$CPHQhiA>c??@3nH((%ivTq_Auz$PL+?~;+)Lp>{anzs!z@(*UuDXNtf--=V|zk z8G&IE4~!_<1TJm!Z3&jU9&*0p4wDfc;J|_29}1Wb6j#kxEKGv9dieW0eKSkb8o62_tak>{U<+1qNJxyXwA&Brlc#9?k}`sAFY_a&y$rW^fjHh zIsg`(k-yzf@IUE55&q~*NZ`wgMTI6EEw%C1!e(6yG@P1fBd%$y7zcJ%14}s1q?iH< zDVx-4W(S7^F?lt@d2h0!97(3d=`eZzB~vr(SrIQQ6Ji8jPbA_U7^bD!qAXpYM#TZb zP^g%kdVcZ1D8v&`PNPSDCRb;E`TZA)aGZZ6oWi5K0t^@{b5^>Htn6Yy_EVaxjOM>$ zUc5s2W4$P4wj333y*Rl{4*4=xt!N;mD1B9ao27!G7nDBKW-*yI2hGC-KQWzcPCJ*&{+_-Ap?0Ftabkzy4>=}ZHq=0j zS)4UhDjFe83X)HZwEXA^XMQcU+Ano~7Wb56`Xq7JqzQ4T5D-4Bedjx;spa&&6Wxo1 zO~{3D-3C}wUbW!A9=Mi>etm0TwU*bOmU=0bvVsOJLI36#xwlpi`-u@l=*v5>64(wL z*2#0HWy+K>$l1?0$%0>O)NcJ9A3+P*Z+2d!U2vuRcf+#L2GC%OYs-r|v2s5-UfnGO%x$OeE1d{@tGRCBK%iS|dtIf-$zZLBBJmtO z07AV{q^}48NbSV6=LHk80Z79OVF`%W68>+={&AK4`6jDtGHkOr+U?)7E6akSq5M$9 znxKieknKSD%$)prMwZqui441OkriX`6C3d85N`(&?v-Wvl-Bw|00HrT4vSNb+aFV^ zjMJAlnLAu(<6>4SYN)$E2D|KnO>tw=T`Bh?{PR{dLXD8E#!R-%5 z2gRD|=XdI-1&`qdLOYntSb5yH2ssh+5Tan_B3>)6qTk*w62l7GcmiW8nj|mv5?ULq zC@#;^)v+dLGID>C27JR@G7Veh{Ll!5q{w02pv+x>bNw^-U;@R>+T*kVq@JEjU7w%n z(0a5qBJdrLu>#h3c;J79do6L4LS;E3Mwd}s28!;W^aQ>bn0%w>u|&$Tps84dPxnvq z*Jbyv0C^u_u=?|6pf1?P+siPoh5XBP;h2>|wGxSEtDa?F7oTH|G!#E)XS3BofM_H9 zyqLPM`|QsMz#l6B5K2M2O%F=iq^=&`Ua-A5@^9XpZ}P@N1r(93@%~_3b3gVdy8QLD zi4rEhp7%xv%Y@ChvZCIiqLH1d_P*yRQmOz&AI@sz%wQ#ITC;IqskV` zt~uE7zCSfp5^Uss2{M*?RVcqJ=&=w@Aq>B0)oIoyfOdBHbFtL|2#&OLM zJ0K2-gHi6A&%^oLb*UYLvp#OR8j|z(jy(fcQb;g4A4y3d;{6Zb(=6?M%!|*?tnP}| zh!;3pRZGJ=!t}^g=lv2;H{#9obo2uy_NDZYndDg=mgnTY87`@XMw5K5B~nex1NHe1 zKp~Z8B)*KX5_>-^3bN5ERdk;8u`({%fp^NHoL6YatVUSJ9$DA*L7O&s&ay_C9ka_M zGebfQK8PY4A*ImsnSe@~;Dh$s%D-r1JPKsBjgCwzasB<=7?O=KoBI z^=wSpSM(I82W4W7!ofqSMAwnLPhk3J_Mk z6TZxI(#5g_Wg4GTFCEK2V|$BFREPicZ;J%0jCJ@b9uY#85RlZs5kW4of)uYMz-lB@ z>vzVKq(a==_o&dV%pY7hkq~oCL-d)pPtVA>+`<`YaRjDfltf58MZcZK&ioQ3vPQNm`d$RHAzq=J|mNq_?c-T50&O0 z@o2mV4>E+<^HK6Ay^z2{b@z&ZDPSOmO_;Lam_qdpp5LgW?089GoUOTBpvIc$sf@&qnz zAWpZpcmCX;GKbYripb~MZg4VEp($qO%su0i%gv$-qYuQP{=muiuCDZI2}E)kD6+<< zC_p?>uUFB) z=lJ6=80Jx=;Cx% z*fJkCo5(>!=Gp~kR5Sg)5{)pBmorDnl!8L4H+x)^k!QS+^d#^a<_iJTyVvYehDy6A_-wf7 z@~d52E1>|-)*4{YYFFx*{+&ony6;`~7-(f&*+n^Cj;1Ch<&B57V$e+Z`UwYp`D8s@MbJ-+@`f6^FjFhn0kXY6f=4t96-yovl< z1r*Yi3$Q^AI&H1(my%~vDKBJEp@@aUGFYiLp*L&G2)>^x`dV!?*%2VstlF`+u>QWf z`{8n$DOVI^tfK7MY$-#bwC3-e`2n^5XQj?W{bjuZsgMTtWn3W6n`ga?f|hUDnDf|V zLc;~$56wl2Z>6hI<|^ou+J}H~fnWm_Du6IFUg|pn3f+5hq^uwENe2^jTM|8_SuDua z%3s91XoFMrG}0jz(hdZM__~r$=}(6baCf&`_S?~eaF)a7@LyMjw1*jyGpWogDyQ2B zTP$ZXMTRYSQq=beprx{IOcTFE)aEV+ktCsnpfPVn0uyZy=AbgsxD8sI{DTHC_#@1O zW*Fuhh!jcUv~xm1ZY$Cq4<@vG#+L=@^3QA}OV`0cpdl6;b4K2W76 z^*=xYCvf;-c|EDiPZZGsjGGM-1K%7E9-_(se`x1iIZ;W+%J&dGR*!#9%k;uZ%CMiR z2;U=$fEyqrZd7OG`0Mc+=Th-j=iQ9|)- zk!=QVo2qY4AI%3}sb|`AE%J?*+7^rYzMscOL`L-Z7Z5>mGSwe109hn!BkHiM2}Pfy4Szs zwBYn_4c$$c+Ap@iDfaj3qyT^16AaVm{z51d2Do7}XJv5uJr#W2W+l0<4>AguMx37Z zd`=Q7IqkD)d5QWB3komphoZ)K26YWvwfm}BqwAjXmJn5&yeINz2jyA-cg!Jelz@Wg zfMrd)u>$Gp%Szqw_l(CKf%n-eYoHXAQF(DY%frfiEXvfOxIf zgdvwprKJ0m(U-#rKCzh}OY)k=ozvsWz)1(CLLvP(B$qBr%E4AiYT^nr{RWEaC;^qj zi(atk&DoAC1-~*m*Im%ediFjS&vhGN^-xG8TbyF|&-;e}2!_MckavpOIxBR)0Z0($ zSV}9)fBP$^@AmNubvl=EcCa3J5?ox6b3$ujD5Oc3T+x~G**uHCT!33IFzo)@&dd7A zuV9$C8wc8*ZgmlXMj)ASc;tfJqFOm}j~(QYRR_l@Dbz>t=-got zScIMw3x~NpYM=vOYCZ44bU|vJweT*wM_cDP$BbrePFgFF|6>ke(^CK$@E7R^0{7M=T!-@kSTXE4N|BzHiPI|*!i z!VKEEpfnw6rFeF5FbM3iHHCuz1dqYfNYdef`t7FVY<5U9!go4IQHr5RVwJk{M~OoI zJWnc>Tii2K(E`XgdGh8a|i52J^;jjppkqF zu?Y;8H9b;vG?RCa2Bm?#CnRGajLH+fup7HY-_vTBxNW9Rt)3MvrjeHX4FN}Tf)~AU zvPphMrkJ%8cy;f`q9pMKsam{3tdTbQaJ>txk-o=Kik0@O)52!%M--ba^=N!o*aUCGF!6r^B0WUC5AJ6ErYYH5_-$|Jr5YB`Nr=)tkCO8L+K>L0%BgWT_Ut^v zuW&*wnS{$foTttcwX*c}GuY5|6Fr&RF>5xkN)@i7BsV1X?WuO+x{H~bkuJ)_fs~14 zP+!5Mj?+j;t*wW3UNOny1COn%;Xe~e-ZAlAhJ7YPQpYJS^+!&GZR>ADoT{nm>kPFPY>`g>?o|D^DFI6;A^H4n^bGw2-9Vgj^=Aap&jyj(O0YoTD0Lo6DVAUqH| zZvG&MKS~tf@ZEaPKxJiH0&cr1)73j~9|9MP))%~!SEe*A+?6kU+V~vD4);F-l6~&e zogPgiDw7H(h`QeR!LB30#fk#xy>RzzTh2Bwq8HiqKrJvum`9r z2x-(LwpgRF|MoFvF9QdM^BPb}=Up)*NxxJXdrGpy7hX8(pbK;hLe^E44Xs)>|I_R30fSfGBkID#Uz^Bs_e=dW}sUWdSO$T!XzVfF7&BqQXPM>1BKAu5`{rpJQ_Y5Qz~law%PtTm&> zc;X+pgXvp%WQAE-A}8tTWW;y>ZNNo-xxtB3I+^q+6aa_$(mquI&H8Q`%OT&yycTJk z&R!R72}4NhZPad;w@`=36iZ9|%>cG?eygXt;~FRaTTI3vnUBK;iP~wUQ$N{E?)1oXbj4cY{npg<)lQ zOFh&0(U9{NK%=LW#OS_t#CP3e3|aQI&<(=jKa!Wq3*BX(4**y zr<6)*G_=K&ld5&-D?o^nM6HNn-%xyNWMOZa<4;whAZ-#MCQeuyVDUXLSL-lf__gSwr6g9kG%GH6sqi;VN&+X zxjS-K``C+l2_d1~j(%vYpNDZx7&{kgfBeC|ZEbOP^gEX}j9mS1EskQlJ@Dn`()-Ba z(+fvFiZpgN=`V{u-d|%=@yfLbbn6gmegX~s3!xifon0y7*|or#(~$Yh1$A^8ZPNI>h9 z=;zH3M*@x`?y7n;GN$v?7BX)co>{8Re>PywP}8fFq$Db4)4#%`+G)*O`~A7RV|oDX zWR@R4Gp4qWU5mV-0>GVI%bW)?LuFm3xLPA8#b-kHFcIu-J8VjyonJiA*AD$`h^rbk z4t(Lh%ghT2?#I8mbtJ76x&9tay%U$Ajegm2C$;%C;ZXLlG2;tcE!4x_UmP)zrJy^r zo@kiFMl{N5F^yM5v9Q!h?wR`#>-fq3bBV1kH-BLMvVW&9FqucKJeX0PnuR2q zf)n_~Y7~IcK*<=WQh>BBRtCh(1HHSZ>=+YG!gL&S%5Pl?)RQ-RC+LjkXuy2Gl8C<* zHaO0+qi}xjVK2KMOa_`3h-QW(CSCIF8IK<*w@OkjCAUxKF^e@<&^hS}cCbZcgq0tv z*?gC7-Tl=%+#cIQz0ue&x7AV%s2w;?Yp#{=D1Jl_Do~7=KDn5^B3Mtm3Dy%n0Q?{B z*v8-HBef|YzXc$HvzMcMEekRx@pMQ&u2~3TH{UTOK^d>bui?7=7^!qVD~0BZ;$DNH zy$;X*<>*h~)=ODo9Qb|mYiM!rF_chG$hY7m4qt>cNn_}B%E5f5;lG%sn126;nMdOQ z*|{~W-cpZ?XSd`eY;r=|R%Z8}73JIRx;tY?0uGn8)%$w96FIy*zhAcB*&oCHL5HMygQ*B20A3n-rw|ANsPHb%-xeTd{PId3B{ipXe zNBjnrsRgwrNAACWM(rt=PzU@^&MN!IVp=bbLpmr9RzxR-9S|#&J=!=edOi4s0SPcN z7-)gkwp*|ap;(NES~9c%aDPn6_CJGQ?_gnm5Q6?t&|IaYMWh;4^od{7&&r@EnHRNx zHB{znQd=DaL198meF&Qgsct0}k#lE=KR^`dwAy7fmQ!R~vP7_F3!rUTsEK!hE?T&k z{3KBjJv*5~p`~hCO#q~Korkwi(ORDu@~o0&uYfo-(a>20&goJ|taZ}>;yeTmw)Pnx z-t#GCgk%XuJOMimbeCs)QUh)LSwaHznT(6bmV387N6CM%q!_T{TtdK!5WXvJAs9Xr zi&Qe(XMNItLuCJ9lzg535la4qQ~pCfh3)WyqF0eTa%^lcH;`DNVt!ao%f<`LQHDV~ zAP9m$!&RJ7-T|0C!`uMGUoIt)07w#k0AyCHWNm-QF*qz zeV-@H6BTr;8l9RzM_S;4rUEze%||p~+GEy23attykrGilwv=~Ak5a>k#HGOlXYu0! z=(58_ojQ0|;GZcxjF2DyVAv=Bg;;#UwyMU*B4#vg7t+7c7gN0C%OPp(X=JQ8PYQ@#rr)DnE;((`(0j4nZ3>jY#&Nz`E7cR;NBU z%FSK!2mYJrC~z$pY94|afb3MY`a>Ut@}*4xd$y#4PQP1CW>;nyVi5t#TEb~& z3?gke_!`_s6ssIlJx+&;ULWo>NIl`WPWoyO^rlydESUNtDbLRoybl42oYLsYe;z3* zeYf*RI4Cztu2cjz`&Qy#MM?LsQKDU zWG)XaFlanO{H-!TAGX73!dcq3PSQGz6~1@yaESY_mXm#c&Be#lw&4q6aqa~jHeQ}C zTl+VUy>Ln%GT9RjOQ3*1rDe zpDQM@eLnJ9btbcU!oS{cM*hW{=iF*YuceRuKeiET3kpwx`;$W}h+|`P?7xhb^<9H? zPrTT>Ikz^zDMRsH(kiv;M9il$nqX8EbIC@c5*TVNKy}N1mVfO8LTagJnFQ+8$zxOv z4I7?^?%m7HTqkW8YJwa?IB3^bJ8uUOu(cl#bUC==ZJp|1N`_e5HjZ$w5dBpJZ|U0+ zuN83Dj(ESW3zbavKbT=1nj_$A>5l^@MkJ4>vuQ7CzM#cYGehxyh0S(Rj+AH`xSKVk z#X7$)Rt2w_g>piFN_mICCyL+s#3#e~u=_#zArY6d&Q=vc^#-luqf=gr;}#NHbInhK z{pEKGo|J?@0)!Fm7=@k%VG@av;RURTRo`D~(*@U_3hl?4DV0!F z&;>7uR2}qTvMh4_nE74rm3`1F8Vq+@&;3WM2%k3NdyS~aK|8TH$bN#-W*F#mo<+3P z`$BV!4m7Rx(a0QVl%Hy1TRqLJ@E&^r(7(3myD=FJQv3tJYUe94P(F z$cSpxG|ZyGzxz;C;1*}-xL|>(TsHA4j4nFP^)(nDk9r&xFbC$mHM>ta)dc^fFzIAKWs4q~IN4$l2*9RGmb}8M_s3KjXZOrccoXtWrwZOz(m-&$Bj(Yp!JbrPWozwW* zYnr78&$&jj90vet``PKKO)^<7lZxkIQN8A644c0919(Eq5RMX%NeoUvLqnqiid2&8 z)9wYVH-gQo#j%q_X!+Z`-Y>eKI*vg!LK#zsX9)Cbwa?X0e!gFJTw&O<$Yroee|}u~ zw#cq!LR=di1>q-vu3y#ls8tz|Hzl7ZIe|sXhV(-|3$4Q-mWpy2JrRTU_Cbz8W==rb zee=PJjvC+q>jlH|!3$%$aIy*jaU1cof-J=1Q|j|0ftV)d_ILAY<7Sey44ew((bjBN z!Kl&(VMp+2suc|&At8|BIyk}v3H7U!5eiVg*MErXga&~BrU`~4h3aU)y2TXs31}r0 z$6*e-qH0{X?HB{n6m*do^a(S-yiTCm`8aJ&Q2dn9IHFk~c_#?TQBX93v#LKL-Td&Y zEv}z8eMJ3)IQXkrcN+sBx%hz+bI~4$1vk*fam~>v`oJUVS~I$N4BJz4w4>qfun#F4 zt8(DijWBwBeZCaIhtmgF=E&k|b=3j_XtaL2Q@roTxnXvd8~yZ^wna8MF!?JP3PEr* znO*=O!iY*xyUMGW? z>r#*5+Jkn#>Uz4bauIAcnpW&7=f6102m6}4&JRD4 zA`U(XA|=1=gT^%6bGxCM}S`=sNL2}AN8R# z$ub^FTtSHX*a?0FE;;KAzGY$$zA7T=y+rq28S|#d_%|rwa7_mIQJ1c00rUw>r3t@K zV_mVsu2moRzr3OL1Z+29wRo-i2;&Fw;f#^3$`*pzS~2pPnNi-ITF_^5+y#099qlrZ z3ZtqIl&W}t`y4AO_suW=wrn%NVbDpvz%J9^IaYUEwkH|$Oaub=lxU5`PDJ@jw9-zA>3#kVW{?J10g6Rw7X*8hJ(?fM5 zVzq4X7sN>`^oAs{s+Fg1VqcW;@XyY`ouR5nZwBe~dlf_834+=Q7}*c~7NjXne}Lf} zZ@cnPm)u^|+%B;iXa536-XiN7-sYte*;o)~P1GyI6gW%{GKRCoX%91jrV{!z@e_2u zYD8mi%4UtbWqD+4_T~f@M^u}W-Tn8Y2vI?km=iOaeH_hX%eD{gyIFore~sGV?90r( zUg(6=ffx*qB-3jK9~o4?+RU>=@$uOA4;yv4n9dSQPS*nkj#bCJQM6oT85#ym0wrp6 zX9eyL=8gm-k8{sd51-ZF>;M9Ile)1z1?L$cY7;zmuUE3U__y3b8@x1&xx zz^{}Do2P5t3@k`ygEDGc3Ex?w%y{c~)OVr_%6$tPgYV(zu?*^t_P zSX0BI&shk|_vc>YHUH>A({GTL?_`|N<$02gCyR!%{a&NzelW?h z+HQf@8yNG4qC{XmPRN98>4n`#(0Y1t9e8drbo>4i!r3wW!@jX@-U7|KjVd!s2McZfzVAJh)2&A-FriCAc%VyF+kym*DR1?ykWt=-}?| zy8GSVwg3OxC;M~`rfYh->#2Hb-D^!vY_(3?pon#_@K9cin-E9UjnmwXR&>Me7OZ`R zAdc+N^^`|;Jx?6|d8MDLQ>2VJew8*AU)Xz)x{cc?qxI~9JW6MaB}mPRfR&UKREz$l= z@T$97ChVd(kTKn*bE}6Ap?G98JK!U`lBb+EE@x7x2;mm)3_QtHB!CjoL&cT(Lqq0^ z2pEQvS!%WO#u~*E*213F%%S;vAuRdy6oeAhLLXx{>}&>(jkomE2|k|zBU_hN{MO6I?q(Y@gR7`*b#ZW8ZD!AYP}utDy)6n4TU z?E#2i(tjYIj_VdIQ77X&@N#M9miWAYH;jO}SoMNg3&^b`YgA<5SoWJRo3Z~27cY)gL0inz_abg!js{J!!o}0&e0_O!gIq3BLwinO=Q6cGFF=j# zjgz_k!?NwL6djCvu!5hQac!414l?4E8!$Ml(9A-*S z=Kyil7%=fHYV;2D2+hVlDYJ^p5BBzkj3PH8ts~kVzIpR3)Owt^em6`ndQNDiXSZdE zjLCbe*w8{!LJn}>RAEedDdvCsb!5PT6n2;4l(oHL6=C%tay5Zy^3~|N8?*e|_T+oe zfZ&ZEJaOznmWM1+2nrGPe;`mru%Mm{Ef4&!B0fO+Ly?wBjS`M-Q$N9e$@ovji^Xx{ zW+#T9eQ3v0OGiiP!C)NJ1_}FQxFHZ08koNv9ov>WKwnAk|H+ z^9fn*22+pKili0!^pmxn6?#2!;n}84##3^YuhPncBJo&?{={(GG{G)R08SICcb&WZ zVR7&pYe5^S?FWPyAeW^qgf_e8h#hIbZIzq9G&*&Kbz^5B<}8SJWUQY)S8*$H1jvh} zZ{sTp&*qUNh`3844_=xcN_69xGoS0JOFnZsztzdRTgcZVr_F!~3T$%*?|Z zTtr4kJ2KDP2}71#?;AL#IyTdm)~eyHhv)^TM(^i)FZq*+p!B<=v4mu~7W0`@@v6OI z<1KB;@b(e~{Oi}L*_3$NY~>#Vxa>|^62Zy;O0SZ)?}zy|A@$<^ zKGe{iUJtZrL=G~lLXx9>Ov&BsHo1J!k1I?*UdQtw=owGnDE>Ti{er{0)ALG-!(c)j zgU56Bg|NoDGGV@L0h-8$i<15zsw@G#P9MipR7}6a^@3;a#g20l04Hyr{Ht~JyuS)M zMbd)Xj;9?;qAM%AetloOh*Ky1$Mu&2);z|JOCO$M*?bDQp)*4Wblb^YSNvo{XQr;Z z5PpKa?mduZKI@46*FFg11zlqHn0x@ta$V=OlB()vEp-6gLl!L}Il8+Sbv#O2nJ?^7 zs)h^kOL{*5?3M*y#!W|2F>fC`qj{zac@a8eN2$~A1VN@0Fs2XF%p^E!i39e&_Tp^c z^;a_5kLv7B^LM$zc7}kM^PC})D!vxt{AbcJDT9xZCyagt$v{W1`~2Oniw3Hpvym`w z537!HG`*UbCU0r;d5b(Yn>LzAzW;ba6NrMe3pEhh31amh z#t2%0{>N~s|4$@D52o-7Ap%y=Fp{*VHIwfr=j6|(2Sx}anrvzk^wX*Vi0qUZC`*2q zPZUt;$PI{sSdsEhi7;j56wxQ1Enr$&Y8d&gq_P!mUsNVv6m$v2Kz$5yQX2_{T}+|f zFfnQlrrPUtQF*S^gakorqnF~nXKXuB?8fIgYG3+rCQl`M*>(9P<0ahU@+6JAEKn>aj z)>ujZxri`|w2MJ%RhTv;3uN-i?gL0WPa}w|<_@^`CETV#2S>+TH^WWCet!fYaO^8S zM5!a%?>ME=KT}Yr@rIUkUxTgQmcfUH!tEyIMl^&~q zf^(wRNJXU)VYGUEyi$znx&g3k<+B)wq9!r{h*(6T1@-VZOY*-x&cCL~ln4R$zkAly zmn>itsnMteA^SBXU&%~IVo zoYLt3NcQ8gr;G^wcZt(sUBFkMkXrm#{Z@a-SdSkxL9Yc?$rdUY$}d2i*iFO_>(r8K zWNSNJgfVO*>5Z&cYk_S+`#RyDj$v>(?L@Y;by{^DABI)Imhb}C0zwTlY(D#Ff%9 z5tZ@Q${7)n*NoJr-1sKR7hNQoS2V{hbbizdR|@V9F&RVryMZj=!N1#o@`jAO+Y?Bf zGECDy(EGc^*X;){anTowJ1_sygTqG`5CZ?Wag=3|ySbM#@jxfSJ;ULOD9bRC2^URPc z;KwX>hAiheN?0%cQW}*7jP@h93dRDTJmj5m`#9({-csi(XLSMoDhb!ksL^X@J15PD z&`l0f(Kc=J{tc;ijOabP^TxM2PXh=OD1t}$7LF;1rYtXyIT#GvdtH;isf0dA--Vj} zd>W4BG5k(Dg`#?jjEH?2Zh-ScwSYo^l&^K;b!vaLy|wk>eEpk%Z{{m|yURmECZFl# zct$GM{^=$8JyzHaqx&NDvi{B&rwvRuefKWjTR~;6t!AQ5o*&8iuQC_12#S^>meNb&PA^`N?{!`?qep8@iD;ruEs6ktsqC2 z73J!!Ul9B0uDmez2o?UbG7+FvzoJJ-R|hl3tFTzS8VwVa02_4)G3Z}AAslta6x{tR zpw!SH^s(d|JAJ{RC*MJ=M~Pk9eU#Z+Qo|>_UD)-#KjOqpjx#{ysnzu|7rVmR`3ue5 zY|Xow-C|p?F2-~%82iomDUMvd%`U5!TB2H!246aVQ2`^SWRX5=q<0R;_4&xsZsSKvuDBUz2H)Jkb=VijU#nf>BN|{Uz_p za4>w{B@hn=3BsfY83~jE-C&QfhC~R*9}bWEy8>3v9eor+^_)%^nhf#);enBW@d{hf zDN!#c*WL&V;f%yu0&5zVxyDUAkT(!sYMKhM5PDAu)fZw!61}GfUaw6-;G4he<1x6o zTE78(y#(4XeBRnOQy9c{4_)fn?0O-&wn=3Dr^{_Hw=x0? zk2#jJo|^#8t?dviQ60VKu#_3Jf*pc>q_xS2Ip-sz#6QWZJ*Yuu%CBIyA|%E0!uXT? zn6VEN18WoyLO(Il3+jE@UYK8KsU{xUJcSX|JE%C!Fd2X6s4A6eg%{$<4>1V6S!~M~ zoO*aThkzI6%k&1U`o*E-$f?K=p{3Ih_C)l>a$s;H&h@B~iMLu|Tn_nkpw85-w@`IsRD&whPsUJUyeI@EAl2dZ4Hj z4ks!B`*^|DntGUCV;j@$aF?#()RkF8;h^`6T3uT&NBI-g{Glbt0|HyO;@K_-2}&-^ z*H$X>^C2INa#MC}R-%pX;a()!VGKc<pBKm7B2Bxy9c?;sIK znC8ZEm!_XLJv-Ui7bX#*93MVXv zLbYYqY2A@SVRaiq(cDI+xEd~`TWHtR_>*kfFu(IYSj6dD8^3#UY(~B9AM}N44>sxw zx#w@fbf_zmA+I$P9Gh1 z=d$U?jaXf&raO=wu!hNlypJZ9jYp=m!$~2`xV>3*DG#}WzBtINVYj->>wk-WIh)89 zAU%rhEADIbjA~PfLF`LEeuaSL^!(RnMPhP>mmZ6DG(K3zf7*_#sP?^#k<> z4c(v7S*)@rvXZaiP_zW3w-!%1;ei%>Wy(iA;&t{UdXYj@#L6iXi==Utj`hFCCMADR z>yVEnRmkt_G%qRBAXt4T{efoJH1iLNLYt15nzc$q1LQJ2%{-IRILln;(10W(lQZ@i z>oWqYdep2SEML>s=~8`jn|e;B_FIpyC`9FSCOZV~m`FGTt^*8qPa0o81T>>Ug|d2K zKu2V4 zzhRyITMG-DN`3wN978ZKDRBaYP49@y_^SPI3VkCSTY|;B^EpKMh>^AC2u@#xmvhnk z-FAhnz&la&dRy)34ih^=X7(z6VbJWjUPi3I24pxQBfEP=hs|9+BUR4J05i+w3sG=2&E(4krm|5CP%0X0#wtHYq062 zcLQ}kWQBoV)2VaPw2gN^C|4i=a!1qf4VLvFL;rK+&D2zi7!zvGEgM`7Wq!91w4M1t zA9B1-!XwqR9%<(g>z(`7m>jrcpQt=g8q;bangYzReTArF`00dl2pbzq^=PyB?3~rR zD_w@f_T8{beB=loRC(d3Ps8P8CqYl3S^?$x$9qbM?au>)QQkMsGkep?{7H(!quE0F zr@xdC^!^|Q2oI}s+Ao=P;$a$>Tn|9ITQN@`K)2q;ov7Z}dErN`?9#!VL3QZ}9Ke;!_ zDOn~_wB6{mZMQbIxrlGLiHb@ zpxHUi3bBK9{E%(@x%yp!8{!gEHR&qPuPMu@3D~QTb!#SEh60|f$EWfI#ss< z?8DjD0SuS-U02JoUH!5VA@rhAeh(I=%mB1PV}Uy#YwsT13FL=%|}^a~lS z%JEcT;ev8&{;CkPOGn+rR%+UroEW8nsny1mE#c3U3%O|$>YYr8Fx0B{exJ^0e&%sv zYBylr7p|J*1%^t1dkYax5C}{Psp(E1AeCmM@E32TYW-(A(p&X8trT)!TU)ZM6DVm? znpy1ay?|fN&~B@HZP^rU(IE_@0+)eTeTjp}s?+uxmd8$cE_>~@$8eWbW?E}#VD^W4 zk;QJ>(4S#Z$-dzJzBsDD56soy%3FrezHl(G<%mSqz4c2 zY^X-`WFziYI!4Un+qO~@{~qaxCT;_vI59PFH0Kpka; z#GH?2)rk{ZBWV9l&nW8fbQ9$8@UN&71Gz^7>H((d@N`vn=fw_HhHxVcZ2k z`|E6vQHO$K2hI)GO*8@R#nC>8+xh-t<@S1}t&?{3d^mip#!_zmZ?)uz&yB92*G1d1 zPmWE+Ow17|jLoNUxg@MYH+S3xNa+5*RT|+6l=qjCv7+({wGowwTdCb$)V$lMt1=k8K0)|mOJJ{R7wPYtl5jy z63(=6$MQYXyDz?BP3NC%g4=$0^<$o1O;KanljJe@!CO8b{%Pzr)T-eGJyB3XRPn1` z2^jbv>xV}R`MZ4cmZWt}^kWVk$#B-tUrO?0gSNpsMYhp4IjtYcKrf)xwvv7y+Bg4U zxMKT)hv=z^GK4M2V{hm{L#(==v1KYfC#Kqe%3<7?iHlka5pFX?b3;}|(PD{=$2@@P z=akvVc!NLZeVJII?Y&RLqg!7VoQH{sPf!r))+fZgvdxx6`{vMoh&G;5dxZ1q$aye;OU+rv#zd8t&S2YG{{q+2xN_pvsip6cZIN?*;^rt5QzgatY!>_RXA*0mNK{1DiZCpDg zt*6hMkO; zqe3d&th?FkuagSAXa`#fA!xAubso0G8(mjXH{kL}WxHrL^bimGYIEBqMh@l_?E&-0 z26GqSxh|UD&Ll8qL*!bZOCxk%*S9=lgUplau@tf-m>G(#5_4X*LR@b6n4FbOM1ygp zWtg*OLVs2u)N_+Bv_UP?VuYkp@$>!S2SR2W1?eUB1paO0hEDm#D4dAEg-=%E)OBt$ z)09Z;HrlXX=3^S&U=dHZT$b`zKK-(ygV52a=D0N8G_}nl!AyQ+&mu|7Vnsf;U2At_ zND~>&U*E(`D?AB~kssnG__4kY3O4@&UhlA18#uC;9*6R$B+uym)?3jEc_WGW1*W+F zGyxa>5rYGs^i?nx#PwB!vv-`)SUa_66tTRq^jXD^rGg3VU+BB6yqu+IoTNwk^;!u$ z4q}QF3>OT8>cLgLX5!1&9oz5|XvpTJhcv8^HTJK}u2HA+#bih1b~q1Q)BiL{Ni;mk z{|pN?P7cfY9K$ryXrMFqwp0;qiMV*XYIs{+w{)w+iZBfve|zlJO4|(S0W=#pBLRBj zEYkN!0gV3^*g{2Q23xTr@eEIO1c;nfW-G@f3vKn_Wcf`_UxLi%ic$+6$+u~K@tjH) zfF;S*-3AaKLLx~58J@|ZqOszvbO=5mH{2^oR;zHm$9mXceXDB2WoQF;qIo7)^N|?| zZ@n&kPjFcS-BTZxAfc4>`#xD~5>5YmpHE>&Rc$7?+*f^ePweN_{~B>~HZlg%|Ne~w zSZ&n;>%DYm2e{YBBND*exWKrX1oJD^FWSm`@RR}qWCx;Nb3{I&D)=?hy!(+E>)Yc2 z+eMBQL`rfEZ*Jy2(Haw7+zfVgZQyK>8-6m98TA`HqupMp#?4fY0w!4Up4mRks^X(jXfG z6)Vp>231`zpl~HzC{z56FUC%H`_qb+9QrU>&1jz>;n;79vca`?`bE&*@2>Bvy)cz4 z`9R0lZo&rlCfRt*%y>Da{7g_lXmjC@e$*OfoK0JR%7+b^+rz5^hSl{<4B?4nHMeVY zdqL*L(^_K<_cej&(0OOZ{PXs#e1SJOI%+ZI8hW==?BJ2#mOkm`zTD@d!lz)wb?qu| zDwr&v7T-lLtqnh61ZnM)k$Gys9FaTc8E#A1jYrQA3ctZd;k^HOq_Q#C*Dr!% z3~I?_nCPgUoBuXdf^{?Mr~QM-19l3t-f_v|&N1psuLFH}uXHgmStDvTI!eadu zuWe^Qtg~5ppW@qw_ia)FZAx)`(K&T4{g+1kWWP_WN-=gt=f(t+|9TGx2&Ur|*0=X7 zUqEIZ@S@4g0xh})<$9l30$&1^Ede{2Q4-a$5DmI|$^vhvHUcq(bS{~I8^|ldq~t`Y zFbyD_0WUcsL)E%)tjNpwCezvWk0g8-R5-LhWgeQI3VNs$2P4PHJ6<_zXOr|N|9Qam z%mfpgQR(rR8AKakdJ`Azj;0JTYEFMfWKG7+-7dU|ILSk%Rg-1_HV1G01iRR8+;~Lg z7^}JI0>>MH%T`2y!!Q44DCA@(Jc;Ktf^I3}x$?r&g$Y48L{#cekzt$SfKMLO@8c$~ zOHf`}hBv29URA(9W;PyVz?Tu`u>WecX6~Pu_$fsZg2raiTkA8nLX;6`h}T~ zUz%(%iysfbOefwCB8v%OL5S0x9xjeHz!6n?vFI{Lf|A-V4qVlZk)zO$f&;YVN9@cg7i|6Q@_%3u5t!OFkpq^6V7YsU|q= z@@}1+!LJ^Nt@e(uKF6VAq24RWJg$g3$=bNI@Usy;ZkS7?*xGY@Q5oxfOBT(l=X)q% zq8YzfKfpPTCYuDNR|%m`s&eWCt_VVJ-E;&>gBDQebe8>K0>_*_P z%YWHb$#=!|T?u-toZ@>&Ji!w6-O-dLf#~R#3zk{y;PqSLq>K0wqm_`KMm6Wg;D7bs zhAz2Aqv58!UE8}_L5u~bUriu>wZ{wl(`F^azD4`tmMqT2%4Gaimi-h1a^yrdwYB|0 zOfrrr3oi__KXO~xcFNPJP>1Jz>ITbAxl=nO>Ycs7P9QyS*CeeU7I$e1PK3JTiauJwDdM&aDI3*S~R1*S{n*kKI2HBjqwT|LZ^XK z74CrJfd1?UOXJ`C1W7qSC=IVVi~^DoVWJe?|JIeu|aa3t%}h8iU5Y@%ibn&#Cc=X-rP<3Hr258d6}6a>-KkwoRkpVQ`S? zdSvJ3@9g%3=rNOIWcZ2V#|CD|8QkVr)};y?%Dg73tqmh{tUVYMX{lk9sIPY1`OEDd## zInuh8A*ttL4Uy-fHT$fYicp=WKS zL&($K&oc~cG-vIbqY`K$v=<2OEp-rSthLM9!x%8`7T zB>XDxEQ_O2fDK>4;(hxszc%j*6tl=}eWwOT?Q#quD1{;J9l#5l$txxkn)G)IFUaT3 z37NsN|3zakppjUeVExAoPYrX_rSFeTAf8?i6Y7*-<`ll&S}(7|`=Y)NNx1h>fXp4x zV~h@jVZ523&cfoFF~c#Qh<_5@RKQdLJ?L>k)}QEjSvZIaLPEkpA;I8+0+@UWgV>;W zg!N{2QU12Wb*oO_VlwGrp`HYm2N7_bs{ZNr_E>hG{yAIzanF2G&R~3wsw?pnZmg)H zXspU8&y0q~j1d$-O*%V2NDj;B}ZI?^re9Y_D;Y=2hT-yClAfRt?RzZLrxOpfGE}1g~J-y$o{=_-SGP!n%4#)&*#6G$v|w=%ITs=Tl15*@|1)H>P)N(G8d)0RRkPA6;0@b6?l~o*>yp`jLK%o)gIzZ$7J)$OiHB0ApT!p zsXgp#bB`-PjVqxP5iGst&7w(1=%CT4U@QV}zR}p;a5DYtqA{srwWCqvsOIe+oKCl; z*t?vT)+8Q7+?UmV%Dx3ho^%1&%%5xa-f{avHVqrJ*GB!0XfTqGO{TQcZmJ_y5+10z zGu1C2TI}_xnNJTcRX>~l1@5~yiGsbHb_|HM@yKWiq=z+cD|XvH&@pC(pTt<~a{fui z{skQJU&g7)OG8paJ|ehU2n=p=q9s(@!_i~-?O(~pQR8(6=wYVyx+Dv;Iv>`-Fu^hu zQ)x*_EiCYac0Fker#YRFaA{c31Ly&8D*>4$P-etP6*k_bXZza&vcDpg6$e# z;3feNJ+hPqK(4hMm)5Ab!fY^ru;mJH0>(3WqD3fB`?;=q436j3QJ1@=^L5q_4o4me z1V74IXQak0b=)LC(JQSYaN2WCGaj17{?%lffxCV?Nh!3ATdY4c{`{Eo{zJ3aod;g3 z>f`ItJSZ56FIFA(jgoRA(1s_OZ!~up+Bw_3iphUmRswrm)JjqCFPalt|GaI2a+7aH=)*(y(T@s4fT)--fk`>Fa@ro{kkP6M{LlrAiZH2v>YY zJ%N1t1j+QJtH4Z`1yvm~EG-!GbP{NgTKye&`vKYMkPtKe-*cYRQA5AhqT1j6Nizv7 zj%T~IQh+E{bL>8LpfHUhRGQ$)qa=qmkiy!u5j&KH=+ZAJ&S4?UA$HT=To9{3Yjs zcO9(XxBtm=goQuDOKxBtvMbT7=MEA=e#M z`cQaI^%6LM$20L^-4VS`WjRy@w5Xz{O#$fEx;vha%cH6igMzBG+pE|Mp^^FTmkf=8 zFb-z$F8i~nhQtsM)&!>d0zD{<_(W={&LVHsXfZ!Z2>R*+__yD!GvXoh-i))ztn>!J zj{!D2Y7864k4zQ^`281W-A-W|3{6;3bGCYJqM&o{;x6MA!8a*mC2il*nL(l)OZ`fq zRZ8LYJKDUQ7X8&Qnx4DBlDW!saw zgTAPEdfug%k{9}v`$yL?LRN~8)D#KkxPs=oK-235xB}4Qy`%cfzB9I`7TW-9msxT6 zx4!5f`j2lTutnomN{5Xq`i5Zpar(V7*T3v^OU84t3fu#hvQ23tYRYbi5h>;1#C_Mj zZ*3e;5z=nkN+!94ZkK^pcndzIyq7w;)R4!PxlDx*b%B>)RTs^Dy3)$I0-n1!PC29M zuF6KDF(a?}p_|vXepMbAd1e}o3z3ph z0?s)r2LGqA0Xfp;Ne8|&+)kXpByq>yGd2h0^?VmLpldeLr#~|O7$*yV- zIb`GY!DW~4Zkj)I(Bm+i85Th7=c@m@qt!yPneP{$US8of+9$VB!yI$Oq%6nn!t~G0gJT8keJ7XPK11b?BXDhY# zXQP?x8dJQ|ZQi1=A8+5bS^B>E=A0T+hmpoO4UGC0CCPxx%gV?l;a700E4|H?l)yVd zU-ywn(dq8MveoW!d=D%xfJWK%1`PCCC_VsUCtgK=Uu>OXy_pn%CA>_cje;sp-M*`@ zotsX~fA8q3Ty%u##-dSeNpI4q>RdT$R=5@JvNwGC%Ha8E{r%|hAZ(~$@#V4dy8=Hs zztb>*rH&K$AZ)a0>TKCo)7sr*s9?R1|Kn*2E*$>FN+sinqeGm0WqUr@>m@Pm+a+uO z2kMc3JWI2olgHiI%qp!$Mw3h8wYvq=6YXy>|J3DjhF0q<>}-h9_$CydkHjCs935Mi zP7Jz_=w=~i%iMP92PanTIvW1p39mXgvUS{wZb=nBPpK}7rDJj{0#}>xQYUu!svDEs zC$!535p>^pc)+KVen&Y3j5PSHX0a6jblR3#VnbOr@C=lSWSh0NPy1Scw$_>t4pS`( zxFM?lg>SV29oIEcwrBi!=FvP^xG&O6pT1|10`LxFJXPeYVGN&%r@K0q0qHxC^xy!P zP>WHrQ-%TJtllgLY@||PdHD6s}_Xz+7CPuT?#Mf64&|DaJ8&dj~(Jv~Vtoo8r_Z*n6q zM$s|A#7Su*;U)W;H{qOoaPYiZJUby$E2kT%@_pDQJ!m)h>u7=L3p3Wj+`rFcx_+jgv zOcI5-Kw~#I5c{(n&kb=hQHE#V;N5;gujdX_>sF(g2EVcN)1>)zV@Tp??1{tR!rf{z z1 z2AQ``&!=k%bU>k$3^=B1*|Z%|>Kj`EGI}P~ijtC&tT1bG4bS7!;?F-jJkA=`0@oED z^+Sj#|DzKxU(2hzm~Ue(&B%Vg0stsG>*`vPME9K_16Cjmh} zjmA}{;Sdy|k8rR5(n@=hQoa3C1K62Z>NJQMq&TCF;O2pPfUYH#Q6Q6Vr^DlWS%AO%B(uutv^|uJ1 zB4eIz4i+N{x7d=-fwZ1wv;3&tya;;cvl=FNP*e!&9#J&^yXzAGDUi!-gKNoJhSMIA!o-7>Nb(}Oi=Trk z!{J^1f*JLVqU^B-p&CV=5{LR$gJdT+uz5P<49DybZu0V{%@5g_djLa7)UH{$+yxdr5U8D#wj0tAx<_v$lC$jNa)k7tHJ!W&xR$vo5#X$c!$ z{W6|4fRIaN7Ugz2##FFi#LG3~+z$P^8!L>$6#1QUBHgMk?Da(VBV2jpg((y-hcUnV zq@cfGimykGXVrM9U8i9+^>@sgXoCHhWz(@Q+RN3B35!TA*qr6p)YIJ{ z(m9j;k(~9hy?K^QEYS64lKo`Y*zRfWpcs|US-R)4Tl}8GbqGNF)L41e8hf{)5Cl8Z-*fyzB7119`mMRe096fEa(myA1EW6>k%h6`<6IQpa z4Jl;>w75AEDcjf%@fQb-7=t-veA)4Xi)2cr$*S0H8+B?;=O2j?n6^HpP=o#(&bMdB zo&j_xlkEJa)yy^Qj~D--j@C-Gyjz{a+Ca1lq5|!IsYBXn`4Fl3tRD_O>`I($}biuM{685`)|J#cGr_s*{NUuLl*L-$)d7d8jS~eY#ZlQi)79C z7%l#lNbmrpd!4&_RmZiYaDD2Ae6%mL8K>`MDCv*~BZue5+rtnnM9~bxCbMt*CnWM4 zB1iJa#!WVtKhgK3T1_@<8pLk9=q%O$)jfm69Z$`DN-d|uuc{*kC!3M}{#|_?V*L8& zc2l+uQOuyqhMQ2HkFpe(!wA*C1vX$8PEE36u4gLad?da1J?%YtJVKVj&H z5WEfn3V;==b}y!f>1_W+G2}&Ce)0*@6*>^Qc^k6pQ}-*7w2Hg6UY>c0bqQ^=nU!uM zfOE)kOXphhpZx$r@>Uy?|NrpPO1~y{52Ps(x$Fu7x=hR(Ay61YB7E zH~NNvhk~fu2tL|yKMcztNu312>0uzE7hePFtakJ#!-_xo&H#oSt7L(uP3s^P%VmBD z`y(*e<7AS%GSt1#oPN$Ts7IDmQNGG%dUfuPMbpG)(*(91`p*crW7Gm8C!(5hiMH89 zr8b>C6!G;)ax6v>k3Y-6R+w?n&FUtr-!D8EB*imV-#=KAH+~N=J2A*4a~#vsSe?u8 z6pdhK3h(=NOT%^?QZ@M62FD>~T%Q5)(G$4ht^4pcT~8*$auSx^EVmTS=*gU7Hf|wZ zey6aHsV>reiMO_mn!Nu?Ojv!B!XRNxLb)-RMc@Sh`6ge_X9OBEX@3}fn0p{(X4x5R zJ;5f8^fX;19Em|EnG_ap<9hQ8g06}lX3ZBPL z1LWrcczQ<#XB;p(OAlbW3^mD#p(dmC5g_H450=270 zOC3LbO8*_DuI}?VpmDTOIZnlBC7*Zh)SFX#{C7f;4NF>9ff3UgSE3k%4vxqc+~FTIOp@ z55&et;t!bOw%?%IFs$n(@#A&-8i|mmefwSA4rX%HyFS#(wIc#YWSN@ZkW$cN((PkH zdcIG=`hM$97wc=h_j!XrUn)Bc#}7^RC&UU2blB_{fl|n6IMq%_7@I)2*%cMx8`55W z7&O%d1qdLvQpT?`2;v6X$snBDWE@xNGZd*kDJa#5ZAmE4rEv-)Q~j=&JTTD*2BSj2 zs^6QSdX+YE%}MHU|0vddd`R zId;jDba(*JWW~KWquf%c=oJbHwFF2V#7PARcDLwR`dgo?hmLuZDnJ7eo8ec;+2OEZ zK_U%77qSF7J{{0^pl7oi_sq`cLtr{G50@BA7>V(WH=NRGMRy@~-LizUQ~2mSPay zDTkLL1`4yd3lpunH#AHM`o^#=DsH{tdLz35 zB%i47EH~7e?!rE^@j@6*T))<`Qt5ou-2`O2eQ#Rde?7A^olrNBU(g7E40ND0F8>|s z#T3eg#xv3~rwyz`OcaBEK%uRqGS(EB(F^n=_w057JEr}b@p!(Q*9eBLP%5Iw34uW` z7+(cgy@qrs5I5*XWpt}q+pmsNp`o@`?^B32at@(t8HAV4bg8dZj#KaGC%yvW`NB zteXyHScNB#mDV7ofONVwYnnwY586M_A;g$%O?q#3Ve z#yslRe$fR^@Y};|=LZ!+b0`czwYWS&no;{>nW_%8?AQ3`SAzM9NzG~$SG&Ak+*Q80 zFS>_qzt&ij&hiMXH4)VU_>N@)3WSXtgf!XzmLd%O22au;m@drr@Je5!diEtKb*XR< zPy%fQ{mu}^Lw2SZy5SQJD8?IlY@CWwGTdUQa)b5SjS26sFB6stQ=`{=&o$)hL3l~;?Z=gIHJs8|#Y)9!M$=cG?fhIB@tX>s zmiUk)$@E4EPBo?DJ0ed59&zZqN$&+{o9F8;)Xn|`%V&i49w=*(&Bk*QDtf#aDt!nk zXa#|#D+??fTIyCZbZf!hzy2w7(1>IS_NBfXKhq+CtpLeJ_D_FubYiquP2)@=DQ}=o zx7AGgv1=9zcQnWp(ml0Cvylr9_=)o?Q;O^F%1)+m@ZXYP7qm3=B~MYY{r)Cwujw6^ic4dSgAO0y+LsdBJm9djZyF0N_{^gv>Xdv z?5?2QHeIjXtB9=c@2rlD3t(O}Lt->%M4P5;@8#pXWPq-Kg(^$;=UpJwfJ+_oa85@uLyVGSBSdJI_s5(l7GNc0RL0 zNRF-wl6<$#9g@HRX7h4bsX$tVE$_Pj#nxE{#T9OA8izn|cXxM(1PBCocXxM}KnNb( zJ-A!r?ry=|-Q8#BPMuq4s^)K3cXe;=wb%Eo=XG23(K~2ems`+<5c6_nNIuc8kPi^0 z>r7N%peCkt6;Mrr_r~(mCcwOG3Wd@13>Al@agu$syFA7?Qfd{Z^du{RMg5z@%siMH* z#>ID4w~0a@VP6bNO!^p&-ki@}Xc*F;+-ka>|1^WC6Ele6*3m#~o(Rg-*&R-nlHoa-M5`;3VtG4C~Up%H}C)e7c=&W-p*GvJO?r7EFCfvi_i069*O{wavJKTL~-i3X=pEh|dRu>#YxP`Xh zwi5z-4EhkiLVb~=`WpVB@Mn6^LE90M{zxsi`>k*$2^BJ9rg6Pk$sLBAN~)o`M!$2< zX&ybg6?r5~`X?hNIHkOQMzhd}aa>a=%)`j@!}am4p7aUU&+iZKlb(1V5xOi+b8L+= z#*({#SI{y!Zjyq>@6&Y#=XX}EpFccqqP_Jjybz98_vE|QK1SNl+9V<;hWU@?Ek#S@_>sg(!%1^amV3B0OMdg4S7-jTW;mBaE zAXgw8)1&K>BDKSO+}4cOa(~zOIsZ1M$G%lF^X&y?cbaO4d@jQvj5Ct>Jw}FLUS`Bz zP$s23V490#Jm3!e+s#@=0M}ztr?W|Z4?OxW`zoR7nNJhHCVkurUG=BjY<6UDX8oOm zTP%+ETU+i~BzRJ;3ICLdb8dL@1tyFLD!aOJPK>;iLpPXl`et{~I$90L5t+abVmFr=oL-Fm=b~oJegTRh;mPVXq0+PVsAGChiA~!kW@MP+HK^OWP-AnOVugM{3WrW{Uc4Fs6R zIc>VV{L7>D_SPD>nvpe?Yi$B8Yw+uJ|BpA+{g@3sXKYIg*uu9lN4u@x<|SZKu0i{` z3KGrVJT-=&YW`>>-XLKCK`YO}m?CH1pg%$*Jk*CIu)fc6(oC%9qIUg|Z$BR_7y=L& z=&FZ;V?=n(D%jp4DIa;ta&izgbeExj4}fSDg$9`68KG!A1Rv3iI&v;;jx}msxBY$= z!1IKv=Mw`V(Vr$!T1x6@!R-43iG`A|Xn0@gh}6CjH^7TNni{!){T*GTA_`ZP;|zh( zN`uw63-pA9j>)t?eJh*-&U}K1K41Xp80+YglYt7Ar`6gp?NtvW=@Ys2I7AOGo&uWm zsD?(VXB~eINA$J6;4=SJ*Csf^^`>OL!F%z=S@4&Fg&7DgX&Jle@m!-sr`VGw5!&J4o3M<;Fx1MLDARwVvzR+*4+X|#fAe% z#r4oSkOW>Qqw6R8dl(rKd=v6lHrF{?5^c2y`=_|qI&?a-Sg~SLqd{1VwgH%ANu|gO z3I3Q#R;nkcQ|DgSDjqBtnE`Dxx($}V~qb~8VjD5KnP5keva5=v@kL6Uc@KuSwDeO5c z)EPlj*pCx%{DqVae*5j;M}{kW7YQZfZjFJ~tKh4bS50hBZ-tb24mCnyoezszKeCZ* zMe#x*+(V^|zg`b&plUTcFZSS=)U$`9~{AWOCBaF_gGUV{@C-zqfDsxj6i zTECIY2}&_eTg0~6)Js0fv<)!5ef)jZ}x;=oA5 z=j8UOSM_t&+(M@5g&i4kMt!8Oug+_zHvIOPBCvq~r>#Q9zS|mBHlvm9Mq|5LEbqs5 zaxqr@sX+xJ4O5@;y-%jB)Ug|92c2{WgsnXzjXh|w?xtCgT2jP&+5zbM{%SwFIY-d) z-dY0_-Jv);@TG{)A^EYv~!~BiQ7bpafPuIa%$pXe3NUyiH9@{+MFhl4KzhkZ+$!HBP<#6 zmO^-hP0PcDMns4Nn6W6En4POdQ4MtEn&d)Y(1alc9AP#;6tillzI7H%=Cc%jEb%g_ zE*rtSy^SjPK?+$ekEyk^s+#TcJV=Jx2Qdd+@EBMRE(hM)tsfA#;6VDYu#aA{qKh9} zbzH;va(y0_^k#_HM94cAs0+vX~#rfhyUTVI&f&`dvwk)0Ug{$+<*P8bnJn{16*yH3y>uK_jNb~U&8Rwk)at#28 zWIYMs#lD~+2FAwfkqn-JRH(AHQ=)gS9hdXZd>Tp<$vffI&|hvVvVr&@g%H!sVj`*J zalZW_R>XA|C&RattflvJM&BAPT96Qn5-yfowZ4(64crzeyX;Z6?#|fh^#^gNG+I0jvo;F zK_9z6-C`j9XwagI=jG~Dj_#FCD4rKzm(3RKpOYxyW0VHUr@gG+egv7x1283>|r6mj(4nPTDcT%I8E^KhpLxPp~?MeBCn$ znXSa)ZJ_$FKSJo}BZyQ@Xn^`&H+jmdDCuX(YBrn@l}Dkb_{lhI3aq^`(8W*)^;IcE z?DpqFjsV6|-)>DewW8LFL7LvhaU&zk_!#+=Rs!soa?iR}h7~hy;U0{6G_mGJ`d>7% zM&qD0)21p-Pg7SfKp7@(i5xXZHWlSA?2LUDkZTfQ=C1M~CPmB7T>bnC-yAd^jKdH^NiM}y>VUb4yo+SuY>%yz{PxBM3yZyZVUXJp8xR(!* zK98p~c8l3IkImhFeOW7}Ry`qAt58JCdkiA3+bqf~pV_(Y#Q{5H2QG0Qgmd@C2PMHB zKQSFR{LA03x48Hz(~}z4vq%FdY89J=3kdvbw%#S#DJW1zdpR(Xv|n!bPM!={jt?J!;Lg`;4qkI(mfVbEOH74&ke3_^*xLS$USmC za>r^$J_T>6SVY*C3Dy+{o}9*Ki+l2A34SCpDG+5+^@4Os^*_#=^w7#q=nxmrU>KbA zU#KK1Rgd)LGcrgZtN49+8vUdU@A~3Oy=Ljn z=%`K_QGkdGB4-ft#KzG%PT#15X00P(-ZRGuei&t?&FUM^8KJ zI}V{y#8SOk_0%zbM&blF0=MmQ>Jh+;_t}cA8=D@YzRtoFy%{Q}!Bm^`HO5w<&f|`< z6?R7^-4^58#L_tXYdLALOvE6X)rR z+_L*R>pAsVceRaAj)}NUmfznM;>Q*)sRkwek^Ocx zm7oqf$D+Y-n02tv#nNV?cSzakRza01VGR}njV0Zu&!Ma%k0OsjOfT+u%1!W9M)_Sa9>x_JQ

tXgbjU!;tSE#l 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 Sb|ysNM^o*ZY5^J(@V@}T0!Q=! literal 0 HcmV?d00001 diff --git a/sqlite3.go b/sqlite3.go index 4482c61..ea2f569 100644 --- a/sqlite3.go +++ b/sqlite3.go @@ -186,6 +186,7 @@ func (ptr *SQLite3DB) CreateMetaData() error { return err } + /* logs don't present trusted data from context, ignored log.Printf("insert duration into %v_audit\n", ptr.hatchetName) istmt = fmt.Sprintf(`INSERT INTO %v_audit SELECT 'duration', context || ' (' || ip || ')', STRFTIME('%%s', SUBSTR(etm,1,19))-STRFTIME('%%s', SUBSTR(btm,1,19)) duration @@ -194,6 +195,7 @@ func (ptr *SQLite3DB) CreateMetaData() error { if _, err = ptr.db.Exec(istmt); err != nil { return err } + */ return err } diff --git a/sqlite3_audit.go b/sqlite3_audit.go new file mode 100644 index 0000000..fdab798 --- /dev/null +++ b/sqlite3_audit.go @@ -0,0 +1,149 @@ +/* + * Copyright 2022-present Kuei-chun Chen. All rights reserved. + * sqlite3_audit.go + */ + +package hatchet + +import ( + "fmt" + "log" +) + +func (ptr *SQLite3DB) GetAuditData() (map[string][]NameValues, error) { + var err error + db := ptr.db + data := map[string][]NameValues{} + // get max connection counts + query := fmt.Sprintf(`SELECT MAX(conns) FROM %v_clients;`, ptr.hatchetName) + if ptr.verbose { + log.Println(query) + } + rows, err := db.Query(query) + category := "stats" + if err == nil && rows.Next() { + var doc NameValues + var value int + _ = rows.Scan(&value) + doc.Name = "maxConns" + doc.Values = append(doc.Values, value) + data[category] = append(data[category], doc) + rows.Close() + } + + // get max operation time + query = fmt.Sprintf(`SELECT IFNULL(MAX(max_ms), 0), IFNULL(SUM(count), 0), IFNULL(SUM(total_ms), 0) FROM %v_ops;`, ptr.hatchetName) + if ptr.verbose { + log.Println(query) + } + rows, err = db.Query(query) + if err == nil && rows.Next() { + var maxMilli, total, totalMilli int + if err = rows.Scan(&maxMilli, &total, &totalMilli); err != nil { + return data, err + } + data[category] = append(data[category], NameValues{"maxMilli", []int{maxMilli}}) + data[category] = append(data[category], NameValues{"avgMilli", []int{totalMilli / total}}) + data[category] = append(data[category], NameValues{"totalMilli", []int{totalMilli}}) + rows.Close() + } + + // get max operation time + category = "collscan" + query = fmt.Sprintf(`SELECT IFNULL(MAX(max_ms), 0), IFNULL(SUM(count), 0), IFNULL(SUM(total_ms), 0) FROM %v_ops WHERE _index = 'COLLSCAN';`, ptr.hatchetName) + if ptr.verbose { + log.Println(query) + } + rows, err = db.Query(query) + if err == nil && rows.Next() { + var maxMilli, count, totalMilli int + if err = rows.Scan(&maxMilli, &count, &totalMilli); err != nil { + return data, err + } + if count > 0 { + data[category] = append(data[category], NameValues{"count", []int{count}}) + data[category] = append(data[category], NameValues{"maxMilli", []int{maxMilli}}) + data[category] = append(data[category], NameValues{"totalMilli", []int{totalMilli}}) + } + rows.Close() + } + + // get audit data + query = fmt.Sprintf(`SELECT type, name, value FROM %v_audit + WHERE type IN ('exception', 'failed', 'op', 'duration') ORDER BY type, value DESC;`, ptr.hatchetName) + if ptr.verbose { + log.Println(query) + } + rows, err = db.Query(query) + for err == nil && rows.Next() { + var category string + var doc NameValues + var value int + if err = rows.Scan(&category, &doc.Name, &value); err != nil { + return data, err + } + doc.Values = append(doc.Values, value) + if category == "exception" { + if doc.Name == "E" { + doc.Name = "Error" + } else if doc.Name == "F" { + doc.Name = "Fatal" + } else if doc.Name == "W" { + doc.Name = "Warn" + } + } + data[category] = append(data[category], doc) + } + if rows != nil { + rows.Close() + } + + category = "ip" + query = fmt.Sprintf(`SELECT a.name ip, a.value count, b.value reslen FROM %v_audit a, %v_audit b WHERE a.type == '%v' AND b.type = 'reslen-ip' AND a.name = b.name ORDER BY reslen DESC;`, + ptr.hatchetName, ptr.hatchetName, category) + if ptr.verbose { + log.Println(query) + } + rows, err = db.Query(query) + if err != nil { + return data, err + } + for rows.Next() { + var doc NameValues + var val1, val2 int + if err = rows.Scan(&doc.Name, &val1, &val2); err != nil { + return data, err + } + doc.Values = append(doc.Values, val1) + doc.Values = append(doc.Values, val2) + data[category] = append(data[category], doc) + } + if rows != nil { + rows.Close() + } + + category = "ns" + query = fmt.Sprintf(`SELECT a.name ns, a.value count, b.value reslen FROM %v_audit a, %v_audit b WHERE a.type == '%v' AND b.type = 'reslen-ns' AND a.name = b.name ORDER BY reslen DESC;`, + ptr.hatchetName, ptr.hatchetName, category) + if ptr.verbose { + log.Println(query) + } + rows, err = db.Query(query) + if err != nil { + return data, err + } + for rows.Next() { + var doc NameValues + var val1, val2 int + if err = rows.Scan(&doc.Name, &val1, &val2); err != nil { + return data, err + } + doc.Values = append(doc.Values, val1) + doc.Values = append(doc.Values, val2) + data[category] = append(data[category], doc) + } + if rows != nil { + rows.Close() + } + return data, err +} diff --git a/sqlite3_query.go b/sqlite3_query.go index 9f39d75..3d97977 100644 --- a/sqlite3_query.go +++ b/sqlite3_query.go @@ -494,125 +494,3 @@ func (ptr *SQLite3DB) GetReslenByNamespace(ns string, duration string) ([]NameVa } return docs, err } - -func (ptr *SQLite3DB) GetAuditData() (map[string][]NameValues, error) { - var err error - db := ptr.db - data := map[string][]NameValues{} - query := fmt.Sprintf(`SELECT MAX(conns) FROM %v_clients;`, ptr.hatchetName) - if ptr.verbose { - log.Println(query) - } - rows, err := db.Query(query) - category := "stats" - if err == nil && rows.Next() { - var doc NameValues - var value int - _ = rows.Scan(&value) - doc.Name = "maxConns" - doc.Values = append(doc.Values, value) - data[category] = append(data[category], doc) - } - if rows != nil { - rows.Close() - } - - query = fmt.Sprintf(`SELECT MAX(max_ms), SUM(count), SUM(total_ms) FROM %v_ops;`, ptr.hatchetName) - if ptr.verbose { - log.Println(query) - } - rows, err = db.Query(query) - if err == nil && rows.Next() { - var maxMilli, total, totalMilli int - if err = rows.Scan(&maxMilli, &total, &totalMilli); err != nil { - return data, err - } - data[category] = append(data[category], NameValues{"maxMilli", []int{maxMilli}}) - data[category] = append(data[category], NameValues{"avgMilli", []int{totalMilli / total}}) - data[category] = append(data[category], NameValues{"totalMilli", []int{totalMilli}}) - } - if rows != nil { - rows.Close() - } - - query = fmt.Sprintf(`SELECT type, name, value FROM %v_audit - WHERE type IN ('exception', 'failed', 'op', 'duration') ORDER BY type, value DESC;`, ptr.hatchetName) - if ptr.verbose { - log.Println(query) - } - rows, err = db.Query(query) - if err != nil { - return data, err - } - for rows.Next() { - var category string - var doc NameValues - var value int - if err = rows.Scan(&category, &doc.Name, &value); err != nil { - return data, err - } - doc.Values = append(doc.Values, value) - if category == "exception" { - if doc.Name == "E" { - doc.Name = "Error" - } else if doc.Name == "F" { - doc.Name = "Fatal" - } else if doc.Name == "W" { - doc.Name = "Warn" - } - } - data[category] = append(data[category], doc) - } - if rows != nil { - rows.Close() - } - - category = "ip" - query = fmt.Sprintf(`SELECT a.name ip, a.value count, b.value reslen FROM %v_audit a, %v_audit b WHERE a.type == '%v' AND b.type = 'reslen-ip' AND a.name = b.name ORDER BY reslen DESC;`, - ptr.hatchetName, ptr.hatchetName, category) - if ptr.verbose { - log.Println(query) - } - rows, err = db.Query(query) - if err != nil { - return data, err - } - for rows.Next() { - var doc NameValues - var val1, val2 int - if err = rows.Scan(&doc.Name, &val1, &val2); err != nil { - return data, err - } - doc.Values = append(doc.Values, val1) - doc.Values = append(doc.Values, val2) - data[category] = append(data[category], doc) - } - if rows != nil { - rows.Close() - } - - category = "ns" - query = fmt.Sprintf(`SELECT a.name ns, a.value count, b.value reslen FROM %v_audit a, %v_audit b WHERE a.type == '%v' AND b.type = 'reslen-ns' AND a.name = b.name ORDER BY reslen DESC;`, - ptr.hatchetName, ptr.hatchetName, category) - if ptr.verbose { - log.Println(query) - } - rows, err = db.Query(query) - if err != nil { - return data, err - } - for rows.Next() { - var doc NameValues - var val1, val2 int - if err = rows.Scan(&doc.Name, &val1, &val2); err != nil { - return data, err - } - doc.Values = append(doc.Values, val1) - doc.Values = append(doc.Values, val2) - data[category] = append(data[category], doc) - } - if rows != nil { - rows.Close() - } - return data, err -} diff --git a/template.go b/template.go index d8023e3..2df297e 100644 --- a/template.go +++ b/template.go @@ -35,75 +35,88 @@ const headers = ` @@ -232,18 +242,17 @@ func getContentHTML() string { }

- +
Hatchet
- - - - +
Audit
+
Stats
+
Top N
+
Search