From 2232d19fa2229ce2efdf922465c92d31a2a099cc Mon Sep 17 00:00:00 2001 From: Yoshman29 <81191621+YoshiCrafter29@users.noreply.github.com> Date: Mon, 20 Mar 2023 13:57:33 +0100 Subject: [PATCH 1/8] charter progress --- art/flashFiles/RECOVER_NOTE_assets.fla | Bin 0 -> 128197 bytes assets/images/editors/charter/note.png | Bin 0 -> 6299 bytes assets/shaders/engine/README.txt | 3 + assets/shaders/engine/charterNote.frag | 9 ++ .../{ => engine}/circleProfilePicture.frag | 0 assets/shaders/{ => engine}/editorBlur.frag | 0 .../shaders/{ => engine}/updaterShader.frag | 0 buildnumber.txt | 2 +- source/funkin/editors/charter/Charter.hx | 87 +++++++++++++----- .../funkin/editors/charter/CharterBackdrop.hx | 30 ++++++ source/funkin/editors/charter/CharterNote.hx | 81 ++++++++++++++++ source/funkin/editors/ui/UIWarningSubstate.hx | 2 +- .../funkin/menus/credits/CreditsCodename.hx | 2 +- source/funkin/system/Conductor.hx | 28 ++++++ source/funkin/updating/UpdateScreen.hx | 2 +- 15 files changed, 221 insertions(+), 25 deletions(-) create mode 100644 art/flashFiles/RECOVER_NOTE_assets.fla create mode 100644 assets/images/editors/charter/note.png create mode 100644 assets/shaders/engine/README.txt create mode 100644 assets/shaders/engine/charterNote.frag rename assets/shaders/{ => engine}/circleProfilePicture.frag (100%) rename assets/shaders/{ => engine}/editorBlur.frag (100%) rename assets/shaders/{ => engine}/updaterShader.frag (100%) create mode 100644 source/funkin/editors/charter/CharterBackdrop.hx create mode 100644 source/funkin/editors/charter/CharterNote.hx diff --git a/art/flashFiles/RECOVER_NOTE_assets.fla b/art/flashFiles/RECOVER_NOTE_assets.fla new file mode 100644 index 0000000000000000000000000000000000000000..32a9b700b61e733574f3230eeed7f86a1a7bb2b9 GIT binary patch literal 128197 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 pj`FYT#6MO|e=ZO&K=c8Sf7Yt^R4_1q)UX0Ss< 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 R3Mc>o002ovPDHLkV1mNOFroke literal 0 HcmV?d00001 diff --git a/assets/shaders/engine/README.txt b/assets/shaders/engine/README.txt new file mode 100644 index 00000000..d5534429 --- /dev/null +++ b/assets/shaders/engine/README.txt @@ -0,0 +1,3 @@ +THOSE SHADERS ARE USED INTERNALLY BY THE ENGINE + +MODIFY THEM AT YOUR OWN RISK!! IF IT CRASHES IT AINT MY FAULT \ No newline at end of file diff --git a/assets/shaders/engine/charterNote.frag b/assets/shaders/engine/charterNote.frag new file mode 100644 index 00000000..8e0c60f0 --- /dev/null +++ b/assets/shaders/engine/charterNote.frag @@ -0,0 +1,9 @@ +#pragma header + +uniform vec3 noteColor; + +void main() { + vec4 finalColor = flixel_texture2D(bitmap, openfl_TextureCoordv); + float diff = finalColor.r - ((finalColor.g + finalColor.b) / 2.0); + gl_FragColor = vec4(((finalColor.g + finalColor.b) / 2.0) + (noteColor.r * diff), finalColor.g + (noteColor.g * diff), finalColor.b + (noteColor.b * diff), finalColor.a); +} \ No newline at end of file diff --git a/assets/shaders/circleProfilePicture.frag b/assets/shaders/engine/circleProfilePicture.frag similarity index 100% rename from assets/shaders/circleProfilePicture.frag rename to assets/shaders/engine/circleProfilePicture.frag diff --git a/assets/shaders/editorBlur.frag b/assets/shaders/engine/editorBlur.frag similarity index 100% rename from assets/shaders/editorBlur.frag rename to assets/shaders/engine/editorBlur.frag diff --git a/assets/shaders/updaterShader.frag b/assets/shaders/engine/updaterShader.frag similarity index 100% rename from assets/shaders/updaterShader.frag rename to assets/shaders/engine/updaterShader.frag diff --git a/buildnumber.txt b/buildnumber.txt index f1488c48..917c81e5 100644 --- a/buildnumber.txt +++ b/buildnumber.txt @@ -1 +1 @@ -2651 \ No newline at end of file +2663 \ No newline at end of file diff --git a/source/funkin/editors/charter/Charter.hx b/source/funkin/editors/charter/Charter.hx index 6920486b..97ee2f96 100644 --- a/source/funkin/editors/charter/Charter.hx +++ b/source/funkin/editors/charter/Charter.hx @@ -1,5 +1,8 @@ package funkin.editors.charter; +import funkin.system.Conductor; +import funkin.chart.*; +import funkin.chart.ChartData; import openfl.display.BitmapData; import flixel.util.FlxColor; import flixel.addons.display.FlxBackdrop; @@ -10,11 +13,16 @@ class Charter extends UIState { var __song:String; var __diff:String; + var chart(get, null):ChartData; + private function get_chart() + return PlayState.SONG; + /** - * CONFIG (might make this customizable later) + * CONFIG & UI (might make this customizable later) */ - private var gridColor1:FlxColor = 0xFF404040; // white - private var gridColor2:FlxColor = 0xFF212121; // gray + public var uiGroup:FlxTypedGroup = new FlxTypedGroup(); + private var gridColor1:FlxColor = 0xFF272727; // white + private var gridColor2:FlxColor = 0xFF545454; // gray public var topMenu:Array = [ { @@ -101,7 +109,21 @@ class Charter extends UIState { ]; public var topMenuSpr:UITopMenu; - public var gridBackdrop:FlxBackdrop; + public var gridBackdrop:CharterBackdrop; + + /** + * ACTUAL CHART DATA + */ + public var strumLines:Array = []; + public var notesGroup:FlxTypedGroup = new FlxTypedGroup(); + + /** + * CAMERAS + */ + // camera for the chart itself so that it can be unzoomed/zoomed in again + public var charterCamera:FlxCamera; + // camera for the ui + public var uiCamera:FlxCamera; public function new(song:String, diff:String) { super(); @@ -112,29 +134,52 @@ class Charter extends UIState { public override function create() { super.create(); trace('Entering Charter for song $__song with difficulty $__diff.'); + + + charterCamera = FlxG.camera; + uiCamera = new FlxCamera(); + uiCamera.bgColor = 0; + FlxG.cameras.add(uiCamera); + + + gridBackdrop = new CharterBackdrop(); + gridBackdrop.setPosition(0, 0); + notesGroup.cameras = gridBackdrop.cameras = [charterCamera]; + + + topMenuSpr = new UITopMenu(topMenu); + topMenuSpr.cameras = uiGroup.cameras = [uiCamera]; + + + // adds grid and notes so that they're ALWAYS behind the UI + add(gridBackdrop); + add(notesGroup); + // add the ui group + add(uiGroup); + // add the top menu last OUT of the ui group so that it stays on top + add(topMenuSpr); + + loadSong(); + } + + public function loadSong() { CoolUtil.loadSong(__song, __diff, false, false); - gridBackdrop = new FlxBackdrop(null, 1, 1, true, true); - gridBackdrop.makeGraphic(4, 4, gridColor1, true); - gridBackdrop.pixels.lock(); - for(y in 0...4) - for(x in 0...2) - gridBackdrop.pixels.setPixel32((x*2)+(y%2), y, gridColor2); - gridBackdrop.pixels.unlock(); - gridBackdrop.scale.set(40, 40); - gridBackdrop.updateHitbox(); - gridBackdrop.loadFrame(gridBackdrop.frame); - gridBackdrop.cameras = cameras; - add(gridBackdrop); - - - // ALWAYS ADD LAST - topMenuSpr = new UITopMenu(topMenu); - add(topMenuSpr); + Conductor.setupSong(PlayState.SONG); + + for(strID=>strL in PlayState.SONG.strumLines) { + for(note in strL.notes) { + var n = new CharterNote(); + n.updatePos(Conductor.getStepForTime(note.time), (strID * 4) + note.id, note.sLen, note.type); + notesGroup.add(n); + } + } } public override function update(elapsed:Float) { super.update(elapsed); + + gridBackdrop.strumlinesAmount = 3; // TODO: remove this bs!! if (controls.BACK) FlxG.switchState(new funkin.menus.MainMenuState()); diff --git a/source/funkin/editors/charter/CharterBackdrop.hx b/source/funkin/editors/charter/CharterBackdrop.hx new file mode 100644 index 00000000..a6e750af --- /dev/null +++ b/source/funkin/editors/charter/CharterBackdrop.hx @@ -0,0 +1,30 @@ +package funkin.editors.charter; + +import flixel.addons.display.FlxBackdrop; + +class CharterBackdrop extends FlxBackdrop { + public var strumlinesAmount:Int = 1; + + public function new() { + super(null, 1, 1, false, true); + + makeGraphic(4, 4, 0xFF272727, true); + pixels.lock(); + for(y in 0...4) + for(x in 0...2) + pixels.setPixel32((x*2)+(y%2), y, 0xFF545454); + pixels.unlock(); + scale.set(40, 40); + updateHitbox(); + loadFrame(frame); + } + + public override function draw() { + var ogX:Float = x; + for(_ in 0...strumlinesAmount) { + super.draw(); + x += width; + } + x = ogX; + } +} \ No newline at end of file diff --git a/source/funkin/editors/charter/CharterNote.hx b/source/funkin/editors/charter/CharterNote.hx new file mode 100644 index 00000000..a4a284dd --- /dev/null +++ b/source/funkin/editors/charter/CharterNote.hx @@ -0,0 +1,81 @@ +package funkin.editors.charter; + +import flixel.tweens.FlxTween; +import funkin.shaders.CustomShader; +import flixel.util.FlxColor; + +class CharterNote extends UISprite { + private static var colors:Array = [ + 0xFFC24B99, // purple + 0xFF00FFFF, // cyan + 0xFF12FA05, // green + 0xFFF9393F // red + ]; + private static var colorsRotation:Array; + + public static final noteScaleX:Float = 40 / 154; + public static final noteScaleY:Float = 40 / 157; + + public var charterNoteShader:CustomShader; + + var angleTween:FlxTween; + + public function new() { + super(); + antialiasing = true; + loadGraphic(Paths.image('editors/charter/note')); + scale.set(noteScaleX, noteScaleY); + updateHitbox(); + scale.set(noteScaleY, noteScaleY); + + shader = charterNoteShader = new CustomShader('engine/charterNote'); + + if (colorsRotation == null) colorsRotation = [ + colors[2], + colors[3], + colors[1], + colors[0] + ]; + + angle = 45; // green-red inbetween + } + + private override function set_angle(v:Float):Float { + if (charterNoteShader != null) { + var v2:Float = v; + var o:Int = 0; + + // make sure the note isnt negative + while(v2 < 0) { + v2 += 90; + o -= 1; + } + // make sure the note is under 90 degrees + while(v2 > 90) { + v2 -= 90; + o += 1; + } + var c:FlxColor = FlxColor.interpolate(colorsRotation[FlxMath.wrap(o, 0, 3)], colorsRotation[FlxMath.wrap(o+1, 0, 3)], v2 / 90); + + charterNoteShader.hset('noteColor', [c.redFloat, c.greenFloat, c.blueFloat]); + } + return super.set_angle(v); + } + + public function updatePos(step:Float, id:Int, susLength:Float = 0, type:Int = 0) { + x = id * 40; + y = step * 40; + + if (angleTween != null) angleTween.cancel(); + + angleTween = FlxTween.tween(this, {angle: switch(id % 4) { + case 0: -90; + case 1: 180; + case 2: 0; + case 3: 90; + default: 0; // how is that even possible + }}, 1, {ease: function(t) { + return ((Math.sin(t * Math.PI) * 0.35) * 3 * t * Math.sqrt(1 - t)) + t; + }}); + } +} \ No newline at end of file diff --git a/source/funkin/editors/ui/UIWarningSubstate.hx b/source/funkin/editors/ui/UIWarningSubstate.hx index 38365f4a..11fe9b8d 100644 --- a/source/funkin/editors/ui/UIWarningSubstate.hx +++ b/source/funkin/editors/ui/UIWarningSubstate.hx @@ -6,7 +6,7 @@ import funkin.shaders.CustomShader; class UIWarningSubstate extends MusicBeatSubstate { var camShaders:Array = []; - var blurShader:CustomShader = new CustomShader("editorBlur"); + var blurShader:CustomShader = new CustomShader("engine/editorBlur"); var title:String; var message:String; diff --git a/source/funkin/menus/credits/CreditsCodename.hx b/source/funkin/menus/credits/CreditsCodename.hx index d1728d56..611e3296 100644 --- a/source/funkin/menus/credits/CreditsCodename.hx +++ b/source/funkin/menus/credits/CreditsCodename.hx @@ -77,7 +77,7 @@ class CreditsCodename extends OptionsScreen { spr.antialiasing = true; spr.setUnstretchedGraphicSize(96, 96, false); spr.updateHitbox(); - spr.shader = new CustomShader('circleProfilePicture'); + spr.shader = new CustomShader('engine/circleProfilePicture'); contributorsSprites.push(spr); add(spr); } diff --git a/source/funkin/system/Conductor.hx b/source/funkin/system/Conductor.hx index 44705092..0d3c19d9 100644 --- a/source/funkin/system/Conductor.hx +++ b/source/funkin/system/Conductor.hx @@ -250,4 +250,32 @@ class Conductor onBPMChange.dispatch(bpm); } + + public static function getTimeForStep(step:Float) { + var bpmChange:BPMChangeEvent = { + stepTime: 0, + songTime: 0, + bpm: bpm + }; + + for(change in bpmChangeMap) + if (change.stepTime < step && change.stepTime >= bpmChange.stepTime) + bpmChange = change; + + return bpmChange.songTime + ((step - bpmChange.stepTime) * ((60 / bpmChange.bpm) * 250)); + } + + public static function getStepForTime(time:Float) { + var bpmChange:BPMChangeEvent = { + stepTime: 0, + songTime: 0, + bpm: bpm + }; + + for(change in bpmChangeMap) + if (change.songTime < time && change.songTime >= bpmChange.songTime) + bpmChange = change; + + return bpmChange.stepTime + ((time - bpmChange.songTime) / ((60 / bpmChange.bpm) * 250)); + } } diff --git a/source/funkin/updating/UpdateScreen.hx b/source/funkin/updating/UpdateScreen.hx index 1b6a3bb6..dfcc9b0c 100644 --- a/source/funkin/updating/UpdateScreen.hx +++ b/source/funkin/updating/UpdateScreen.hx @@ -61,7 +61,7 @@ class UpdateScreen extends MusicBeatState { updater.execute(); - FlxG.camera.addShader(rainbowShader = new CustomShader("updaterShader")); + FlxG.camera.addShader(rainbowShader = new CustomShader("engine/updaterShader")); } From 8f542c11e92d25d0b175f4684be3d1b557affcb4 Mon Sep 17 00:00:00 2001 From: Yoshman29 <81191621+YoshiCrafter29@users.noreply.github.com> Date: Mon, 20 Mar 2023 14:58:14 +0100 Subject: [PATCH 2/8] charter progress --- art/flashFiles/RECOVER_NOTE_assets.fla | Bin 128197 -> 126577 bytes assets/images/editors/charter/note.png | Bin 6299 -> 21952 bytes assets/shaders/engine/charterNote.frag | 9 --- buildnumber.txt | 2 +- source/funkin/editors/charter/Charter.hx | 11 +++- .../funkin/editors/charter/CharterBackdrop.hx | 9 +-- source/funkin/editors/charter/CharterNote.hx | 56 ++---------------- 7 files changed, 22 insertions(+), 65 deletions(-) delete mode 100644 assets/shaders/engine/charterNote.frag diff --git a/art/flashFiles/RECOVER_NOTE_assets.fla b/art/flashFiles/RECOVER_NOTE_assets.fla index 32a9b700b61e733574f3230eeed7f86a1a7bb2b9..96bc1a235e0b4834bfb88571a4a8dd282118f046 100644 GIT binary patch delta 112825 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

Ws0=UsTZMaxne~3O%&Uz!0ipW!xjkWQZ?D zSz7`VsP)9mqQ?3Z5u1t}dDk9VVh&8Zy=-THya0iQEie&00!nt+0##*n0cDOH70dUuc3*8e!0UqN|bLkS-wb=i@233@N!@1oMCx7;TbQAXdU zV+g2GQLZa?`LQxJ5HQo6`BNVWXkUh!oenvAM)`r>pS(99lz?uu=yW*?6P`hQWFZ!Z zF{~m=XXN@$kK4DBo3&l4?WTZU@`I->EF3Y(BD+@X54}r}@1Fsqmn10C?&%OerG~~% z+f?u2-(1OxZQl(zA@Un2S;xwJVQ`qTkC^*L?E*q$^V}}-@g)1v zj=Tzwl7#{>)vtxipA_@T4z6>dZ~I}CRi0-j+w3Fp*N?_`;MvJuK!5YOqH1!scrV)! z$Mb|6dn3<(R}bd44Ck;kfg|wcxAGV8P%ju{B1xSip(7fs8auh2Sb7(cinX$jkzB$t z&?z-`W)WZX(>Yp9Zoe@~)7z5_BT}YB(e&#>+DQ| z!@NU}_+3YwnxFm_AFu&gcDi>9^bh?NPb4&!ScMnq9#S=hC4-5141}OcWB4YT@IjT% z-ecqxQRbl02QakHB=f&knJo~S9V49^Sd-rLDV0#U#Q>Rq8P%KKF3#H1fBUBHzh7Om zM+I+tl!=gkEB$WR!xbKkS}1Z{7TkvfAB%W|;)?%AG%s`yiz?n&QrYnj2E^M2h%MxlZzprE7$1sgc{3Yw?tJ$HjOw* z-%CE(a(;HKI0D2$wpz0KA=}x=IulUkx%cLZ+V3G?A1TWE zhl_?=35}4nbUSI#3N`k22z%B{k3=b>_rf+lAhWbTRkxq!@R_dopbS%q%e5!0=>qF( zW8*rXlrj8Pv6mM-f9LH%DW)FJ1TsE$wT=>Y)gA^WW`8@c4I}M2cza`yf)Xh_c1%U_ zAr&wph^&^WlZ+DLi^MQl%iQXSZPdsz%$cJ2_+<04qQ0?Ija_91*M)ArfA8z=|Yi7-cb# zOxqj5XY0RJ%rUFj6EXAI_km1Nmab5nOC%6SX@KMMhx(V)9ftz}R*}(hxqT?;yub`D z8;mhn7L3DeEvZMDVOGl#Ga~Ut6jEkXS^6(21DOR+2QMY|z{T%QR zp$F9`*P8Yd!6sG~!D(`>X67#N1qeCD%l%Mx^4)1XoR7_xA&RR{X5NFlm!WYPv#ghF z6(eq5%uiIEq*-kfZwjLEhGxT;r|{@i3`tyn7dDp^SW2E1^r8fQvT39JewX-)CIjW+ z`nO^2IQYE74p(VG_B0o6G2XNRbLY)r4W3_e-7%`Anue)-e9?BH<2?6x6^J(!r_=gF z5cD3#_it;euLI8-6O*NeM`@ugL}VOCoW5!i9AY~`7uzc|{Xxd8Zo%Ibs@NdBOkGMd z^WblvVC7o)@x0jIQW>pgwzquG1^>!pI7vduWtFr>6?RlKYXf|r@`1`@QMLLcOq7=f zu5asw18?E|dQIaiqkjG*p1@EV`@LWtO1z&Ez2|6$5dM95VnDK~>3Vg%DuXMF6tY#W<$tYFJw{xK=2;nCw*HbIg%^gG0=GFK9y7tB) zt|l-yl$Lt(t7xtr#}T@35kksW89oU1ZkKOE1@OE!WzHy?cQGApWU)w?a)}*RP&gIeI=_-@kQQyl;iOM&3vC$xBDU;V^09-W}tt7{E62ead zzd#d-F{3e1Z)1Z*s?$x_a?|{&<(1;0eOAQpqa%Mq5)$AdH2l{WCM3m>!B|qpQtH;WR8=sUOEeC<~parMCP}2Yj##McHsdH72 z;6(So^7pUZdPggJ|*&VF^1H79we=Tf*GXaAal>d5$ewH3MgOiVNH>d zi7RdzxI!{80UD#mfZ6^rQ5c_g{WZu9a&fp8oxK3!WX_N-?or#2;*U)bmYw%}Vm8 z8sRPfYnO;98SbiJbWCXQMc6wTPhb!kIZ`E{s zh+gXTrAIocLVNH%H~4`p@>GqI&&eN5D}BzTjGSW_U`L8!Q-b%jKc0^DTh^o;(o-l%9Bin6!gi0utM8Fr0Hbn3YiUS9Wai=PKf!&^Ih9PS! zzyiOvkt-)9Ug%7C%2MktOQM2{He+MySErcl<5ycri%#XRDI#;EwV3>_6HW zOzju*f{zMmy!dE!_eu00^fF8x4`102XTt<24rg^FvqqcHJ%I*y-|awMHV1m%g=e77 zdcezByB zG54Gi-?Rr!LLS!78;(LcdJd2xv49cyplP11LonM@7_BaOE?;Rog$xID4=FKS!7+Cm z*Jl~|3t3$C%9Uo~WyKMhJV(--I2Xpef);dI=S*^LWogxWnjnHYe~x1rjtVK8b=fJF zk`Qb6{mPcB%2gwm1^otsmpI#!?!_(s5!aYh91g^)DRpw-dXD$I{Dl9 z8GR=?Ma9F_jqa`Fz#j!5UIX3)<(1K$>{2EKmhZA5nuQy5c>Sn@TSB;a<2vQc`KNqV zdH^UYH`I8d@K>aH(4W=6C5gijs1ezg-YzNy6%ib587VJi*&)zOze`R|86q_i5awfP zVVokLj+AL?ddE%wh0w_HPOA|WX*W4jPcnpK6}9$viAs#~$ixA7ZN5?!Qm5oCvFi>(IkLn&78&X7&s&OgEa?}fjR z`;FC)DT7#Gw1D;hO$QKjEQR5F{ z`It}bXIy5^{=B)!iH#gSKlHu*P_-ZJZ(1QR5X9&F`*z^c=BtPP`1q*tcw+@TDZ>tV zTwe|&M=r>9>UFK2#T4(`sU141bsGcj9okioIj7|demZ=*oPJphPIWqVr}!>5e983#7p9t9_8H ze1`3Yjhm}SKd5EZ%ede2nAgLOcoA~lu zF_b1al}^k1imJJtV|_;@z;Y;^v;msZ?*GRF>;K>Zl43x302bW;@BkQ87KL9R4W+Uu;Qr9FD5KF~&nlZrsV^o2qR)=yV9e7A z11%K7xKR-FwjgQ%e9lk;R!#0Wtq?-yI&(n|YM7v2omP4KbcUKPdMZ1v4jDC*e*#S@ zOSYeC#CN%Avd`6#A;DoRomiis`?=W!2!(#bMK4m7W!uC)KGfD*_twyXvsq1EIgZ=* z^Ag%LCb+NTw#uo+2}gVY(g?}k8JM!_$QJ|)m>L=xkGNlN`VTJqmukVfeKzLcu6L!3eRYO*)b&myJfjlCezP?wcQ z|Gic9v88PT%fQCFv7qn$!IxV=ZLW^46 zX03o(!E~d@iExYL0p4RKf!0Nu9Z7+AldI&;B@)B{Py{gmUjO0Ui1 z4bhYTD^^)?%LQ2&$L{n+?2BLz(yV;+G&b;mP!MlS;ZfjMo~$bqeo^dejg_Gc!DKkf9`9dHk!?)X(m0chvd9XOKL^8uInsQK)=NiZ*$c!Q-tUrft7Ox}S^nOwrY`wS zfqWlN%s}n>^vNeKac3Roy@1O*vOmwj;G-|yA^z=pPK&SI6?)R4@ZAlH(XRypCR$;0 zvxI8U9l$!n*8hwR;57JuhDf_wHp54dlcEPQRM7rUL&eqUfBPwN_Jo`XUC5xk#5&%y z;8`W3W}Kt({GpQ-{$P}vC}T$cj|Iz4q!n+o$pHgGes2N_@oEHeHbU(9#EM#aKjR0D zeN}+zk88nA17Dxp-S&1sV7&v!&)fO&;lsXrV^cuz^?7^yeUp*V@BMzs9?0lGhz7RGbz|LFqGuMZ#FFX!VK^*m$Z9i5*KFAMEN_FcZu7n6hb)t6k1dYOp! z)tl>lg5ICwp^xs^&hSp3Z^O6s_pTE%9sogC+H+33pX>MaaW4=&oA5}`x5e-C_I$j4 z`{Lze`_;YL&S3LjhnL?$)5>6KpuyC~$5J;!e|_j0C#QR}z5SlS6KB)C$m@bhA0imF z`x248!1`ME=^x-a#a1+UW98~*W1}5;disN`!{eH?qo*5qzS=%G@4u}NMecT>10FRv z-8q?vT9}_Fi4F!Tss#<3UM0HA8}zUG9bO+6Che!E59+r+?F5WNi8J#R%s;<>5fR!$ z9Qk-v<=I%6Ub?goc^#JN-O*p~Z1-#Nef?XE=}v$1aB-pXZG0H($>aX&dJ6MYfIpJh zptHT*_nv^;%txoonQ8I-Y{&W50KoRAs_uEL+zNhsRMV)rtK8xx`k*_kZVR|7!0@3N zG{?$G2{-4g_IpW`TpRuz8s2V{zo2FeMDXzY-qyh=BER-q@YyphG&7}_w;Ktm8DKx! z>s*7~wswfI$OotDo`iF*2;AhO(vg6=qJjM4cr|NsvnK&1FJNXMSh!$h1%%>Y@G#U* z2SRYs-(teR46@<|Rl`ND+=Nu?8pgb>{z;s6#(u-E&2F*zRfh-X&l{xRhsgFPsrGl= zGjD}7i48lYgCTT;^^66I$KJEiL!gZ3KK-f13|t&pkSV1d0=szN6^G|s>NUqu8)G0B zCY=Kk+u;D)@{Yw!ICbD7JOJAoJkt~noz(8SjtQ{N|k^?~;5h72kD=KU#RCo_P zyj#W0s8WlMa&9DJ^w&%@tY)J-On-v!g0v3WWKRu3tLk=EX&N?aKLAPSw3eMO-%%#% z7FU1$<&^2OXF(F|%N%~$4O+pUvV)Z&G|n7;xNQ&yZ^C%ZBWEO}xBTKJ_S~!c#1eZy zJSv7i1WstQU7!sFc+(wCBneLpTcVeQHdPsdAz3Z=s6$Z)(qaD4((Wa|UYMqh9(MOG zBK31wz-m893iE`}5doYu#z#%1&!yEVzCy>iu)`kGn)h2bjbX?c{u18$f(>!p<98T5 zoIqUuHOs*o?njOD*A5e|CFsl>@gI<8MQ0)0QK04(x@t9(psi4G(mF^FXzAk4i5vEA zb8Iyzxe+YlprxJN!V1~7O;bsSllcd?fhByW{Y3{dTz==fga9}^fajq~{s3Vp! zCa-Y*gGSIblMGxrraIzKJ*d=VOiPB_3=qw@U)1gRcB5V1h3u$%*c|#P(_uJyr;f*` zSNH`Ec?e=~(2}67q)Uirq~q$Kw^WuxY)M4aCEbQ_zJIX}+429m3&0Y)G1LB1h$-ty zgoBeNj{X`ahy=Vw2r~`2+6exjQ8PsXBa2N@0@Fp&$Neh1CoD{e!L{w->Fn6x|KcN; z4_?e5^gotMkTuA15r>lJqRlQN+8NvIaiVsR#>e{8Ss!+E0(!Qu^k_hyi#y13@mHBj zbtwFio^>Rxd>C&Yvm8 z&Hasw_?XNZoxxisT@qN2wY}}DEdfQW0SD~~VeY)eFmTQBC5MYITpqpuQ#Ib1)Cowc zZ9{UzC*IIHgW(FM6QKR##5IX8!r7{&x@1m)j~h0O+C8Z!!Ak3Zwu|>y zquUVRa-lt3f%iO_k*(LyO_c~ND|1;1gB{i%=1wEG&>=s=6(5+|D%Q`MnaNC zlk3NWgDQF+-roj1-7ic{-t4gdep8Wa>s}3XTFs0mGF{P?43b$u@<4vwrfV$NJZhwX z@#BWwlGG%gkP|!fF#10GyEhto7LPn={8Xa^a1mnm`f9Y02Y-|jtVTRiDNMCKDQS_* zk%F44MWPFPqTj5D$}Q|ifXEZR21Y&i(-D#}@dp=789hCb!6?~b)9jy34DHhu^;GlW ztO@pjomBCu)T;)kx}iCb-=QFM1^Q-Mg?;42&z% zfIF_V2YZ-CxQG9kK?~tPRyhhkrW55%rdpWY&p<;Zjrgy#HK{$74w)Ezqhnu>ik0)h z0{Fo5T)+gL+rGVEuowPfZWfL!jV|s`Cfz>a)_j{K9wA%WBKsL(hm|~CjTpfG*RZ!T zZ>kV3!Qs!3RILjtS@4qUsWxWZAhk#s7U1uysKI6Nk2o$bA)2}Bf{#!pLC^>YZ#k20 zyC*CSKdo-m7SD<-zLX)`tdy$~Si-Hg}5qgXkR>@?JQ;=ks`MGZV$g!hVhc_&Q~k0pMmn zLpoy@7I=Ou$i!PRPa{caysmUD;&a}JS2z|Q%o$6s-3-vp+vcw zwVmPkYZ#>#)W#EM%SzF*Q%r&VclG%XL0g{SNzSs}oSAt>(Wn=3XP7lYHTmv|*guct zGG!}LU=aQ*)l+W`JMS6H9KdNI&xM1laY=P#4cA6Fp#9x;_K)=vbHy$Yl>Qj;Ej@+L zbf}80fHzdGV;OGhv`X?|>0!d)U2aN{>906Mh9l`t>@THn*o|}vVj%=k%87{by$1gJ zxhR!%90+7Q%ih9%oCC(m0H^(*P<=dMFI&6(9i*ew*DFb{nC?=M?Cxoh>B2EdSPE?$ zHdwKc+wOhDu@uriHopwq`7Db1&2a^~2OVsnM0!fXn7_6jNixL|HiJ#Wpy>JfZ!O_q z>9HW&b5>W&NSEc#t0YpxWkWT3s9GSllVINRy4{L-9W|1)b)W4h?yDq-UHMYJ2n??e zcKq4k%dfgE7ZKH$4E8c6+ehcT9@}&O??~MSUt{s#zwDSJ*MRz~5T&whkAE5kmN@lA zga$oEla5z~NN7nu90eLax!`mH&eh&2{ReGs4W2Oz;L1tV6qtC{|5T|Hk75H-_KM zgVZ_;e8X9YCO}WS!eDj$rx@((b6N}C!Ao2 z8EP$$+lkJe=+c)Cl>y`UzqKKRe&3T71@_<6BU+A*)O0DWT3iJ@H0ZzbO*NPUasw^h znMd+QfP-xjF7C)>O}PkWHYCHM%V_(D>BT@*NU?#sZ<40~2=J+=XOejH)auybNN6l>Gm9Pyb zbb`BdQ0{(ihO3&?e;ZrQN|xqNl{k(Oq*{G7=7N<1KR&oic2vuQ9L^G}O=H3bqd|B3 zH@6!==X>WdXbZ~;`SBbbeu#s_IvA{@(%Op+jIlSauKFj zBxt3(;3jA)(#$cL785!G7K%RuXjP{r4|&9OW?*5VgJU^ z4^!x3;Yhhe53w10x1 zlAsX*(;)4C9G55#!x*;lny7^(z4!=qi|90h)?Y&qK}XA|q-r(t!Y(b)DDGx30FpRH z<=vU~)^S+o8Y~5*JBzK$p01grg|Xa75ra18YNPIa;X;NC!fXgk4br9%GRr!)Mb&`~ zxO#(d=hB=@3T1*7E+Yy$oh-5#)~^ad)=iX~DoHUJJ4zgaVKVqY-M_eIZGMWI4!#ic z22svB9+n*UoeOikdli@no+2Ab09&Bb3;mqk_GqQ4JvAtVys0{y%xE-wGzzB~t;3Mk zBzg6Hz)(^kMSFHrhobwC*$VadEzDOm9Vm;o<5kFCV-^Z2iY(I-<#ZbC+O1ogsM3^lFppri`M|3=Ti9wZhO&dD@GC-8fre_MCASd5 z*z%Y!B-o?jrj#X?oD`Tk<~5AF4|K}2jBw+BeY9SR<#}r|c`UhI$Hu)1fQG77NA}7u zqwsJ5ZLNC*qwvqm@u+3m8w*_JS=vI1pf399AP1T{b*}zoTPOE~j4eq*PfCXOM;p-s z19X{mG{g~EUsf5B@doBgKtm~_sV$ZK?kulL#tqC-yAY06wuWUclX<)74Ae0DUPh%@ zcr|a2qaRWO!p(4)^=`Maw^gu(-=Ep_X7&RY1IT=>tn`PS&fBCysG4=dobO6OZ~WMv z-Tg=vf&ziDr%*G_@B3ddt(6}uYAY6E>Z9Z0lR8pwv~i-%+0qpN31;~aA@BL-0<9;V z)2x*11`BT!4LNsNh-QU)yH0SE%$Rk2_-o)7FDy}JQht!*ayEc)YacdPrX+E3CUff) zj+CM5aNI97{#%HJ$eE}UN^fO|N3=EdvrT0_b2N(z zzBo^$DBaEmZq%{%JPcd^)ynJAV%$Y-b#{fM6{WU0KxMLG&t_i9(?3LGz_^p4-L>IP zRIKte#gkK$j+=_fC_;$jr|=yB>eJ+{4P1ZTqhqwRl=N0CFH}bzE774UynikG%QCeW znHyeCJYVZqj}g4I^7!0#h(*%|M4dF$ND*r_W$tPZW8N)uSl+vd)w-i|SxhW2y|={` z&M5x@h}RY(7rApGGtVZPT{T&rX`DqXry$E^9bSxnaj`>(%~|20m4Ll|8Xjc1Jg(<_ z2jE>KMQazYHgNmAAC|O_IWoAW=jtc9sAQHPzMP59M!2qDu3Bu?w=OCT(jBJ771B-q zk(PG0DJ|RQ5uso7YSighTf!*WFz9glCp8O1!P(_%;Pt{5g2uzf@bg9dMUm<*rZ{P_ zpF1d4knDS?!gr7kop{Q#60q%E{717CmB-QUyfcw&R;Oy?2(HYkw4Fp#6yM|LLtf#5EKP8i>8ddm)DpLqTR%>eP zIFfkXtWLg3KY@Girja`}6ba13;C*Y{F)EJaKjd;TODU=t3%w(K2mer3&Er6Ws< zPep|O!Djy|*lVgfjXK*PsR3=8NeUCNCOEkS_bd(@e36M|J6|z4{gv#~FMUZq(vBm< z(PiuDDuUldoM9(2BG!Z#EXK$9ozS)s!ZxoM_<0gr)j+sX;=4qT8pPK)WL^Agk&kvR zWu9*p_LxnpnEo=hsfZ~Pi!HFH&WM1i-K(Qn%Nw(!x>+g!_($0^P!AuCx@iP_kGMZ3 zyf#!op9KdSot_QdX;_is=aHsjf2RdR5e8ohkdf;o+Ab>EQJRIZR9}Ruu%i4<_yXz%%LIPi8p9J1>DOSsgPc7k@Cd!Cr?zw82PwKXu9mY(nZoVUn3**WLlcU^& zmhl3N>W-MS#8d(-WTc>u@3_zuR+!4~+%{=IvNRwc?(?uT`s6P~*#Y1<28?6hLGuiY zvWL7lR7UG$CkGVIrf-yhASCH*-+Vp z4HBN7J%|=lxo-%A9G3&Q0^GBfzeg1B<0tg_2E+OuhL z6YaxMmHbP&HV$rwYC&FgGrh?yD4nqyS~_TTXQ7IrSkgEsd^6oGCsIJR(aKySP3J2U zz4NQ>S2q4raw)r`2bwyn%3O3`>EivWm>uWJ)+~b%b_E*%d4(9CZcW>$k=$sLS=xKs ziu-bU&clu5{Uzt=;Y|2*sy9c#c&7N1FCZ#ju<`1szdlm%T@Si9N$|xGl(F>ss9F?u z2pM=&`8Lh?ag{=Ka&uN~`S$+*IxZ^|hCXs2+^7k`moK2-7g;G`4?f9)!lxlf#DpH3xsDjx2xBj6ph$Ort;@u zy?RCD$Y-b53nN}U%I0>E%%*?2)@+Zpxjtxh+i3oG{_dme&4r`W7V}#wLv#D6(<(V% z8A0v3zHF6-L3-q|)vR|*+TWJ4loDY7=PW{E`|IRJhf;I-b7NZu2fI%Q8}R0vy2ojH zUSx_y^S;tYVI{C~!KkrRpP}Wb~U6Fl)u5Y@g(3Fa*38CNhp= zeC{}4(o4MRe>9#e5lnOBL38Nnb0YVX%gqZ;k}+aZRmtd3Y$EoMaE*c&zw1lyRoPLw zN3RmL2TVmDl#kjqy}cwjpFa)$Y)<3vSPrR7=~6o<43#=yyeW9Ble`pEh32e(exq3O z-G#-gc8k4r|K5Pm~JYvwiXDNxsb&_E{nakcK95K zCa9VIKepaEI+8AI`|a4aZBK05wrzWoj%`ltWMXT=i8B-1p4fIyKkv8JS>Jos`LkP}IVUD+R7%9wP$@BpxuQWg7W0c@WCfSdQoaO{D^%81gS7!p+LE(PBc|#Gcyjg~ z%huKS(k>lGR5$tQl!t9vpY|q-s42!k@@n>Fp8vfhp7kxBb;*8KYDF!bj?b1MKkYBu z!`Q7Fo^@J@AM@ylZDdB(kWf4xoRa~(2LC&kcAuu4P@euw-1R*p*u z@)=@*HiUXi-`=-xA9${P7J@yW2Q5O4{vP^9mrnF0LGTQNrRN_&kcOjy|`m|4BzP!Z-tW#e&XS&SAj& zBKIVU?Gf6jVFeRhJg$-Z7ExbLa`E}zvo{8UIn5|s@*CA{jT6?ieVWe@GO+AVSIpF3 z@`mqkBP>bF+7i@1<5}#8_+;SU*MP0xP>!LCgbq`t*z~IYoJ^=8Tj9Gq5WUJ? zN-Ff*Q!gVJE~UArGuI01bNuQ?CZd!#H+ZTm{Pt>d6Zf;qKwn%4h>c$oK*Tr3i(YaL zll1M?p~pmuuZ&uAdkkjjjPnC(b+|(5?cRgeD7=jMxYyD<0HxE?JS?<%pb3kUhTEDd>C*Y5$KtY;JlO8_a6S3 z0_gPPedHxG<|M;>(eYpOVxr*oY~o-;=|UPEcqA2M(Dv1VLqp}TpfSY597SZKjKvE< zKmqGT{(zjPpl%>zyf#?Yji=jF6A-!!Kz57l12?bVcTZ+P%r0863=TBY#f&J-N=@R2 zT`VX&Z)T=6&IuLe7J^y#Y0I8|+H2StWiR-$-lFY3cx`ZSPTTRD@EvN{qzWy4HT&s> zWl&dE4Nw6}%!OSbujgJC*gL7&o(Hn#uoDICfWeXk0l;C&L^#NUSixZ_gH*s_se@d= zVQED;=tSPkM0LO*u|;gaAaO{uaSEZJQOy9N(5O~`VCblFXq!ebaPEFIo_=Lg7}#S# zFwqV!@m_8QS{w@LI{+M&6cQ{16?GDo6ctPijTDFrHh@M-3MPi`DoRiBgG$5%99%JI z2NE(r$fhtTgH|L7Jd94H5Il^YT%9q_qz(XvfZ7BQML=x}vgruQU>3Os4`UGlK!mZ9 z;VQ~($mDk>zHY0}ue;LMRjdd;SF z{m+8rp10$6d`Pi`xX@!1?uk{L%)+tc#=Z^R2sM8KRg!8e{G|5p~^8%uakiE?=F=+U5ZV(8ZIOc}5GkMh?~>M+PE8Z zrkot^`ntdX-|45@#o_zcm+EyI9A{@^0|oD$hiRZdXB5l);r`@b>4>jp?z7>0CF;A) z$O4hK!Sy5I4A8L%AqfVTXIIek?C1Z|VmeRcKTuzWTpYdf%%=lmc0({tkW{mJ|_=GW)T#rpd4 zRe?b_@Qoci@ab~(;^Sh{e@ZU!ZuST6!$1AF$IH}hO(W$OlVAQHdymUBIEQAhed{PX z#JJAm|6;d$g0%Y&uvR_;X^DWBtBKRVUmvN~xdWRY9|b+sCJ8-SAW!BwucvwM*2<>i3K3Ixk5Sh_V0}OAifIm-qQ&Ocj}x2?~HrT66=Ln zFcO`O->+eUFHpV+P%1L{I*K}Szgh&kWVe8BZ2KBZ<4{Ll_BAlKrfWbh2-GEAu>4Ly z%kVf~>^9ZaQG(YQ`^d_YXVY&d3DZlPb~3BN4n?oc^Mj^Ab;+(xnf5~--h$_XABPEE znc5TMKJPTvh)Laf{A&yY8*K4RrgpqjL>E8we$*(M^!`HPw^ST(HxcE>CaRbW;@456 zJJ9`oNw}1Po^j-u+q4R_g7OJ#PZ^~E<=LLJ(rVy810yHN;;9vyfcLVVrdk^0l#n!a_v zfAF)x87lOC+AZz&jsfs0kbLz|_#)iVr5>8x(+}7enS44f0?#vjDD0 zf~X4@=%Y@nbA5;vwK0ot8*@9bAbcRR9mpD|LVk2@_9x&y z+amZdn3*l%v#PgS6`ue_)87 z>@J!HMhw0b8J#`3qjdyr1=WQJ^O0H2{2SHv(q=S*mpn;_R`lBs{(<@U3UtJLr}wsIheZ-0cPadcMl&%#f{eKh~8Q z<6@B(QUw%%QF}Ee?aV4?JIThbt;?MsVcoU9eg{93CoB$MA-HkRe8TXo<(hu;5d=Ay zqdGsM$e1>`1w-wC??*t7wIV?47ZfrR1bv3z-#K+gjazSBK$D^})Tqc|`fVxN=}LBu z8sv-t<2`(rB(Wg!BD7=jkY(@efIv@?b4f^j5L=u~vT%QS}=p5I4s z)^xafh2}D>q$)ykSP+Q*z=~o7o57yt4a(#KdJjQR?Zqdy;C3LnOZy9^#naQOt)Na! z5`C19J#Om~qtvJF`hBF^Ne7q*{Y6Ey+?CKEU z=AX_a{@Ry6o6aUU0XeRZDpo${?==8$$_TsA33!a$?HZGc&tZXc%=lWEDwB#4NZ5Hh zs3G0oy>)JfEpTGplkkrU?c>+QVYD`R{Kb#T5(XpGVnORwu*%$3O8E*LAxoVl+n8ma zT?+!jpjCq?vyA_G;_hTjD$+ME@(IKMgKw%}`+y#@$LgGlxaQ}pBIvP`R9purer)#1 z;he13U3DGhTmGqzmCmLh9KK$JDR6A>mt$?5u;K7Mfl;*(p*wca+E)kOF zHbOf*8nQRHSaD`7l74pYZT`sya$Q8Pwk)*VG2V9EQRW1W%iC$4|~af;P+JKR@wKOuZbK=UAg z=a#5rA$cMr1w!lCjzMT$)8o*}*H5CJ@BCoaWroQ3 zVTg2vE#Vn}Cpp+94$+GSBlQqJ71flRSuO%b27GIC*-lW>@$>M#JOv0Nar{Opx(BzH z8J$x)XbU?>$b$4caFo#x}v4M zk)@wowa4n?H#=7_^31)hJ$C55k>sNLCp9(gGo1P~Pq+r=YTqg^rJp%ba^BIe(kV%r z&nwWZb6~B@Kxf!Hno77TPB)y`Xw)d zBf+BDpr&FJtmF6N;BM)Cjkz9V9vD!kN2;BqZrmAwy(a9sm$^B<*&Tan)%FQYHaISU z*=3CSg~#@f*XyM5XqI9MEPli7hsqdrmZhbPt%>L|Esc35r^q~aaWU_Vcylod(7F`t z>fZx=DjnV)?OEuSG~%ClLli1{d@K@tMB&`zURPfxZv-nJvFFKsH^fpnHZgc;@2CaW=|50(48?16{y#82hXgBF1Tff55zN}351h!Xb~lKZ zn3T4%3X3|-7S)m+P}G$$f|9W=n|eqNd45|uY7zF(qv^eJLu!m3ddxk=pO2!Ld-|~R&x5X=WXoz>c_y`7lGLo7G z>70zAD0u(Ke!_jO;^Oe!-dc(qpH29YeOE)B;gG+81O-uF3EG#E4|=@};TC*hbdqK6 zG_=&b4q5r8l(P_SV8*m*EcOdZ?F9;}nkYH~B2EaLl`~hPj+UGj;?O>wYZ*>Ug3$=R zEJuqIEHyrEoW$s@2juOf9tMb-N3QyYUgCWg0*wi6n_Ykf%bJ!o)#;MfD0_RoUGEK zL~JUmeK)teL-OOtXM~g+s-ApcPXZFAAeXWz3Q+3R5C7 zkIMxTj|(uv%2K~VAtV2$%5)CwQi-J9X7xc~_q(az&v?cQaCzlwc1uiQS(H}DHvmp8 zd{Asj`=PH`+g1Z3R7kjN(SJ=9;!&3}{*h3;0X4FI??Q;NeC=`)Tti}6(jw|0v9*r1 zn=NpKo=4DS=1G8oj2adm;<8mXhj3Q$Lm;&`ha7n?23Vu8E~X4|`S+h0eG?&_Ce7=j+Jn;a>n<(D{; z<^ML&P3+#AvC7Ge(Ys$2<;y}P5PL3eaLO17kTCR3y9 zZ;}Nw3Cp&cAxqVV-^mqKq1);pAxU6~a*-IoLvgWgA{Aq1vO+utYnz%64-N#Pt$Rc#)VSbGc#0nyPEW^!knn7G&$ zys)$_qIi)m0vM?}mYKU|#4cb(OF2{{-5VL1$*v7#*@G-`t*{#@&8E`TEuZgYvUMqg zNVXKzJq7ccvY!pX$r$w_*Lrq@2TwBH>`ltyt)>WH+D{vn%Oa)@2nM@&u?`kSsb-ou zunbFM(W=#{3y|(_N*Umj`5`pu8k|p~IaLFXZ zeN5I~4$3!LfZIk?3>PKITBHExf&4l)bGdoCi6ITkKkyYSRnD3hI@Q^!y512m&H3^X zll5h+&as(+=FYqU08$}nyndoM77){QYTR^oTQMoA0ngcHjhw(h4}~`0r%6Iqp;|oT zL%?jx~A-T0JFxI>aoKcyAevNIJ+r3a^b_j+cC1vWcLZ=L5Xefo>vaGQoF~oUJ z{#ltV5zTtr^t*c1WZNy{@`8%p%bBvQ)w8;oAj&a^m<+>6je@tQ%G)kK@s!UiK;3Ws z^&~m2^q*Sw{i-6m?D^}K9q7F!f)i(XQeie>G|&O!PhDUu5Ihzj|7(DKqsdq+o-a$= z8FSu;%W!)qLo_XGJt8$Vvt>!>7^==wdG2ZI7>&E?VQ4nq&B<2L)r~>l-=Nx!b{9vJ z_a4g@tw{7*%@dVM1TNK>Oh@I{=kJlAqXi8<1tphS!%)t%wYp$j`MtWjm)N$%{F`MN zrIMGe6ywxWAlpYKEtIA4S$9HF-dy@t@p@i6nrK~&$|bcq53QZLez6WHEN-P*+GE+c zsxTWKE1ww9_k))0DF$n&7gCQ$O0yA3`#u)Svn1k`((XH50J;EXc_6MiZ{YKt>rEY+ zlCfITyf&_~Yd8hRbYF{q?s?%AWYh9*F%@itvpf%Pq*4%ZTq$X= zI$2(~z_OWv?~WyOuSm&mL~FD!9jdo8(VS=rQ@!n3QzVUf#rCE(NJU5I45yf3g?L$0Na!B@VYOHgm z7}bb2THs9Xz5M%0nLs-gJc+tOMn(T>X}dj~3@q$f>d_&!s!rhvY;di{zQy^Hec4b98R}AhQm64 zRT7Ptit%Iqpt+4hjmW8txrXtZFB!&y<9aB)?5Gv)02Yoyw%<5TmSD=0r$Y$ zbETU_>#r$*(d(VCGU?S=0pIh%@BM1wcSFdcG~r(}z?bLK)V?`V%j{?42=@CQ{Oq$nX7Bxwo`x6*I=<8xI$E)arSZaYS+4r{lpz_Y#p0> zp0VziO>)ZFxyfx0@-XqP_Mb#P%^Pgu(rC-SMZA!hvMn+uR-AqKxi?oX&*$2Y#9Jn$ zzjSQ_DJBgOSu1*AEfzj_M}8EL*2 zQN}P5^3b@xEWtAR$FZG&oQqld8_a!6EE6xNT#9#dO{~0w2YdH3_eIx7z5f4(dsl0| zZhh{5+6-s4{9gv95Z&h&V~QjQAcf1^__8!B-PF}gsS(gusvz*zSs^87isvpzdLYC$ zpI3S%MEKjlw|6nO5e;lfD#%h#iQPQ=bShn0Q`k%ev`JR-mhoSaf7ohv>+Yd(8!fXu zQ4)89hrJ(d@<`7GaHq|%U*;K}R-Wi|N|HlsYE;AQ_rfuCF>x8;+*%?qfMgySlo5Ez z(EAf9b3Yiz|By;T5m_S5u7UhTYVO5(5=&$!jN>r~KFJB!YUpK_85YB3q+<3adl6Qv z75~5nmcs6hP!{U_nHU@rc0{0HX;URtT}Nb3cpjBdOB(G}wbWeAS^=a0`BO$&fMs-Y ziq7w-40`#drZ&nyiTX%EK;I0?5hk=b6G9W)94cMiXO4{S5F|q_FteS52(phjk@uUF zNxgu#Zrx$YVA+yJ&X8Ml+N>1({S)ajoB4Zz+xmEiclYm&4`b3gEJRGa*BpqTe5>EW zH@WC0Fp~L!nf@{p#PO~38ti@R2~{aCDTNIi|Cy1Zr}l#g#iodXq>|x?{Xt%UoTe}s zxG`fVHqA{N#+qWi%+jz2FtP&wuHpRCGA zWp_MbJ4Nd8BN47aj!|qG_&{tpDbr5S&ldiGd`&9wvJ@~Xkk=)#u2pf)R{49bTy1S& zgo%WJQPmTz5Zn~iYJpLrEl=qb-_r?0dLbz^9NSg`;CdEXf`(5I496B@Az`l&zwQ z3w5{}T;^CT^M$4dJKj|`iDmnc({0nfR>c^P9);#&9tj=O46o`FV)uN1L9ic?ygib) zzBymQ;}}eTJb^cO_kcmhF9_^bQjQ^UT4wA1G$w?+>iz$SV^QflYd;7!*e1+uRs|zZ zO)!K9HV2H$uE&o)zLtoT@!OQj)hb~H@X#q^W^nxy`IS^vJ46Cx-@l0vNoLii{DyJm zBaqMXmAfhY`u1@%9jkn{xUL9P{pip!H0pbG?GgCd=fGubJZZJv2XyYs@d|kGEl&?w z6~5XgDhNDbQ8Hp?spqE2tO&@nif3o8Ur%iYK2-Dy8X8Xo=GNO7{a9T5H!cZOF@CUK z%zQYldHr>6dx@SI;P0X0eI%4UkKt2!tPEqUU7dP1`S!4S`+c>5Xkn-OMpg3SYd2iR zIC=%zqKolAr5^z#+3K-;T^u!@G7pX_3*w>&nW*v7}-u!`|DBI zwW7o2o^QdMdI!_s06ep&n!cL<)9tqPYnc6;X{X+Y9lmhx{^0)P^r8*?hOs}UkWqbx zb>u8aehE|{!%ZBmYqhk2JW2ADwV%s^nL@4-dE09QY zDD-TPlKmNTnD6RF^=Cgm=lDbj-aeC1%-B!X@dMTz5(N-iEJU{(LV zg0DbSH;(W0e$}Z;K8Jn@jhL_FKH+N&uZ$I$A~gS?J{+rT7`H8_Z=o6r%vFA3yHdcX zgU1;X?HaLLYO=ifw?ZemWl4oEGkC(|h=*1DcJb1Qrtv3QC3GD(X*B~$6Q&4}=0bNJ0WBrLL;<7CbXph_ z42Z=EeM}Ce3|OWr7s(4dgrPshnFpAqM{8C%touin zCrmepoZFNssF*qmDkBR@6G#U*g-LP=3WJ~|B;5tT!N~B441l2{Yb+#B{#-Q+hWpp5 zXuV30EM3f#fS@1#CTfjUe)C~-@Sb---!=YGPdfF4znX9gj&bEZB#m`;(yshhT?oBw zQsF7dzEB;lE7h+5HDOIdT$HG3W~JkE#lIymi*54HV*>)0j?GGADA0CB%dV)c2%6Vo zx6vEBhC-+`paVL$1QWiaNCxp@;+YH~-muMrWSo3Kc}Yx~Mr_&SG`Y3zw*YaIf)IvW z%N?XzLe;SVHGJtfcd%x&h)_6jy{_ImCLP@x1-_>Ab7^#h9p@^uTc>6QBWZaknYYRd zUL3NQnz9w->r`r{iH>6YY`x*GY8 z;xN@WJYHd=E(OwmKjEiI$_rub-Cd(aMz)}IQ<3Qv@C&QRcW5-B)HF#op~^JVsTCyA zm`#2zCs|d|$$8L4iAsz@w40#i%|oxV(z}O!AN%r9$FVQe&&XK~d8pLl|CS_#PWzN7yE8j`^lB(Lei-UOrVLglG{ko}=LWB?=GI zO<>B1H=lriNTmT_gw(r8NN`Rr!`FB36smX&ChBmuxH&-)MHV9FwX>nH2PEZxUTa7Z z^R6YWvmkdKs}3@&zv%>1Q)-y1LIuN1M+$-iSbl&*-6q;wCJk82?5ZNnns||ge{Cm` z&xpdQk&r&PBB-S;N@xE!7<2~KxT+qk zHjk?qMR_!1p^DldRE{7ph{Dzh`{e@Td_%NqxR`k>`IofxJW~dL$?k{VjcgBPdHT>vI>UjxylfH*=dMTa^9LIWX0HYmVF! zIG-l|z8RJp_>mEFbWKpd*>2wKUq7movfbmjy*TM*wA45>y6*h>Xx(lENqsl+lvV%# z{ll~SWUxL2@*}Th*6M=c0$UCAor$!)D`RZzG zwuoQwIfE4@UArSsC)D#Q zpe)eS^D=sc+a~<3ERfr~JdU*b?|uIEk{a*p+^lV+W*++%p-&%UzC}t{w|$L{ho7Ng z9rgBLfNvF;1Y(jvpBA&meFeCFo0WTNnRr`4G}QT|-L{m0O8D(RFp;FzcBseZYWgp8 zf0uM9PJ!{(dT9X?gHj#(DG(0Mt)aYX`jvT27C_;|>_rrcHXZ5qe%7!%xv}l&PanZw zF#9?oeO0S~w#rcR^=jsICN5HD<1yc@6Gr#84Y{j+*4)vgOB z;I3ml#sfRb9z|TOZPPB~O0pi&v#Jo~FiU#wI4pFV?aPd9y)&>umalin?7Am(3$)J# z@`qt;H&E~UdUW^^2>uW$>Jifs%t&@UXWkXUTx;YYtcVwo$n-s<-s3e1_HyvgYXb93 z$~FTWaRSc6dxm7Z+RoAte-wiGgsIM^8jsJ9PrwJI3wGuv(#jFXEdpQxD?aQS2&E=e zeOv%D^L`9Bue1(WQ+t5Y6hhEP5Uny$3d{hOxYjA>8?rZhN7ZZR(Q)JAWU_XZh;W8x z;3&ZowVb7oC~_F3Ij~U<+rm=IL^;j=Y_G*p3Pd41_OB0qD3gt8oYnLbvjT!fop{)l zjKK^H>el*IK>^Pv;m_aaOemST@F%EA-Y{sv75-5xI9h{0uTf0`aL13KGjs7lQ~%ckHBv(tLA}O3(u**Q0umD;i!``X+$YGzK9 zp*JzU7@0skr86(q0kbn|BlJ1myc=AW9m?FI&=ca8@(Pp3SXy_^`VlcV{UR(eb!vEL zfSLJ*L*dHxx1x3{D6cc{EL33PJM_rv;UgT^#@zi-vgjlTW&rCQ7Romnj<%aNDL@L6 zF-KQMvM+23!E$5)NI<%w7D5`b^1Q;H*aC*os#0QBYIVLBli2`p%|g{;lJQewa>XiU zE{j%Z*yOhyFmY)AAqRXcUb-F1*|c#rMBVW$BVRa`rA5+eA*dAdssN*?k>*3jD=q0c zykYH7;MY>`ZVI4YqS)18M{VKYK65}XC8mN`nt3^emNL|qlHhc%zT+>N3TC9U+me%{4 z#l=!9?z#q$3;ox#hQrHj&Kc~@WdcZPDoVf4&?nr@A$Oc_wG5kshrwR)lpzG~J zjw>{dR~62z9Z27x--)MI0nu^uPS6m$q}UPglS9BO|Cgf9n5i5KH!%a}#!gMY5>uS# ziY;fGQ6)J419cE9DAF)UsJ6K}J@uePr<%e2iz^&y=}ob0a`+_(P~lt&bXNekRjBz^ z^eS7Ec93g_$RAZI=i9^BjJPxk)?wjVvj8d5fT`91AQ-}j6he5S4((W0-A(ux7OSNF zKP7^&E8I;BK7Dx3cnF)*k}ul4nl1|QSiGhKavfBcS?D6Qs5(iLjhintNDh9Ah~TssE&oSSw-q=Q4e;?nPnlt^%d%@pn(}JYrXNsS;6A&P!wUOQA$x8x$o%h*?Bs} z@&RkbtI^_jSP)?xB>=hTxOTZ9`?g`fDvjLr0e5~rvywY?=xK3TT=sQADls_lOQ5C27MRN-R zl@2QiCAQB(AP=lE#Gf#0Z;v5%Uk(w;4-u7MPorb1nL{-?wp8#6=OS$vP<=!rC0)@J z_iLzg_U_*Fk6}}tUHW{ae+)xYfE1*iRd$newH@@E5jwx(g%>|ydk*bWjYR&Uf>++w0>+M?N!$E?CbPAY8Vz1I>iep;8)7y26Ti4UO7`?y`GBF zB1mk;9pC15-P7J5Hy#B^Ih{DuT3}2zv2}1X6t2^An`bhC_=nQslRI&Y(?pumA`t!n zol18ysQC!flW3C$(?t}c!678X!5An&Mg+ninxNPP$WV_wc_S7e)e72dS^{j6K77RR zk&KO`m2$`=VW(hyMuvfq14S~D;)miC|9%sZ>GX9QG4TkohlBWshzrO)P!YweIK;~+ z#@xp5f1EYKizx+RcY3EmB0M0At5#7e@y&+a8hF^xMDh@>Ur}6=qmUy5FDR1q+3Uxp zB+4?=00SCt%=wn+ky=}%t>hCJO^*FpXUCmm{I?mb;e_uXr*|T8MKEe}dnAo$WN;;SykUKt5Yelv?+M=U<+Xu(}%DhO3Jkm&@#T!nwq*fft=@ zFBq(_di#5%r5QF>7sBcaMi7!1VO2ECljDQgq?&b|fk@cwOWWVX3jI zZP;#S@DHN2oUxSYe`_l6**M~1hdpr4>B#IKN0nttO=BU>*kch~IzRv$-hZuiNJwe$ z@IxN{0Jf81F`eC;6Ge}nsj?Cqw}*2wbs!dwQKm_Ur3mrV7jv$Q%ePY8xDpkG{kRXK zWSW(0L)g;ct6k}Wn?vgrOxgdH*2iHY`~4Grx{H*+T!z5wWpk&k^85> z!HTO(#803llD}%iIwTgs15ysohg3tU30Hk`;FGm2O<4-IWIGI9KNDkDojE-a=0PI;!$6rH#Xx)idqRg;rvx)T>iClKpV0m0J ztf-vT$z`W~7FkaK-WAjOEwKLOF1@UR3sxD2!DTc{S>N=8^fy8tPjG1v;mbR#R_)q|URkMJfcx14*|{#oc$C|gfGT8+rP^eq@qxs4cL(V$w2S}s31q0#Rhpih{MdqpHv$ox&K0JiV_yA-4IzC^ zt!*ZOkm$yNod9IZg~ghh3~gjolVjcznWp%`%V%^FU?15Atd1YbZWT@Ooe4utCF;?* z%|UAv6_~8D6sKR4^tHJ=*oU+If@W8qH7;1X9)A3gM?T~U z1DOATA1XSALF_{p#cvS%09)p%NL;J`AN$}0VjukS|6?D5T9V*r>N{+_Pl^=FC?Yj- zob2)EcBRT?M&+C4BuMk;=ZkujAj0&H*bp#9zs0Hdzt82LYlHQVB30V>-xe8; zi;MPhIE%6pRYR_G`O@L^*F{yCPAVtIc=>?xi2clN&B)okoYUKH0uXVnM>yMzL_H97A#@HxChycQ$Nl%GAF0Bj5ZpA zWmJ%1UF4oc@~RZtoQD$0%F?{q)*8?#x~oB5323zx)Um(IENCbeOW@j$U)y~<*O#07 z+e0~WiB#4??X2km(dal&K`BNC!s6u8Q9YGKr4s<6N6LG+sff`PpqiH3&B zwOVi%!Qd>v^vZCK!b#&Sri9?%#@yPT1igOff9%5^h<)&gYKfX5^{GVSi$W)j9M^`$ z#;ot_%|wv{Ey*~RTEByuWz*Y!uw3e=@MW1E(p2whG&-YnBj>z$F|`g$p)E<(fL zv$l{ys|CszSA|>F>SRPXc@l@CK|yq{W7FN8jB<<|Z=t6)MDQ*(~P!op4t3y<9b3Z1a5j~q~K z`BQOBpmf*T^VBzx&=+ zv$XhXoaohWBgzXynf=`; zx2xfJwf!H^LDbjsyQ2=0vI9VCXwF!}kiU7bpzP^hj_*YH=KN&Q8t4xQ75Yep`X&|l zxl;n8Tp#$P4;MlwJT%ky-S1(Rg&THcTloDUvO=5W9aqB8=!-5^_zU5GV-C}O7dS`| z003TQj3XF1P|>-B6}6|nHABrDaf?L3JF9bF6kLN3{7vRqSE_nWmYL!t%YfdWl5sS8%F~YiLIwKn%T)^{ z7pP(vZ?lQ(9s{ul3TdrMf714s>@QT8v{E$9oys&#fh=yT&*5BBmTK3y3^zQpw6%W> zeu7hg{an^&d%Pnxv(3*>K0J~Xl4_MbbK-@nmrhrpAs?2ZZY9>t8iSfPQ@|?{J^02l zgk#)C$}v;Cqn5TYVS>E4=~+Jbe4;>SbXxQ+midzKw zB`z?Q9Jt)m9Y$DvUpcN+jb}_zQ(oNrFQvk-XBQ9LN}cw$Sj8O z0IvwX>Q0!?D3}4D6tJ?XQth&t=dB%8id!wgltcWyN{lhxgjmveV7atMIVljHWU#4G zyl}Y~5GQWd$-e~Cz=yrAJT8J0t!3uwf}|yF1;nCqX~y;>Vlg2zouEKe;^ntkaKW{n zFq>iagA?BlnQBB4Uzcux(WA1=(}sVHs^TcSr?SOH1Heqcvw^RWw&WTus8gW0kv({g zIx+z>**Q7%ceJeFkqaVL5J@H)Q2K<=`?u`FK7^Y5@yB^`%D-3Y(rs)iWStU3S@P+UO^Qp2SAU)=|9!3{stfg&>=8d4;$lz?GGLk;BSmqHF9_wB`K`t4-RA!at?6n zmI}Z%tVTJjf74kB_B}Zf?{>geC9g=e;7HX|DBG#xJ)lq??+v;t@~G&!MLMrlrsQef zzkGQjGnlmkEuI$k50m`wyT!>|g)}s?-vvw>Xn~@IqMovgd!4v_#n4psVWi4Hs$&vx zomReTk;;gDcB47DFZ?mOE%b3YY+axK_3z>%_Jo8bzwi59B(U4p$L(%$z1{e0cecd2 z@8fabd2qDe2>3EqU+sTi0DL>EC;)nX?VU)Yuxxh+yx!iud|AE*`qK{K&w3YjMzrwBG^COR@fhU~4&v3+nua8|vkA{~==KA}}#)81iMmI1%V5acCk^i%` zKyJS6QMF6m$Gj_XYWLTHl@J&Ag;1W;!+J|ufE#lcoi8_o>#w9+OfKP07avrgh3I)n zlo02C-wR0uPKQnsJPRHhl#tEL*5Ks>blP>{ z1lDfTyoFylU+F4%7+n4OfaNDV8wZ2=Y@s{WB}ybW`QjLi8Or(dE>2vh_v~&?{Qr>eyCy%5d`%X;UFeb7bRb5b4Sf$P z6oRqb4DcL2enUjKCUT};H=|pRShyardbrJ5Y3;@N@14OJ1JA;Lr1O~HJ5CM~%O2=P zvzz=qNX`s^8?70llh0?xe70F%?)(x6hw3=C-)S6gMyEM|49t0=uGC`ug>DVcA05Ui z&>%oMi1`1Ibd~{i^vnV-?#11qxVyVcad(H}6xYSw-R0m?+zJ%e;>F!5PH~5O-uwOD zlg(x_nIz8{QHyllT0yi=ZIhmm-$t%Y!g~KpG_szsQh}N3)`xN<2AdhzuU@cLh$dd^ zpQ!4WVO}yARWAY$@E1=(VeIv~2xvJz2|pBA!x9o@vec&0{S|yD_)9{k)aQHTG@yN3 z(DSh&N1oG&>?5iaA|nvQvYoZ=?bBNk0AuYLY-YD729=-&Ey-#|)7wok!RplL`R_j! zwUq5U8olKm8cRAR3{nq`Q{uJA&k3!|OY3bAbpBJ1m){1+PVxT9>y1ixaK$QHhpcF9 zQZ1iG(|RP5X~6thtq=QQae-HX8QikPk_eH?(%u@&Pp$)1YG;p|u|*aU+s_D<@Wq=+ zvM7F~VonS(S>AAcKg3|RvT1BAH#oqjpMWlmc(9&LY~AD=>l`bC%kQt^?;>95xgRJF z=hoN4@9AAY8xjeI(&bh|3b+k7obE@!{vqy-ILO) z2|C^~u0stRQ!@XG)gFbv2S@DpZ4A66yx3#ihfG9ihPC$LI*Ty`r6iaix>!n1ljIhp z@eVLM)E}`UYlbTY(mkc29SZ-uklU_S3OxUphd)6GJob67SyMT$N^YBot=Vk9>mrOY zeW!d+TMUuRPvgb>`R~(+!*$Ll)1@fa;y^U=f=B*Z8>%Uy1J&K&t2fynHR^(WeydYe z>nef+dHrVUR)|nC(d4F1rQMerde+6+*>LiqER|j3haP$bd&r~VA$6}Wu5}+=u-7u` zN&-XXKsi=IjXF+|WH>z=p%hBGawXhv4>8=VIQ~kJ#Nbb9xP=jPE@g@cQ5y+-T+FJw zu?BvmbZ@NmsoA*2 ze)`Tp5OlV4GPpR#D;`#Kr#KN^9!TfD{PuU52Y#$9*EL~KM2l9Wio9|YhQW--xv<5# zJ0aW6uW*O03UZUd6HZC{*Uek?>>a|G{$zEx^=$l^xA>P2fQLmCF)I{h%TIXoRe__M zYEpkBR>sSpl6JQmn-{&^K>ZT!;Amj1nmNj%BaMfpV_aGx5O_TgDO`WCRfj{HI`3h~ z17sJHP0RnwFI3Brx1?@V&7B$j~XCAY1Q~X#CD1ELg0!r0X+c zxYyU5X%gY`Z+2^*zHs05+xHsFrHREg?RfF6Ur#rBY0t6o4`#a6^?VZYsurEujeH+e zCvt!N8aUs_J;U%A1Ve)OIW!{^cx^i^VE#+3?HAP8(lWN;;8$I;KlT6EOg4zpcw-x! zV{K7lR+g7=kz<#7&<1|2byyH2+I?1VRE(yp&G}kfL0DL2ZemjS9*!az@O>>=>g-~q zF$BL^RaIM3^Y37<=!tNzEE(?EoHQj3GsxCu1E*HMC48t0ZK*0=u}0uayZMezJ)o1R zx4UUc-*JtCSE@H)77%wz2UHZM5AkMs)j$;ld4Bze$UDNPo+H)hkRSw<`3`eyxdT0qou(p87n;1zp(eTCEx znk^y*b;DC4*xECDe zozV@7#4SUA+$P*AT?D8-cOIVb5RdM&+jOF8eGk1hzPSRGiYdL$HWwK?pcs^{s0nqr0r!W;@seVi5DqaSwtem~$-l`lW>rdavdEKE z_8ez|R$X@I_j1@;4$OdgtCoYte0!zs9P$*r)xx>q?geRLT@-;CPrYnORb2F{k>=N0 zaH}{0Mq(^{_Gd z?r;QdxAaLth6JsXqg@I`1*4NmLv?N5!@)#4&!4pz8wuMBog`DWpJL2uru0fjHD&FP z*Eyd5Wqnhu#~}M_*EI&8B>Gy|YV3Hl-c&{}DY~>_z6#zC7xXr$U&DfuS)buas?U=J zhPp64Qe`9^dQbq#`D-$lPN~uACaWSLA49?+#w**!lU}bXIMr%|Bt484f|GA{u1%d` zI0h}@8Jawe;Y`n?RH4~lz&VnP?3dI%6q0{^i;I?KsUGH#nO_H6?~u3^4V3l9Py@2j zlsi4nK)ucZcau!!CpP5NYpUov;uF2?q&`ko3F{?^*+igv(s|#?HXPZBdO6Xz=~JsE z4eGAA9vRofDjh*-OQ)>~ndVQnKiwqr7If1UVjSY43>HP$-;WQ6C@M4J*v*LBG9e~O z?Ng5qni1+9bU|=P=CGPM*howoNVLevWo%N}yIrY^Y41q!og^63dW}d6+1MyTT5-Jb znY%*WQ4Ijb1Oq%G9z>G5tJ~PWPp<#1c^L6J7CgMV5zE2x`T>%%pUOyCo3J$`_SYIM zs)W~IK$qpck~2BKL|33+2Ym+xzQxzkAUgjhGC+V zHpiG@-|BF08Tzk!x$XUFy8C+9FPHe>8gs%krOgVZr7h^bS`=Q{zxebKyGiN=JKkJvv6YJ+DU|||s2R1cHy|!09 zK+bZ;S$pHqYHGfR3PS|3u}`37^0dEUx}z|lcyrcg-3cN!SDIA<>rtXvdFsa*PwaP5D0 zO6FMlJCcvC(}tOQuDKoEQcWugXfA1EU-Tq+NNijmYaD_)_)nYeHlKm_f?i5$?J-z z5j~XKYEWBScnBN9BPjg^vOCICjE*PIj_38@H2tQ2A3iigyueB3NK(2)3(iZ`R_qR&5K_Yk`BW;}Gr-Afr$<`)xXu~CBF%`$y76Y4 zz@w8^@fkpp;bxZyqz?PLc_7AIwA>VGO)+o&+n7e1ZM~Y&p_<6azL^AXwNXZHA;UId zGVW76OF3y^QR`w8^KCaCe=1lLKydJO!#XD1jUyHEr>&O9$NN|G5Z*z{9Hdi71)Xr?>(nAcK*0tR9h(=Y>x&*W11SZL4 zd>#dg$iIj%$8M<~r`&(3s%n%@x@_}1Rt&9m`a!eBnX)pr?;{w85@*>t6*>uEU(QL)Rp=Fd zkWVp)b-(Ip4?vf3lX%>*iPmlpYQvFwmJ_W9ZxdvqIeWdLZ*xZjo(>fCLSsM<5YEzty|y|qMZ zq!7}@5;w9o`3`i1C1?a#xh@b-e*vfh`n1G$%=EepPwnlGytJTPQN)8Fn{dC0m>9z= z3KY|71ugGltAprrOEU~Vv?MqY7i!8|%76M_uNCqcy>V zUvWD?fy{l^z}E6dI?hlJOfh54EMd2{j)XC~EWC^yoEAmvO@csRXx-ujJ16XX8S|ve zTKn=2e)Y20{xVt6^pWBbE)2f${Zi!Srl!+XxtvZ+F>y(uue^b__@~ucyu>xmHgp;9 zlpxL#@0EQ{7e!D3Z?%K*S8yn@zM8MnSl}{X&!S@cXQM-+T<443h$>HDM~Pv2ewmri zJQ_bpH!FC!kk5yc1EsUaQ3P@2E`06<`s5ayKr^BOU()E`B055*so|sn}_7MvaD(=ys&vQ*YXw38R)yBm4Ns1?m?H zfln=*Jhis+>yZHESIzi;?T|fu~JVq}gYp(if;jIN-&SqrZMtAgCoMy3)Sl_Rm z@WC|L8_yi8Hh?IVTj=EepUGH#C27;1u5f_UV4GvnsnK0V*U zqYT2;JFf;;95RM%xNjbBqoU`%E@a{7FnUv>0<+a@n zb8ICL*%>?k-O%bRS{T(qhf)15ngt~+Qomh6gI-ygKV?fxTBNn5sP_o7d)I7;{SR}( zRbBkUV^ZM}u(Pr!)1znciRJCP1EjZ1G|B62pK=WOBPq6o?1wSR&W90KXf=0Vf#;sC18=4j>8O+$b#F;i*cQ$S`P_L7JV_8U{`Go5E-5Yk{W#I}(;V!2eK?e3F|N$X@owd-#4+ zVp)$~7~1#e;_w|46Vc6drq{%cXLOhwW1vlzr}(s;C<~EJM4$a#2E|WMuA4GoyRDs7 zq`!*i7Bbs&*Db5a956F$uYyq52v{6!JqXLeGCTtn=TZf6e9ZT`kgd_DAE*Yq^;G8X#8Ohp=G2F@ z@dpXXcb(Q>Nyf)o@_txp5#EdhZ%v1+Vbc?D;G1I5GKrQIliiH1`dXDq`sw0~RBODsPj6KsdO*`4?cbA9`zp5jcS58;h}SGR1T6G z&ErLN=1X%9c2K_u&-x##q|ZK~-1WnUTYR1W{t9Ab$VWhAL;eZMIE;W0<+A$m@D5JL zC}c$za9SD_+pq5O_wYvujm~a=Mfw+H`No`3^EvzZF*IH})^X}FUQ;bl8dh(Hek24T z5Dkx&B%j+gPL!4Wlwv30f{0E0ZmAJg6en;}8{b=dAHjc{Ek-;H`Q2JwU4t&2M>$OAJ>7<^YNF3X0pgE@-CGtT2fS7e89?F1cpHqgQtKK)0g+{o2V;f#D*+7fnaL8i}(zO4j zRxS$2ezjum_FRE_!;4z+jzX&uYc#dNbw^aTob~vaqI{oeS@lp;aj%h0#MWG*6LZ28 zTOw3yJ&^dkeji;j(>x;mALxLJ_xjTjAfdc^h`R_474ry$NmF7M!$hmLXh~_7 zRLRew6?Rw3CpRm{lDq{(?R+t-=MDcdRJCW#&-agLY>s@EZP$i+SMF;O&$1k}$>~z+n}-0B&XUu)BV{qvo2S^nk2$Q?;J~ zcNDC^Y<_FHtm2!}cLDHysEkl+4qj&Xw9dI}vn>weKcc}olY|$JsGQW6Be!Cc%Hh36 zfYW)%A}4}H;b_|e4O%KaU0_x83M@lTYYAGCt0O7 zC^1Zc1+2%>ev2m;l$g6=M8Ob7Y+hM?P0;|>*0`(K}3t^jQ|3|Dl zlH~AgMrJ8(IGAY=ENY$~qZ`O^__0x@!&B%fnv`!qQ#WXWTk+T0VxdmS(w9qqmkhto z=}M(SL&}5t0VWe%o7JmlP_n}p#O=S3pz*EGlKy!QX6>Ox1W0J>-x?OlY>7ov}=7g$%YG&tPi6$HXTT-0=g$hWj@oKRUS zs*{n95h8zQXK>J&XbM=Nr5tvNq5Sh2bUVI&m6v`R&16oNgox~OF&Q0BSPg?O^C?~E zLQ;YVhgg-5q?icYmpNm05y+@15{iv6ahde42SIlT8`y5dJVANj`id+64Y|&-$z{gV-LEp2a z&a{*c^VEB-PTeccyzcBgRAXc{X2KI`bP@W_D5F=nRbxHcD6dO9qPnOkyC@{6bf;ATMP4X&V+>8ggD@w|yf? zAzKL0sY?=1W1_%1Xko#-=GBYEO)8AxkBBqo1F`)>^(?Sd6bo@a+>EfC9bZNxhu0*W z)Ve3C(xodY2+A+kk$k~m+RSZ%!c~H~=sue7^MGUVeoV)6tL(OHctkj%RMJ)kiIZDr zM^}l8ej+5Ckn!Yh@{;0+HPv3J|FPwA)(zk*i}0!F-cIYM&U&L>&G#c{_-=9AyN&}i zq_obqRv~i&CPTenx@>sE2j6^^S@KJM-|+|D{^cvaUU~^5cFRsLp`40{BdLMv}69EE+E+8DI+p9Zqc_{ zBtfJ?!c(r5G`kpKt){0!dD-M$bib8ab3r?ODWtw&|F$bA!2$?o(kY z_!9|L$=4oQ&bLl}_ooE8HkDX+ZEV(KD6w?Olpxb^T4=x~u^Gv3aNIZzUJU^;+q-aR zo)G)1N_BPyH#9E7-0JySLcOEhp93nS_>0I@g4BFsYx8&_(yNQYI@t^w(Y?_yIDL|?ZiV#henjj5AXP~0RiJl@mD=^V>O zJK7DHMU`bNJrwA-Z(kK#ziy!FD~$JmJt5v(-mb5T|Gu`hCgT8rm&?cNj^*jaRdL&r z$l723hutRa>5uFC_aV{`!ZycrhL>Uo)#NqB#M=n;8+dH=U?+9Q0uc1ZGeDe`eVUiaYv z_QSBAHtP0%xdjfE9z5TeeD@A=B9wc)?-t$$>WqJR-6l8{{O5;paesXr^D=$e{c&-> zar(mJbm2HXvqK7eJZ)S#&|g*iKCBFXoIe&5x$ zB^%B3rl0r6>-%ZjtJc%FfCFg3Y2_~G;eGKX*{MUw_i6G?M7U?|!g0&*3oropG*5YxL%J3 zYoz&Wo_xeubTcrDh=V0T; z5muf<%D4NN$K$5={n?0z!IT%L_h;qKB@*Br0@Z0NemL*UzpyrdNir}z=8Ktpitu*-5JJ zt)W=gG=fY>};G;d_91?dz`>R%Ebow2))rYH30LQLzv zQHfz~OXQ`?5%x$|Wv~6#??@}A&X%*reiGf-UEo~XQnA{=bSTf>Fu6k;<)9QWt+wls za5QZ>-EiSZE(fXK|Cexy8suWH_BJGKcDX)CqCmjjT8M#Xeccv9C_;^|ssqIG`}fs) z6m1Xn_YkkIhV0G_=0%M$k^lo-^?2^jxva)?<}y;PYDAmF^HDebn0=)?CeH2kS8(pT zr;xbeAJeYY#7|2-da>{5^Y1E0kETi2?_*nDs(zwq_2(M`&A9FV1Rn4`r%7ZF+VR55 z`I?Lc;{*kwIM``pvx*azD*$1EDX+dcu^qbUK^K#5vthx)S@8Uk@^(y}C&ld76aQg{ zM}*|eBEscXU1SXDO?JwpvbXu$Ff5=nM5bgPbKctY#^l;?g#$l;*-j?w2y?`Sp<}8@U##a_ULG@K|M6nKiq;*+y!Rt$dn=o zQRZS$udu!#h(kh`A?>%Tc~x;BtXPYiAi+k24VksqYOgB~hy}rTaw-5#;$; zB!n8REY%38YZMg~OB)iLH*g;ns|1?jsgxE#=DM_j`YcJX)mX!Ab* z!vXSXfuZuFr)|?okgarXq?n7fTFZu)Xoamui#*-gNiVVd+l)G8{CY-6f7CXKpqEkC z-sdo&gf&|E=?4~=zKSnS!KLz993;j^J!9Xaw`Bn^t3<8^t&_Pf?VHF*n zJbWpc2uQH>RV9nPp{@VL*A7sYw&X^ndnzt2L!xJveydP6*Nx>LA$*zKd@H>zR@mbQ zQY8HFoOhdaliBKJE8bKFtGLJG1`Hmy;}HanmTUzG6d&zBEK6x zk?6(AP#9BgiPns0sn;*#v{={kak8?+neHGXyw!_m6Fo!Oh>Al7?Ca`t+bVAkcYlxw&3h&kpa9#KV8pAr z>F~1ZE-BlUhEW&92ERvz`Z16n;O8l!Qrww0fEh-0R(M3V_oX&>&?+`Vimd@9A~?)H zQng0uHm=dNvbA=hc77_GO>1s0``D4=?U>f;F#nMkk2=8Vz2>t%d1^$TgpPG44Z%{^8&-qGCsOibGBvQaRj zp>12Gy|&=CXytP@Fp(cMdF^vBV5-qpc0ZSUG4*yEg_mOE=*-b*}1h zyp;n4hReArfxjG|qnGYYYODmfo0zOiGP9E?hInHHC+c~`9N5*S?<4^50J(hp2V&(x z;dIXm%P%@{WDN+nGB>clYR*c*@_M;{4zGMVQ>VCzYVDlE|4aPhf~oI+P-W<@MXuEsVXSOIn-R+$AOo+ZNN0qZArvRA&= z0%mGM_H;$o0e?{-ibHgj{b5CgmZM5GTY=cbc-o;Q$ME?6>!VS)z)Rnrp`$~Ei*Nea zgj)nqcN^T+rx790g#!09;>o$`_3v@Co54Ma=ko$XW-G&2eY@7r8GeLXm*9tv@o)(e z@ETDMgf+-UrC+>K`U~+D-My|HVlkKWc!HgOm=c9)VSWjS+PyP&$wFbMtXcvLzGLc} zRGcqEjsy+$N(ZLyC9SqzR2iEN8=Uxa8UF%Scrmq15=6l(Y?9t9YP&3r4FZ;ot~9$* z14XSBJu8=2ilADYg;xSSm}P)gfj5q>92>`;kVsQP=c|M^M{<$OsAS$XD-(~B+;C>@ z;BT$wO;~keQ_fQ_Gq_tFW)IOp9S`Zn*0dc+y<9B!-zr?o0*6kZ2w@MMLqdCCnglS( zauV3{vB z8TH;%*Stxgah&Twsu}0Z6KAi?hxer>NJ%_sR|*AL!0qmq%(POQ(VbAyT~gBlSJ8ct zr8qg+#zmk{ahv*l*7J->q`N!5-47t#dBhiyPC!wAG{*}{N}U^u_`KuqO8gS~&;eXO+#mJ+nc+3?O8L7v_g z&R7@4F7#ha2A^ZT#c9tNd+Zv1ai%u)3lc8Kj4{9fuMo(m$^Hk9J#}Pgz>-@t@oQ`L zNPfxm>UfzOD@1Gqfer{?(hSsdh4_54{={seVRmn?fk(7Z3)!-QSKY^wEyi5-D*lH3 z9M*ik=Bq)5UDxV#NS=K{mHBXNo6}hWUop~vYvh{o@GX?a%4aqb;%_{^IK_M~&8#vA z8g&`zuN;1L7!I?{{Dj^wU~eDvBKOJUg{1P$3!nNfi-TaSUhlkk+e1{eEl2lx_hRk5~-rShO1&xhU*{p zE7kCCB6E4Seit4L35bosJj1U791V6g%sFgpl5T~Tj^ARqQ((Y3rBhbFVUxm2E%{oW zxiN{y;&!CS@*I6j!SvmZh|?QewF5(DHTFt8OX=>9u_=q7fng0Cdq2^6;7_;&N_*&KL9;uY(V@}FcD`j$UNL=1Ey|aT2}hNAbk6~90|lTK%O>h} zdzZDY899edD};s%it6hWndxw&5}f;Naa{^7(V6tpp9_Dm@_FrB(e7u>l@`$MNvuT# z%9_}VLEtPg8~)%tfi>p})a1}vPy`U04j(Jjsr1nGOR@`I@{3av*(LC+cN*&0l$T8q z-NLg*;16)V{O&*$7m|60=>YCcI#Bj+VlB6}0+TW-$w|z(0%_wbj?+wz!F%y1jkciT z{8c=E2TOAk@1tkxdLqMr@CYqz(X4pYVzW6AGuD0<(L3c?gHlD)v*Xfkl><-5>S5Oc zc-28~IbyHn6sp9CG};`LNZ-XS1b$t0kDx|{*$wNUa4aFy@!)@(ivx_E!yae+t1!mU z{7AnV8pVb*5Omk!S2bxia7@r&@lS0FL@lZOdWVY?mUf*Nl&m80UM^_JNm zQWz>?uRpGV!#}Vz7l1w;rj7mVy~<2!xF~r=N>u|kj5A9=F;U%H4K!P@D$bNF5h=6J_qiZ-1M#H;ldCrY8d!eG8oNzv#I0+Gq>WZauVM!{TS?;aag z3!?o?W=b|xh_&T<;z_aN?0?RUS=A5YNEO?ZUHTt*ocCsecjUsDWnk=R?BhsE$J?Al zTPs5rX2a<#*4ux{mOcbi{(hwEL-&>XiS#HR z_R{ZUy7@D)eqg|5)%9b-s}tJ3Wuo2c$(ci3#Tea~by#hAYpU0;>>f7Hp>)cl#gJ*~ z;?I%QqViXh_ypPd&yrh%u^U@R$n<;XDg8mu(G~ncv4E5yj&G5d>ur~0@EUjq6VDEM zvajMQ1>)YKBu(U}sT(>C&O&!i2x1pZ`j#qluIBC)JKz#LX`|x#ZJm+bq{b>kjzb4( z1l=vxxF#EO(9evDSV}A40zrbT^#yFzHos8vtBwN}FDFRO#zHZI^{DkkWoY zPZcY=0~SPj)0kKKUv0i1UKQrV{pLiV-%Qe{2nB2Zs84gP^}l#2He+E&;vby?{Uk1@ zF!D*EgyyUZNyiJ)!ApY+MOrebSmRS+wUUH3)+98BO?`?f{Az;W%^CgM8>d_I<(pAL zyeFAPk8B#6c7Z=Yj9}}*Fcn)tc)Pr+OYx@}Q1lL#0+@)g*}(l3G>zp#=*ii9&bYwQ z)}acn1N8_V<|Q4YcUEUF@ED+SsQU3a`TsV7Fdcr)o>lKRid1PyEwWubjSQUf^5oj5 zAat;v$hk_9EgvKQnZj^?kDXPSuJdiDzLGX)@Zjj@u>bfgCGFu+&{UGF$TjSnt@8qq zr0DCNF0#CkA``s+k!7t+;$P1XY4rRALcEUGuzNfXDbRBH_t6tQ0M~8O7%lPocByv% z5l;X4gXL7#&pZrbNjMqe?Q(Fgn8M)Hn#1gB?NMR?m~3g@^tfwSm?gg!DgmUqid~XT z-wyr)AEo-obSjBMj*8l?8d_bnvIFT;h}d{DGNgj!U7#LaUwC_Nx)>`2 z--gGE85tzUqnJr6BxVl+G7uasW~1ZbGHZOs_=@tC+GajVpyDGRfiSmH1pPN!Y!+BZ z`3MB%vzA6@G4J`3jTrHx7PV^Ypq}#Hg-U>z{shjIDUDZ`WndPyO}0Ub~Rd--hRWdp;y+HSNmM1Uel5UO)4>vHhVbnQ@x6G z!9NAWbUTn9_?5i^lR#qeru8mXU#BpJY)5W~Z*rzLH!e;m(@?&HcBtcvMxX(%mZWC; z5Up@p2acS$t_}-eg^U`_G)IPH7OtYYskZo;>njd7Btev30j7gFn8`nlQ1<6qPzAg(;OINIO?%L_)^C*PAO&Pr ze|}Q*o(dIBvdt^h5h{TWQ|`17Q(>lazgQ#xCQAaYbmo`Z2qtli-+Px+t!>$^ z7V1$qdf<9P1Vfld`^RFLGwRRYGhzvUkj4->{sGja^R#O!gD&E#p)acy>cJZud8FU2 z+0U0~ablO72~tHvF|D0d+JoQ+_`EcW#O|rN!uW^EjYNmqNHFi28Kv2-Ht(3lo>U4f~$MScs zE~?udIS93a>8i)5F8uCH@yU=He8{f)Z-7bOG@q;H7tS%6J3Xs%ZMcLQ;!2~M-*3K* zMoJ+DO(mD|is9(;WJqen@6mtd>5P6h8pVekgwY&`#Rk8k?Nhr3g)3$)%e;T6y-QR< zs#1pMlH0?dOqtCmJaa}2Rk*6`!k=FTJhz>ZCTAo!j-imR+I&~>hjnLHh|KVQIsjU3 zT%dA|YR#r=&ny|4TLhFPzAo|;@ z>6{O8MgtjElRo(OwuyKPJX743#J_ztabpyrky|awbp(kCm=j742rrvMmD8Y z9bL8eC`fP~KtbZkE>aFQ2LCYG{rG<+ztgDN$Rf9-?AVcqZ38l_x-+vfbAJnfb_KL@ zeY|CoY0&)#t1*4+Vl#Mif#0-8ORzo&$a>gjEs(|Lu?62R@N6jL4e?o6X0cA%8TN6j zRtc;4399r|M)Df6jhtlnD`|gpQ@q`^4uKvK+*|xt2-QK&<5K9Q6x=BYGwc<+;B)*O z9y7Uc81Yefj0xOzZ#0r^m-!IB+bv}4aqPlbft{80^Bf&|&EpjZpmQZyzx(@9SgT8& zLssz@TU2$rY}IztgLz?_1j&(uWsQ|4XA`H@^PKjwF^P^BOEoo4GFb=A$dB0nAr}ku zprE~bwZJ|)oZ`Lqr?&V#tzlbkZ4Lo@3ak~ORa6ogMFTlEVG_HbRWv%uLRFrFiW4NK z0Y2d{>5JiF6JRF_0Y{+RKDnEPn>OXeJB8Mqi?BJ%kU!0M**NJPnqOArOq#YJV}UX{ z`o)P=t0^)^cWjPqCjV$ttk5!0RNyF%Yz6~N!EOjSZ>SVQL=Qk0WHXJZXcao%;$i=h zEoBJ~V&*5VfqPZAZ%8;yWoT4#fs52m}KPtnv`FVC<%cmr^%m(jW{Nx&sqRf?> z2PlL73=V+%1E#nRzX|Fh;O5uh6IBeuK#M~;qMvWH zzQiceo1$|zB4AW;7+D?0E-vh)gi<*BM~b93njsVL$@opqf@#RrBsWDqCfaBJy}rGW zNwrde%xg90MT#)I30=F^csx78^ov2mVjf^5WW*P18L8!|*xK8BR z`;mDY?QIJtJMkQcPO!RE<}#?PnreJD-UCxC$TPLyrp>=s!8+!^+FR2LjUquS(j1dF zl0aF=Nhew3%i};+z1rIG>YUtAmEjS=C+PLaMSDEAVtJUdqSM6CQb#`?GO!4D7A@pxm#>G*#tYd!+oQ%OEkQ2 z15_~85ha)`#0MjvWoiZ1nO|S{2!b^EiJE92)AXWM!IT5q0p~dvOr$}q;uRXPrgLf3 zLwH|S@W$Q1x1$=LpSFPTEJ}&P9J(@$vf*_}>%+R}Np8W)JAtZ+OK5(q!ldUo;-{^w zZR5;NPQ2}Ba-bRdNRMD3(>`g-T>wRNM$rXYh*|AI@=sLMs}fNG zmh;BYPK)8+D!s?oRTgzy!w*URIj=Y*lRcBoPMfU>#0v-1VOwCk?DX~P`CB~R_G8KW z0to_sp(_&qJ2RbPA{qF$Er!JW#D0Kw!X`*SsOoEKhI7|Nu_Ne`_aDGHv%}fVIjNJu z`k@11r|qFVPktwTREV$}coMrHp0LC-aa&$6`d(5GEykht@dJ*i%^V8=FW#NsR^-1C z4wQ?fXU2J5fnDu10kLgcDaVfwLrkXhf~(EYggH5OWG(0{!4e$4)p~1*)ak zmQ)ABu5}b-VIx!F7c$6i^AM*x-yF-mxvKQ3=P!7tH_4SwuiFv z3Z0QJy7m|5_A;-QJ$+Jba6PlwwFVqGCF~TZNRs>-rR{xd(0|E7p6DYS{D(lUmynNm zG=cI$02Hen9fJNX1<~JzSigT2=AA%+YhR9|YiwTbLRLCHq4F;4{b$^;V4gm{ypG1B6F5ZnCRJ_ z|6Il|8slJsUCu3Stk0)~kHSHk;2BY_4Cv8a)_zq%IbT8E<4gOyY1-Iqs3RwCvaN46 z9m?I5PwUbMR)d{yIYl<*!FI%yU;0|w<$thg#geu-K&i`zlvI0w@fpYp4K!AtkpXf{ zCOJ(g{!7-VBo@KlVC!rH9_Zsd@&zYH0U~j_g=}R|{T;@m@Nbc~(Rv9Bh_*gJ2gQ6H zSyyl`Ser9r9?|MP0OMGm{uUTZ4vtw^OKTuFJ0-Z8e|!cb9bWoMn;fxHGI!3*fc$H& zbX(eEtL3Atcej`*2c`wIX!(#dcuy+^Q}=+_+n*^ve5V_jh|&Qh(0VdQ+KJFt03lB-mK|cmssfNNKQCC z1)UQW>vz77ZPl*T5cpi{O(a}8?Q;lv5#hHKT4L$4`L6995dDXA{sB>^gf=2_*bvY3 zl~z<@@w1bAlM9YIjg=wmrXKVa`&$SE=!g%FHD;^zf^D!>- zE;U|ibi)5@>np(GSekZs@!(F-;O-FIodgf=?yf->w-6i_g1b8ecLF51d+-Ez2@v2; z&bj~hopb-&(7Q9;HPvr*H$6N(HT8B749uFj_(qMBu8F;p$r<1S`VHZl^O<&gzIsSl z*u$u8GgIA->Lgl#lB(mW9;@6W5ZKcxZ zGSI#Az`AGJ%KUiPC2s&%PNkOC!x5`*Ess8EyUz@j;pGx(3g8#o3*maNXQ%2) zATe`iwZOiPtC-w$v{bgHtlzbg81aa9*hiZ+)Md|X0c^cbw2gj#yczi_A}j63%7{wO zvLGE?@PV&Y=_hqFgK;<;YMqFY#y0^=Ru^n>N6l4KwpZSB=48jtgGNg;q3^$34hwMH z1HPJT11Wtz&EMY1GEVJz{J<>&x0p7WLtxB1tq9E;8)sCL?j|JZ-;sWGci5R!)R(rk zxZO1&YId0zoLEFA;yN->8N59Cw~)Dz zah2CLuD=LrCH5ZOUHT>|Ll?lluu1(Lb$IwYd;uDlUuAx~41TOo#US(LzwNBu{9JE{ z9in7cC?K*}zFVa$WjiRlCTXVD&07^jJ`XEPSC6Z-ylX^^gfCV>rF`s4@$6ecF64d1 z@_fVE?EJL9k8xXb9H&es{1bw~y2<%#q=DdeBB%3cOxXMC=6>SITeRcX!Q7>2S107$ z=o#(r$UQ)$ZIGJ>n`YUpHv}5f4QA3s2cdxkK_CzbkdZ+quC7jAQp#FNAe6t4)#PR6 z)IsndQ+p4K|EX7ymQe>3{UxiR0$guzVd+k8=HzH;25Co8w ztA&LlAZ704<@g^djK7P?t)1-6$t@hsLFj)q@!xaAzs@ZzKv@5jbhfcDvjCd-OQ)kF zfbuV`&aM`2ZotW3K>p{%!x?DJ@NZCvAZHI(022Vi)x!M0tziG(^1n;|){gOCk-rPz z{uF>vL9RAd*6!qgt4H`#W^N8W=mC>(bX5VJ_x~g~;2asq@IWR4GB%L^BruTSp)S2( zVyr)he?`mHXeitdo$Cd^h76yO+5}0H&>+ks z30z2mM7~Zhl9^MdC!*>ELj1aF7B!ORH94!aF$7*m%o+HX`QlCV*F0~p(489jJs+H8 zH1o2B8yT&3`dvbe)>lQ^e(fKx&8W#1fm}b1X-yb*w%lJw2*!?R5%iCgusM<$2>CzW&$U1Q z{;~e_*#2P?pSt_*e(DQ$_80z9UJT18w-G;%j)d3#w@+56cjwnLIgmDgPmWb#|I3>d ztqCVcOQ-kKULT8{_6Ug;RMMvLiZW(XUL7g!@=zUG4|w1c2~Fe z%$DF(<_4x|3{SA&6}~LjP?vG zr&hkZA0hl4hZr>+D;aTJg4V)6LN;%9FEfl@85o~F`(Ki^!)?~z`<-LJvcpLk1|Eqj z70n3W?e9h}*n}_yQ-&^1w+`N2 z8W9Hh*7U5~!9!@jOg8`Qcw+f|d^qv_vcE!keYij4r|46x!O>>-*5+A=lE`KKxG1Tz zWBhp>s|+uj$yr{@n7B3qhAQ#uk){~yM}$oq*T7UhzE_ZojfJH+1P9hOzF*kW8>ad% z!luZD#!$$+(H%YDsgMU58(Xo@-Q|M@gy*+rtS5iC^_G+WO6y?>(R)LNwhRg~A5LTR zWnQHdC2G9$NJso>x^?x!Dvae%?0%kCbtN69DFH712dSz-V`i=W-;To~o#s8%L2>NJ z1BgKIOlAnyp-s;Z1DK6p^dLmpLJ*mWtj!m~@g+1HmjalKw_p@>zNJVV1Ns6OzE(KU zZSdo$aSft}t&WGHPZ~q*)F5^CxF}M_L!C=vdG*K>?guGBD5{ZDX5P;kd$@ zO{|jim!%;54w;hx=dYUxq^xb=MOrq~L7NE_We7tIvOOO%sDw9Odtbks=F=xhs;Bthz36Jp7 zksh2s9r$q~B4&iGB?Q%AS)>{JJW3vgPjtf3K4%3PtwjtDELjv<=kFLF24)P+fOw#s zqT0^{enkCPBRwTnB)0S_$M`dLIAVmz8_@4kP>VYSh!#)ND7Ty_(5+;r=CYTI;$1if zXgYFtAWR6ExE9WO6v19)h6|UKkJ<#qF6h7sWR5k$pn8NH#wmfw)CfN$EtRR2R<@6y zh8xoL8wOSS62>V38-_mAn;S_T1u{l-9P517c0WaKkF86Rq5o?otC zJDk`JW3{zmYt3XCa#<9E-qJr~WSnz&WW^n0IhY1S*hZIXxdX z`vG5o3(`X16it33;BvxJEtKP$)iYorC0A}(7+(sPrcb6b(HDjE22Dyc)^kO7< zffsIY_(-ATKUIUOCRLd}ki3NCy^cjt4Q)--IATYv9I?hkUtw!}*AY#wLV|X$m}kCD zV~7ErkWZqw>>l3bd2fgL{*@X1dxj?+rHFCaI_iOUg5!%CUTUB~@) zLn`as8m5&ROmZniB;}hK*DjRFVOT6qISe8nMg)Ca3H*ru0@N01oQ^#LDed`;Wb<1V zPqx`hJ+L_HOzY|H z_+7MV9HkDYbkJvngjp+yb?&pq^Ouw%xe0Pso!tH}l-xvD#N>uaB`;s^@e)5^5tDTx zUt8yfpBZz9SznMoPEELdSsjXQCxmGuch4h4=JScdrlg1KWR2x&E*f9SDe4f_7SD$? zfBW3xPtOp-Gj(9dTyK^fi5G*gSvE@P=h1yF{IL75VuhV~aI9|#fxW_ElV+XBrJi(* z3^DjFYUHKDAO44bphki%>rWZSAV5A9@8W%I7K_u=hEb-F?iajgF5zBJtU1SLu`pZ| zl03*n-W1L*ej;Z2^>XLEd?81|pkw45OpY5o>D4l_IQsXM#_7%5#Vy^~Mf+f4+m%wH zjANoI4@_ICWC&*EE58xWs;5W{Iw=z#hq+(Q3z2mp@q_NUq47?^lOg>kH*^GvEm1-m z*}0UOC}ECcWu?3$yin}5T&*|s# zN)GmbV+J%OwsyuG^DkD>&ef}g)jvhkr3B;PnCG$bPNC`M;OXY&v)4pXxbTCAaTg#TP=;1SP<=wcE7DV+W33QZO>va0 zwCq;)fUHZ_+&Qk!DbOe{u<~cqp)rlewtw=Hto#9!O}7Gx4!gqM=MV?;VqlVTNx17D zRMST>n&76uYkNwUN4S4!w43yRNDw)0?ve1q%zua?7FP(r zdl71oP!0*VlW7Z4LHW*F1AC1{nptaXcZc+}ht>krAwXo>w)d6^0}pp%F}v9EU8sa< z$}6;wa?25_J?%&ZZGlM8V_cnd#Y1~46z1_xwOHGAoc5bR`AscCzO4;U zN9dF@7xy+N2e`UkDaU2H8L#3E4Pe~!F_G|-E4~lc7 z1$kQ;mvLv*qu>?rk`8vXEduEjz94p zvqK0KZ$l;zzTu{=D1aR)P(X`FaTBOgbFOK}bwfO)=cx8LXYpcZJR&|v9Z zth<4G8UmOFWM|vHVR4dKozO{DXe#cqW9Xz45s{&%kROw5Wm}Rb3 z?s>6{dSR-`CbHU7d1Zw6`6B$QE1+|FsSL-s^Hp8f6bk2VZ%)*naF7UbFhehU) z)9RNBUqq|Zo#_9{DvU0pM|n$NL#GozA?@CtWV$qfz0?Y|Eoxjtwid2jB;uDUEc@XS zohz$V9LZFBCgh?KtzEUfz3LWc;V9=JK+Chyj5z=OeR80-{>35#iU;sl%(Qo`Ie5sy zS_L0|g*`*4#t~>8BA)NwkD0$_8#(7=;dvOpzhp#AX`-^TTDc|HM(YdxISwX;XlZh! zU-ro0R@jEQE%aGNz%Iz>8(RIy>q`t*NF?JN=N=p2{y3)BWb9MyEW!m42#}?1XEP6t zC9D2s7cN{nL1)y(1K}wTM8h%;EUY|lCy_9S542o zu7e)-yC>gxT|4{XU@zeneU*o#;Hx7i8FHQ4r_7p2R%+sk5*Ar$IYiYnaq1_hzQ`oC z|Kwhvm|U@jS#e#SrM9s9h14J9zFk^}T#&m{Ca(Jylvht|+7ur2uEPDUS5_zWyKs}g zPFOZ|wEo+&WQEf%3eAf36V0aMH@Kvd%vos#s`7O1;|>~I)$V#s((jZZ9Nz_Pr?8pc zQYvg&4>thPIyr*J>l%qy1j==C1-;*>_0;9m3;=@^eVYY5#Pm|2|uzpfz_EIot z&KWis=#BaWj}?TZ^cK6l6VQE544tqyf!_euxaA*hc3y{%kQX)+N^j*&cqQ{?kBr|_ zr6lV8u9njv_VqmexqlX zd)COMPF5}6=U zQxOML^cC@Wx(j^e2Ldm+=^8l=!CWr~zZ2u|zbIo|0zxr4O61#X;n~S5mUA55VPSZg~F^>M>3GRsPLNw0aX{`ehg0 zoPU~R6wB6t;Rl$N)TBm3<@6w5$+G3-D&15cpjuZNLI(9Ro>Nd%NKX`^qzr=_|C6TE?TT*mT`rKIK;t-C-u<2U5NNRK%g($1?Mvkr6&oTQOt=abj&Q zoZlNf`)rV^TW__Ml0D|r_G6ByVa(xBo`lRc9^El@(m^iYWJ6NiJ@s{Zapf^yLT4w@ zv>A#y$U0g6yN_{L&{zg{xpS)f;Ibi)DqT5Kser`W7v-f_`zI9kFau|oAYKB z%$ArFujw@J`(R3#s2Jnym_CD7z!Mf@T|%MZk7Kbwpd!$&Ko%)%tnwJh#$7Ma&smL| zFXfJ&SR5_x%q2z z!niYS+b@{!1_Po*f@Tx}9PV?xQpdQyeYXX0gJ)R=Z>JfExmKXMQ)#3XXk`Z| zmH3mlm;#}SNO&Y9NOdte+7%y=l<+m5h}7n^`YKVE-X%L~pyC&4(SHgHD@>h&@G>2^s<9@e-0#yuZ1!Lcr_Q%;vPi_WPs1|4P?=sB1rH zd~N2Iw`P5B{kj@*HsbjN{8-WxN%y<#{iJ>Uu%LZBCcCbo8|Q7(=70D52UM2e@XM7b?`fShrc&?V2W3Y{ z4-5GPjJc>mIos{dP>JZ8-w&c!n>QyXZp~l647L2)IerlI$Gy~Bj{dzfw|0C9p%P7I zirZcPGIv@9DS|tBgu5|RK9f~j9lRmwU;o_g|M;QjRj-No6DJB)5Dg3e#3Eqwm# z1V-N4KXbw#(srI?2^!XC%(YH22tI!;gfuF)zfOvpA0_2G>QWwDaR44#>btukqPI(f z#+9=94nL2R@^w%d&wm|qcr!JAe0j#8`1K3JB0EjSj~nmMjpDs++%*CCjphlePY%&M ziWEBfumO)k(c4j`z8)Uu^e#H12%+g{QjC; ztA;rZm<}h&Avc3?lhG2<3LDWN1lGS`0-1dVj+@PuwgSq7ziZJ3P{D;Gr<1^;$p#nI zT8YKGNZy@bR;#_Jbb0q>r57X2*`wrYtC7h3xDvBw%U$T1OYrqTp-!IXYn2`spLiT( zl?ZYK9wp*u*dgb}#e+%}4amI1$5^$2(<2@x_cT17;se4Kq#H3?3Z@-;3jKBQ*(sT- zUl`c0EW^-s8IE3Fs8h(zS7KIgB^YDAXS=a6h1o@Su_%{SNSXxgScbh%xggf^W)G!yFCe*dxx5qE74n1Jua80ZuiwP0P+1fA`f zR8X%1BAUWE0KU>XvmA~DxB(%tp@W}Txn8UrM8oZPdSyAX!32xec&Li)>lA&Y1D6tc zuj1pt$$k2wiX1A7FR1}eA} zYgOM9)zf^@p|B?i0RP}{wb&dIU~<aOIK0~{n>A(cYC#q0C|vG zkXFs?AJiJ^RGpPRA!(h?3z_ol{s!yr`w8zJuZw=}6juOs3__+=osCSiXBFoB+Ev(A zatmVmEHF^jn2lV|$P9@V1=yTOWxu8!YpYZVIfq7{Cp?*EQj`c z53|NJC97*<8uGOlbsTxKydi};R}m&ehr-a~ilDGvR#mWEEW#x#c4=xhttZ#4MA{y6 zwV(nsCE>T%Gse>WaNM3xuK3n?l;UR?V6g9oIq5R%P)W!ikef2iP_Yns44<%$BA+t~Gp}at z5utj{2uMWi6~5LtHekTB%mIWDOxUdg-yeuKwn)TSc)tlU2~F4-7)5?W9!8TB7+uC$B)#W_s}$ zW2=GI7iol+VYrM2aL=iLM7`!uuqRB?ea4V$y0_@td}a-fdn5a;vpV;vT{O?oqNT&qFtk5cA-zQ|x98aSaXP`Z zMvZG~>c9*+n##T-th#5niNn1ypG+kh zA;l^FMK%4F&M!g^0hW&9Dfyi=r~sD2#{t8r-%|F5xEyxLhTN{N^0l0>d>|eUUok|2 z#+xRNOoo#++v$tdM=g&Kl6#FpKIcd3m<7*70yLpENc+-q8Oio%G`X5yR91OSq#SlU zZmynUJOXdYi6du+IhZU$r5iYcqA4xM2BR&lsgw%%ZH_QhG4|^y4;a`I;X}z)R0k^g zC8jz|LJix)$Oeu)0LG2FuMoNmT-#RRh4D{yxMQXWd)In$6H`j^p~@&*x1YpWOtS#A z2pZfKZK9o;gY0uY~FED+DGbq!1~FBI(g{vV$!Swc70Dr5w5exl&_SzPz|`!d)qIZB0w`0 zNpw@ri@zJhumrIqim_TO`vG)l*$<%^3jb0{1RuSvCu-zH3VxTA!nJQ+CCrvAlK_2W z;sm29WllUnzo}xhvq;$wOYS0utopR37>~B-gvZx!sV!r~fj&BQ#!S$uu<(1qBC4o4 z&pBlSE3>L{N$oDloiKL?=dw9{lV|7pswK0MrawRG3IggRljbMra7&c{Q+{h>4aoVqDWiU{G3nd$Ojvwk;;2nUphfSUX75 ztKk!x3^_Uy$Ak{}RZ{NEXB{g!ZaDk2#Lk?vW2lXWaO?R@DC(A@OhdUUCzjvMty+>l zR2;+Xe4A&}BMJI$e0w+Dec8mi^Cc zZ~)(-RF;qaN9eSz6uaLq7uMEt;yr&DGxkQo2Mj1=a4?%1+u4t?*pJ~!k1qEyEw>PJ zSUG@#i%@7|gQD~=Dxctk_JUS*aXAhlg;G;@kqK(@?eJIF!lkII)Kp!1Z8&qHnRZrL zo%8}O9AY(IOg7aCTiOlLtumEXFH0%gbQi0cqtlwIbQ;t7x7t@&a+_(Y6@yk^HrIa} z4j%0b9&PoUm)X~;zN=SLG0IRM&A0GQjTn_J%GJz$l{ejnyoxtt5}PFUfiff{n_+cKu;u7$bQF;**+B{65&4vd*h`1)jR7?CDm-RN`~M6%w<3e+OHvl?#s zVH-60IuyH+JcfK8SllAul^!6R>bT_w{4(2(+J!K~oRdimICQ&7K;?>;bcQFuz04v} zQ?1DOgtMpbJ59SWS#3+F_Qs$woW!tPnvFj*rKltxSo0iovIR+(Qx*(3maWcUu%HUX zpPAtqfiB9^Y5d5KY2TRoGGEj(BwM5Cb-b?gGznFcx`6Kd_>zttTYV-IF4%EO zsa@>nvem7B=$rO1^=Vxl`Y*It@;CeGnl6ZF9Co7J)&vmh7KdiJ?kJ^?UyxI?dd9h% zPPY(&fx@I0AYjL?Z3eSU>ZMc45Kfv=;>|EN=q5T7NDKXJ4lkY63yrR%zZ+`X8(rv= zugQ=6Ndl0LdZLs;v=_X37=>KP#$%@hKIOmHK^%FLLq|M}eh|66+r&GH*tyf5Ysr5! zjEY_dycFnwTz|DWgymx0K!S^Sk6Ff;KCny@V*G0~te*r}Zqfa5Nv~g;Q_z8Tb2W=2 z^n~d(E6wShH|dRm#h)rf8WCQ0wn8}nXrh*KNcZI1a(Od^Gp*j4WOw!Ld|gU@KcnP< zJ{?7C_prSMfs1nCRt34M7N9m(A={U%HqrtA{Nj^$t+Zt@^#@Rc+7 zqbK4;J1Jd%{EHX+rdXlQwJw`NX8Urj6GEvX2Yl2oukF9Ke3af-w3HJcIU$v3^h6e) zx0%Z4%BOSx^o=F4+j}kdW!(#cwOzBYwQ^@sSo4s&X@I=(Q!4>{I6VE94_G0`LNdK8T4 zyA$(F<87Q3$0eaj#Ayk|+6?2^N~bp`B^RL@#$x4ZXAtI+c{hD2RowdZ0YU-}k7g^% zMBq6bVUjk|AuJpJtXGKMVdj9J$~*t0l|JHDXw~d?Tv^kfiM1y8w5n!&G7*ve8d097 zInE~-&E-B($+%nEeCiG22P*BOuPP@SocQy-GJzCsJ=1AS?a=aM`iGCRNN5D6u@am8>Cr!QYv@9I3^M{Re{6as`3@m_ z@7n(5&nL1xpS}drIqK{b6?R)3I#v%s{!jt9DM0C%YC1o;eG?9%?BR5xaWTKr7YeVq zq&J3o9<7~zOCxBo5XA?8yNFQeeXxlq;5^c=HG#jAVDQ4tm!^tWNcLc`Y78dj#g$y8 zZXFX$Roq4NVKDpF(V)5ivxc5ARogpX7q$Jkk@0<^MYSX9;X`{ASdrt!-KX*uorWg^ zHH;c_nP;vAGQ-CcWw?#viRb#jRjO{av#GEMt?oN{*xuxIvbU3LuMGXKU{Qk4k0V59 z&dv@(j2ueiN<^j47a%auwSDj#=-xh91g6IYN`C<6hGraqZ;=ahRsEh3K_FvgXyzeU z5#~D*^zaZY4Wjz9m!c5{oosPiNBp-X^7hkiJ`H_ zU`=A~{M02v?PKuY{CsS?d3Cj(L_=>;GKQya{G1>gcp{?`-oZ((^uDC`Mfu7hh5 zxi=Bi-~@~bXTZZs1a&z9z}DBse1qqI(H7>Vv2F+MFu!ypD;k6m;aOjQB6bFPr-~N=3Uf`A#@ffVE{thaC0j47T4<|2x90gMGQ0QVp1RV(z?oiyd7uVtxcZ$11afjmW?pEAw`F5ZEm-{4{nas>N zN#^Ei4K#2Jit7gKlJ>0HkifuXE5N{z!N9=86y?PnOx^6v?Oho??QGBW^<7puvHUjE z-jMOn>uCbFEQd~hno3q$CQ#NZG@p}Eh;Zsg%qXehf4uA@kishG3kkO)RyGo{qKfb6 zZ4s^o#lk;7|C=3Z+jp%uaw_xF9oxM_-dvcrx=bo6Ckh4n4i7Eg(oRPAoUFb=UO6-RTs9nYAihrp1$?%ZWd*bZ-@FtVA&E5{4_jptbh8@s*6d!vNAgP z;jY^o=$Zzs4b|^kIYJ(-$m25vCh0b(gN|*}=p}+S^SSf{szED@uUD`4VOwpwrjgXXaf-sw}T zTX7A^?tRe(CvZD<8=2*^R_2_-FItN%uXBR9bOZtMtKCC$jN;pW57XTqKi^J)pU_PM z)k9~x&&=j5ZOC3PV)ZZx%=IgszB+|#-FKGno5-X4W$bzPtA|_hl^H+qsd@s}PR;ju(9lBHDO&|NUEUyZZI^@9pt#-DaBR`%*)deTlJ`$3gTi&+cp5>-%c$ zxy~GrA9}ueAHCn+#)0_oR>?+r;lTgycDdX2QP^|n{Z^Mse|Wm%^W#b&d*U0(Y&IGv z9%3N5w!o&}^Eq}_y+f`zjqaLa58WEgjXBB&6Bhl?7GBxidfgUWq%56K?)oZ(N0ilF zWT?~IUDjX?1TWYaS^Z7s2o4+>`Nzv2uj1nX6c1t(C6`7JEY_7y>gDE3&JT^o9-|OM ziA2QE<=#+3LAtLf&mrLMLEu%}gx`!4=Gemq{Gl*(kd$h_SGywWPcH z%|@@cHDo2HQqQ{3)k0ofx$PdgcLDCf&Rq>50`WJU+PBTp=!XojhisQz_KMz@5y|Pw|_oD-OfNt-epW*r>qvprsyW;jUWDicH~2Dkq!4WMw#MIMQMGEwG0t z&G^;xG?QfJlY9l$)m>pWZ)a*4{l;0uM_Fpev^Caq;jfUtu9`i^@8Udfd%3Mmef!Rm zlXwlwE9b+Z!iZ$1IzQe0^^7kS5FEFx^ZnELA*y{3YBAPzd|X3z&5X*J*FG|(9$Meps{w`6eb6NtwbzP4z7m@u_Vx2AP| z_m(6H5oyh;sUZv7{{W6<$5d^RkM;rB;8yBOmCA z_+26Gq3#!6<5%-on|6V!;*56AcGjwbHW@eW$&%A;LWcJoF3g|MnxPYY8H%>6uBGC} z8v@%MYGE95lg0gvMz{9#66Q+P3orCmR;#yn&9RECKl}%s+&*5SOZkeEgcqF+ z+7RqblcgEiE#~jVfYti3dZfxJSp<=-R7r!kx`AXLUJjPF8i8BAuRu;&+j$l5zb!E6$gn zSP|t}^sl`LSMA+(72M>)dcRM5I8!y*07w+csQXl^>fs^--pm-MJbyLxejR}_Ia3*^ za{pb^8CjwwE#W2QPcn5j(?6E#l8eBD{eD)yMkjRu@HEG$jqEJTyq=H@U+gOY0retv zkVEp{@cA<3%KAnYJo%aitt?|FzYhO>i`n=b0%_S*4~pE~8(_+GxhptaJheuv4EENm z&IxjTz9rFFgdu%(><&GV^jut9Nc6D9vOOrhk9!+l&}OpsZfgB!nUsZnS(7Pg{DVwv zoD#^n+wV+x3>7W~cYs@C4*$m20J8Q{+W7r0lwnqz^Wrkj#BSL`B zv++ZjwB>(4QNE!Dh;BjCgsH7;Izb@;X8&o;x7UbqD)#g#;| zN%5q*6n)1I>P#+Lylcb*3lP1#T!Rf0GN6OP4ie3+rU-V$@PrFX!av~pTUqqG+J8~S za6So^R2w{ibvTGe4TYK?GgT-QjRm=8+cyVf{NuL_8Mm zcRcbke*dxg6-eiu#Shf+r90WXoRSPhSEge?nU>fDT$!lF9V*_ZsPK3BiQO0BPbUO2 z|Iz!ijJgKbH{b{jW6$=T7mY4nbK5Y-~T_Ua0{{RlhDqj~c_QYX<64UhW zPUDHpESqg2Yvmg(oxo^a-dvYs zc*c0{7}%0Z+OJ`l89n1AYG<$&J!38EdLfiUxS)LcbCKIpX1OFpoy!*gfMi#SOE~KS z?Y&=_ZL~e$x7u5bXraS&$1N(TqIg3kxKxspp!{PU6?FL8xqFqKc z9e~$}T%qDEBY`OmryfO^vZjMdf&r-uEx(5HB}9sH!H|aihlM=)p6<*de%blYwl;M^ z^#oa-Qk^F!Bmfd7Mio9bsaev!!Y~(rm|ci0p`N8h*|?VzpXYB+B$Yv2BuS^m*v zLWRef+au!62p1Sv9bPvI^Hq;@4jJFI-XEHDE!A~-90QEUVIP(}kGnfxVFhH?BGW7x zh~lYsVWuw(BeqgtBZ&eL@3??W%m^nYf)?mU>1O^m0rVi^!^BHVp+F=$CTj{s;f*{` z7AcWceWii8ZNb;hZq5%1wM+9XC*QqI8DEbqBA@oYS7DOIJ zgAh;&`R6w!ctrmA@VM<<|HeoKmOh}5p;pn}w)Mvaw9;m{uXi6J^A%S>GiC7e8mvjhbeB5%w5 zccXs1v=;hb0!k8^C4t00*MUM5UXZ22FnS5VcS3t_HXV`Zgm;Z)Tk4BAus2L+a^(XS z;_h*;RQ++<0Vs)OTut$PzT~c@G%on#D611alVOls*~uEhbQTX$&yieK1`E&Zu}h4@ z*|3v!`74E|SWhMKkcbQM`9b7dkB$gdX%L4cW@%7iI=2TiA48n|lW4(Iz?=7(*g91_{s{|Kr=%#}xld{+AU(gN$)0IFt%aA%9Ou5opeCuY|%{{-t;` z8CF}!r>hq~@j9JOYFxO5Acb*~3~{VegZaa0Y~bVic#^5>hu_1Z$2X>w9D|Jx@0a47 zjSYd$=g(`|#fPik+itAjkN1L)*Sidd>MWM~XClM*^W&Qfdjmk=Oi`$I#sUxX46k zc>eCi{4e7&ZCem8wtTkd;QU+jx6k3r{7*^I z_1h+avxeA_ocf0$;6oQ<`0K47S0~u*D!)ecUFh8|TU+ z>g3va2`~7jGJO!daG4WrP2KtLZtd&XvfZHgYlJY{jL?fg`dr9 z0yVfj=$c?&|8mHjA2Uk}FC9*H%w7cD;-0)`X=gEXoTTs&j?{sO>!hr;y3I)bqV^^d%abl{Zj0EfmUMVd4bhD51ySuy5fm+O+y42!PjhC z_7=ci|EYev*+IB44%<^D^CnsZH-fQM90+uvpNrK6f&BnaC0YA{x;6ZRpnJdxL`+B2 z&mt7(rygE@ZIef2?k8ld9$v7=_DZ!{!x^SdQb8~C?drD~3SSegs}oX1N^8w3*|6Qh zr%cz;7*TEpC6iMyMn?bUnHXSP;?g-#2CsYIyvH9E4GED%x_9q0B_;K?bf*^MCg1*P zgfM2mA`28H7w+fksD5hUuvwGSbrIUa_|qbKtG`8{Ytt0$f&{aAO%C>NGK4_#dTI(z zKU0tktkZczDYj3C8VWA(NiVk@JpA|71YvKRB$Pyi{wj|Gkw>`NmN z{JrraxSqR}S?+KYwm!lM@)oH(ThQBZlGk|-_F0dQGfsHw*@_@dT!ZG83rHk`zZ$Zo zf9WUH{9ka6RY4{t+7=2uj`?6GHmvRsI(TA@weFHOBiMkjJX7=sSYsTNwB+aHhNmDq zC00IeGpC_rv3`%-zkt&E+f7|!EP{EaJ9K_C5}3#Fz+a*EQsq+ePrO8UpdcI2h1TnX z9AVi}$el@pyjsv9yT^qt{sfJoJ1Texy<+sHQ=;ep!k!p6ss!&b+y0?Xdia%#!rsGL z9p?I&{%F6XqPv^joG_4!nE8&;1o7D?RT6ZijoEwdh#WHs4RFb9Il+mAF*--ZP=Zvz zeRB`XrUt|%*FgoxVqfJkzDyB^KQb15(O{jGn@UrKDNuf;qR+8Xz*pb%CoZ}LN020I zN+xSC0+k3FXC(jpu0;9bnS4cLw1QKLi|*hL5go5ia)hH(-u=QoOcvnnDTFhA8@Wwy z!l>ZDC%r-v2e6|?lG9)_gBV?eaQ4$m%bZx|)aLpjd(~ASxl>_4gWZ6yyAV!ca-Z!Q zJyQTeB}xM}#gr-$Udk}DBbR0`#57YcPa9X>E8~|sqp);D*RbLW=Wn2fR*_r!Blv(Y zWP|3R0>~DqCGKG;HMBFRWY|-%8eWVQ96`BBNTLF@d(;uFJUkv-C_Js_|X zYRNJLIUf5zrP{sGRoYqO_AIr}Ku`NfjguK*2G%d_APs60JQoYR7(7yI2y9g${pp@c z`~(3|+RE_Wx%l`RR_%}@>&WANwM7!|05-snW~E83p4D;Q~vk9zcf^6S4|Q+Su70vXA}38 zu)jH3av6HmNr($F`XQcf|5N)77yNw2H}E(hlYKw>&ncg*GJ}SCz5EtlEKDcgB}ILJ zt$eZl-0#B`aW@-veqQ0pJP6^*)YwYvVGREZqa)Y2>|B%i2yu>M>D`xIJRQuVt*OhI zz(*e;%fu23dy=`&d$)yvha+Gsx*wRz?T{?Y_6k$Ozt}%Qt?MR7D{8)&*I!&!Da#K0 zgCAwhmvRc~8V`Q9Z6QdS!ZMYw5-o)cZ!TCD^o9#uD!>7Tmu z^lKQM_u*ULzspu#Xil}>r@>~xkyV%-HesRWHszu|p9>nFE#0@gyh|dz`f@33 zBmid!fmXhUtb&EcLy0vmmz|W=vnVa%%NS?U52~FXD-%+u!Wys87;l=;`b8)WPDIaq zrETMN9kohpW+Nn=IvMJVpZ3K*MXO!MUl3kBEOjv7})3)5K7|nWuN8) z1zTf_E5we_#QsuNo@P^U%BqQV)L$aE8lq($8btKV`RS~U`=voz_-v`H@TTySCPJ$Jy`a$o;!#eGEkQMB!U`iH=MlAXY%07&9{$1 zbzZ?-o`-^rof&5OSjPOm=*UAN3w;J3MtvM@Tr18V%AZNtGmXLQU-*N$4pu~`Bv+;Q zH2sX%0j@89Qr>_w4DyjeOLxl*YZhXiU4yFSm@4~?t4=NOiJt7opfK=A2xUJ5(z9@K z8q_G;pW<`+Ok@w<`b$_lw8@`TcdgHJF4~HhazHg{IvU$7k$&bTNB&-}l-|Xb*(^0F_K{?JLcu~_W6d)IQS+s2#uS5zj zxKX=}!-0JBg0g}9QYbMx5-=i6?Q#mFYlDylj~Qz0P+oFDp31RZ=@zd|!ud z3U1}s1hposfpf2feDi9aGJW)ESElUllPTCdc66EV3U_@vuBC;wUlEy~;0{ ztS8O1oNVo@C#SbLY~rL$KcTnedrli*@C4CS?HR zm_5nQ0IcMxHZoa48vRh5pWt0%!YPQHy0*S#s@ z+#BCIjg`uZ&3Xu=Umt~s03>eZlO;U@QhM>nX1*$ zTy7(|C)MP02Yf~5@Zbgbrr&4+nEm0gFbGX990RI{A@=FP}73o;8M6N z+ZA!{vIEGq#TGt0lotOhIY! z>2{FD;LC5;=axIbkxeo_>xvrO`NHucAPYmbe6|n!m`&zFpsL{5Gjt@_G#t`nD@KCR zljItA#;9}#FCX+&WP>=fPu~db{@v_AAkB$&<}t=o_xh5x^k=pw#TEt=d^Jqec?S<< zPi*u+FEo}$C~bkNL934lB!Z8Wz6C{o+`j~WPY&t&o8)BxiM8n0G)(2Qoy=IPA zPEI?V<2UI5<6CJW$R+v(7R&Zk=H>8sogoOm9#JTX1dMC@ zh+spOvO1<+j(9eN40^%Y53Iv1>zb?|Ka-?QlA7%}TP%um3~tr&?^Z2jwB?ayD58$B zl{tna)`P5!Zpvt60sexf2Ud%@uZOas?Djdv>rjUP|L2d;OSl(j^Y#N4zLGSuTjoT| zrS)*R0x_2trZOkLooiGMF27*>Q0Z&2LM~Zso$?J?(tQgi9j}lf-NE2pDOL#PR*ila?6`Gn%e{-7PA6qlLIK=jqJdGY$saTakC!$zk z8T*PJ#rdvj_mIOP!2oq+zS{rD%e~}Cldl5MI+7z|z!{3{&`BLSS<3YLdGu3M2FQJg zX>=gg_H5ZPdmhq6b~fZLIGz|W#1s)ThcpqH4e2LX8*JoSjl=QO9=%{vIa%7;Gucfa z$oN!DcEm^6?IYY3s`)N-M|Q$HQ$kpjESvwDTZ>@2tYj%2uB~LhWcBMcKTETO)lZBrT>%T6q5G0h}M;$ECv(O8onZj|ecwd#7lPU)bY5VpDbW_&k= z)0QSDV;dJb|p+s)eqrVX>>i4Y$Lx(iM>Uwi$>l5&`)n27X0 zb{>$-1~o4}?0XANAAU&W*(m}9JCpTT)T9`&GQCa8M3`V;GKs=`xPWXd{dHP2#vK7UMi8`CN??QewcfP&S`FB89A;Q z^9Jhj1JT>!H$}kjZarfaXz%jkc)LEiziaDyyZ*Ny6h*Yz^>OT=sVVsJdUI^);eB%- zM%Pw#aMIQFbU1q`2yC=_-|vquUTg^ZyuBXePt4#}Z)Rn8c;2j!A3tSiYIgYoqh71? z1Gmr1n2TMody6?-WBF<~ys-@uDk z>&w~t%V!PI^XY9g0~?u9P7m>50E6lM{mF9H_2X?+^IJ0$V7NK_&37oT(@xMYyorC% zf7P;UqusA~^E3 ^&lmJuvZpKe!)X1z|tDCQ>QBqWgXPgRor~BiJfnrbv9EmS?GS0Zm}m)R|?A z+`51+sVj&z)`6NtMeBdvtq`Z2xZl_INZn`r>uX2kV(_je=jxF2klj53yVci(jzpHEDV=_yDvapknIfen1qP|~SqU3yu zYh$f7N=*7$E)9{gm0n-#wLfct5FxNS+1L#Su{Zl40|FY$ATC$_t>Jb(C8VV~p?VQd z8Cqx(I4OVKhI)}T!O4-fRaT1@h6%WME3IW9L@e-t=84b4|FkFq#I`)bF!8xMH|K2j zo_!s>1Ej5MQdsG;J!1m{NXPwYh2;7(8^^3A3rK;FpK@80L$bskKBk9Am&)Ckx&pnJ z)t{xnOmS)v1aQ6V3iiY5h(vFMNmNa)kW}lST*k5u59K!ovvGPCb+7=v}+CG-Ty#yi#*u zx&CurXtTEH|3n44v4n0ZtP{w{Qvn3B9LqLJ6pYk!I9!j3NrG;&Oe!#Lf5elaF#@oz zB~0I}Tru!1)*d+mF5SLU?I5||Ix@x@NA#nRf8DfAIls~M7q@%*4mdC2X#LQDp~Exa zV^7&n9{*FQoyVqtyq+!<3NzDY_YaKFE;nzRObN8}&11`!pNn=|#T+}uz+D|%2F$8nNdq!F~r%5=}AoCq;Yiivw*;#*3CrTm%U!ZSH{2vLvZC6BCT>> z{W^>}4q^uV2+UmtO7kx%Fr_$pQ~j8FkwYJDKR@T#VjnLb&z%T@5>V;T7dIHwvt9JD ziH_H!@>w#4V6`i5-!1ztzu#DF7M;8$1NAXNZ9V%oiWxyfzF)2ku}^U=ntxRv6%payG0aVy1lu z*l4pYAoHLfkzAoSzn0mZm^mASm7VoOF$1mIvT9-FhLbEo0^z1bF#LfT>8pp_2~L{u z-oj!+TyY)XEw0Yrs8o*HLkjJ?m&t3FlnBfsU|u!@ZuoB;dHKg?J1_{dn!@gSNfKN@ z!)OP$Qwk4FRE9YSg#fbNfnyj!iOrgQV060u=w&Pq)Ltm73`5=aiqmO;OlKc+s-vZ? zvzjKVfkFdH8j>)tKT$47$W~H23}y^2s}d5VQ=2srS#fC{L@Z;^%g?&>R4`OLlox?_ zFb1bg-o+Du^U!oYa(r6tPivG5i?IqFK)@-Y$LW8bD_R=<6>x3Jr_rG86siQ<=b?iV z$LRTMhK6t`?S!nKT`RK1s~=7Y~M4v>v(X2OcQosjz?!Wqu+-}_3CrnP3K zn;I|{ylk=XQZWOw_r0s^@mwGtmPu+D=|iG-v~HTkcGpRm1@PrZt3#imlrk~PYNOYM za>nCYdpHP6be8-=vViEU7uqDHGOjIf5m%zh;vqaSV9}v?Na;}x%sPbTd-rl=8ajuB zX++yKUmI8){RZKs&yjiS3Q{H+fwK1(eG)`Z{ey1?nzK`fau;p`b-n-SAo7qhUGimu z7T5I~6g3b3iLTvRdCp)~Q4z>w+G`xGkqp{F^bFG6I%K_I)7%FknXDhdN05HLLh9z0 zjC{u81qf6gw1xBG9=rU-x|SDE!z?3?FE=Gp5^WkF57pkf&a1{QUkx`qd>NI0P#x}b z9JhkWsfIa+z5Y4vmOg$TxC2Y(5wB%l8Hx;^0YB$)RAFr4#rpL$`u!-^u5=LmM=!)% zyto^^8crJ$eHo9tIu&H`i4IipU%CZ_@_vw4Ex>}KECFA8##2-Bd4FPd?CccJoYc;Y zwdw7Z1;Y^2gvi-n@iS5$Xf5X<=w2*_>GW?TD8=!g+&jU6gnQD`o%bc=R?l!Qg@@2b z3dXmCuZm40SV<0PGGD|E+kXdAA@vFdpd86<*F^A&N0aT(?(N_I#gvpEj-H-5=Ff-F_>?4IN(N== zSQXz3NXaj)FJ7eIT=NXJNKLSj)5CjY0Sg`^d7oY9SK&yuxC$pil5o=W{~$f$zjlQ(%piR{SxK;XCUC9rBXCj|q_anxdb1N6%vc-cqW0!q2^4~jCgtWh1N z9L$V#9yJq*3hIJzNGv64oyG{R(3}lde%;v)4y33I_Q;K?-x}&;2Y^W10sXrKgwhy^ zf-(&_CrI`^Pe_X(reO9U*eM-jQi$`rN{T?X7T87H#elWwAnH1D$dt^K8+(5j-Jv^! z6oXA3Wu-@OlKh6mmL(j?I0)1Tg4_zm<#=7fX#RNKAe}X zgPH}kIm}{Nx2+`s2MEV4e3|hs$;to1jkynQyZ%|uByZBuiY_`f2==*!={4q$#4_?g zga*A99l-WDM0O9hI~V<-AVDo-L{NVakP2D^M_jF!o~oJSRRVKOIJV`nsF?kuzA60~ zb(!<@lCPhr0V8^IrwLsq7RXafu+mM%;ay-%Ctc;R<1`Tl(ow-W#RSm*iWhADDR&CqvY4+oOW3lA$C7Dp% zwhPw@bf~ex`rVFp`I^a+Zp?Qu*QkPBf{eUU(Qw zTzT=eKz#sL+P*xgOSre4mCqhBO2f*%a`b154a3K{t7zcKO+xj?9(l&^UR>6ok(ciL zh->}XT{4?8^Ihxf5gd~Mwn=Q4r2bbC`cFisHwoS|_l8%JOGpIk+I84&Kv8O#z<+E@ zpYvRn{E80!Nd069(u6%_2!|08l|aWuwAEhORlsdf+5JT%2WiU=yStl%g$1LOqW9P=p`WOu^HM&T7b_VqvGFD}nnxm4Mu9b%F$xD)>F5)__ zU1rT~OIZ#V?rT}i6e3txoBB>!<|hb$&o1XRFMzNr-T&$A;$Ic$WJQ*KJwci-i;%0U z1@0hUJL5J#vDT35Ce;Vi*(AOtni*0r^kr5tpk1_lsz>0k zA3xs|kS1lMYWx!dT6w9-4{6_R@Q~Di?=XrHUx}bs6~!Wf(Ibens*aVdguJMH=QWbi zNmHfA)+jPXPdhK1#QGlI{2*MoDDq$cKoGR#at6J|Wegb~$&jcS2_&hj>Nnl~J=uUS zgQT(vvB!~wD#A^{BQAz%(Yi2bsyX))vktlJ!0ZN{nPh?0!@P{@ZCUKpkrajTwlSy8 zr_fgxRcTi#%49c+*Lv%C{|c%~d?WT+_)7peGOiKc(!N3b68a>t;x27O!DBrIp!|pV zMv+`*eY)XIzq`RJt}lKX(25D*P#;`*8jZJtQ zeWhfmeR==%p!6SE1&VXlc0modmG1m;cFBb+bhh*aP4=_#mA!WxNuWe%XhkyRC|q`? z2nAk|;k-OXsab5_4iUh=Y$W(?PCh4`4iKp~-%{At{ds6xLX(QWa4 z9+kG~U2tuMR@tYFAuO2F`iogppqedY?0q*0y<4Qwvdw!CLr7E;2BR(cXLe3oa0M31 zlYp)b_MisQ;Neqt0NM)Ol}|;31Ny6&pvyZ>;w^ZMe9Pm+n=xpgV;G$!P{V0={+mdf zJ1klW<`(%|!>V*U_KfvugHqj6cV}z|`JnGRDVS z;Hi1@o@}%!Nh+u{FDUHglh>2s?~*gj{mgd#DD=?0=qU9DpyFNUuZ8I2SQ9g;H$ zBhzx!Q6UuraI@_0%I0e`yF*T|eeN(Dgk29+ zk0fFn}bID@4RPb|Ro@P7SM6eSMPG?DeB4_#Y0C zGN&q=x*pF`GzFdh#2krs#`IJJ<|B(E+e-qU2EPL_frR#3)NYo1aJ$>o5B8>Zxt2Tm z7aa`~&mG_9VlPu25uCP=a^-{wsX0^ygO2Idb?O1CO(kIogMB06&@AlNK_yJow)VMN zf0<7tJ--mjbdzAA8=zvjR0e+;C!&oCXp>h8rF~;S+5ZRrWoq15)|)ibh%UxMwrYfy zngekExHT^P_EheTSGStaA+~H5tW#Q~S*Rr36_m_Z;!N{Q*tea8z^!G%n`&}>iEzZr za?hEdWLczhlHsOw>~MaxAMFWh)J&NG-ytvRV1P&yHwfm6gteQymBtL_4DmuO!H$DE zZILqk>tk(b`E1T#hAt`l5?)st9gaa%dIDH^4f!b@S_cW_P0U(OLB&my+JUiwLgQ(V z_FW7&ZXeu3^BJdi&|G_LBf4u8rDY5`p5ZcRUuFygc=BuVzWTX!6}nGgXvsCoAXCsP zL;j4J49hUM!iLCXsbnGaXY7$Q<@o0{ z_4}CEZc6^zKq~ht1UImUWi*0oy2e@MM1;4M*O>V)UvA51*odFsevxBI;x5$ajhWr{ z!f0(M=sYUSR6#~{wl$pM$wG4H0Plfw`;Fz5=H>1BUxXu@I_VlwM*kZi?RI7iW(ep< zJzD+X<3pi3w;&V_XKSRI`aCKh`RET3N<@yI@3Ty)R>dSQSE`sO-0`z=@{&>>eag^bqB7UnRcGW>p@XTD8ho@+3&IomoJ z8;KrC`iKw#Yl9eiD&W8q#%+2LB^Kf&d~03>dM}1MH(DH@lZEX$p^Se=yV3)r^G|e79Bq3PbGt z5-1^;>~6RZVxHk%vD7mN8#CeWmCeEVLwxTXW3xo1-vq_vsf=qmWy$Be_e_AE&@^bt*K?cIbB>oz5PZM1jz8y^F4~IJlzK+s9R0}+c(z*FO z7n{Dn6aD|IOBgU0Hztig37k0>P+(v;$cgdF#DJ!(!>R;IC-xD5Q-_VYl=`wIfFsS_ zQ0fl`3)jPqF(sXRq(w~;l7O)45BPTZ#nqzYp{#zD3T@-PNPCmu_4+t09t}I6?|gDB zYj*9jb02Dc7#e5q;?C;qWQc5QYm4G_s}=O6AwSH2Je?gHotN*>?_55MDc-kNKU6MD z0hS1ul26~%{c2YnqFzo1M_WmY*PV40Z^{pviZcA_i@cjBtRc&ZHWXd_?C2VuH62<$ z5;YFz=wpi&U+xaPRjZ3znf3e!xDvZwo~ZIitm`W?#;cI%Do}?H8}9N;`#}>HPfA2F zZ#;j0+-68K|A@-ec(DLd54w`-mn$-j0Y4wExwct$K>~Z!hXYUTZ+9nqZ}7Z|t|F&* z;43kc_xY7+g1O`N`kRU_*|VE>kPso;e`QhtDlk-><=(T0G9I^-Z== z@r+Q|YQ3%l($*Q`bwaNyNqefi#9~i;Vt3?X-+jY1$SAMHM(ELOp?N3Z5@tRn;$>@{ zxkwf^YUhW?CPK%$C;u$16T|)s!}?1^TU5PX3|pi(QiM@1Lo%9ged;o)41Mc>)b8G78#B(*rf0}IrT zVsZ~VBUcuO!_J{H?)eu0g|z2Xv$)M$(Pvof_bGb^4i4LEjw*%T>o z+UK8FlcsdCq%$*ET_7s-;Sn<23X>T9i*`Q2G0WHu)_3Qyd&QS0l%ZrSgi4klGYH2Y z&a~!0*)rXqCb`9#r3$qNUKqt3wn9>ih6D*p!&uoRgJk^AT;Q@+-jlmq1WHbeIntUK z9A&;aOH!xEw@p0MOJrqYCk`5UiubE7W1Ow*0*}QTb9|<-O9svXY&~z3XdOnN1cDXn z?;K{aR0$X>{Efn32nEEWt0l-Ir#08&DV#{QV!v2Tt&A$^1MA^+bmkW||f=-3;}q{c%qWXvg4j$nlDY9#Ud zW2J_`;=^CzmjB=dB^n#GsZSeV#;|~F8?vjW`hyLL2!Mk65CoSbvY7>9f)k3j^Tk5* z9>|Fs6_>bv#|#0eg-0YN_`#Yn2^-6MmKLEr)T|2Yx) z|41=LEvwE11O`Tv*r`DdtSjPiqX5-&AI6D3BhtD%wH}M^qR)P?+2ssG-6@a@xx;)yH}okZ0}wVmv5UnF%Fu=8T(;&ZM2=$$*1Mbo7Gse z+XL<|=jWcjE-o&PyGWcVhC>TDI3G91yH~IIpF5d$MRgO^sTVJhr2H0sH{Ua|e9*w3 z>Y%ZEaVYy0d$7;Mug<2pZ+72JSI;)ta-dmUHVB*RBJ5$-*zaFKM%Z(7p5SUGa@79F z{Qc~Kty8DfWRa*<`^~fvLD+>s7j0zUxyd{u_Gxm?C2q>Kc*eb4Q37=vU#lHc^|K}J zTl`nIl1pa#gN%LPz?tW@l81+pS+sJ!B)(4j?1z7Z?)p6sy+Hw!P2C6DU~c9gmtAuZDV6~& zg8M;zSMLNowv(L#a5be`R=Triz9WBTDu%r6Y9>PEv4K6mj&+Tm3t zw!-AyLNJ^QU)YBSmAIH83)za~gU)M9G6|@!et{*Zpv^>l!iu@r;!w3XCfn@CzM z_$&Dr*nJtnWIzbG5&|DcMh)X`NDo<8xz~MZEL~_CbsRI*tTtFl1yw) zY}>Z^p6~CidvD$UPF0`XwXt^hUQd6X)$6{yR(G1ctpNdZI77M$G%#mq%4z=Xa0?;% zj1aC2<>MlHv0fmwJFv{Wd&DgK99O~vod1q!$(A_Nf3ldBT%pSy(=Rr0oJMFlV>SAI zXgR|ziok7kU?pdbc;;b&D5b;_oPSBpe!RH=SkjUt|2VOW)CRAK%bTf+9$Jr`C32R@ ziTdV#3wr+bBVdsoqts%Tl^3FS=u5F+RL`y~_L`&E?OrgMC_>72Wv5_AgtY91lrXX| zopP5cXOiVPM~PAv`UTH{InzEkLus9bM%E+8S`mC?aSU3FuRe>TfFYg41YTtppw^TJ zsQU%K1w%uVi4s#bpBNQ(Iyj zEH5(wVGR?4oPxDs&ifKvV5!#1#Kdzy3Zok;a()gcU^4So8mW~a3zy0GuNW<*p(|3w z0YC<&6!axUEXHC9vu}}Dp&aMs^Z?xq5EQ>ttd^*$f?Y0n4XQ3qUBFd4LK>L4%$xj@?r0o2-;aDI~t-&^B}%reWudXmQu8w&l(Ts*5EpA+w)TxbLsK{#EeNd zHzEJ~JR&)5>R?`F+@p&(z&Q5@kVM)-6cCqQsu6F--0i?3VONksQN`AS8zog*VQ21` zR;sqS{2N=>+td!^hmfJ|UQe-Lvagci>f&b()PVU>AvUC3YzYzJAwfzVf92;XJV-^n z2g^r-$aw{V`d#HO?EoeoxSNHS^@S2{l2Ho|5kB)zoIBVKLv8E^X}Lle(7t{cfYM3A z0wpqrGRT3zCfokW3fV`rl4qyuc@k8p+$)7~ff^8*){6uu(B5$%5(@&yoxOty55~o9 z+$z-d_%8_8hL!|T6L!WSKz~0ur7;Jt_*v4^RRc8?(?>;99?Zd$<86-?StB1dkd{_W zB)_m=fDqJQQ$7IfR8NBtP<#XX(_=xDy;VP&l&lBOa7YeK5YT zf`BX%Hz$8~vqINPC?1-MJo0wIDR&q5$LyORsKicVxBTfHdP40e94U+~Npq+^CNPz7 z_ma2=t4X)bcFJ_GX5cz!54EM)5eBG&sI~!SS4otG0go#N;B1Zn|3DB45T~>AI{Xi( zvtxo+r>%LK>2H^bq(YzdMD^#J;^RbD0bb8;Ckde>!l>{RO2dTDN~DqZtsSD+XTQIF zB1(YEU6zkSi)Xs|msxYl)B}61=k3m6KB6wIz3~Ahi?DrY{e{8KukoFZZ;=0ID*nGS zaYq~rw9OIF71k!2WcXVUfYnZ(@n7;Gz486{d0BNhqWN66{dqd#?ygkZ?fd=JA*84OeKUZp|FzTYbN@uN?6y7m`0e}H zV$Rgv<@@*%)$t$S0r=c|s+|0f@9=&7ILxZE@A0`kT6~P#25dNQIr=tt`hA@}{aajq z-rn9anj)C_d}LCp?dPKDARA_K`(k6dJ^6a=c-HUo^n9M&yd0;}q%`useJ8B_`gk=T zzkB)ItXhBXSZ=vP+;$A?dCv2TC_?Uye?J!5>;~c->%~2{BZ5VJM^>JE&Zolt?v(NSGwsZGsyK8&>&g0>OG~}hh%I(e}t82eooq@+>Eo++=JTNa{+c0ZZ6mnoxG?ba z``&DscFfQx40G)>vzLz)%n)+1{}S@JvFkL#IA}E@`N#Dq${!Uq4K@MoFYLWziJq{tb>J@_ zZ2SoCb5BGUd#c*d4wk)s^uxFHN?J4QCFQTvje&QS_lf55TO#eUlidd8A5avr;a zU^yQc-$IQ{o9Q1|5VWRuzEj{6-zDrP-ZcP_KpN5h?)>a$`#N?vz(dJ{x*|m#ryB{&#-DZhbfqMIBR9_~8Kb$y+y!2;+Z=ww@ zD>g>?;}6p+)j>OmepB4pMP>|jF;$83FEm9@n%wet;`BL4tDUw7ds5EEJ}-#i8rCsD z22;1L*^mIFmMJlLP?7QI(G?_(@Y0B9{0a&y(iRM)0VJ_ze$NB(z~24>cnDmp$+%SO zfnKqQe^j_cc!7)(JMdtlOS$O$$i7F4gdiwg2$Wi8{#@jdN)#f=--7N&p3(Gdc!Oo6 zmKY>tPSQAMC}8&&cvF~ZHErObOs3v<4ZGO&s~@D&?GJE zH~|*~Bc5N$Dbu(wW)vD5JiMD&-6?APkw| z3Npj*25nA7{S%~Bv3?$eap@-Ti5R^i^QRVO`{h2O&y_r13o8IsXk`^ zSg0oQrD>aKBax;0N#ML#4`m`r;KP*`w7(Rzg~bcZLI6lDc&iq2u52qB9(xvC|PKQm-T4}gPrqPK%49F@_o$^=r@p!pFIvMX(0E6%gJmkeZ`?s zIp|n#vvA0H*bD%Z$R7e*%>O1XBesNQB$@H?8jUJJsQJ84?EMGLUSYAf`38%(^Ob^l zvv3Q8Y5-mh4RmCMYNygB+py+SQZv6F#np>l6?wx1MCV$R4^?}!N`&>YV$dn2@=(jC zw*n(IBQ_QlUihCgz$61n4n(S340Q%{~X(iN2KV~j*Nmp5IiV(OZTEvxP?12M6UG<2qLtA zQ`f?AEKd<~--6}@=v@I#NPvF z@l18AR&ndb_fKRev0z;9CbP8}Eo3|w+(r)5wWHdj=tpAug1 z+m+zNxi4DE4;YUyakd~>$k%9$P^S1;`@K@&7E23+e_&pBM;+9lgEHhM4>uzpw?!KvQz(XLNcA;E9?)M(#GuX>Yc3L>*tnJFn?(hGnma$sv!0S zF#%ic5cBXt+1ml(0M#gsy+#>~l=Uc6fK4V`sR7#0JP0+QoWF^2R=kBhaLcJr{VCBF zaO%FQmEiA(o<^E6$~?!!@mffz@6#B_nNIoBBL;0tZ&Tj z=jjJ*YTxKE-UnyE)qLfQsc>}S+lA05oDa6V8La%xwn$zCJ-5G{71G45GUCnNd)@VK z>3Uwk)B8!N)CNeYsj#Q8UmdT5%FmDENr+TVAXs5C1OzK!)d^au9f@KkIG&5}Rzi)f zNnzI8MARD7{bM3~&Uy? z(A-gQ4GMk;mO6Y0TyVU3q_+^NzEUN-7r<4DLNq;hv-?&3GR@qN7jx6*rsAx-D6TZ) ztfe%=cI9Y2%;A~+u#$zkB|TIL9)-J`G>kmLg}^#s*S+LlItizfqfv$#zNkI}gfO6}0Wdo| zV>*7reRd;47;ABID#f+BE6xY@ctNtk7YoJFrJ}IRBF*tKuuRl`F^fq0s_@g2#PHV( zhD#tPT4k)r*^fz!l3ea04X5JxV0T88LJcQ3W1HW=MXe8=#q14)Zb6Bg=4J}_TRNco zU;?{RUcTO9fW&<= zm1$YIMRMd1pFRvwFz1$L`LkS^Us#pEC1>-ROz)fqT7lBSRH1_yK}j9x=N)6-WyZ|%>demU1|wg%8-fM&+*!b20;#&HT$Y`D zYOXbwLY9U?iQ=2{{D z8HkPqk)30!Nz%5(9^6d~HRBK@xEJW@$O#hFn=?llE90DA@S<&~qEWSZqPDh{=q29! z$%%lp5G*aQlt*v)5dc=daKsrhl*IdN0$%x;Nu;SB!#YExC03wPR1nIGgqZ`%)1bsn zS0`C?Kxj6}J)<8TrFNbL%cJK43v(S=v=1S73Tz7t6|Jeg2t%TsLv|+ z&~Qfy2y|@RA$prh$3v@BL{n5uW_7aA^bLuKW$SfQRaElHumKVYd|vWn#-K$IE^ zLKFYj1vWb!%^)`QzNQ0~*qN?mt-=oKnd=Fqk8Enuu;ZvTATKzvJ&X`b&cL-+!FEKG z*~DM7GH{Ei^f4O~W(77dLU9!u`tuJU0?!!Lb$NW0(kh)5UHPe#AIS{oQe64p6%X@H zVkK2|ufZ&Y-(u5eG~MF8Ey4`CT2eABit?>=82J`w>H2@cm|B$?ouxu1@Gg}! z5rqz);n|&DL=MJfRKZ(sk$Lk!2N*33&X5Nsu?MY@;b*Ga#{XXCR5^em?(~K}6|7j- z;DMw;AS+5@HqG?K1auQ!=4f?hcXr=@+||adC%jK$z;i$aXuGAc!R&&?V(>{a-G)~5 zFrx0BTf`41sAP(3MRY|X69jr~;Yw}J%v&Tc#tc}Pt-O=S!FN6_3g|SOgGAu)L7AgO zm?`Vg!~jNA2%QZX2?+VoJJ+Wu-z3i64`dxct7F@j#o0F-PwIJjSTql{B9#UY$@98z zghcMW&72Kn*|tapftTNZAC?%;DSz!tL2>uGSrKy z&~$cwj^wkBp}49MQ8JcK6AK;KNg)zIaQ9AhG#C^B9bgOPfTC0upask%cucA_#j%a# z8m}Kl1FwY)-!+=L3*ndd>+LT0Td)+@zl<21+JV7K;bJ%{TjNMG`d?lWs?J<_$!KR$ zMvqM~MqmVB?;^70nwXS7-2`?&PmcUA@XQ*}KG{o6(e#il!g--m5-^v^XQ>WzS$)~h zQ`1jpcC5&Z0O|>S30`N-^FcLVBmZts@@b>Hds9^3> zlF=xcJ+Qkg)cDPDG)2*6Mr?f@T~my&*k)KH*AIgqf7oUrmM+0%=?2|T^CI}Yz+(*z zvin@ZSlSE?p<@rOfPu1Bq1r42bbsZE`uN%!!S)0Krkb%XUov>rt$A@h>9^NX%108L zJeZZza8w=xBs!9&k`!}jv&)PWV?X`)a10-)VlIq{w3@sttVZVKaoeA%W>%9<;u&WM z3$talF+Bhdp~Jm}F$m_2m+1E{i41HuMmz^!+V|PQ$7|+do6&M}W&e>5G70}99nc9c z0l_uE5RLl1INXT?M9s){{>ss3YTN%P z5c4X<4oZsj-C30ay1x`q>7}C1R=t}ouNQ}7t17{#{ebQ-UpSulXHqKWR4pxHbWKB{ zpTOaque0*W75HXL_yR!(BT=u1YHdIRLzMbwjQS@qHZ{JhmOjeRV&|%9W@ENVJ9yX> zkK@Q~v$76G-||^`dCx5lvfCLg|0S(QX2lgWh=O{LjWIMu5-Lgn?jmpRI za!t2p=@d>?OzrZmpp-d5=`3)d`-{zs-)-jME&lHyu|V&(ED&^nPMNjRk_y``?v zRPfS3%%MMn!OQY#5}*U*9G*aCb%9g#33+W%fCpT{12a5nxI%qR`{)lOP8NGZEOFNI zXvt&Vw=AmgrFK`5rXW}7BLsJt9`p69qrf^};nT~`=9b$j@)Mo;ziMEyF%3YFhXS4= z%vhxpnYJiL2bs$;`7aw`$gM-NcT0mSE*lT~({C?$CxV<202@Cgz8HQhI5m1awCrTl zv;mY{$`+=;D3`ife64#b&Wcj6J%T!FgWUH!6zw8#(pvh@`4t5Vbbht{P7gRjjv4CR zq@)&0nPslq5GVi%<+-R34Mw+ly|Ei-D1ay#W=vwKj<&NZspBmO#2_?kkf3h&&=T^d_2lWkj1Du+(9@HkjWz&2V@-lAWHil zO94^HaE`t^cd&3{R?9MgB*k;Q)b;NJWF7IUjZQpBZ@Ho;V0pNKPqV{ zYQSOD%Ua!wQXJ6P(U(XxfcrxvBYF!Pble&rPk*Z%h$+Yss_S2-kG@88$q;U~E-^Qc zTT`PHTdd1b;5DcbXg#DP0ZSCT3P%=s=x_3FkQUhtwQ*!HoiWcbE&IdnxaRyOi!6=4he50RZc!o9|R% z+u&wO6~k6n)0*44o={R1rF=4D2V&MI$vH7D8g0s>!y@ieW~0KcRAaGlGG$6DR5Dkw z%J4tHA?1Z0fay!LGXXxK+&E5Kfdfg@Ak8ub?MY^BY*JgH%Kt|7pj@CeWwcsUXj&p5ifoWOFzX+$zuxlrVB;0gQ53PS{G+g;q#d#6iiHZSVw;n7gqKcj}TsuBLLgYB=6 zRd=TU)V;XtD}6?Q_v_x``u4}=Ggg)Z(b+V^ZgRF%tZ8gIgaIV?cvhc>GgK^ z^>4CqdAnP?+t2y?>2mTeJM?3pO37|6t>kDrZ!ym8gJ}b}Ajkli*YAGM{QY{KRi+OB z%8yxxL-Q@yUmtI)_e^=)Lf%gMcUQ6i#HmZJp3ld+)Wh43W2S3;et_%rcOhVY;fu8A zEuydIrc>g&%j0eHGppt4dUihVM()&XCiczabMG;Wit8Iq=<{Lz zrQ-4R;Ak_;-a;?8=kwxg=o9Puruid_=s~8-FQQ<(`?-VV2Vnm0W3lnQN1zR`YM*Mp z-Rb#u^?I(UWcM+7NA$csi#wyauoss_)TMAeAI@}&=eJS!^tr03)YJVPVg8bP%=G(X z!TRGy)$3)oFGY~x=8T|9}W?CDp#pIEKn#vOdGpL!JF#G@XBD!%%kj+COcQDc*y3w1?3Vl zGEx+)!=5d_Q-lb|Ssa{x29kJ7lpB~b5II)3cS}UJgG5xA)7Q%0+;fiZ<g#q!&SURqwPAA9rau>7)et8|2> zYkU_+#5d*itM@vtGHtc8Gh{vUP9@=CTMP|_<09EXy{irsOih5QDl~%;W7r0x^$7Uq zKeQt9^4>=cw1@fI5O01Y4o0Mo6i5gw_q{Usga5)94YyC<^kgfl&>nsuo`JE@sTi;; z$(LZ{?sXmz>>FmpHsMlGaRv8xW|65z$wVWY=08IqxoWd@^`tpy_*^Nj z>z%f0q-nl-YM=oyp(ndjTMt~S@9wK{q+Il0%o(dbinr4!(C!!Ur41I;{qC;8VKcR5 z$Pau|^0*lmV4s2&?Mj{5{c?*Jl%<-Gr245u`w{nCQWO)R=hci(Kz@-!2o%;y@Ai^8 zOn1|Q2B=!jdhUwg8*q}`oCt4!7(r;>W(D!Kc^8uA1~vfd(`0vPUa*WB|LDSb&|(OL zlsm+VAH*WA?|0+6dWGlW%4qZQYNv4jjF_MI)UNN^qF4*q)1*+mwp0v(=%n&gx?`x3 z%@#b8j#h^IfdytKWWises1J7}o>YRjv*T^RarS^Y!o6cTG>hb+NyBeiAVQ?WKgmtx z3T((&O#y!O5}gzETVV)B5nj0X`K~zXc=$9bvlCfKeGlrgQRh}GH%Wr#P~r>Q_y_|3 z_LrlGs2d;L5k`-z=}Q*X8&&E>^qXd|T2Qiw*3oRw6E{-}`uI=ciss&+3IrBWI=^Gr z2ft(5Yd;tDXI^Xsnu`UA!l^hk{Vm}}&iMn6zN_77S{Y--#au387 z-&}}C&63v-UZE7pDVJT%%)k$R=YA3)>EZwuRp4twLMS8CODTdjWURjT&|1?kBE_SU zrM6!=h$EwzILK>3+oZI0S%pUB5&JiSf-y$c=3Jx5V!zxyufcJ!y=jOZB7~GA?ZmP_ z2B6w^mViA*jgPMsb?8g~kSF}!ie+S4VnOTT?V+o`wQG$}S%e{=U?9c2xTTpbzvfkB zQLAi5D=097L+&Ux@{`6ZGo#`bBU)Lei!~An+r-Odr!Cp@pGMJ%rO_h&Jw}Ee@Mk>4 z1%gLnYfB=`&p@b{j8Yx&sm`#O$Da5xK>p?|3VFO`AMFnUga9VZ$k^vTATAK*R&caP z?KSoW!GPxq&7yp6weU}D=FFgMCiY;{3M1W)=x3T6WDnV9AN2(pVw>?0z8=&A)0%0C zwB(%3-Ftvu?aFI#nJ8+UFw9J?@eTL}TDZLk8>DMmF7i_dh%9PLxAI`lj9#NLU@N5b z{1e#w8;PDic_GPNd6jwuo8ex_Lryp!?W`;fC{83MUA(52qBabPV%#+hXd10JyKDKN z%-Kx8Y!UutL`~ecu(GbsHTo5FHbGd;-991i0?$<+2*E4pTBx_uI(Fbyb*??oQle}r z-CZY}ox1mP(|SCjFkW#F`ZRbmPokx zb-p=^jU(UPDoWd8DDhNryaT0{&`EL?u2XiF+(`0F^$OQ}OLO(`^6>Lu$yH|A{~FgH z5s3tIeMu+dY>+bL0(>Sz%6SiNpiaFfOEU1UD6`CmlQca#Y4;Oi<&w=!NbFkSYrC^H z;Wq6eBOcXA6wfoj0GC7%UE`i*DW>4eGhTDFZq_RojIB#A10(a^0io;exa6$PMA#nY zIUIZFKFe;CSE=Xlf~`0pq;}9VVqD|H9w?g}z=N#+}ws%mMxVD+b z9K07A^1SWLRs1UFY3c8y_6NC@;ag!t!L<)eM3lrR7N(HcY@JnV&G^ect8x_2dM6GfjPrb~faoB>ap|H4LsE`)0HQeAs3zhMS~) zX23_locj=?G8R`}bvUTVhCzwV&{4U*G}z)h!C3SvI1XN8zG)ThUmld0ZjHk6+j zq~7PS6dr6`3GBqtY13%m%mwmR=?@lED70in!A9F$9~3 zfox~4B#-;!CVgj@h9_i^|2_-&Phk=h)b+nXSne+gO@@sI^>!o%Y*vB6`NB&6+REV3 zJ9`Fg6tR+^y{GLQHb1K77(`7&xg@oiiw0fAs=CV+s7Y&9}GN58AAY z?~@JtK#|fD+?g91h+qkOSUB8V<%&vgqd7-tXhvrP9dbfj2^{bf@i&o(e=yG48z9P( zMUiKp0y_JkGS&@*;*sRVO>~^LN2yQO$}M$`mK_FZ2zMq2BQbk0W1HzC*hk4BX5=jw z0PKm4)*#2hPu%_5h9wB$s7r92h$-Tplp&(H>=E9VXxF@_!Q-)g&f1mutN;GmBcKLQ z%Vc{mlv~btEo(hi1aRx-LKiv@{6P@Mq%wADur4ZPdDIg-rCPEHewxcfJ@2R8H9os# zvng0$M9duga*KG)$rzJ{HxL3LK;95_0Hi~ura2Tq^mYPo$^>ZE#)R6-ICIM2G2!}E zLAgeHWrv?vlEWdR;TSp@f?pqus~o-}L`LfHv~F@iCWP|&om383wy!zkL&SGSuGa*d-maugXq>t2rhIiNa` zw(~~oA99^h!1mlOyeu=NjlH>w@S=rPG!RFN#b1<&KZC@^5ed>H$AgF+{en=fUXby3 z)Sf0mghIxVX#WOWY7*~G%;L`i-1ZMpQWiB)0Xt3clE@C)CwL1&c>RQ7M1QTtrv@Zh z^}UfZAy{11w7eRd)w!s}Qi{R^%vU2EHCEw;2R(4~W{r{*pETUzh$@;RZgm zsACkR3`r^9PZe-@b7xzn6j- z1EN~y3KnRKMKQ4t6ejwYgaD%pDlkg>YTW!Or@D_kdRL*xD~JV|$ih#7t7q{xYX4VKsyrL)65udVL9@&?0r5xX3ts9EOKny>$Uv&w zp&E8Rm5G?;fLR3VGM7A$k`yOWjFcBUfi`y_obd#slM&L$r7N&&+vB&;jL)P8@Mvfx z5f_HH)RSHaDKcSUV3SgTj$8kP9!oOdc9HaPxa{dGcy0WH4Q4-k9a!%!wuzc#ywNeixTI(;}RF+==tBp9B8jq zP?zpb?@?2xKSArC@qG;Bs;aIC`S5gSQq=0A^iF7x$s9KGb04HGp@B}lGrz|oG7g;jx|AQWAphOq%be4Bk+U{EJ;&_#v61C&R1oHAiz zqzw`~t5im(hBxtXxS&IL!DM4LY)3%PpjT;4>#ERBp0!A8i-NAAdTF+Uu*G6qiI5m? ztI()}{cY@Du;Z0n^HKVV6-O%2!XaHiY*qY(VaV(Ib75^*;wNCG&9L@N=wLj{gLeKv z25|#c8D(Lfg8CAX)QGVm2owHJXfrVWB3Fb9aMAk12NHN)?M0fVLBk&m9=<6yBSm(n zlhUtRcU3;P9^@YKmRoMrgO`j+(u-%OoNYn=@Q=peqjL#W`t!!5?)k2=i4Pal6^~oN z3>q1=88-w+!WS;w4MPUy%=@?Er`}9IY>6~r<6{a*N?)@m{wmUquZku2o_ zrW8+}!5)+`;~`}$I*=o)l7~qa$v@{H<;PotN|%MfpeTpG9~K!Fx;>~I{3jJ#l*0o+ zhy5H z33epii^zwe7EDBH^nilagEFrLDF z!!r^dp%ugXIaMGm9Bq&_C$9o3Ql3Qik5<$Qf9^8jgAPJ~G{6~y*gqVH`UTF5f!7uukmIxOgZ54hTuUIa7jG7XIzp+C7?ZSSdSv5B^I_=;36in z{f41;{VM{ZzLl4AvqGW<;b?Mj!W{>F?t#xb+d<6NxysNkhjZEW5c+*Lb za;iNPm}@edbH1}St1aK$$o6QAqb@h5ZF599-pHnA#-G_?`O}3NHgak{#BSwewKb6fc%L z1Ac=#gpAFKNVx2Vxz7TsN@Y-9R~e$T-n@=TM!hKB9+`2ShXN|pSeyo_K=~LnA)C>; zoH{TDn5W2uO~};x0U)kaPPJJgV}F2|qrC1QPuYkEpp;CZ>f)e$WflnXBr~YML5f<8 zKwT&pS(N#O!F7W(?m66LuH;|sImYkgr z|K)57Jn^?>n<|Q=R zOHo!vCIvy?emHHuxoi*z{(a$;Ry0(s6ub^XmWLi8+-pRpz*RkvJ9A#y5u9~OU6W!8 z!324y^uLq~fc#zm6ksP%*4vM>!^4(fa%r`|V<#*OHBUP%l%PiXJQc*Ku`vz3hk4pN zI-P_n*-nh5qELB8{a}Iei)bh;)wte1KdLm*OfziesS3^9w2D0RwBYOCT~;8HZ+Ig& zvJLk#F3O&GG-zkv_hSyAM>5mcY`okVY6}ih{WO>t5VBV!RNjR9*ww|CFvtEoMV`0f zh`HPZg9>D1$Zy10o`x%rr-XF05KQB zb3#JV70E=qLvibdMga|&5U^aiAZ%Uo0CP{_GYpQI=?skxX9r1rYRY7nTsE7mO*sdr z3bhj8v82%8WUxhuU;8$2j{PxC~2!gBq)> zUCd~Ep_m&9Nf-{}Q*#&}{FLL2+kaCp2iC=D16Az;uJd0CU5o)of);rp5BURlb7^$4G@5Q8P%vzcP@fL%~u-R3Rh{Cvejkv5Qv6gO9CazUCzS0>4j5_Bs+i zXmwx(MUFusw_Lzr`&(eHipV2BO4YuK{5NO($A)k|mm+q&qynl1o|o0B2ck#ZS!yH^ z4zK4lnJeWz0V^(t#I)^lX)F_<5jjo3{|ij%;VOQWI-@{0$AsMqE_)rntd&vr6(#)D z7$ZxB7Vq6RR^?{6wYq|6H}QSGM5{kuCSE+Y;hFRmD_pc--YX){45XXjFeBq%iGKyj zfX@aQU)r=tV3r2ioZI9FhaSUVgg^CcU_5p>F*?Na8+)o_a5DCllfI3^n3v0o3UNyHb~SI5WM6Ra@h5oKOlB5n>CMJu zjEfxz73$tlUR3W6DfPpm)(t_{daQV2gqB@iOg zMUC?&bg83hPU9hF^}TNjf8tc>8W={8unb>_kHX}`+W0h@MySDBuJ{wNd2JxFe@><_`M3o#Vo1`Le75m19zMgYTqYYWjd4@c>DpNCcl%WsM1A!CDw za=&<>6hrc|>F`d&;8CBx$S?fcLKHD#EaOmXwf#5>D~l(+ohPMKIc)cCClk6UlAezB zmr1w3Gu%G1up^+!kZpT(NQ`a&AC>5#NK6PBc$fGsxc(040OVC|2D@{d>tm#XF#g^} z0Ufji%Y1pzh;dANBp&5L^Dnl%8IE;iBAeD73+?rrGNPhA&^xP$*Ef%i(6HJlb34jK zFYf-{P|QUn){pT-s7T@w;mkr#t22i4GxDqzVox#Fg;xNYX$;73iiMSb(p)K$3cmJw zdUoh+XjtSC9|v5;(v)*+NN;x++mA#WwPHguCrw9sNc3b`!eH$zKtblb;m{4tmPxNbY?%{sO$E( zVsGr`d-?ON%0#~ALdh@J7&dy;*{S?iJ^itdnF~k|@h>VpME+0F*&8l3QzvgCXs~8Z z_R!FU@Tc+T(=8Rj<&1LdFyrN@a+-`38PYp%l}W}^-Ne-<;QCP9+cHa*aTFJA+fQU` z<+rY0e+d$oI!p;EBty*dq-R>W2#CjD20s+?9@r@gHjqVyw)F@xor)%{Ge}N|3~K8= z1BBZJJMI1Uha*MIg7k8Ozs?@($E#!Z4^}@YpCFKmk}`v9`?FU6>%^kPf3^Z+0F`ry zCsg{zz#WrVQO!_%17pH=yJi=whHANi?tdsyZyac*jf6A9w1o_dm*|5j*pI}qE;Y^6)innK{n(A)R&Uy z7%)sL$w9(C{%|DyO>X-uvPl}L1l&kX8gfQbVLz}V6kLe~a^x6RNjzJ#UK|cTy2buf z7}S5Z+!959d8I1@Cq^j=2NEeye2S(pB9`DsOv|-B?$icHq-UiDtPv^;iAif4FJR2w zgNm)l)5UV0{Wq|j1_d||J_-`opExAOzj-Ps#Lfmgq4cu0CIx|PpK)9(U$i>AgCq;Q zHxnMkO9eimK$Xd3g=5R%jQUpN&T~?y7GM4smq`<|WBs-lyA^)gF9R$Y|04(#P9qJ& zWQ%Xu|`M^T^9ZeIIeCwQnOpzR_9;q)Ctq}wZT7# zw_y=H;%oG}B!0>3fE&uZOHfua08~G>b9<-k)(B+dlIID30gWQ-GQ6RIo7%E(1 z|3=@CWJ%OfN%1@t{bxs$B`%4zl-Y0!l?{sr!Q2pS9G$67LLO@P^DQV*mUAG zlf{*WgO$Z~@JActa5fBpphE00f~TjnU7=q-0LnDC)6d-JX?s z;OI1wc8+JZq&jDf;@9HrD9}0-5Pzd@RSDAUzzb~U&jz;2a!PA}#%W420~Map9t4>6 z0`?3}n^eCUhEoG0ewC+Hbh$s~2QLs%Nh9^_6l}1WrNnykITc7G`eA$b2qXOhsAPJc z+2YDF;(*KBO!4^%*p3ggQi>;5&8HoqRq=bC7vytdJ@{FEtO1(?pRS?0e_48_NDaq+=Xl=8NMGLI^MaS#z*3Q?`*F{>U&ILX3VFGI zI{R$>f8fN|lMv|t-=($qT10FKtkat$4FZA++`n30M)aphQfn3xKrfD<`H!#Eo{)>u zZ>N$eLV!!lx_KfQ=s#&G-jgvnWT~^Vcm!tNBnT=I|G~H(>y*ngg!pj}2((p>j&a5g z-P-G|xV*3HM{JMH z2ePp0>T34ZKnQ2D<5v<<5$jbw8BE$*l_H?(m`8fk9fZKOnoMpW&GPFPPFx&n9 z@Or%J`qCTz$kJZ|h5TziFy6vtzb(My&8+|X_f*=;dzt%n?Us*+)6?#z(#pr<`>`gM zCXv(eJ^mf_#$mTtNx##e(@zx%VZG%E8Wo0sdwx)oxWk)6Md+laj=D4vLa zdh#k2oSVF%)|FJRdz8xJ+hyELoy2y;68`NhZg zz3_1?yE8@S;I7@bEi?OkmC^s!a^-oY)AuKRvHJOU-~PSQ_~3q(=JvOU!Q(C)KYq7$ z5?`v8sC2};AoY0%Qx z2=ZY-@GsQVrq|9ECg>U4w4Z;XkqFjb6Xe-quigmHa4U2&tikV!B;AmW?ki4At6xjV zeGXWoq{q%Id@1(PSs%-1%1x^e{KBs~@7?MHrLT&@$Z|Ne0klJJxsTCAws%a^co^z} zlN+QFhkwPs#S;&&o+*~fU#be!;F6!yK%XE3y@9BD2EV4lntk75;O33g#@I>?0EL3LY)zt<>d}dF(`UjvD@?2*aO4x~~-)NQ5AcozwNVEg6 zP8#bF!Ceg#`2&oVHki+FR5%>sU|Ti*vmB+hgU5;Rc>U^FZ~AHJaoCVo?r3D_8u{<1rUFT3PQo4u84d=OHJR|?WRSkMI*yRiKg`?Y{sujWpLdcEF zQMZFV-N8pWN?zb9-FE|<=kY|jvM(;6)zzA%Pf~r3I6E{d=vatz2iHUTw0!0`FD2-~ zOvjV)V`&n2njG;xPEegHGy3s?P`jrHh43ZIJ4B=RoU~1Hg%(J;UAFB8wo&3LQ!QeOd_-O~#l`ACKM!haVt4dJvex3ttfBYe) zYthk?3c1;kj2*uG<>_9)f>&=}*vE1UMG!o|Y7G7qv(eJ}gdzw6gaQ4t{&|C#wu%#X zNQY?n`wr{wz=VRWN-7QM`R6!`C<)u%DQ4ILBZ!QaH@tf{jA(r1E4(rY!%>QXaec*~ z;CQ%3+aeRkolw)LI*%B6k^mqBHpU`6o;)oetiuF4E$qj#BKx{Q<`PlH(4dAw=PCwD z%)ty6XTc11Vq^U3U%zX;x^))1I$)s=@{E4Zq*b&&F)<$s!DSIP9c9bFO+Eb%)@290 zmW2o&XD#>;nn7+_2-x9JM}02Zl*xFq;aIp!JJ?Pq_Ea{lNW9h$drBCoUl*E3`XO*`G$^JZ|Bl|s3ftWj@x znEi(yf3tg=q3b`W)*e^S2zU+h1t8ZnTdnTr=NsjAW~KbEura|%tR^$o2$#{*aE+>f z0nkBr%G>sVLKq?*0f;ZiI*jP6749cNLtJy@gx^G_hz{-6HmQsr8mOp6fP2thoYk^VdwU0X#EMN z9#A?!Jtslrt_JhxW%1DR3yt)B$ZhY=@j7!*1BP4wcdka}{9)oAqEs;LkjfFQ_%Xx^ zJVSE~sSx)%6yWw$c7IfkBGlpN12eFRk?!U2Z;aegI>U_OkxHbi^EaQh)$e1OT zR4y8bmz$ae6XWPuQFQV*MR+krxDw5>T17IP^c5%VV3`Z_N%c=b1F_0tlt6kx4yt^? zm6Pb1I1a^}1aQh+A%XY*L)BM?#nA-a;u740ySuwvkl^m_!QBRThY;M|U4lCVcXxtA zaF@I9cklP({@Q(Zp6cnU?yBzXIde|MC<6yWPBmF0v;$TIo0LO^08mP|7NQY&+<*NB zS*~^6w^@d2hV7m2r%Cb~mn^ykN+Lum^onEUp~=t!D7DyROpirCnN?PWlR&GP5um%n zCs8h1K*4(XKC%Tcwi1rCwCW2$T0zli^7M06U76uS6{=<>&-|{7~O?WGr` z33EE%q4*h?Y0MX7;Bd*g^+<^{%a)Gf@cp0XTbG&Bk(A(lJVpC5z-q*UEkb=Y21TK- z04Bb&6jE3$W)mT0Ulbbpy}bTS(PAlo6z05$lAqwFdL>|TK(LXMSX~;vRE4r>jj|bR zES{VRdEG>E>1sHOLgOX{R5pu`{kQVaJlUtqkkdaz26j~P_%TO^OEN(_Lke&a>vO6| zF)m0c{}l3(NucR5`)x{oBq#Vrjl`6P9khoX6HZi+a;7zVa?7+`6s8m0lI_ew5&aEI z(fL+$-oc-b4de-T8tp_3c&E(X*V@xwI-5Tsi~*h!(PXHb)0erpSE#OXJauBd0~nzU_;j%)uHaac;q zpK24xc1A~2%9C^<%~7p>_k}MjsTy5Pz+$x)aB^&kj(*r7lOJM}OASb|l^|6Dd2%ha zL{kWiSgDc6zW1Gx3Q}Qc{*goSg8mbg#z8WL2lF^nDQ+ctuJQn@i(ctV=6cBZIIF<5%-_SCv*-27gc4zQ8RZNDp0zIiY{G%% z$B+yoZO%VRj5&XdomSaLkXUDjs7IWXfwt-EfIA}F>^QdQb4tZqb`z9u_%5l-)P zC>s%E`?2heiOC-_P@@Y{OCeGyT^Yh?oMHO)fBMzFkVxU=_1_jsYoR4m>BMom&H%Qn z1T%#_kn3O5M4-ERIY`Rni;_SwTRYMc#}P)53&~|Ea^V&JHpU=y7sff!d5FYn&34Q) zUt?<^fq3V8@G*#xM#}3*LRn3@P1umeapHE~E+-Tn5$P*tK=U9k@EuN6K6J;Du)&j} z>^CSI#Gs>iban~V%xHenIYow;0?EupiccL0;C+W8U<#z{uz8Dpx-As^4({9r9?OVU`O08FhD zy=oh5Rr<~4ChDja|0tEziM?U%myrQK! zCQqGr?TRvt{u*)u86BxbAgzkrhOwD&@QF!22WMo0qhF&!0CB)sQl|MWS$DB?zh;RG zLP`6*2`aU)9^Q6Eg5^hyGQCvACUml{ z(sZUwqavNFiRvj}HQAY#kbmKICmHABlF`)bWHVo33W>J4g=lkg6W*E>t749C&1?{J zONYv^j#ER$y3`buyI9LrZc9XN8a`QRduWQm;8uF+&4>`Q5R6=)X>UtU>h!0o`NnOd z*<8{iSmg|N;8#2NAE+hkN5f6arEA+f_Gg<>*7E^m6Y4xHO=4{1Cq zt%>ov4bX2e)ZuCqw)CnkvJAE+ZbM%nk&j*h_1=dc`F-x^1Ra))_x^%b5ya^HY_v*N zN|PceV#VWC(BnkjZV@x|F3GY_gsu~UR`5->fM)R*dRji40hJp{L0*D^lvS$8si3qb zJ)iR?TTM|9Nr&7i1PMK|bd@?R8c=MV?U%^x!yA?5ysF4qyUn;Jpi~elG4Dsklks)t zqP7#sJ1swy8v>$vg3gNG5g-U%hy{@Z)lN}WB3tT|lFZ1G&i#$Fh6vRLi}ca8eaO9m ztaUz#AbmVeD(y5T@h7{mm(7RS4VhP_26x>%p7Z8R8HBeA*>n7vZX3dA>)*#b#&kUtq zm42rY8&suU8zp$+EC{@&rAouZoqR~*NMdl0PD zo!-`a=_|io&MB><6_fV^xAunT%=2GkT5Xs#3fMMD?x+BZyYb^VFe7XalKpx zIk6D<$CE^Z6@EMHy})x3pG%#Kdp?63^k7#AW5R%#8}rhNrDU5Y6bDr+&a%U$Uu)!F z@9oBTrp@?tkq`;#xVho-A4s8O)&m;3J|BukY(6;#D83@6s*F*Tyrk_n`_Px7}Dcm}cN1T4bYEz_oHm$k1T09!X zgf1yH)E^C4mT4jS?4yD$Wk~+F;@D#Uh)@cQ{wnU`SwJ(Ty^+jIzjqxbuKA<+tH|M& zmJjB%_bxJ*H!M90@-|^ATRpS}o)L=ZiKEx)ncAI~R&9_&o$R-+A@Z^9gfO3jhcmbd z=5`o)^q~Alu13Rz)r#+OFl(YK#T2rors_dlQ_?{3&{jpe+Mv&(-daKhp6v7DpH)@+ z^m`0=Rf*>s)qdBAucOU}oDAO^6CV^jOfRuV5uQvsv7;ti0n@S*6v@+IS}$t+qZo3x^s_x z4c*X7$vCy*6p%ee_9b_Ml}u86yf||%x1cTH<2bV6Z)q}{o4{Ay*3?=!^uy`aih3-k zHbtZsq(uIMV)xM!!SXOK>)o8RKmp*iLk7Py{>^NeTBb=#Na_v?F)efa-m+L(VakJgVXs3a zR(h}ru`wS*GCmvO=wT!M-ZpqIWnA4Ywz*s_~W+i%qH99Jt*#Z%s96UedH zx~7{{TBu&I!Q6m|nU{i-YLUIao{mxQ=nk&xXWRHQ-KXKcxh)g{!|EiB-i+}Jx6mI4 zSb4{~I6SR6V(giI)9FoGET!_=L2C^mCwhB5x!b3G0n>hBkRGlhVPqvE*a z2{_iT$zyO>pju1U7GE0EpZQKWYqPtI<$B8es38#(?mKi~2w6&aP>z}PkLa4BDhgBl zxBb^ib1do>(M%1J+|Bl^b>Aa?ym+Cvd#{JO_6<(r`1`O+?#YL%hmSghh4we?6IoDEdjpZ=ZY|0q3v63n0Culm3dhF!`L}!Z1p;yx1B6!U5GK~ zBIEuPB{yDGgK8I)>?h0$FjEgA54Qn5%;R&wM=epAKM@?S*Yv%j4-1`vaK3WaZ-1EF z`GefFqDlqc$MDAs^(T3i72&DI3Nj(p+X@O=*$N)oAB{AJK?rp8qGI0~N+y!B=ov?G zW!BUWQpS?9bT3BfBo&<5WG!W;vgu`Boh-j;CsIZ_f#`o@G$~@nld||%n&R{*BYSdy zu3tgt1z&V6_hz-{HHYQ}%Bk_Xs3`tuBN2}wP&U%AL@bcPY9ypk$)OL777p=vsOe-< zMhZC1X%%KunpQB3wX+4u7k{Jq9(D`*o={hikg1Z$MJMOXltN*R2(Nt~bu+S$6QAW7 z#$2?cXQ@0<95R^Rt4|s;1?sZ(E;)cQ)z?<9{m4?w^8f-NfVhm&^JGxscLPT}KAwn? zxkC_2EB%#)`Q@)Y74}kFf1R0cU@Ew=xN5K|7eLvKRoyEYfmE`*@#<%!%-)0qbbSV4 zntox?Lq`ocm$?zCA$qSj8D)t44>z#bs*%-y+`z?pAZ}n3MG!Zz4$F7o>YU*rf^_g4 zqbOaClywJ_BJ(;03~jmE72zGY;k7}tbsxu11)PCrY=H=vfj>SK z5_qsD1P*Io zEY+0nSc`Rz3G^e+Z{XV)4?l%Qzp*2GvY3y(#m)g2V;a?zJ%;9E9cm^x!`C4WEd>3( zfhiB@5`m4qAnQ}?>>(jAlpj_sO?o7&sa0+h-Vgsn4va0YntRIdFs1^B#|lRFO;{(z zXzfMeFDa3w>Go;hbp*H(!Ou&~fP5a8HPg=ijuR2K?>|}*fWq)li9V5HxJaJhq86nuc`f_jOe6TvT`q0zQZv>*4gg*MFZ!GbwLS6Op#Art7>fO>=M)ci+pvM26(<1^0{0t#Mf;U zK{eLd-*VNu>HG37J=9+`%&Rz$B`aRp7ss8_!BvjKw^=v6IgyX2 zOx)NdccHe?WifVBYmN-U$q~hlQsR#nU-#BdEoLG6O!I4(cCF3McQ1D0$J*BQe-7aT z>+9>ux-Jb{zW6r9Mo*7Nik6LM7G56~-M?3JYAwD4!ZoKFRrU%~%*!~FV|HBxADucg ze8T5AmAB^Xm%uv5WJQ|+GgI`x+c1r3r~P>1;rG)&(Ci2=u?4`I{$2FY^W?+ri?ctc z1Jj6KS+ts&OXiF>yl_O1Fr&lR`OxF)W*JvW-(R=ne(wKr*lkoN6@c|MV}1rkaMBNd{4{uLaHT z-cq}+>G}I$3T+hR zt>lf{F2NXkHu`>RxTW=@W>i%lns5-|0Ma$bqcw~ zXsTuf^XCIBb*)vQidTKaN+kq&2)KcB!F&NC384tz9jCkCVd$c-F*jX~d?G@*#SQCyAORA=JcM+|ik*tTjC8@IdXW9oQ&U@SlZ1AHE$VEA9?+OY`x1M&WF`rCdXWhs z5(;3-pA#U(cfq4zDS#J(F-Qee6pkhCwb9Ep`&UBwxJG& zlGH#u@kWd*qXa;2fw6Pkp%3Wp!!OvW3g{UZG;_k(!D&0)4;H#)r}UT4F`F#KBXoj*1s582XDoR3y z%#hzYudl~LFXlrewD`umOswy9DPF1t?P~WwWH`IN_v^P$uSgS!Oe_CVTE;9QBBntV zSG3RrnGGl063mhE3LjD5&=M1I~Q9nG9=&~ zjdRNN;ge8Gk{5`otG$gI(GV71kp22%H3ehB_thB|3p@De&(D#aL{l$&$rAbv+_hp? z#01(%Tw|pCtNfdwBl#V2wx(D(kH3_bxor@{;`#SKB~fUbx?8~MRb)ixsnXR7*y1$t zXmT8Scgkl!SIlXtus8uD88)<29p^ZI=A~DWEqHY`TRI3rE1{M*E_gR966qd=F{~MW zTcvptEEvghX6S#s+TFE9{wQN{QI+Ju zNjo`5iu9}FDr4x9!XPPWplST9f*7Mqs0!Msib8-Xfa7LSv;79J|HXvJdaB4ziUrc1{ksvf?=l^7 zTSe~?2b<76OvQc+;S&Z|a?!lMT_jOL#4VQF=Ufg_xZ3%VBTU^2p;O)uq&u}4{FXT^fXg*MRdsxP>p+uYdHzeV(-~?2ANJwb* zj>A{J-js>3oGWT#c*9b8#sWR2G}W`!a7DlHyxcTU!{VL_8sr5Wz0_|sDE}h~MpM`N zk0iLnA|3$ig)b2ayeptYQE7vsC9okqog^)C{KQxBv`Ha(22UdPNg!hu-U|w(G5Myf z8HOeqs*rGOFUizJJQ|F_8dYzLJK~5GZPhH-OLHY@P}1}q`AyRd94(|J!Dgs7%H(6# z)mzdfL}P+Wfp?65DK*m#ec*S@j>ty|Scx;B_78|q68Vr_|Bod&AOK7htp03#d*#V= zdD`~5ep~g|(dWXUjB@vnu?j+glQuK`a0P=Jy_xB<0kT=ypLL_R6$;_ge$YIGLa!&V zID+p(5zAN0r31|B1Jbz_T1h>@7u}giC_-8FgUj##97_kfrk!UyFJJdMfd7S`0C4}8 zB^ZyPj_3?T5)3X51_t{0zxWdsZDvbnb8~xpdnV5xcGY?yC`xOhA4ZEzM0w4)71lb3BJF*Tz+ik`ulsl9_)ob{`-6`t*p%Te>us_edBi6@(2FL)N6je zUu@@gJ?$Re-%7VWf(V9t04En^%afQ_k8J_q`LH7sgeLLwyT7gEpNiJRnSZ|p$y76S z13oS;006LV25oJByd0SLHB%Ft`kFmWZ`t9@Z{B+R1A6>!ZypveCda99+#!RIhTEfs zKd({d@1EW-&N4gJU-6$208@ldD?>lAB4e*0ZE5@2JX6KkhqcSohac3l__jf74 zdiL)HYFAY8su`2m&`+C+XuI?6gBzkU82F6rJ5e{>xT>2HX5{4_d!xp=ZOIr*{~^32 zD9=^Q0)0eva zHhnIGY9o)+kK~XntY8#(t+w2BL=d^pNQ5DBW1!&)c%W8HUQc% zTAm+}ANzoS8DU@n+F&U70`7Z{V@Y+l>l=ZP^GjntK)?*F>DDPio{eE#?Dz|Jfx>(K zwwe5aA!1jr(+-2 zD2+9+ctrT@wg+f?q~AgM&|klM0vrRv9#_LjV_$YpxX-h~VIy9(SX;%vLd%_7T;HLg zL)aH-lRCzR8)?S8xaGD$m2iShJjC5OA@k_Lt!;o4BsQ8&nGud%^7OzEEM2}H2wLF6 z*}?f!f!Tu#B*~x-`mKqF44%8ZhM1+(;(fyzess%SKN9sud(sV&&>6LV2LwE6RRRuz zU{~HZgyNB?GkPnr(BWpcK!N4a&k{~=*dOCI1w}l839L_^=)9G6upM&b)Dzlox!~W=RxIFG?s29!(eM z!7{Hf{h)Hz)bOX>4w4gKp-~oliRoxtFH!{N24}J}ckrCMS??8JJ@sXA{Pg<j>Fg%zS;ug#*ycDGh||uSS_!R5EvYg>u^Hm4HCKA>^*|C*rr? z{B4Rjs2Lo)Fij5h!FZlR$qjWYm;QtAfQHlVb@Lyr>1-_xgPamR89W}OVO+(@%3z8gXx>PG-jR<>Vao0F@ zJe!h}D8}hk+9>Cthl*|=^SW~Nw6fqdti61f=GLzn`)va3TkLPq9Fw`xx6hHrWGqN~ z1)P29c0JY2Y}|d3+$N3lUV}jc z2-E_aXa|+A=#*qJK;jB2aLRAAi~*1CJs7yZ`@3ldm2D{L{+fxJxBAw=5b|{Y#12i$ zdD0J(aDxLHhHs-%Zy4908Y)rW5KhBl6_NBsZFZ!?d7{)I7;_6FgVD3F`j1cPWkf_b zKvLOp_O5s#_DQzk$?9MCImYR+VmD8mp-u;2`gm%v`pdpOK71xr$5%ywQjMa!rXaEF zKTUQadS{6#p5I6bexYmg^I{0X$7&N_oEGN%lK}Rx$JN9mqyk0Q%UTW#uCex@O2WNk zDcgNdvL=Q=A@N|x3{O2Aa^hh2y-Ukb5_o)4gOdY|dNRj&I0Uu79WUZ3HZzTlV$$~; zTn4!kC)yr~A77kO=Dx)a^FwKa1i}f5{fZ}#^n)QBTH|I&J?6BTj1Y_aYyP`{0OK|c zh-7cIO;n=_YUj);Q1?gK?pcI7j*wP{NZ4|urE1x?SLcxBgJ$(*OFWk#JBjXx>FO8a zF%2CLrxXC1Vos58CeLuaY~3O>PAJ$rfAYOc@31BrMa0Y?fjm$7VaF(ZXWmX=j^+au zn))2n%g6SKqOIlS+duxIBhl9ew7x)$)_FJS!7*x;{JrD@dl`?oAdh)+nfW(iB%LgN zk?GJm)crP?`u^4FhPj&trQcbeL$rz7NPAKbB|XHWRXD<+RWqosGUwwjC$t54+jqh* zU!DshlD{nV7@{bZt18eLKsn^I)Kb zyrLEH)g__CDWx%4T9BM|9R}+Xg1$>))yfl%?Iy9EjLl6X zPiX5#uB~OPR+JPg^Tizd7Wul(EJ-W$_;DH&xLN+KEnFirB0w2UW`RT(4U<8Bw}zPy z>(=H4uOLVQFF~4$XgA&57}h2^u$5@LOy=3{Zo)sbAJTBQ_&CUJR4IwpNCgo^1uJ#j zoR)j%e&tdeQ<|-Z2_01r9{5L$4%BW5_mt(=JxlY*D~vFXh1=j1C_`0F1jUO3 z{Ux?ux7G*QH z8Qae)V+loGVJXFU7S$!d;IZJ?^M_KJb2=k!DWi;DD@zT1l;^NFd7LIA-`u|f@VW?v zL60FXDApPTkbt+*#tb|V`UJ&-K@P6Ix7Xr3#G+HVEOx{S%7=m> zilIXO;OzpJn@_eWwu5)|gCcMJqH_}3n7AOxc&Pd>Ska)VqctY7xJofwk5AlE}Yx)m6ULRq$!7o9X~4y+=zn)Ky0XnQ=i68Zzn zjjn3D`iu;k*pd@EOAI;_1ofLgzJO+IGi^eSKYe42{3wI`D9DyEB?maksFj1hZWfk@0W-TtU{y{ zRUMC)7}p-B0qm{1f(SsHKXvMro8q+@HsDo!;zxPQ3UWXPjAjsC$O-g+t~d6U8-^u` zHPcBuWZ^}tfqC(H&zUyJycB^7)s6ma!6sZ6m*nwcvyAyC6yI`A6C6)drA}mu8cwq@ zqiIqOL7ed^t!#fCnFXVE4nN`AVogUutKtzf8B?M>qxKgy0CWq{Mk`#G-c>6~)+N)g zNNkm6?keltv~h{yC9X|XKO5PXAAWiXjFnXH!P!S^tU>cF3swFjS6jnWk!fjAO8QQg zR5j0DwfA3my!~hCJ|bM!OTKkQO2v+SDal6N%P9B55!T|j4Hud14nPa3J zEEpfCCO-#6|E1Vrit==KKvFJO4T-9vxenKF+P5{%)l?pAM6ipH%@(7xKjSyTCSpb5 zA1Nc$SMIF(VP5Q!j3fcu+;@HB-53Mw5$Pd1*|?a9M&NrAm86Sec2XTrzBl8|OM~1* znxx(z%w%7TVTW;RiQhj5|u;Of{bTlS60@Y2VV99kT z=^9NRiB)0&q?fWbk%?-113XpimclHbv9%VJCT;U$Pzb(VGMiisrnDIc1^Gw7k$I?t z0y%Kdegq!7!iUCOiwirj`v}(n#}Z}6v}#}OT2$Ujgf-|^vOigv7$NHUL+7ofoi!s8P}#CKzXtZF}V<(e0I>jP)6w5=6PE6)HG)D10%>MbjgUkh>@_SmF1( zq_mB9o1Ho(eXb&-y7San2>O{@MW{CVtcu-_&l2Tt5x5te6Vc`!<7)L{lnaK`Sw za?Z84`c|G2sF^ecHAZgNL|bViRW+{AMm!VYifE3(+KT8qT1EtFV-0nju=;E)m*EW`X#qnp zTszc!{RGeW5)~*JHoD=KQ55AZYmo-7x*XOWqu8vE9w?NFTcBQgR7P~TW{zyara=%g zv1KEifW&QpIh-U0zLWaDwpI?oqn5OEI3C z+B=1Jtb9)Kr_%0RoL#4S{GGFv-SAyfCBC*uP56`DG`_a`=@u&O?%9wtf%gUho)}4> z`(<*P7Ovz?BiR4>>9mm812qQleZoMC2MHk$MZ9>vMB@M-IRF2HJ$Fuza#%<(Ftud9 zIdUMA1+{mZ`T`Kya+%~_Q9mBgk*sL4`?)4_Q3zR5Z$ZKqm-P0?FP}ukQDwbUD>E)` zw(Ugxbm`x_vo~_=tsO(}RqkcX_(glEG+Kwks^I=^q2=h7H|MoY<+0_6r^b)}#XVcW zvrj=n+g785pjiVyx?z~1a+si0-I&>Vbp=4f*QTWR45FBB{;6Tkq!!2kF3QY|j(Nx$ ztD>Nob%>Kdpxr!nYQYO#=rdG;kw_-jpc7vqe-LB|?@T@tTTYySn(g;trVYvXg-LR3 z68XW=g`0kM>*_?F*5EXsjSr>zyjP`xQuE$o`{iW`PBU(;8CHl+yBx|df8lX@dKO59 z|N1xf$Xj~pHybIVvW0IV39NR{6Z$2>+uRCynJE~R-VFrX#cv%DtBs>Nnp{-9iOp)t zUB{Svg@p-SzMARScvb9R17ZVgsh+-i!NSMTkD!QP>lL)^z?FeBaevHiBb~@0141il zDO=VuYxex$TW!G?+@ zmrsCZH4S<#Bs%p-lOQKOuObT(-_E@lF>xO)DCLs|9-MdXfGmh(PG9>g&G0D$6KC9eFh zvRcwYHEu_?BywxV1zdtim=ZP4Pp?JTjfxBi&fQPu((S(9`?TK%-}Y%@I!jKBCv;(; z7Gi1c^&o=NYWnIJCm#4%M&Wdf+R*y0*I9#&YR#oW_CN9kC+bm1{#V{(OAzkQZbD*(|HroVdEa_}f&JIFAyA1G_TF@gr5(rbEIq z<~^^%rnD@D6)P&vrof#)1Wuo7cf7tx{e%xNJar!3pA%Tz>)WYH1(e|z?l~-wmOcM_ z(*FMr+ILvJ0{p1K!1SWPz_7u7&7OdN1updUYq#2*x=?xB{;R-1dLs8K(gY+inIYS``fSUO@%qrEip zc^|$FJm2U3GZg+D8t48eECAfzzv~0z+n%={zovV=h9{QSEKdM}o^+ml-Hf!`0| zUzhjC=6lEE$3LODf6sD+B?I)sp0B5%V{(tr2H<)K=M_iju(1Q>-$#(2*Yn5ttLCF2 zu(SNfK?o0{uzP3WA8^$n^viet;%}zI<>$jWa_03UV7Mjtd3AG2D5!hZvL zo3-ohkb8q*yP&SBXLG4zM40o#GklQqaiVh z!R`DAAp9Le@n6sLys%QO@Ear1mchyn{n%eBW`T~(rA~)dXS*XE4T!%jsYwo$!(##L z3|`Pm_M`-8y?nTiVL#+N>9_k+J;1Elb`W2?!FcS!*aFAE1fqQDH~Z@e!TQa5aeKeL z1YGw%f;i@SaoM^Z_4nKnycApA_*=$E1%@E&fP84hU!DWM{~Vx(F`{)eV*9G{JP@L8 zbHSZOq|Zcg9*XDUxrVvvf=hOGoD*gc@Ga{(1HY-fOoge!6+{A2g(xWZF1(!K6ft^? zMp{ZoyM$B6NW0}CJ}1!d+pEl-;i$0(zE4Rh&{fH$6TCc6JKEVo5!4xuhkfd{3h;(- z0))*!(XEQb}kXrou^$b!t8cH7|6j23D)p)2^5Xxy9h@7LU`EMVwIlq zT+VaZ6y@`bszs(h{5CGc>sli>jN?d?-)f4K3~o8~bmte{n&u^6E)Qc=FWu*3OxtR@ z-rmcB>u4g#9VI6~%~`bq4Xr@*8Hh1T0TejOza-0n6&qK&6R7bm$pAU9*hJT&yjQD2 zC)14#CoQItXApRQHShxNseD<(_#N$8(L`f@c9r%Q&5O<=%uQmQ?P!rM>Qa6W=NI1RvL=+r+!=jydM1JRVO zCh@q@%3$#jL_a8Q+O{5g|GI)9=znvz-L{_DHv?N=s6!WP~l-&O`&%#?+v06R_8d#KW$QNE>4ZzR<1!lSOH?8L0PjyS;kdtXI2@ z5}%jq0Y}p@9T5yV@K*?wRJ3ji{6(_(ig=O-M0E{30elQ@);fu^+eS-vOykvy9X|@A zgBHE9fZ~&my|-oTdV?R`VwD&tak5M)UreN}mWDk;36!xsOn|xx_xO~wK5*{Kg?`^I zN@Y$O86@RMPYuc90a5348EaydiP%eyroJvNWcz8E+iYof-jI-ACE!M2ET31J{nh|k z8WEL3!}KEP^OSQgyn!L8RFgIM(-9hD>`;p)2y;&EtCwG#Ikkj)HR|fJXi3i>KC{lT z{Kf>`a54L?#ID1!fW`zUNI;VNf%p+T9+QXtA6CmtYJ+1K53ZxdRsz-@iz;R|J;{d;KxqUk8;py2JQa?*OVHk`UyZjTvtnFvw3#+gk{}U6i&s z@R?@e&SVVFla@`_+puo|NtO%Yd+Jawavq7ALK)u8P4n~*f)_sBZ1~qX4@VjN3>P9< ztTX?Ynm)7x53|KD%6CdsDibvY;aH=}!3r#rJJn=nE*<*`e>O&?&~tkj_y#H)p=JJm)?D7~lD3A)fnrBwe;_>M0h5nkk`jHY z-f5^vAh?dtX0KpHg&uOSnLZ>t5sUf~-vNQ?;sDkCXRSG00*Q;+sA;%k2Br&{&%Xb0 zf#L7%5;O!aB(LlxIuE0 zMS-gAK{1%E0ar?~{R;x8!zEizK3RMlAM@SAy#e9pv>?JGZL)Z&SljohVj?EmR$?Wh z<}|F9KaXwrk*HqrVhc_hfunjTJ{2>MAD2f-YsByhKm$w`(;$~yTd@&0V!tM1(^Q$B z|DNF63o~dz(W$b3eUerLD@iwGwso<>DdXLn)O@a0gt0iO9cAcpc={?yI0H|rFbc%enmg}8P+?cZk|T;6*zpF zOsKF1poH#A70q%Vj%Bv$P_G(w4RF9npseWFIk7%JZ0O|JDG%qV8@TPrHtw_70>q$S z(#jd1>lPPEETR@bc6if;)BzT#Oqj)-(>p_vc=Hp4wqa`DO>ZU%w3IdT93`Z)5Dpev zjPT?=lOtKZRa0#K{F>$$S*Z{Ttl3XJid6x2cZMU;eK5h=aaB0)E7QfeT!Rmg4DuMK z0)sq8p700ZID2q2a#3`@L)(>LBFh)SAX3p8XCpL+H`ux4J0YG~hutqAjv-YhUUzs$ zUb|=?eH#(qT1wX)h|Tc0Oe1U0;bZBxPD}%>g&LIX|3Z+JmEetS5$k`mt?7vprYi!5 zyS{ua(+vhQoDanm@dQ22;>LN=^^@d0u3sV52Tu!5O*YAI%UdR&J%u~iy5TS-tf`wg zq^oM04Eg!Hqbtw%!s=DIxxf;|_?ir4ujGVm!u23aZ3qxI#m;@Qv=+sffI51>0X ztm}aj=@5k2c=lY{CH<&PqR;l}YvU)r4dE$7; zS32lL0)RqBFU7WMHcd@$1jWUk-*B6SB{%&s%|X{pxV*{H;u_LuHbjIuOlwol@#1>a z|1{CG8?Fz2NCX1D;GzmJd7su>l*C`G{lO zN{RN1ufzU}Y{nRhc#ayJQAHWWt$!)rz4FbCcn}0G)hc!NFwKq$1M8o#_?$E&|Mj)( zvew3)5P71M4hakMTc8*Q_W&DR(c1_*1BVBzM8eHwMf6gQiG zUd(IaHe%&sc@hy-QR^t$Hg0T)>(W0KxRdO;&hOzqcxu0Ph<)7aJ3Pm_4fBB|Q4?UQ zL~AhEJkEI({ix}2VPH#yDrgfda%TsQ4m+aeZfDH%m3`Q|JP2Qf)3R>70Q^>Ez>|em zg8@7QW*%Bkt|bDHrwQVW3!LT%rb3Q3;#V(l}!X2ePfeRx9Ek;u4_h~kfV1Vv=9j53Fua7JzR ziN023d3}HiiX>|`2h3C{fQyYmF3kj>oFhj*gJd2!%$1h0F+=E zMY;V&1I{tKz+vZ=D?)AjevsSg6&!KA4X~*SN7gAz>_rv^cFMC<3@>MfE=p^8#Ot}B z6L{wddMQ;eedPkv@`zGn?A&Ci5Nt^M2-8C7q>MR`_>)hBmfOnsTDKVVchcm5yubMf zWu^lx)_CL{iX8N;OfTIllN^&=ydcM!WhhVE0_X#iJj2hkDvNgc5-HC%-Fb6oFo7B% zWY-)5?O`V{VK^7w#d^oDdyFIUGHO`Bx)XTK$rpV+uK=NY%naW~A02Xf*c1SRS*`=O zEJ%amJb_tv@NKjH+$pa82ooHRnAd`1+ax57|9M=@5yb<(c18-*%`Dw%&tJL%q(#aa z127Z;84N`ei7^xd!@?9J(4Anvia}%Qi`FAeo}n;Zm0y67=P5mFUuT+murh)6T1=y! z><~kXSRO4H)!)%xbr+-b&Zzbeq}D3LR1p@YCAcvsFvxZwd{*1`86%*Q?6)hdc)sIwY3uQb`MFzcgM>LpA`Bvb#Hksq6y+7Yi3U6q}gLOb)hQGgn zLo-PripaG78U1m7jtYLZur@-I?(ZnW%NNU8w7hnI|-tRv4zjaKkH897$=D5yr z-9x8oqY(`V4?7yk6KjgL+*2%}kM4^~;{}GCoQF>uUJuY-(SX>}167_PYgDIk{i$p&S}j~ReZam>wAfXVnRpw?CYL3>j&LIa@U zIjNI^1|&LNGoMB%WRxRGHD|;ea{c&COOHid1=;k*35;-5BQ3uoxT%QW>t7sv-U#l} zrkNRZ5nhj(TnlJbJCa92^kPfTmtMR%$SRqLW01cUJBp2UYhevkAXtd09#54$n?$Rk zPGnai{!9u?x&3h`uV4;c?)s7M4T2crMVaK9N|83XuwTrdWog06ifDgkJK-)j{X!sE z7eQzQJ&fLgmKNaTzTz0Z-|9xlEJV-HVpm=LhRxOq8oa4yTUHXDo^hhGdhYJU?aWBO z#ua~twH2$>JfE!|GZ`+Z%TRFpw%~_axU%6^pVUSC3%4N~^cSO+Upo@J5)aU2ix0p+ z=uj+VAF!xpN#A{09i<$p#G%obw+Kl&I^Xjh#O5)IB?A)|;ttU;TyFO!9W9}aIV-zy zx}aY5FHVpA)rK4eepU#LirC;ixZ3iAyjuLWVT9&4ZC9Ja^?m#5J_+aWy4c3xLloru z2;+o-K17dOS24%+>(70cUR5AR(z=LR)fL@kC|9Nj&v^PJ_73&1r?+4g!Tjd$7E82? z#2|fh4CXjOx@0oGMf%?9q*_8qS9Z|>Rz#Qr{uroT4-8u8Bf@HA*$m{}-q;8e@lwJx zwC3?#(?G4WwpU{Oeb(cU=@-Ws1WtWk{5XWfU(16)`(GTGb>0;kw*Yt*+M=YLE!Ha#oF7NB5k_*IDsZC|}7i+jgJUJg%1Ao*?RZw-n)gPkvEaM+2 zjw5J!MH-*2st=-kH75RgGS9^;NpEOSc>40m;r0Iw;@Cv+ZJ|)GI5mqJR*GRrE-$ z67Ds$wM6Dh!?vG}iy$t+#8XiI4W8-!e9I}mWP9?`kGTiFbjH#0uahCxBDbZksi4~s zj%yup*JcbMidU(6U?cFrMq^cx*_&X?K|#c{;DAz;TwfKqccojO3|sfA!+}<#%>Az6 zeBeuavp4};#}T(O{~Xy3<2HPG_n7vbD#V&Vek4S{dr7rt<2W%BqO}=sWJh~=Ny0nK zL((pzkp@m@L!2wO3dhobj~_K@E*+D>lQmg50bQm9HdUGq(E~+aql&;)&!0l3+(=z< zn429F?3o+@hlpnV5(N!48efT}t#||1c<>wDe z+u{sU1zP3GdGT~PxtB>o)23|0CyV?jKTX->)DG6Isyb+pb(X%9YSv9z8z!)J3d)QP ze@{cKPuWitKvHv{&=_|4ZqT!~%Qhu7`F=sO?M9DMyJ2ovRi8Hkt66M2^5~z8B0rNj z4@L|06_%Nlw20~Uqr<=9W$v}DsZuu*tiY??m5*?p;{fbhn8M`30`GtpP zQH=l6ruLQu$I9-AQ}ec-nz zJ{++pzRvAO8@`uQSHkOQGVqoK62$VB9QFX9>Cbps3$fQx%m@9sq_#myK~U=Vl4DXC zM((j-yBJ0eUMJ|%i23AjU2$^TJVfI_l6!L7l=xT+BPs~R>m^oaRIro^{?AU(l26{3 zC<7*cj9?U3y5)#jL?CfAvg_KPKeED|vP*0;!D%aUdO0vmH#tSfHdoV#S zDu{DE_MxGE&<*7&M07HRmVzbx97oBSMJ>w3jGI3i6p$Orjq(jPl(U1eM&NS<#(Si} z;w5m;3U*Mdrj8klw8Uc2%g2+%eADOzdW18uGAEqnk#pFr!K}`u!s32?A*Vo+;_NIP zdGnNx#mS=&;h1yokzwQDvM`$8Q#Jye<58O^q9|KsSR;_661Al^uD<_hP(r>R+*hWU zQt_uAS%%L!Rs0&#B7G{Gk%PWuKHD+>U51O;Ch=3AJxIst`c^_pfLpyHnt^CMgeGYN zj#+8INtrSZrVK5HGG8Z>sI^*K0CC7XoJhi`c2QFC!Ts4;e252B@c2d>EG{xD?&Os=LNx?;Wm^$0w=>-EOU< zi3KK&i?oqPOr+Yg?qE{|K{|m}a0-Uq)8r$O4>z7Od^Iju7jo1j{p}w`&iAus6f2q^ zAL%}MBMO|6(11dQSspsOyE*4tW~S&Z9g(|DBe98mvWo#YLqYNUWBU#F zc#w32axP~;50N_q3N!z!?ANpad(efHuXsmd(S<(DNuQ`UxxYn@B<>YC=OG@QQ*&ll z4S#xsTGsuv#2wuDxdmIc=!dgQM9b*BXq2EoTWos+d6KAI;E;+nqns2et^h_s-iN#~ z|4gAk5=2sg41Ip|l2Z!M)EpcnFpi83oz0+}q9HAVX>HF278k3Lz5p@C^4gU6m3jyf zfwtCV-k4eB`3G$OG!}Zxx%+baQ_`ok{m9%Uq(+VBpESa{!F~WuO$zt%%$J0eKRO{; zDP-0)AN(a7W+nl7WLUZ%=KZu_%-}2dO@<5R{T&j{ynzsM%Z(g>0(7>@uc&kfFN=FV zLD#Hw4zcYsCXZ?!6;kb0G3mfBYOPSYa9%v-e?fBKu&`-6Q~VK2)~B-c#pWb$f2i0E zFt$B$G)XQuG@JzWZO`)G%NGW+b_-Bl)-Dn3B2O5xaW;|7a>yeIBaHIIDZ*z2&=GA+ za?ANN?kZ~>5rLt=IH^ZIw>M6h#;FNNgVsTGk7np1<3Zm0fER(nuo*p1<|!^p6|p+H zUqWX~61RAOV})JQOy+H$ed(&H=cW!{i4$83I#2W(0JF#-7#zDRlZ`{ux$YD`PA9lP zIyCl5tHnppBruH&D}E!~^Ogl*f>)-@mfw*JJ`|t(7}tQ`ffcu#4@M)MGiUb&s3jIh zgapGj8$PwT#RlN%H?~l9{M4b6sMr&k0`t`2!t6VMKl-W8DI;Rk}o*r{d@IM4uPpFsu!Jl%LI3L^S9&K zM`*(LE-@t!lUYSsMx37z!HS`&Flbvs_U4Onm0AzbCeIv-<}ML$qMTm5JZ`o;4|F-~ z&s}+PG8~HX7xGWk_qVEaooY(T5p9N(thBZl%a-|v!XM^Hdd?}0$l=(5|1>MEFkbvS zEug#EV06o(_xwLP767BaNf%EnU~=qgyq|AQzyc?gh}tiaMXHgsHYI*9tdK$n6_;x# zpn~#%`Zo9Z$4D3w0cZxyF*Q&|&fKb)cgLs*d+ zv@Tyq*eP-owl^=gi0>230=eeCqa&IWrLJJ$P)doie--gY5~<~k-GPvqL%9yX#aJ*^ zCC9)gt~ZFau$#g0fnl(IO&2hYts}dUwJhTox>x5p zd}6EOYGK`cI+WJ+I zln%^m{4|4GdI@olTi~X=f{Q?Kls!Z4P2?;anlA0#N zTlTi1&9h2u%00pQT)aj9{ik9{>bfr2k(|{n9T!ncB-Um)g_U(aWgiZhcm!vs$efLakaa zo?@IUAh;bdot|$As`;kvUCnB|5}25~Nzl;Qv$7#eaAH1(WLSzC9a6j(KhMzQS3)i0 zI((Aq?E3W^3s3w37l2{(c@^1hTP^_wp~D9W@+&xDLuZb^-;lDrUxWIs{crX~eeaO; zHvzqF|2cKnrs+BXBAq-Uo@MH&Dbguq%@f|QN82Nk><`x>yyV znVL0{@c>s7=$t1&HuN?(u>(y5$Ha~~t1 zGb~5z80}z4pKUrvM5qj(7cB0*@8zt!59GFp7XorD!FmHa{&}jmd1cI|o5N0^w z#+9mt5kEz(0_aax=ag~8pyBylchS(T$vQlw*S7NT&E3a`g5OH24=_nWJ;SuwJdEkFp8PO?YJh**Z$!y>U%kVwQV zh}p*&JO;{W5h#b_D?@qwzQ8bOZ$fC-+Z+q924z)K{` zZz7W3LlWpOLCFB4ic62*sF}qq(XF0a=JfJwpe%M)V{n0x*UQ=jVg` zKUrLKo>rZhPpG8CYA4<`xkwOXXo9%03tY;u4`hCfkkk*?4V1nKG`}ZqO76Eh+LyVQ z1V)QRZJ@}c7uhg3Om0|&5YJ+yeX^+Zl3mJ@!K#U$OxQJyL()T^EeI#FDOm>J)dV2S zw~DL2=c`X3Im_beNPIBW?ih2$N^~;Mm=z7&lRSPSMlXt;SZk^f;^)!WiFRNfooTKS@wq(W!Ko2rFuTD)K1_%H+ofbVO>;L zxk~9lLrH-LmjL+CeM1WRhcWDo#EXFPZAr^4XhvRsaKj)l`!&TI#U(PzV+2qjJx;BP z(3*6!PJNHMKei~*GSW!xpQNJ7{U*m}dQW3_yK+jCvS)a@L`aY6%ikid!f0t(r=&i7 z;=FkuqSat#Y5kqek|I^FZnRj-@`Uc-{xFCBMnG+yArS!HZx}k5UZ{&b4hi( zP=r6n+-aFJ>Ia78uLdX~?gQDwG5N@45sOVsS%Ovxpe#2Um(xnHf()q+=6 z!L<`AOC&fZ!tl_J@WOHWka~Q2TIuf(rVxi0&I*-8(5hh0vciw0=pUmo_b*iN%R_32 zRh6E8e#5%fei8L4(6;}25JZf%)DA7ItP0Dgk zOZ-yLdw@p`yAvT3u8%^-BT#MlBywPCAyBG2(tGx9dOlp6LN452UM>&&s4(JWd~r&x z62`OPPC>rakPw$h{$b^uDlF@(~ zVc*Y-KT$F@2odGYkL9u}B6f2t&dgJ))NO8uHCtENLBFWDY$~PSK$kr%%v04@?f zw#gLdICTOx2Q(wcZBPF>rm?U-{`Aa&y&tBG{br1z>1D8cl7g02$|6cLlGzL0>9?wT zx0Lk-w1{(ygmHLb1I>qgaOXfzYdB z*DNwGiMa@uB1AQOt^4Xu27|ca<3{_Q-$mq_Grd5UT?r_=YIv)f8Q}y2Pn`Mzhi_*T zN;(q&5;yU^Xtl|^3te%%nMx`!UXb?~2!(@^xf&p(-I&yS9xA*>7W(ZT;B!_HJ!KeW z65gpO7(E8`Mn23U7ON_l+^xn0Pr?d62$LkL>$#(E{3MDo&mRJ~lY2?ugjp|`?r|m< zN&s@S)I5SzG7WkY=f2r7zjI`|0=IX{e23Y{ucO}rheip0ykyuW85bsj+{WBaQgfn{UILQFL>HT2MDMnZ( zaCgG;wU*)F1C(Up*k1TZ?fd*IsQS$0T|lo%h=@%M-jraito%Xxs%c1vV8e@(mvWSL zPx<+CSi##F6#YY4MX@O*TXkZw4V8U=`?xNz>HW{tgL?*YL{$w}HtE_pPq-zBEMU*D z`A5cW$&eQFan}+*CiHQhbR?Od_3);*ljWZ$1SrcVYsST|u1tYE^OQyFLpzGe$N-(x zWheev9OZ6Q){%$nJze3~aG0H9Jnxepw)}xKy^jS{Ok;GG?_EF2DpPnmJ`2?|^ps~u zNVQ-;RE!ddI!5j=2VC1qFTxWEymFxipQc2n!$9wk_Q4`1G>WuhuF&G22}qRdc3NMo z!W74qqFPo^1Px@89IaYm;blCQGF0n2iF zM+;(Zk4Sts@5e5&i5%BxJc*<^65slTXGmpeUh7wKOO3j)*3l^Ts=rn%)l8YfUy5xh z7aXjS6q{x1ER>VjhiQ5`B1Cgb%|U9Q8&PtpIaTRo+mxnC0s(xcCg?Gt2beRL^$_cr zo!Hk5&(b}e%;p{SDgs~W)aEeJimCb< zffVTn!nOU&m|!uM{Cw_3txA(~$&cTy@86#PLIIDgt;X-~Po9sLuW3reeLHi!(j1?il!$@$_f?_Gu4SVhzxytf$2#C%=>NNpb?~@Xe-UJYcS>S?BLEcQh}sf* zVa9-?+#c(|*0QHL1vc{i`e}GrR5KBpaHy>$hVQ!ru@r3-L!8^hd55%(m5l4Uh)|zd zO4$v}6Glw^T!}u;fnNWI+bYMcjgPmt^Qz-At;f3GZ~JAQo=Ua7J|FKdefmZpe|O`I z-f??iEL}7{wN8r^u`G{{ki^yoWXR?m?Gx zvFbU~*Y_6es6V&~yuA@4CB-RSU$4I8UE0%LJT@aet!BM+r5Pm<-&_0JT;VycH^);r1+V|wYdP7V;QyFy zmxa||hWn{_oH}m2DG#gtue$F`GFNy7p{4o}x~35oj1&B6E)|YnI?~{B%*dI=4=tv8 z3jg!jku(lPe+6wNc)t7{OVMrQKheK;;AwE|D6!v>t5jj}6+RPa2k!8)<3kd8`D?%J zxvX+eaN@fGpY~u)GBWTXzORz_PUW&|`YKe^OpwHmz-JFlQr;pyu;aUt{@n8eBgKI| zf3ce#>H3aZ<_ULtOZoAn)HHxYOhDqK_|EghXxuEi;yk)65Ohy@#VwnQG}y_1B|Ey@ zj7=n!jnpYzvx}-9!Hw)h7@vpK+0FfekB`JhHinsNG^rtM_eEp#k9Pixw#?Q>j5B%QL$43$}DF+E?SN|28_t$Pw|?6kPrS*b+YK>4;xJD z@K$?c;1ja#+JGh$O)x&Th|XF+A+ca>sbKdyJ=QghmcWWenRqqd3SN^BHdC##EmtF* z8jDkLlL)sK558fOLajA41SU94Kdv;)Ll-oWTv#=o+dvH^HP>cE@du=lnfJM*-MOze1Na(Z*Txfs&Bb;~$>3W2edZe0~)*QK&%8uw-|zydA-F zAP{ktWEIM4qmdlTQeN7-5jk=ViPTl4*E-Cv|=ep_1=? zf&0qai9AfAJ~(J|Q=s0J#k?M&?jWB90zsb#LhzC1PsFWuN@+rp!h^0ub)lJDxjSs4jZM_&@oUbcXC4+TU>#g)&XS+W)d{Z%ek>*a(-6z<_&dk!DvQ^B@}3 z7T+{8YfoqbN0nyjE9S1yyIO^8RJ-(HGBnS%HO|5UyGIl<4Hr(9-v3l_3ML3R2XzBK z2M0fzSghHIzHa1=6PAjB56H*+mKW)O@}OQP3%y8$UMY{)8IGyp;B>+u$y#uhSLkc; zE82%2@%-g(62bg(axIzzT_R&-$_d*#o=}!t+7A~MK2(IdSx`&)NA}zGC(GdN5-(9x zBuJ%=W@H2YC-9GuC6YkNVzUAOwO4ihIcLkrV>>OFWF`b^a6>&k7RM1M2Y=HJwMSM| z8QeeE1`Kky0#%cdH}u_L12Tw&)@^`LDFnO+{BvLi*5F7XvS%Rt6xz+Y-K@k0j&NjY z9Jv!M(jbrWy~)#GSt6dc8R)md*`?{$0e-#<^Ac7p7%t~gcj}zlJ*3#RFd?U=82foh!zakir!`3eBhBt%$OddQ45ub=po z=uAbyhb;JzUVC`HLGp8e-_Xrdi&(rRo?yGxuT6FfbWJzdFB5MeHlH}Qba1SK>us;a zHFazD*5BA+(WR8=sGrN4$s^z_gReN^p=)*&nf3_2wZbnDrg*V*Zkl)I!5i?3r_^>H zENEE03U_)uvolG^E>BPFCH@ss$zRPk8pZ-|o`QZeEfPv1`|NY^p{%!XMC~D8`qQr<#_Lm8;9^%Vt$u%`w6VDiW&8lcek+W;1A)!J(7&fmt=2SbjpFId~79n z`)ihATmK&>y<@OFg5r-_`k9%&vh#4gGorr_v%4~J0Jn52b~k_fh%tl;Wu>#?>;)#n zjMod$DJ_rmvIi&cOk@b2EnDJo@k%6ama4s9uq9&Gl_kHB<(iO=P~F)J#0!J>(lpo* zbA1g)j3_Zt#HtVKhz^F3XBSBG+hAm&Z}a#rLyO)2e8F%z+*s^B9O6Iu`(a(2uvKt4S4|Rlq0y|BZOivU;jWJ+3SsNWL+h-Dec5+H36cu8K-%cL2mwV{`|D^4sdmHQ}?r9k7JRwpT2DuDF~8*=kG*#S5zYYRLeAj(_8J2td;D(`tuhA9=(lNs zxQ#w0)BMAmR_Q&25t;EwRcSp?WmJ%N;CGQ$-UN8y1?Z<~8(5FoN_uKF+aS|^|Jr@~;haL? zC5gotnI60LdZ6K=*USj^Idvs^d?IX?cy1zy-hs(~(KL3H1BJS1 zL=v(Y?oX9b$yHDDPbL8F8nw+GH%L4Tt>=N0c=e^&?wZ! z;Auu>D@4;9hvIX&gX+!_Ei4KkG`A{&#R2tPce!Iu>1(!*B?Du z2Zamzp3%ubec{7TqHbrf33S@jq`dkN5qwP$)J2t=G02RVNaE9eA?QI}>7KkUwe@4o z^{wU$nl(a%x*mA*C!3UE)PGrVW5{SAl}bNWy15*T9>7K*&Dr-yaW|u=`$eL1>YsAjhdczSv79|5vWA+BwFn%@bu|>DiYil{Z zU{%<*h3?x3GQKU8=4k)cZ|?0#uFp9pW^_X)P+%6m5gp9?c{WfO9ls*hMAjC#A!_ZC}PNs1V)XTB&h_)D#cq^kf%-RQy*cpgSc+-g5 zPl+1fAU@^SY)j{5W-d4AcbzBxp%uW{A@Dni)vjUl(iU(5XoeQTw25ZVB`x?0Tpg+a zWDQR51dW?UnOjZtK6r|`nlkj$h{ei=L&YDSEizkC`fjQQo|CcX@G`L=+i%q(k!As5 z;*F;H&O1rKmIPXiIEpMcG+)EuE52!q?XL{JmtWobr9)I$`p-`Dos`OShZ|Oo1In!p zNGeRJt@NS*f9YnzjVzPLua{M7t@qCW>{j*rp3Idn6iPnutgcaW{Y>HsWH1W_) zf9p~Gg?v*RbFxf34yZT+&-JB831_ZC)|Pn?9nxrz8+n`w2yU|CE!ek1coR|&%X&8) zS?#s+FH_uQ(#sHFXX0~}?ia*s^+JsuTPnZ^{b5FY3H?;QtgNeDh3!7CSoM;(yY|rH zESB}AQMb#M%v=ndL%}lM0PH>}8n#3dE)j5w*7c~x%SxE;pxQ#R@3D&AKsxpCsV@FN z4DU6;oulkI{_e>)AHA+e=h*PhC2Cwurg<96$HgaFSEH=@x8t0eZuk0VB0%fTZL!6b8>oPPP@d69|jB zc5cFI(1qCv?%nQ=0p}+1%CHFda@Tc?*?75al=h0Oo zULT4J)xB`;@}O_SwTkZSt8yF816Ox_BZGt4r& zk%wuN(Jcz+o(bJ*!?tfFhZ(VFb)Kqny(UGT==*O-`Pjc7x;se~^WqiSNcYIrznh}Q zMSqv_IThABI?l^@Zlbpr=hP)!@-tHvqL z!zuLr%tI4v5j6X-0UsSh1Ohnf$#@`Byr7uNfm|8p6wOsV4h7*$my zS)Jmp$oI!mTHjuCuEbEKz)LD5zO0uFr=mDf;c$oHi z##Tp2LbeouFlJ3SPek!!@EdLYN3J^TbqKF%i&XF-o+P^lkTC|E#v#YU9l^g2*Tk>7 zr^wnyrs*^It=1$W@0>BN_{YLL(QQ4<;Dk@~Bn=B?D+Va8#Q7upoP0^_x*&zUr?`bw zMe^9Nxk-Gta8Ff9Bm*>k`n@i^D9mQlq!$JWhI^y!i+jwY`sYgRC&y_`Tdd^D_6cNi z9{Pt`@y6)rc@K-a~IoGVc?7E7M!M3T$&$g2``YOy_3&d`HrW&m7Y{37WEP8nnzjvgo* zsB4PU{SwReYXf&&t2zWaBfSh(h#JMXIa^x>ZDj^~&3?VBF1c(Gmt6nVeZK$LUf(^9 zd*^^eeBKo*Br)4VVe`HEbA5mL?j3CWGcT;(NU-;P+ffE~6eO+T&=MJaoS>*T@2?WC z{5}1zaTf^;{J+j!ES)aeG&ZzPbbuosD6fCruMa1W7txYP&<^rxNK_~aQJA!vp<`l{ zxvdty#AnUmCkictzC7Yd-|AwkzXd0!^!>Ylx>sHBv&*juYW8bC-4&e^j4%}HzVSJu@8uq+aAL^TfU8P@aO)~oS+J}CV{~4&+WsK!-U0B9>k@hz zXyy=%&cYjc+wPh-X5OTnBxS=dja8cv`sqMFGd zgGe5Sy}O}eW1mWKGc05F-6J)oqLIStCoEeESpoa!=_U#*(ZMKD2U&@=a)$8?<-}rE z3iCz!pTu!S{LVX{d*g##b0k=k(9x~HJwsVQMJp{1jpOGAV0K3>H;1ZsR>%XWXtwuc z1E>V}Lt%)1KP>><8>md#wa*f7J1ip$Jdt`EemaahrB0Q>1x<;O=#<8CmNntvYK;mD zNfDu(WV?@lR@cZm^LwhbX_XmL#cFQzO=s6jp^_jgr?;N4(SJgVseQI=XWoxGPW1W4 zX6>*LBokx>ST#r?l3M1GOcldNekvnbjVbe09(#SlQ-eYbo42u)mnjLl%t!ef^;oHZ zKvm(^i96l4Ey9kgxuvF%VvgReNqW21>QBdNisEM?z^<#AN~2Jl;n7P)0pZ^23|jot zq7bvTi)sdk90rd&jL{we=fLiKAlIsJi%H-9V@^UA7+oc8Kt~SF%D`N6{Q^PVW-~zH z?2*;p86LWVXgokuI-q+5Pvp@{&$9mq8%JKX?TF#w(>H6e;DUYd@mBL1v!$lEJ;Y4V z1_p`G>Q)U(siLzHpHM}f=L#VgmOSZDuDS7FG*M!t5W#lK-O9iaM=}h&P(ln zvAk0`Ej}e9v;=~%LLgmbFay!IC+E4Oh2;o!NI9lCIVOp)cc8Vwe$$u*L;VSHY~em; zC&YI|sbPy(m<=RKcyBgY`S3p~pfjG_MeUD91lF&s^N!@2Ogawj>!>?%AdoP6h7bw; zx1n~2XlT6f;3=7o^r!C3nbjsUHl30rIfE-^b<5V}7MIr;(82)6MRo7fphNQli9!Q$YSPlPo4} z)J_`kJoo$KFsrPu_xWOKQ)ugVcc#CW`{VPb5#Z(d^7jOkLl}5Hy}zFk`gmQO`BTN^ z*w^=PdQ$uGm<0&>y$?-QSs88h`aiy}o*r^(*(ZPh_I6Qa#k}R~dAoSaRaXmmdHryH zdbag`J6oLEts(}zUv>#cH-a{V-rxV)`eXpI5zM=3^dGJ>hWZMZ<^rJ1!sN4kz{}YW zVuw5<1<#qSo{xj6==HQVE@mR54#FaRnpLB>^XNYLg`&r{I)@7fqu*nFSB~}f_8*Hs zLioUyFLK|!Zy$2rx{#i!fmJE?6$6Et-y1z%pvnmCBvC8vV7$JRwK+N(_5r^4@4&f| z`TpiYR#(>HWe3aC6bxuv>oiB!^{zPoWov;y;l~g6(OE`BMm1UsADgf6$p7Ih@AhC} z0b}&>Z;zk>Sti8)a(#f(>kQZC=?SpQ3knYWD7yrDno8P#FL3UaIf9DltKgNcKDc}_ z-fCp;v#y!U}1?@;%=LQf_p#P%m48luG^{JEW{>957U#spPx%@hc zxW4B(Q_-sP$u|m3IMeqgo&N=-?<$S7DS5f3ubD`OGMU_4xPX<_UjQ~PbK(DJi1wtR zhwnbP+|Dwxfv?W)-g3x&aXkc`0~O>dYVTjh+5neN^bJ>@+9{&O>=x3-P*JC|cBtli zPbT+C6BfG+AUPH)o;<|Dk_{TKN#t*)fKBz^OjW%!5rSwe?(ht`1EMn<&Lh#}@fR>r zCe*b@5E1gkCsn)z(3cM7-glV)hptHfU%Il*y?aVT`i$OANI3&-VnFnba`&q)LL2!s zw82KNDTaQ;3bOS7LszDPB#l$SVzD~8>C$E@-NyHI0_6^NJYu#m>US?dD!pD%Hh8l= zxthsle`U}tBE0hu^cjgRXLSoi8Z#g^>d1;Lw4;0Qup6{W@Zb)w{jDiqM>lg84DDmlrzrOyUCFB?^0`=kp#{9alRSCAKpkk5mdb52nY`w|?as!<( z;YK~|$vpJ&->XB(lij4Ac|^c%Hki=OcDPflnpNx}l($PoIm0#(DFsk% z{AEQ8_En5w7Rjj#+Ces~6oghXC?Q)wXeGo%>mOQKL`@IP{2#RPYw`bwR*X+UWTm3x zA6X%Lu+ZF&?$a+PkA(zhgt)WQ1cM2}8-$SBjG<@HgfVW&KSutA9)Fv8@Q!g3RRhGJ zW+ANP)Q9VQl7=iDn;?bdH;dPVA^DlZ*PT?GM}q{_4&$&ka%vI#j z?K|xR{KrhA@j!cl^Wk_226(9a>^Iy3(1_FDpamXw;YtcjjJyQq-?4ci|3g$VbhP*% zzJ?F-eB%I`MAVtqE=2jD#bho`IAPloiufzU0x>XAaHL3ig*Vv-y{=qNXP^g|Z$tK= zQTd%GdEKs);rY?Gz~I=)4B$eqQm~gmexSzSW`bXyR1ByGr3r5Q4qYp&N0z}yQs{$o zkNC9^!tG30gOwwRvqjNa!pdZ!Ox&xH%K5}3TcnY5{2vrvA0v%Rt+?v1*ne#(}kc~ zeedAyJ-lCiytpbcNAqk)T%p}>if%3J$H8*4ytPdt{F1}b-Q3~_DjWUKa|;FfWXvG4 z@&=rtUhF8iiB^B1a>6HY2(7Pc1b=R84hzWt9#F0qz})LB8W)nrLIO%F%x-%~V+R6By+3|t z(LH(aA_eu%dH#%ir@2HP1_Q+?Jn3MrKY$|b9zlB({K8u@h^ge5b!PozDr&VJ2MgaV zU!~iQ=DE{ae{U11_WrU7Z9mZ+vQeZjMBhLT}vMCco=lTo|(pQ(J3S(At)=charnDS;)QOctY!=n)l5M*HkGJfYp z@s6Mn4IVJ&{?Uy(-8qIHN;5o?1L>!W6@tH}dWA^c>xuahUs}iRF%5L|2WSUh5e|hg zD=LE>iZ7L<(;l`>V)cdm+#193lhK9;`v;bcID)v@OWTD=2@674)R<5Wq|rwh5Do3t zDpe*6oTuL4Y`|`|Ne>J&aXQR^TZ|aG6+M~;v4l!!7OKflvAX=X+a_-5{_f4$%KSJBPwW@@aG_+lI9&q{g0@ulHUScLjOT3ULDwH5#PvA ze}Rh-Mwwsl1?1m#h81sD^w%m!wtmMBOCY)M7JUcdjkb4_+L{xzZ`a~*X)b2o5?l1sub4+MC-aZ_9|yh7fx5%_Q#_?HMIpds8%qCig zqVgUkr?#LZ!#Z%ObM%<)s&yNHd>a+^P=|!(M~bx;nUn0gHbS2CI|p=T4Ec8cLP;sf zh~$UbIeDmb)2By^6hyoNHyXnh$Tbt0mQVPFic~<1wA<`!qpakBT5Z+e%8(tCh(+JU zq1WY4-n@`^55iN%wXTO9@t91n7NY+^&7p5Pmw>Pm1VjgwjZnH0oMAr2HB`YHs9~;0 zOjv)Q0*uLEJ@ymnJ{Vp%cQTU=@R-PA)z}FH*bRuY3)>+#lY3G3fdYy2lC1fnu&=bH zKnw1n{t#>r(M5n^;XXXe_lWs{ic1v?1Bfw2v?>V&kP@=DDk1uo{I*`cV_L-JoMHW^ z^*-641@>xV0qwmrDxoj&STRtjol_10Y0q=}|fb5 z66ka4z=>(g(cf-X$!Z-g>1N9-A3gO9;EO#jf(!RPKd|4dzgRf403D-!>R&LcJ290+ zfgH-uk=MZT;k3oS$c7efLH)mw3N{F-%vt07m#Abqh2$A7=D!liJ3FLEa6hcJ?Tig3 zj)598iaZ=kUb1^fFa%M=-`{G`J2V)v=?}%~#A!dMm*{~-0_=MbzoG{rm9t1IUIJ_o zQu&&)7sY>gTU(*I#p6ZPe(t>i8WJF+LivM?0jdIqvHL$r1*LJqF#tqVf|()x4uF@fhGqEhFDkKO6d^4rOee9}nvtI@Y}_rFEUzhUmG zvGBY^H&x+-U7i`{3;)p8IJqTPwn*=OHJ8&q_(xPKLI8$;NM);!1vhb~#r+dO&$CeD z=bFDipUANy&!M_IkJrv)20aY_A(haF*}*edeESecp^b+@SaeTIa zJ(*X!c=5Je$!ZWe8OqI$b^S+FRNYjy{ufc12Z%JY2?A*SVb;heY#_&HmJbP48Ks7;XA$P#(#(kElBzFgAaG7 zMzs0AM5QjbWk1eap8onPh*Uf|Y4;6{Nv!*D*yO<1IsIh9>AdT)PeK*Q17g3my2L6U zi%CoTG;9vy`MMo1AqW2!4>}z3?{EmtRbm4^>_Bp)OCbq?ROIaH1O6n`2opWl8)q7{nDwO?$^rkJf zsYBj6l7)p^w3FTV4)nk(HM2>SFe|p`9RO-m&YhvmaG0ZG^o%s!afF_T=5XwUhTmb- zOxfM)rxQHY_*VHWRhx79S`@BFC2FNz7TM=Ps6r)=ALXj7XZ-G?Q2os#Y&51o z=PVSzryk;oWw^=RD@2x9^f1oE%NW5;+p~0a9p{8%13{vC34r(0hPab{=x}6jnh8`b zj`F!FL)rz;!BeTpd9A0qL3{Up>9NFE)_Csze297M4F;x&S)-fwUNH4UK6!6QN5nG| z!eC$nt)ZG}_CB~;Stzwj=yc0st61XG{XhA}a$XR`BJ(~Bq zLXbKgIz~7PIgn3^f|E!cu)CR1DX7nV*E1Nwczo`_zn);Yv8C!2?cR$PL;}JeMjPX2 zusyA!GXICGbB>OrUE6(Z+qNgRZQHi3jwZHk+qRR5Gnv@-gfsE!cklh3bN2U7uhmtn z3r}_3Pp!It*LCfmjw^XaN_mG`xcFI1^J=bmVMp|}<18kXYt)95C|aDB?;2=7-a&(^ z^;O@B%2$JjwU(izu6ctZnyac-qc(Y9vyM+pX^z_VMO5fZT>#Jw3MRAEz5afZa$49E zMyOH>VK(Rr9r%z)-fw)oru~Ne6K9n?dB^$GByg{7jXCevy@8&%Y>A{ZZRsz~yvV#K zL)WTxKsd6gGs?y>YO7?RXk=~v^@=(6A(yOq@M$q+>Y(;!P_>K)J%M`ub(jtjMY7rqpe}MHpFZCXC)vuc zhy47mwRM8;D){&P5*ZtueAIOq@WB#GZG>e>y6%r?WiCyw|}4>ILL>7p)kNywUtDW{i-k z{A>^_`RaK9R-#GeN7>EL2#JmAwUQp5^M(rx>q%8$f9bV3b_}E_P+i8_fI>1uF&NlH zzT{-E+3=}<&0ML@6SHun?QNX7{zF;+SldF;WwMzun%^3)`UIPw-UAgqUv~n0GM~8| zeoiEuZfdH->`14$;*-2?Fa_cx73@R?avh(<{(dU%9~FQ0p9K( zJp;=mnfFp8R~ZTQLa#NbA$Qji0N;bfCul%aG2{Ga_xSE73qOc-Q#1 zI~%aU0q-%8$=q>!)6rt$+PAsgd--&8b2E3dwQl=RXSMwE@ssDv|689U7J4RQN6(b& z2E|s*b<@1a z1Tzx$hUw+YQPH~n=I+)P8)o=iE>~1`{YlL%%L^lZoa8zTVAqjz)|E@%Ge<9b@EK5? z#kEYhekO;+uJU9XYP(qiH^ZQFb8Zz5!}D*-vsxeQ498SS!xXF&$eiI7NdC8?7J z`bv&?Z33K-arm=ZDcklh*F1+CpD|O8Y(0Q>B)j>5x(xw@l$pF^nOmQv9Y7^Qz2(D; zTlw2Gs;1!;(aE)I=IQlg9JA)bI^Y<3BgNB7aP2CgJ8+1pxt4Hm1#68PUh?xcLwE0h z!I^l5hFP)Qc)`yn0&4cSgPLhe^D`>#LUt4px86U(WU0zdBklZqfIRK>U*?lwfbxB$ z0!_gBZ|c`)X<}~>vqN{)1~(eJ=Vl7YW=DJbs_9nEaZNhrB}M6ppJYGeEC9JG@zXqn z_!+czgz4DRrRq0o49ptgto6X~C?g|?{#s=chhTgwIPEbS6dz|3{omjvq$F6NIbpu` zm-9^D{kn%cF{&g2G7kKsS==X$F_H4{v+3|sFg>JL&CD7z7~@za%WcfFsThLpVocwQ zaSW-^)91sE#W0yefRP|8E&yYq4rNnRd~?jK=})h0Ck+eIIgJ%gPYLAoMBkKnpV2C3 z66tWcLdJVkmtkw>9#=kiu6kM5#NOdx7qyt;D``u84Q|h1A}x*ZKboxC7B|dv=Hr4XR@!QGbmI-o4-&l{q)&7V$+W=S@)~db62K@KCymCAI=dlN z@cAZJUu3fdN^}&9WP=%j!umQ_=iY%Y*z(#D=6#?aft+ zQxq&^n4<*q^OE(2JOEu*7hbo6E`NqG*`adh3jT05Ub6Or%+3LxPa|vJHxJI^p!=I& z*JhH~NN<`|OiQ`%>W3HgV&He1yKfDeCrH~QKPNyIcpP0cc=B}Ma^=m8YsL6rGb2I0 z=gfVJeq@7{EtNe%he)QZ76pfC#-8tBs7vBALV0Q&Z{RgIEdb7nFBgPEge2F!NGw{{ zeTQP*WfiLXla;bo?OxwHVvO>h&o5njZR89VJmyYbv0S4jV4%(7ezXnI;-9uM%1l}J z_5-(UEEdLUJ^yrEJ7ih8 zQni>u?)-U>8#c{9L;NoUDXwqW5Q>NqCjl8%SmYh4DZo@LjL$t3A=)eqCwUBJC<+?d zD8f_J9~FFU56ip$vUVKBg_fw`MG&fMXcu&U^{#0W8!AruqFI>l8zY>U{G7-n;!#0( zN@~E*?|XJ;EN9~r#+UP&4=;uU<$i#Zhp$om?-lyQ<=1g&@(DaZ-D^)OX;r_uIv>2^ z>XLdTC4kI&*fqjJ@y{-YRu#La08V8VlJIYkFl1p6&@dDdJXB#EPzW?(8c+yyVQx?e z43cb&!fkC7O^{$n6kU)Z$jB2&>tN6@9N|RJFkIn6(BdjkUHhOxL}v)3-|&;5V7$V{ z(A?n>+$Ckuhu|7@vqTBr#C5>z9x{*F>f;2;Lx?CY7Itm%jbnWJ|EET2%HHkNv zJQeg5uX@en5iNoC&TyJJ5(9R>?+1#!qej4fl~|416I>2-Uxpz8lz`8L@2l`Hzy0qs zf9@I_CYas&sFmFM%K(2i2hgA6iQocam?MxALU)GvC~{W&EBn8Y{(E`_q1##>$RJ_` zB>)&CY;z|6liW%2)c*+Pnq5G~;V}PW4iCpT1ahCBp^&;_TM=)woqSWoltd_Sj<%VG zFRDp_9Q45NwR#k7$~53o@N?qJ|Ltm|<`y`aJ^Z6#TK$)X>3S8YVPXpO|N5*LFfjPI z|G~WbelXzk@Ek#J72Ef^>-6<>bpn{!)S4&W?gRGRUM_PsV|=v+4xf6Q@&~+uTjJt! zGBo&jz0d!1ToZHt^q|$D#I&>1-Aw3FD)c%)6$oUIqSIJ_5(z&u^Y$HjN7OGh={)CLv>A<6g=P=0GoS zN6-{4dnpV*A-{iUkvPmzAxup;<3*pFY3VOlh2zmfQ!Iu zHGdjVjV;LasbTf+9M48cJO59)fU z7qcu!xTUNQO!55VnEY0tKeLwR;X2f{jdvOBp9yH61qt)e46lOYedza3$yS*8s!mX!5gGpFo%!wz#7%RhVtYOE@%(xAtRd61-Fd$ zj3l*~;I7S(16_OQCY#JT{rOu-VoHPsW1nt5vxuB0LHyK z=KJ|P-1AIbGn2xlZ5VLWpoz2y{?bC=(#*j<2jPS8k7ke`cG3>YY+pd}O-Hs})*7E? zKzW&7Oc}GktPz_yeM`+@>1;#YT?Nb&(no7V8V`RDAIieKO0tp>pMz9^>V(l|rn2P> zRm;QA#Jpl9cr>c-h7cR=Dj|eFi4-<1f|xSCfzjf+k!9)ZzT-$Cw95Oyf|7iifFpwCS&xn2ZJIksE6lN5TJ{9eIzEz5@=HiWuCiNowPVLVGZY#oo zkCmJDI3-bqR#EZXiEhu<9%(=uQ8Eo#;S73xq%Pcu=%kG%T{d4x-bmI%s{gywkf6yd zh6xX2QY6MG%ArXe=C$bwnJ1-`u1;+`*cGY=#C1vVM)+9;Xd0oQ)w+GQT;pmMvOFesQyvP^!|~QN^_B;JeRZzVJNhP1Hs7!YQ%6Y?54WxyvAt$fpkDnoL8?-uLhkCe+A%C47x?3i^A6}pX5l=Wmhn#-4@TD!UF(gNI8hf8 z9Ux3JNtz*q^~6s>3;`Qks9dR$)PhT z0+Kvuv(YdDGO@|!ewFzT_tq%{jONOcD7!eR@@UPL;*YqP)+D6(WU|_b!+N#1x7?ao zcL>mfF1N%%3|des;J^~K!|qAIV9jNso)%`%1VHwr1(15_KBU#`4l=!R zn%x%7IIq9xfI>(ktUzU9QmqZ>3@LuZoHnYlw>wsbzfO`?u5{BtI! zEdjwGABy0B7bOUq$?Wk*e3S%@BYym0FL!k=-<9a>cF^qCK0q4Nudc<_k{&VGknJFd zI_{9@Gi3{?rST`_&ZsTaNmlWfC|0`o6iYK5;1Y%=mqDw;!THNuYBfAg5>Q5@LB`p#`9t zc=th=z0;6zXlTvjjoQ9zM@@+ni?DJDd2`e_d#m{d+P>~S^%o#Qi0nhiMUP;1(i6+7I8}znxP!-M zVPz9Fr)&t3z2OBYKE(GSq}B=y+-wvkS9E8Wg2c?kAb9Z3f`Jx@)Q z+~c?N7K2N+IA|!rsI@febhAXy)!kA#VGPBGAn$%4aoORnSg)PiRBqhihm6J=ut0JzB!y_p-dGUcaGq_T(~ z1x=Niu6$`!7AyZQ82{ameT@HM$D_wGf#~Me z0V9GNY{f2*f<#G&M?;K9j64TJ`g-iqn)o+PhE0W%Lz`MU0u3|n5E*focupD}GGn#z zQ(Z0)ZORT791!9R+?l?pmB2yQia8{X3Na;woja<7V!Tbv_d{Y?b@q})9iiN$deBnE zXPRRh%s9Oi+%58D>}u=$lG}~JC62oy`e@vjnO-8oYLb5c z9a^B&+e|qte;0@56q)=PUU+23FSGK9C+dvv8eSoyR4ivH8B_2)CvZi(?MPdf`-u zp#9?g8lY%>6*Wc0LkMTF;E4fw!NiSSEE7if464{#qHf+LNF~O~xtv5s&a`^ml}wLu zn2|+B;EYx`?DChb@%hh(@l;lQHtzaI4YG1FP}Gp5??aR4#TkY)d}3)yI9-}3IFJrD z>w7#TGec7xBBsdUbqjK`nym}YkN3kM%ykrOM1bA*=BDRk(kNA8x5QKo6nQ$0Mc;=a zixbqko#+kq5EXe|?>c-27<$|P+};g=1xhS~4J+2%EtvO1aDJ^eGO?A7o-i}t9Lec) zC(nQIq9v@B8S@jZe%D~=MA)13Pm~Hv7Se4fws;Y%xg)=G=@Y~KwjPzzNwwS$_HNL=_|INFb4s|@V`mz+$xPT%*dG^*OYO8ZB7U?semf=T zd4$R@>9~&l3swi_>(fVx2a-9}8}&I~`e85MffZ+E8%QrZh^*{DDkU&i;O~XGtHx-q_mw9my?}-mWGMk1`E%)<*?gM zI@29F*m<%ylnmb(=c1gxsJ-QvLSu+u@wq9u>cH`NmSX;e93|Z+A?sK~Rn(YWUxcUr zmN3rLhq`wLIQ{|++_)PfNt9tG2ReioeRnGADcaB&ZXvY~lk54euWeQ{?SjtK7G+;V z$iut8uFW}IwoRtb&51qUEKS?x4K9#id~)Vq=2cC&QOJpA_lrpTM1)OLzTHA~szEXy z@xVrt5np9da$W4r3|Rf%I5U%qad6t9Sw%NWD?$bVz!KNmb-0ip4~pH{hGA$3P1W7W z78?ao%d*_-2`r8MBVsv-&`T-Ti@?i46^1ZNf?iM60`w#EOslk3nl7rN0gttPqflU# z$hj#iVc+wcFD0V>X&v3J{fvvWcCaxDqqNXe8Z(KXO?F7)07Y8nB}Kk)Gaj6DiTL== zFao%tt+NrapAM9U(dNbzu?a|)x=bLLlZzSK%YH2duWu=u1VJem z7YF=|Xje)|)vpE?{}wFjDxv30Yvzt1CNqi6-ZxVuoPu8n&~8E2QRDG+$Xiy;)`WWacj=$%3dQ0$KI?lc_Ki+F za(|waaeKIumo~aJ77<6=6%rC*k*kt&4OjR$=A}Fcd-`en96lbUC6`>QG+wW$q9{BA zoZ6xw{YJ85E-lNgC(L%+K`pd)0lL8wL6ipjxQ^@0HIjKVHC)j){5kbr&Qm1QGY%tD zQ*yd?#E)RB-PGrPR*#YRD|kQ8BzZbokvMqL>a^-Kcv64IR1^5dv_>wFcvta8q7{Zs zX~AHn)(Jg51^CK;QOb&} zuktpSSy#B1b)0#gI*2FMkfpXv;UGnC{7k3Olp52i#whEvas8WE^Ij?_39C8TrKOvjQ>JJ zTpKMJ>V0eCcyQ@Wd;W1*8BkqiIU-(5I}^1-fgYM(ck~OA5tVazDMx%BoMW(|uSPV^ z66{hL!(zbOha6Evxp8kLGP-}k^~{e!%t6$Wl@Ts*6ptOkvCe6hg~L@nWND}ToL@>Y zvA2vonAsmpP0xZz$H%~G-*NJ3Y3INOL5f{5Kqzt%q$G}l5=^r^570~7%3`!>9o;Wh zsvm(RYv`ED?{2CPR>C%QejG3{CRd}hO<(7XS{Z6X?GKuc@G0YG}e@Y0Y0rA0%AKxnN~<8{&|JK$`rshGL{nI*7NP8KPX1+Ljy zn=16X-f`MDD3=cmtbm-_RiX&G#Wr`+H0$|N=H;+jJ&A0#`K#i{T(tC0+j|{7yegy) zRcuSFtOf*;>Zd&dTqAtV5jOmww8lrR<+-chRxbkm$xLrTT?)^CFIooJf^t6JPhpRU zUaCTsn1G3!Be!HQW$$OAU-x$_)B{T-7`p-Qe8|AW&DZsaSMLumhR;u@|9->QG9=LO zmH{gXN(q>9#Fs+pgPs)nDbIwk@avJaFRPT<1qP=P73Gl>M2VfJInwzqk(~nc^>43X zcse8O9yh7*iac}MQ;n8=+|K8diRZva>uxU}hhF!lqvyn`*Thq2FHc^7Z+-RV=4Oqa zN1Kp;J;iD9>)XiN`hEF2lVP3L#Ik9J{dDVPuNlCrSGV@LAiL%`P;cA7X;@GztyRxH z$Hm85)4gT4wsO5rR(IsAr{hr7NUtFs{!es7f_vr$Lwp7D+sdo&cI|i>i@x@RK*JBN zflpC(-nx!i%RajU{2kPZ3I502vR(vuu9&wIXa0eTy4w-sos4`5nI9jP0Gy10m6WN{ z{5` zr(+{YBRcoUJe8?AmrpAN>2NNwxp)%oFut@I=MP0JJ#gt-YkY3TsL|Yxn~0~%SRH`v zZm;&d=D;QYCwZI*I@)nFd6db~qG>K)bsb}~cs{pH?c!YW zw|?M$V@VD%VaukR4b6G5(KIn!)##TbF?Hs?CsV|ck_I%;0Qdv%2BWb5io(r#B#r9J zO6S6EVGf^>{pd=@61+bnh{e})M+UgfH%WmgC=X7pfG7ldMX z68t}Eq!Y+x1fUw}7>gCCMmj`f<4OKL@2MTz4jkEXHb*@mwVtIgZqij{Crh~N7 zoQFKb7;J#9aedIxBKK@uHK54=-x+xS!FGqw5POCq_Q)|7SR|AfG5^XDWy&5$!i?Q! zc-2g#z~k7{g0+r834532#`o+*grDo>=QftVIN59y#N;Wtap;Uul=jG|Iu}QEXx2IB z)vEW1q%vr5ts+Kcxe)-4ma1oivk19cz~h}+cR0Bq!ct`mf-K2|vMZv8So>Z-s2-%J z%QCxN+_DC}*Mx`|o(@m3ncNn?J}8*XX6^V8VsoRGHzuePEkX_@3~??MgC@VZPz5%+ zY=5CAz>?1b5?ivA2gZV7r3fAC*PDYxvApHk!{VzwiGiSAjR)X{?Mnj}Li;On*EqQ4 z&|$ry;=P&ldK}(O7;3^u@RJNxwW!rRlFEGMtmT)@ss!)MCj>nV>`5{W80BD=hjn65 zI&X`pW3Gc^rT{}JVk1bu%D5!_aMXgW%aRW-#}1LM1w~FJxB%Ig&7t$(j|DM}QSCv} zpbVV$!*!O$3`@Y_{otmEk}ESL9<^@-F5f!|%y@*1@-sV@tnNaGBAHr57^2yQ_bXNU zNdN}qX}FCa$y7XVNqTRrgt%c6WVFD>_CK}r>lD3V`!jypLfhi`6)BNMX6Uh z5O7|bzr}kv?Opca30dFY13rOCOl(vkwNkR_;d=Yd9D>jF1@_;ykw{Z3aRdk#U=U^q z%Yl*s^qj~$kOG+(zF407|AH(xF|l>C%LFf%LczJaD3>BbzNacs860xoDISd7fW6#( zNUNCnr4*`kgPOWhL>JQ}zp}geKM!=A8aeJb{2Fk4%ei=%eSQ9%nEz9ga{hMxJd*J6 zQlV6kt<=80^})d^>>6$vJ}gzk~Jk1`TSbo0v zDjW{`>uwuvJyI|Cd{+Ao=oo1bYYM~}m~0r$E0%A!B|P7Yeife0LkQLV!v3?_kyEqs zR6W3(WqVqeK!+#vasGB&ec|2HeZE?=nP2cbHtn5ML1~^c1jWF}|NQo5;*|X_mu+ei zAZm5_!nI{*D^Gs6HD;{XVDIH{+W^obkmYzQnEdqT^rL%VD>-VA@ua4eNnA$o3hqRU3ABMFP@vla2Pe)ID^dkNa52Sum zMd}vel%ctM)sTFO;TU@bjf=xPwSg~3_sdYtR(|J{Bsqtr-wl732;}7!n-JE(>YBia z=}WG}&sZTevamMM-Cf0st+_M+a&w3dD?0Yp#d5`pNxf!L@CImzcwa*g<1ok1*1G8l zWW-&4-vu}o3gebiW`6%Xli@5&L=CT7VRV3V&mZO5Y_=c_MGS0(Qej`W7(3wEI`0q{{GI!p&1s z^uWg?y><@IRY>2mQZBO$(0+tLXRpccH1_bnK9r9(*d;2K5%Lt>IvV3+P3EbiJtuh) zoiKS60U7`bLE_Tq%6IWv-^ek&du_L!7@4`+2>k~*b|EH1i@SUE55C45Vhn>o|Bi0? z30peG7INpd8+CCB)i%cfsj{kaZ`|eu?b=U(+oS0Rt7&=~VbT2x44(SAv0bK|MN3^3 zFoeasHUsh@65N`w{@0v}I}`&Anizdc;H0RT1*48sGtBFh?)D<>!b&Bzd0kBsnOOSN zsc@7hk??d;^qg^VHv0>2qb=4X_52SGx$HS%nMKsaO5R}#kJi-uDbJ)IHb$($ne~i- zu29?Rv3^xliRo2!b*LoV9}2;qJgAn&wx;pQU9|qdJS_+e#oN&Zb~65a4$6m8RPFGP zCj)q7TJ777$dVO)0Z@~ z4z3^Bs1q0QlJy&PGMOf+4fn-xs*JZ{o&y`yq3&AMYZCqmayVn!vnXSoVagyx(5REx zy{z6Lplm9md!uNcAe=UO6AKUku3?d*dxa)@FAF=^dlU+rmk`|%!yV1Eh8hcF2u%ux zrSIuQk#4Y2-Xdfulh|vlBnNCLcVT(Lp;6GnqX2pmGnE6$Tf5AUqRCU4yY2eTSe9NBZ5P< zA5(9E#-5=?=~Odq3@I;NS^OOi3^N|d4+Mlc6AbL-yDo0&Z(LPxYf`)`($e2wc&ZS* zG;K!_>F;Zy7#1%{P&48HR57?!9Z3wrT#`kBNc}(yRVZpzjKiPJ`TKa$)*W(#6u*0V z!EmP0lj3ir>b2Vfpp_(<^tg&sGU%}% z-Plc&%*&>=k9;&H9!>?d2<8huB)^L&0X7c4y=PthP665*adD&{A$#^9`#*#-`!n24 ze4Y*;zU-`ynD6{WeXRK3vFh9wPcrpD>G8NI2ng!`Cp~txFgG{r z)jxFk6M&b3+k%hRiwLeifB?Xo?cd{-k4rDW>+$w>N(}Mtz}IO(eSP5P%js=k{4P+y zn^3ctJMg-D`vrKu8cXPC$QSDN`?&ddSY>u(zM#Rsd)@Y$ciMS(e%p=#DvtwweCAzV zE=;{Y-dBJqLPrM|7Z>&jVdcjYvl7!u#wFH+=fmWk5Flp#reMJD>mw(pC&R0QONr?n z41!n;0UPl7oMYns{&}-<{jq(i_W}Zm|8{^Bz-N#4}MkM*U;< zw}P+rOTN?4Bilfb!zf?BGiD!X;yMN;;;kpv|92Y%0W?XAq{v^7}_e%w_E%S zHk*BV4=fEXzfGRS-~!c+|Ij*!Nk8nV83I5{Rf4zYhY(2*n&gNcW=g>PoZ*9f#!Gq; zrY!9{;)lSR$&o?*hA0c@!aVS~EB5Uih2KEo* zYIoehiISn-miT`nAL8l1vQ`&KashurIJzc7N5B~aPgfu4mmM4n%D`- zjeNpPMs)U3?g$!%`8WlTbHF_k@qR({+ks@l`{`)0wiHBM4T2#KlE>*y4r!0up<$WT1olnk=h~-PDy|^5~CbX(Ex(rhe~)D zM#4u72_JmpJYC%`ZBQ#1xfa0k!e~?Fb8(5H`9- z>K#HyfV2!%wiM)Z7$^wY^Kh2SGu+-rdo?UrTGXE(m4kE4gpvokS`q6;@nMVy z>xFo5_^_Y@Qd9~Sys!#qQ5vDH@XL?UIIH<5HQ%o zB7$tLz~9mq8f;qw1|4#%9rIkZfTCE-qY-`ub;}yE_kp0GNQ;DkAx!O`X-z7Elf){g zs1KWrAF#yt1oq{@~K9t9bs&cr@oR<(RP0y2K#Qm(6M`Eve}82T?@&8MmD!n zC@_kc`u(9v#bf?C2l5aaZWN~{Lv=17y+m{n{5vz*Qy1nQ4lk%lCBal&vlqdA2u zb7zevz+IVs74<~4MkDG;LOzRUg&GB4-kbVMLGCel*PE4Rp#&UYqxR`2tRoIHSz2>tOVoZpbBDVFbwihH#WlRa@&9q*#QoZ{MUwx@)E-W zE1vlE0NMd3rwN#Jji`6GipRaBB{gs{@MLNNI@(c&AWe8g-O_(JGzy+>^alk8Rs=6e zA*2G1Eh{I}lBubbypSxNy>~ok403^lsvFlJZ#NvSB-A?5l z91rjCOt^jN5bo&np-aEJWn?dAitZJ?-d=!Z5ZB$ou`S{>7-2X!PU!oo2Xq>*c%^wB zA8g-K7?K!4>@ktz7}&-SyU_!mjWdlg9O~Do*f47G;RqAVxG3bfWIkyddj!?rbksD` z&XcSaQ_CY%aZ&6@VhmX31@vcytC}#b&hixu!$FKE$`2su!+=f6MgGB}tY9Khk1zl# znb|RSo!qR1yxk>i~}D2l4be_B2gtcHLfmF1e1=?dUEWlHzwVIW-=0g@4CJkGKxGbnwr^e{qSBPx8k`f>`(03B$e1qj@VU|3K3T!47EFI_seR4x8te!?r;>T`n?(ny9bQ=E(Y1C)+`a)dJ)q0JlXzFk(rM zRx3Gb+BIJ>*Fm(CUV`Byx`28U5N)XV?O_zlWeD^|q3GxeBjB6X2g{${2*Zc=?}lN4 z1;>W09-p-fa5k!=rY_qii~6gd7bry$YGKf#_3o{lIin%yRmZ#9({yb+1fLC8Kg2^{%yk z9e-XUl>)>CFg3UtmS-CUZ&Ola`7%fEbk7 zSX7U@k?Ym{Qe=_Adc>&vmECs1&HL2bREDsM5KkYFhO3tp1T!=_YJB9r7^9&+uUtkg zSr5R3kQCYEb@)wyaw6<%kh~UZLjRatjLFDOplNtkSY{zHeyEqr`KzCdTjjzGG`E=w zA|+a*^{=<}Y?D+?2OM?U9s?C&YdRuU7$(P3rt~4psA<`P8zkYQZd^E@-XJkU$6R2Z zrldMIAH+#!2Pr1w(OT2<=;0F$PQv_;Q91yYK9sV#APt%56mhQBBHndT*?Rup&Uj@} zc~8;g@)fxQ*d1-b3P#;Kf!2jh5ouf*1{Qr7s?3tjQBxmUoo^@wO7ZlX3%s?lD=F62 zWiC{BII%Oq0SIh`lMKu_retCS;o7y~fz5IWJdSclpZwRQKj$#|cy|11Ph%waz)vHho)^sj3XR)@#WobmZ6dyq+ zCm2$0h0c09X^Odd??tA2P>cAR2tX9*L^doSF^!goKVa;I zkB(#<78UC}t=csFIz@$CQ9+-|n6&vXCL)tT#%@`>h!>+ldv}@E#ehivngRveapVT) zuW|EKHXP9DyGi@UP?d^rY1hgz&FtpzPm~WIYMJ7-Ua4|##3pUf+s0-CExINon=0}1 z7&U7Fpm8gJ9^JESLzhui-%pZOHC8-VKgHN41;SJixUI$eEt{`;nprlD2(x0$8;-(G z8VZ|w;PtHZ(I#z?gDQOq*#z&(mL9$KX^)j*Klx6Kr`tpn$M)y>yN|$$zd(!K7M1^m z1nEg1#vMbmmr9jb7~J-i0#3mkG%k6QCq~FsAsGORev??U_SQ6sS6tSyimJ#tyGVqi zGM;$GpcZwn@g4vzaQ)X5WwJCQ#nn80fvkODTjiSWU>)U`SQ#QI=C8GC*R3#F2eKS% zDI_s|{2#vmm~wn~dobpYNllLNT6lo5L>i(0Rpn_Ns;gA1gHM(PJqz<~eL#+KfEyKm zbQw^q%UN1%kP^WuCzzY~?7%`U!RZWi)eCEtQGyKircqryi5K(Z<<;N&rRwdImw9$D z%R+@_9GrF10<4M8ghU(mYf1U`a-lVStfWWQP+86%S#i`HEj7{-eyT_g66Yl9o76VR zQycEg;9a1*QdCc!Md50#V@sZECNXyCfC+lbgkqrXTX`J}*!tFRhwpGx_ zcm9zZ6N6u{O|);MK-AY7rtC?Es7|PvoO;{w_TD#+zhqKc3&aKwbFjYCTIjsUp;RD3 zebe3!k9AKnJS{%M9gi8T7Fh4E#{^m-JIti&RABChP1*g1ag2SQF>5(Cy9lGz0j)V_ z3sl95oZ(5Ky)*TiKUA^)jYK5<3yC=VDe^BOA_+)DP|N^{2p236|E=S8hJDy1AvFfHkw?zAZ4E1WbpA_K_1N zjc-;F>nerTSD}PJA|hr)ze_RuxD?KjA4o*Z;q+76R#T~v#qvA+w&h&w$Sw2pn~vSa zm$h-&u0G>6-7J@q4imkgsL*;+oPAI+m@jvVZmTOGl2OtHI69;W4#<#28SLsgm=0|> zo}kUlU|f5*+FdGpK4C&>LufBS=I^H;wp#z3>h&GLd2Ko84UvMY<)n7Ok?8LnRe3RyuM9^LhMKlGdel1#+Kky^o_Y>(E{7 zR9lI^vO=wLD0iN+SH|)*f`T}V7AvdL2SX`nmX2m zUO;a>+a2eTkB!qEdx!vDML+SVb9wgZv_Z0re>1-G) zt7Nw6A5Lnif_2gAkA0nDMiG~bjt3VbF7rCk9r&JOhT@JPD^iG1du`O=vF$ziv5E$m zUAX)Vg0*fW(B!>~e}x0+6c@2yezrdWO0n&f8P+AZB>E+3qR5-wOxYk5rIVujEv+lo z&|6o#vEfJUHP9xIIUSP(U9(RzYq>Qa8KvP5d%8=-2g8(;Lr1>x5Nwe(#D0rpqh)yI z%vvGp`8N)6Hu-NHVwT-1XTU&SD*2C~_!QPW_WkFO6f%)fzy+^-K#7 z;_#OEb7|zT208F=5z~BN`@#Gd@_)DdCY@2Nz`;R4Fp)t(aR2|8fHqdv83ITQ-9(=Ih_zbb8GEL=zH)YG5&nE`lxljD`9luC_gN@j7YI>(}EIIzNf-SWfxBf^@bK41y}U*XC|G0E7)2bR!& zkvERCys-s}X$NUUG;U}6Wn`6D_Cp$dJ00Wo`1?z$J)T4145hNa6S$vyV*v2KRm$h% zymS>_@J!k;pBS0Ft5>lNNkAlbxK*8|bj=S*(KN>A^u7e>DLL~ojEiSO)Dun%g=ccpnuwYCbaR#$;T3zH` zCT#Y8k)h{z&+PMcpXAytc~41FY_rYuYId6Nb@{aTuKe0mUJt%9G#Nm=laKAB9Cu!8 zBEx=sl^6l))7Z*?mpd;fXd9VWqdYZtd)FPcJT(P^>+3dmGT#jJi_Z{eloYWNo}5b; zNH6^#s?IX1jwX2X!QI_GxVuAecZcBa5a0rV!QI{60t5*j2<}dR;O_2jd*A==IlKFD zZl9j+sp+oi{@r@21IeTz5a>#0+Xt)|z=U;uqi1T?m6MKv@#8KOAceqx{ zk!OM9H-@E)%VE}o@UvB(D)hQ z40wn8|ECR*yNVx^Zf6G}12~{*qiG~<;a|pYTrmEs+&hTUhv{p0Dx&dOsaF5q;gc>r2kA-ROAQM~f%*dsy=#1Mo!rpN^|! zz^9oNf4r_3i@v>{yd0>A`hc#UCuZ^TH#QnuPGj+EMg5-##-`3if%n(F8<~&CYl4lj zc&9QvmHZ9SHt)O3`32`P=dWvB{(hXoCgWYNMT=x|oD^DdCvPV@Ykj0^wj>(xV7cG-|KY2JpYFUXbk zqqmE_rR%}??eAee0K6Q}zeV%rcO=Oim34*TiB-OJGi0v;qf7i3t{YfDzfpq>(~*`jFG=X71L?*)n`7 z-x2!k{V_7}-N9+uPhjo1#a7{E*U(er+DUu+8^s>IgTLF>CHZ9qR(Uij^v39um?&s2 za+c&o&APUZgbSO)_Do6Vifjvqf7WHn7b@Rcb(lM9!673M9>lg2ylhr4S2;b1 zc%@_te8|h6`!RdwD^`BO)7IDkMP^-G=TdSXQS)V0ZtI6S=$PY2$keLNEoMEcysPLm zi^Iw{6LCM6t%avUVA;ufsh++RO-=MaL5I?}jgWNbUem6wQ=)uDv z@ZG!@f07KOLw}mw$I%WYEHgx7#H;wvrcM@q7D5?@D3rdPjS*r{K>L!I2Qx=xk9kUd zQ!NVERJeQy{5V56nMPn^Z?+pMgm8D5MNLzOjDHnyID8Fu`{|39Iu<3nM5&Kj>`0 zS)_B0%}DJgFr=b?o#KycBWqBjr8^2D+7Cu%1Ix!nTEr;EreY>b2jw=oB&!ADgiuqsF8+_(E7cC+J~%BdqpN6!>UQ{=#EPa2t>V8}A8e z+|Ai`a~q)chB$c+J@9WZ7?!jYKEkA5IlxaU!*t!^V)F_-M8^_>W)hEFqmrp+c_GW; ziE>?rg?JH+1sMa)y*Eot*@c{e#2nWW!9XnLm3=zJHW*b)>tf}6it0=LI5S!|ofhQx zkyUn8T4?(&V{#}uV;4sPk1utw@(YVBEM4NL1fhDcq;l8#5no6e)XIagsZ)Qqj=;5n z)pyCs{4j5~A>8VSf)S?XL9IQ1P0CEQw^Oo1UV%#{{tu$%<*8l2S7vX(8Bd6MHSQ*G zuP<~ox)N*AfUPOO7qB&sxF)}+pwg|Gf zykiiGnz6!<=eXpN7Un%2&n1?@wM-Ef%{wa7u>gMzTK2N}(5H6y- zVD;>`xNJOG(|Um>L2#t^$xRLsRAB8Z++Xc=EAl9VmPi}QrW+(cQ0ksiP<8*>#@u{F zEVtJu#AqoRvR8&fwY*!*ke67YqUt+@!VlMah0i@jCK74zfolF)`3iA!_VcOKz!uFkJ<~nIso4Ft@aJo_ zA7lcl|CTDOXakZ~vNhK&-35P6QAlot2l`V6_QvDWsm2_be?ZKMN5Pe9Jd)tSt5_HR zZXB5tyIn)0j&gJoDkx%8+uS7XE$D{Oiuw&jr^0Na`tb1sc%5&Dwj;@yi4@rR5pOxJ zOK*r$RO~vYh4!jC7#2GfjdswgXFEM?O#@Y(0A77ALoKBK##cKGO+OCkxTAg@ei<|-~;{pQ%pNV+TpGF)N(tLeI(@4e(VxxXj zRtnI=-*G>*RoerwFk7SOAwe1n8t9$Fd|=U-Np%KWI`!prNY)}vu=>#kPNm3Aom!|eKISXD!Y;fYYU2D=7@3RL778bK>b+z^EB zJTFziZO?oSx5i-JGdWSHGi}cf>9D7@9eLjb*FD?H2Gb zS&eIPZiVeHeBA;;wC{)F8Er~o4SX`Rxi|8|<3y_>2$gtQ_=@4rzu4k}Aank?^!5C> zJ)=i&Vw@Piw!Mv=c)Z=Ryk%E+?bj^d2tiBC(C<5GskL1#l7kD81pT%aFQPlt<7j%o z70318@}F2ieIgw0&?^0IaA~KjFP`^0pDLe4f9}7A(`*lexw;xVm97^tyGJwW%rA&K zgDk7-iYBBDO?Jga|6H|-K`zpDW6l?tULOJ9mFCdfLzOAD95v@awRR2QTE`^af5j66 zHxV>q{&v~>hP+qtFdU236~e(DlLApI?dWwfCO_$^5x*F!P&Q2i^Wc8s^W3(hmDmTA zQlUlcP_{}5<5PPYR1{63tTY7@c-;5IXftVUN`XwI5u&NP#M1}OrTln!h63H^mJaSw zpZEUeFfg(vN?_L;RZO&2SDfr&K2r5ojA0=bbF*x>6fIO-*>q#S2YpjvhQkaOmZ_L0 zU)AM#JHtafbN%NrE}<53!oMRkcgy6%-cNC6#ovS_#yf>G0Wp_a_PR`%y3FsqZf)Ph zV1}Y^ZKnqjrZFRn(H%ln!JbIst7e}8ST+bwr-Xj)7s%Zoka_;2ko#~b66|d1i09FX zseX&0`K+&-zPZ2zKygsl(*{vVz?jZ8=vNgL&QxN|c#+9(wEkH^ViT!>h6%N%UYY@(+c-bQR34g6%)TT`EclPG7bTX?jcg; zzZ%_&Zepp6oge{E#UMi3CPMVgjDk?rg0YX1%>oS6i}0X^o}UpKQVW-eo$IzSW+!+~ zZyr8TQd6vh_!%l6U&gI>7B~r8V2_Evbrc_jmRHyT4MlY2Cm|@u4$w%dwp2(K&llUj zS;C0OJv8lgk+odp5-4(8U^Xg7YPnh{xt~&b>{rXq*RkN_oOPMxb(nd0cd_kiGfvn@ z1)|0qHFP$TrCy}1=Aq(>M#tzvUZ@^=17dWR@8*jTI(NLiVs3RMw*6 zUgo{(U4SO?kBGVBPptCH6`f`h0i)5Te`K$K$qN+L*M(uaH=MZboxh1@BCKHqR0Htx z&Y-PfY3ZZdVZ+6T&*c1*QBEV=4rZPIStU~&C7#F3ga?`$Me*{*6Z$H<$HX%z)KIeP zFgB`}x~hl@&X9*B-_@74kU2h%(odq}s<<2tMmv&+0dcz`Y7O7ziwE-7nGskyKm=T& zd2&%isy3;q6_{#$+X|5R1uUPDF#D?xL9^`7Re(bG$H5Mq&3mdZyDO7Sn((0OuX zVY)eG<~sC7TMaKmRAnPSs^Jhy6Ua9`p1h15ISeLUXe+vo%KZ!ldy=og2tIVd3=hw9$n$GPr%SNF;1+ zej*j``DG>Mp%lnwfT^nKTU-RcTG_nW@4o)MBdwtA~9wJcx~_<`z+mw@hbpAzsDLS=w@1PaAqZ>#F_gyshL?V z@mVU@v_X*;FS%2%?`{^|ZB(tHY^02c=gkAeuH$>8sh8hmPO}gH)NK~R%dMg?YJ;up zki)z$rdia0W<~8vta}P$z>qlg)bqTG+!3h%dW$Fb#p3LQZ_bT$1>bnRez*_V}q zx~nb6OSzRr-a{U#b1QA5jh$+etI5o-xQ;DRX{`~6WV23AVq{T zz_Z+p0^gq2EEe94y7!4Ooc?S&WIl79NU@LQ_8pSs&fe+$6z4C%JT`#lmwiy*!v1z4!eM|6#uiQS{dM*SHU=Oj9NEZ z(uLv^^nK=%7cdYoU(r4InGU&YE0-Lt&&C zUzkNBV5yqJQLPDyqiL^)XJ?w!p_`(p#|z5Sp<7{=&A~Iu zeW$XlKXw=pnt3Z63C6+ioe;ziAcq)-?Bj1jl~+mobrid}bXGOIuFGAChrLSVBx`8P z2JpUI{&j!4ts!Es$xdZ5-ENKW3hks;VI)F=G2_(uZBtbEb8A?P`Cf{Vw7Ll{%D=79 zC>~GH8sb-xcY@VIJn|eWF`U`r*MxQCMyx-G>|)u#q_X7<6GyZt>OirX^Md7I&Ed^-*Z_xC?c-n7h}O_{$MYeN;qtI%B=!JML`o~>Fr8#lR(#l9oeBom0n@QXpjUn}kHn4|!RQlY5PUu}Ak zoKcZ^{izF>1}S_9!l^RYR;mhp)%|kJf#TH1Nfc9OLr)m&n;nY;=cbTKAKp_6l}zpkn_X{f+Z?+*o3!!*v7A4lvg}lw4A^1?L})bVF4Q z_(-r8c+)DU69|0%99BihCPkww@d>$`k!qSH0!*kvnu4>F+(;L?G}~1n6~)Hl=2<+y zZcn>e6)R6oR|Rx*SbTLt*rE4$W^%2IO;54bZhvUkY~l+M5Y`D!k6&GDRYCo1;f3hl z9}UsWp~sM57Uo{AyiF!MqiqFxGPyzpO6zhu%Fzg^s%Sf+<|$H+2`2f}gBlS8K~-3b z#r^H5L@K+(x?wlYpEKE8m>=JST7@CTyf4+!5KiYJle=Y>BJS^qW-U_%1h)gVSAAA+#`%qqu_S!idEDYLa2J`P3p|Gx2Xvo&DJo`{)86%)k6>pQXefLu+ztC zm`(kJw&U@|reGM(XTpj`*~VAM`db=1WRQ_o5DkPbs@QgPj!q7E%U$4~3`zTfoguLt zdGje<1A%st$5QkmpVkQTs6fUB9?IU~9Y~D8Pd^EO$b!5cNe>T%5aUi0K731br}h~a zd;OUpbpJKs_FjTfwkxb#DZjz>y_A;3dmI$$O81{kd(-qH!po`q%X@=}-17Cf zvolMKm#5n`S+Qm$wAau)9_6$%TZ)XX@=}cHbsOL2Or@-7Cee4*%H~%=3X!vNxD}^W z_Q)mBNHqz8l9{W4r-`4^kyq?bIy-f!ZV*6{ywV~>+UKYb1Qd1_niU*{#7K-b)M z6%b`9Y2t`EEi{Je5p@p({jH&=j$oOwKa{(q5mjB z8#(hWrJ?b=tS~0wp8UKppCKjsk7*$DZOffJqX^q(8|z{rGi?KSgt3}2xOCF<`Z!vN zl?+M}0ncR&a(_kGeQsZ9!jdC;w(%hgD*x4GOnUhBz<2-gqX?to@xWWW>|`0|Eaqty zBWkq8)ACEnXjjAluN}Uf3)XcSr`Xug{IC>$CUj8Ty z?H%M%1-_-W&rjfZxc_(1=qWzL7_`16<1Fb>N}}^(t2r1W4{G#9YC$TRB&fPb&jx@+9VhmG2upK&OjzQkmCjSE z115@Rk+36kV#agsuIGP^@m7~%#KkNaZ-M?e6VVvX&9~SVP_ZN9x%5lCQ`cVmF-%#BuH(H3#aVpFZ z;{FfNDAx7bxb{O0V&?0rL!#l1$oaoWW8~1@2@PSNWbCsg+I?#TUi4O9?0le4agkGU zWn4;NfK!W`^97I9?^&==twa(=R}7Wk6=}Jmg5Gc*lJpb)J+IS6$Opj*ZbVEmE4zXk zvh^A+cXieBELCfg6_{x-VMsP+bSt+bD4JD)Yk3&X(~;&RYAQ$WMj&f(dDAP9;|jp( zgRzBOhfdQHTtdv6po=daJjdiB)z-y1jm@1Nc!diWgd!Ya1gw-?VwldhZy_F~$4h>? zs=NSWFm{JShyYXL;FWf27zk~bpS#^$Xt0qcNLq7krtLgQ)=P`w`ZfjIlBcwijt)m@ z{r(RB577vpHb=bEO1cU~pjO~&-o{@3KR_d0C!H2sTKsSQKyJ6WhiXr%8Ru4#ATY3M z;F%&LY21ZEXScV!n8`$Q+3aMGRfJV*U!1{Mp4B7}g5c#|@MFnqrCE!bEF9${%s4dj>d4;f;M6T$P zeP0azD5-_}oS`mY+{z@s;#=Lc0a}6uzyFOwxSCNc->J^QICB!WWoA+IVY|2xC#&Hv z>hd7;)V%zXbMm*>oU?cKnukBHu3Ci@8k@7oENqrAj*r3h{qkz54W2L7Z(ytuvx6&B z@&t91-nJviyntf>M%p;|x2xGWD7@N89C4qRd{-mG_?QHW+=QeJs5wx9qsCKZyM-og zsbUSSV09{vKjGcf4SvQYhm2OkjYI+}Y_K=!8LxkdaHCU=jM*U7ofGw4+0iqIGbj9+ z1gU%#%@TeE{85{6sbM~e7}!V)3VW1($*vbvv{zBT3@UqaI?>{a(BbyvHN$V={YL(y zW|Ko#)FT8Z_Hw<#Mz+olpmyoszKEfIV6A2R*ITf>a9%}q-7EjJ-D+lfX4i9?c;$1N zLJDh#o5*fi_F;1ICqxZ_RT+#KkbZqVf?2Rin#l`j38}SjB-=a28FyT^E>bwmZ0Mt8G_m^nWM)0N;Z@HK|GB|9c&h0e$qS?)L%UDv{P(Id+drpc{rwrw4g>DV94%1{&?t)#$fG4hUaqD?-xn|q zCd^Jx;*1N`75cyrjW#t#mY1v~x^vJ)w)rNPfDzjgzFzV@Q;RuPU5ZP2tqt!U44DQF zE2Z|s48NS=xD$u1Nsr)p+&Lz8CnBSv@J3N~u?nvrdU|-v6*iN@p!#%X4baqP#!bl& zD!lwXdE`6*9uhD=eK}jGcB^l-Y|`DEMnL}_I(O_bMuE%VAk88#yAl!d0#2%LSxlRXXvZ#NS;2mtgA&r+~{$g=pnRvSzjqi zP+MCLwF;zWRu;n9wSgaA^qo%hCE7fK4ZaE@^REqt7MN&=6iE1;@sdW@uh=%}g|QHM zfG2(pZ_YaHV_7Y{a%hXWJN2lsJpv?`(INM5NZ$dIigXp*{=hk6!`@lq^8_DTby%Iz zxazZAn|3q4sS`Go@tT7?Q!d%%Q10!$T6yRn&@dB1(`Lu9QJ*WcCKQN*qC;%Y?$2a& zTd0q&lVD`LBpp%Yr{WseW#Zy3)*|J`01x|w^mxOU6|!$$!#95$uAc*_{+8{%$Tg{% zLBP{m1PT^)O+WMoLH<#i$q^&*uqmW&|DiLPaQpek@(GO1FIMq)WCeRoE|^NY{n-c` ztWr_|fpcG2Q_c{#0v*z16JoXb_rJ+xj-FKaZZ8ZRoVpqEjC<~g)d@Rkl4WN~@_@?H zU+_WUI(E{v&^`oui@zmolK)ssQe{~ha^;WzbLppZzG5WY(`_g_2n`-CCcUCjE#hU! zI=8ZVM*k-lr}H6UrZ%T5OKc^}t}1IjF=;Zhsv1p!DwSdYAB3^DHb&NF)*Da^@XC!+ zC_t4nYO66(Tt#7^NO>C!M@h9D?P{QDCO!?}e1A!%uKq?X)zV~IFF8AQ@-oG2c=Q_%;3m zr3EbkViyuY+>aIm`ZHL^nf{st!2y(b4-be1KtuI<^NER$+-`q#JkoUk!OZusVN$p0?*#fRCY-1C@*S z`}4JykM~3Hk*V(w;lKu2r~l1@jQ`4N@yE@9sNdE6#<{V`%jr{9%SGOwXW;m~rpwZ~ z!{_C4X`!~O19+T2NsoWOnn3DICtF+lD(vh1aeLnG4Av300WbIG_ry@|R}U%|an9^*(=gzq@vm{=k|Cbp1~M=mpHpfEm%Z*=b|Hhy97SDzE&m#I6gkXVi6{tJ9Yk zUgxteUr}J2tSMO;e7?u?zzMI)g+G?a$Lq~y+uhUc`C9fx-RG$df7g%g_bRVf?WZwc zzoG?azS|YF_kTl4&cB6$ySq2hymd#fmf9}go71(Mh1$IJr*^Q>{(O)!2Gr7x9JG`D ziG5(-R`}i*|3cyiT(wwltbg=#`cK{9vHBl_12XtY{jbhn@W25X`9sZv#vT4wuO}O> zt`3nR=^tyt&u#ByOP|QzVEoUKUiaVY+Kq3K?&F_>jNSU#cn_%F?r$ECs@`{Jrt%|c zAB;cl@|A0aU!eff^-h9ZXCamaKwxs`^M&Xi12Z{ZoxlFlDrO2T2{#j^s%hdmf@CD@ z8=hq1r~U-cr2OdFT?4;1R`=sA(XD%p*P6jH`91Al2DcB2rd_GUtC&7ahl;?|>AivS zRa!%PX%g<6u)AyvakIhT3;(_pFoih-2j>d9>Yfhf%LRt=`{K~9Xx8sj@Gy0m63UUz zTfLP9tuS2)`j6zhsg2sayIu?sO~F@a;q%??ykuUgzAn*fAu4>JaU)T^hRo`|xX*=f9Q7_h+5xyKwead>XeHF@~W5I-xz~ zbSRZ4AdzLy4_sx*`Ozo7&9bIP?ed!{=(r9FuI$2`#So>l3R^qYe$#V&HCP^XtOy!c z(5;R50m2z>367#p%HUHV%^d}14_A1-)IvG(1eH3#J0 z5?{?yMD~oXh;ZkJf~q*_NTC|XboKDOMckKgiw7+S-uc7bgFQh46|*CFCAsBW@Vcb& zI7T_+2-tb%?tYtc>v6dcW319!^vW4Sx-H6%d<4>0^t?k2&NT*}r+W1FIdX{urpUyj z9ry#~a6gPXk$jD=&9L*%zaI~y$N?$l1pRtK7Z&_ZZ7#+x*Kn@;{R3#besJYcenuP% z2>qF;Ob9h>ai0%T`ZywP_;@ChVq$}dO$ne`IxopNXy3^m*T^pug_=O~iG8GjScm<3 zY&Qv4TCD+-7egEoSf@BIjW~wV;Uj7x!>pYUOr#gIc&-JmGtU>9msYEMrNG&sLUETh z#Y&vT*^+xryMb&{cjD#K;Gf7t;&4sCHGxk6tsZ=MH+bOdRd5xU zMU|^2R7DjF(}|Rpbbs80en+?4FvD&&UJg|#vc6X*Zp&AvJx6keZV5~7+3W2gn~SVP zTE%}CohtUU__`qe@yQOL1HQe6?n2BGBp;cu{YBbkDCf(#^LE{#g- zF0iRac5tP>UP8ay&qb~bp2c>gCSG^ToMPJ+x(IZzg?0=29S#Qr+Zu`B;IKSJM>O!H za)HR9;4m9U?ZqB)RR#UN8Ao8;Xv^eh2EWi+8w~MrPMn@@SPw+r!P4zO1Vb(Vn}Uis z;*w?-YI0+~8g*JU1TWh@3yMKY>!lWT&{qr5k?BIbz|nmFxZZF|sh2){y>ryAge0K^ zZ?ve5uK02b??NDDpn}XIc5p+$W3=+uLG~&9zBiNfop8u9!3$|r26vQ-QI})f!)&k$ z6L^G8C8m3k%qNbQ%U}JdFcxQFdB}R%^xP7jBiO5@ltlz}qJ;}xVCS3d29Ijv&S1Gx z!44$LskK}Msos9$slrzF*hDDpxJ*e%JaAKO#SjXHy8xoSgbJsLW4AT@8MRc_MK3X1 z@I%XY*Aww(-PMX#B}*Sud^6b0b9_xtchQ6Y8IV?tOK2uihN~jJQjKa{qwUdSSu=hI zHQ%FwG_A^~vjCTr?*-dtb7;?8X#*AR9rYWhYY0XoelB&aX}<5DFS`6%Kfs##l#k0x zuPzcV5Do6IP%OAtCkjFQyoRwpd!PQfQ1uGWn3mHR3(W#{s5lE^DJM-_RUrij znaoeO>-l`_z<5TW8S8G79c>FyoyV}kLet^jC14ePw?V2B^VhgdI?^pehx9Vq?%$== z5MYMg6vsZi|Cf-$GU|bmSx0w{k?EKxOOyL&cGfaha79n7I61M7-34lPU6hT~1*4C1 zu^NfzZ4%tCd|h+b>fhYlv$(7GiEa1UGVz@| zg07|sp3k36^o?Z0@pBnTxO6t=4Y?;)0bZ;f{`x6Y2Lce8^p?6e{x|yt3RVKv=e)F@a^Jl8!+9(#~?#^<;#)jAhc_UQS@PBl-b`F~Bz zsmpo|Ve_|*R=-!qLC=Uovz<~BuNWS8en;^dicRjarj-^2BWT+4KV^Q*Rhx1v0o!H= z8dZxpYI;%}u9f$XR6mq%^=eLMz-4~-`b$5wgdA}C262+H4zy>7Lhb(5Wr?gS%H(5^ zF$l7gYAZY-$`4oin512?bJ zFlU1sR12J_ zQD(ke)mDN$4b0Z98Ci+F1FcaV<8{2^jvN|OZ+)O*Q*Qg)=P-g)NfeEkbeH>jBJuC3 z`0<1y(t7;zV56U|oDh}$YhaD6rhPsaM_BdB8B%h%OKtc3X~b>twmkdeWjY>za0Tmm z5IN*3NZ@xU3(!6Zm~kV$W!OoAY$nXL-aGV&f{jnkS?ak&b}eELDY_3DQIt2{zecH3KDOJzE2{=4)<%qjwm zgN=r!C8xDilUwlLm^);%uQgn(+1wq9lksGhA-rTl>r!?SKs^b>}(`I(a$O zq}~F8*yD)fWn$WXecmAQe{Atzst|~~BqJef(XIOAD+yspzc_8fBR7%AZ1U9+@WF4o zb*QiWlW1Wa2Qn1?)Z(^t6Iu5no?=A8#sAQQVa3R8nO?a*(q_5 zgB|f)6?$ikZ4}eVeAG4+W<@%>l47!~aDrfRnyR8m**hbRD4p6|S=sEz|8@ta+C-pj z=-Wk9WwCxkPwB5MsaufxITjwv1$LL#)f@fre&;~lIPcc%T1_seUze*xaf0xmw9zRbM$}I6+87ut822pL= zv}xOraMTal!HGHWzBcNv?mu0sVB@Pag0XAhuEvdX#0|>5M!M5E#QWRnOr{#B+40<& z8E#{jVzORd<(!v9Dega{Mz_y$F?%^Z6;sp$Q$ykrB1speQj{+l$?1Y!lgv|%3xu{3 zt8x0?Nj&jYD#L7V+DO*t(Nxj6c|QoCZn z+zRB5X6hZ$x@kvpZh`{erwo66`uT7D!A2J)%wz33lc)>?JINX-covg}H+ftjZ2Z_F zv0sEz1wqEb!c+WcpQ692QWy^z1yq(OVAkQvD1lAcyEGBBsIhaG(Z+`|Fni*>cI5$G zcvx}8#nlKl#`7HtxJ+di1b5JKMLE-9BAaXKSy* z+lr02@ePO$n-JU^p#TOlp}0B>lbeWngKj)3w4HsE=zCl(igZVEW^3i(qBsy?^On9_ zshC0u9A3J2spTTr=YrHZRsZfHVtUfOd{e~}eirfW8F2i@e74SOuZxnuh@8sj-hPW^ z>3{fwj*bw+OxL}=Tw0YXy#{_cCiBSJ+?;v6Ec~L!nvvT50Pc_d1ONR)YU(MlRyOx4k-jY53X?ZfM1~b^rWEy} zR0U`B0^A?qbp`oa5GV3jl@DVghAARo)yrqcFP;n&X#xD8(8{<9FJjlmm z0gp*Gjy=>) ztmegf7p#>rOweI%=b-;1G4hLe7c%|Om~sWIM;F&{rj}+W zeIRE}vtnVU_h_5_cz|9eggg79T_(rGwYgPBK__LW$#|(tM{eMg;u(s-ihShEg#r$zvi^*@c{wD$s768{%X2OHs*RNs@kQv+s+dD5D9UR$5xx-o#kLS%n&t!z6=krJwZ#2fBQcFn z@Ch`e7B`Clmq9ise&VALm^(fUG~;iZPPKtL8$T(s=gF{Dml;i;aHXUKe&&Y--v1f9 zJEVgue3q&VLHE0V^PpzS(#*+J<2`h3Y>+Im&Af(iUc84r@bG$Pd59 zTvI0xZ7c9xp@s6C7*_VYh;(G)|nsDg3)%s$Rru>!at}g*=fo;iSe9b}M)2p3JGkz=P$wtJf zs`B6#KWfTTP+vI#5&|5NE~=-Q0{Z9^A-~+Mw;R;I%L6?uc~?f?;iJ`P8KL+-N6D@t zxS0_2XAabgGa)NTI?%HO^F^}sWc6Zy+YUlnToKPp{9)ODz@7wQPR$z32bI3yeiey0 zmYIqp;QE_N}~T~cKmd-uhqtJ%i+rg@i9R?%Mz3}6FZFAnKG#4AeI zZC8D_^PnAKuYGv-6aC29Sr!Vq$#SEB8B_M-)fNd3ETKWF-YYswc0`rT2Su+Y>&8HR zFsUf7l6wR478zmZ@rrdJLU<6>Vj)wuxMBnbj_C7@F8Yu3-r<&-$-ds6bD6O`gY`EI zq40}p+EVmPW9PnSpH?v-&YlMKa={NO z;7eP@sqYHw1QB!_;`D4>&XroCx9-fL+NPk}Bd!4!1kg8Au5Ww(!SGC%5Rg?kx`zR+ zY&IE^uvU0@Z^BqJA%`5MFPJq!?|BFZ;hDx3EOnOP->J^&{jg>%k3FK_^PoAfVn+=- z)mMwU$}JdG-@aL(!f80B^6826%%HU2EbdP*2lJt^-%jtTg1GP z!%*kTBMQCO0stQrG(ir(LI=$TJ3wI>2~nEC#VTmv6b0g=F6}&=(W=!Y+(VGpjR6P; zkV0Ofcl46>Qwc-S4hxPTQVNb9OQdH)ENF0AS%V2-@S<9UD%ef#VkuXw3x2n6Q%z`< zoe~b1p=E1(Vt|~t2~iQlL(#K>zrz~23H?C(OD}Q<3Ez1Ks_`;qkCMBoK|>ggzs8Zj zvTe0>MM`(lfBy30t4<}}AU+HiZZW`C(^5p3eL8WE6#41oB1KX!2YPGB40C9p;w!P- zD7xIZ&ZsIusWI7;pZ`g(344^v(F8Shgb+~+JSQ18);m%kONXl47AOjKU`*kMyKGMy zwOH=}9pd8`cq&WiCt&|8D&j$a9I<-HXIlEzM9{q+e2k{(no*qG5oKCF$1!l4UPn7H zt>WVVo-3y&_2~ULGCxKrVS~3d+;A8aI&2rcnQO(5HDz;cT*9fLep!QokUa~GgpbIN z)otZO`pEdiYd*yN$QF5eyTM<^aml4z>Aj@VfdKq|lAcg-xnd60#|HL!!n4z^^Ck!M ztC%{o^jm?7yKamC91Y9(J8)i(r=$Aku)oqxrk}<2*E5rC0d}6#SN>5pSATk?<3Fqk zM&)nYL6^2RKEb^jk!+`OUF7LtPZw9aEOPYn3Ox8-M52#~?vY@uG4R{i2Mc6gOLCTU z(E2OVCRm7HzbcmE39NF!XK7iW_1pPV2m4Ir*0!^n5)48mvzA679AQ_Lrl{JqzxOfH1O_9EoEBoGMF(tjivc{RB%Fe%n4E_gj?-BgHS4dAw6uPeF)SOF zhW2Nendw7H%T~7nn=yxVHJhSrBF;!ZAR@t<_DfTjYG&!BNt<#vSvI=yT|Kh9DAaFUhE?wO6Q z(vCw}=wyH7Elv?2SeaC*jw=M9zv-Ni$AA&dhLymTA~B%IPoH>5lCRX)QrwbU=V8_# z>9r7sSC#+e%IiE#4H8N!^s%Bl0^2;zP!QHD0(l`Uy;&sm_AKf))Z#wOA}-7Vx5U|5 zSBZ@G_CnJ_(-{0`{e~IRYsBy8PNqD?e(%D_COt z&U>=~<_EBLwS;`@4bgfF1{i7fmezx_G#KCSudp6Zg)WztFD1TvmRn87Gq6WmrX7}= z6g`-emr0OD*gEP?klI*LjmMPNx^xI#9(?swVj>b(L-N!o(r!@B(ql@Fe1Q@?D?JR< zc$FAZzHufI{E1SvBtLOl9(if}z$64Bu6LoC*#X?EVeBNRu>x6E8>O`JC5e=y=%HPB zpP>O|;u>8#%j6XAdXh|46*=(UZ7FWzbmT`)=X+EPt&6Zg7f$l{b5h za|TmKA5G#N^`WZ*6kW#aCq(%xM6gM~0qjR}eupwKAc09%xqX59ok-ko)O?xvT=u#X zXzmlfrVudg(H=8 zdGnB^im4HDxKyi0UFOeHCZrual~jC|P*da)G^p~`YPx8$L*Gsri%%4}1_ZbrRk>9K z{yD==P`eMovuUaG+j#d)vc^RHw4E|{t&|?ik{+?DWE@6&TTT8%B zz_q39s+oRG8x>&y9b2(pwkJyzt1PF5dxag`+^UZzXtbPMP4*f4m&qq@GM>+UxB6d2 z*ITdR3NJGJud==ZEUsl) zcLsL}8rRDY~ zT~#gLOifMw{Lb-OXa&}bH?pOb_Eb&npy!E>hd;9YREe$x881#+c?zJsP5CA z5?p3m%re>O%>Id@A8=P^S4=XJjj~7FOb6tK8Usa{fD7ik6JdL{YswyLG6KaM1=VP~ z-zs&DGcGpZ+M(GR-Q2+2!aM^FQ;fIM`QiqB;wIxIg!`mls}6ifw;abX;No8Ok%i=a zcw2(pnsWpmK;gUiH*uY8BP(@-X7$7}Ju8O4V3tuURXz%O z-iXjeT&85a`v4@`{>i>~2P?!33IX;KCd~aD${g`Fp<`k`QWz~IuXvXLwJ++h5ZLc# ztybMFCFg!@<7f!g#unbP~BKg`$gUBtQnw%mG3AI=JO(y1DphvzpEFcNR)Bk`R-i^gxuC?2bLGOR9aCf?y zAy6DmW*<$Q`3e=SaD7PGSWGNlFZ{VsKFaGn)wb6zGR8_MW@v_16QX?+8IT~BPo(&^ zjl2~hgBN~cJ63k@=jtf^LVC+Xr^Dj7yj@K z;#9z$B+Qa-DM~ALx>!x}?JnaIfmgGhBc^+bJIFop6|sA2ZOWn+@JTg%`^%omTJA*u z_LFM)Yn5xiy0p?U&@d$nmwkQ;Zd<-gDH&NJUOa`Po0% zPlY@dIm%b5T-w-OErJhqds8H@tN?G`Y-aa#QLsJv3T<~ovr+)3wk_qg1^kpyNMYnn z_>8IKXqQBa87F7hG#&j6rTp0Ad&fX5CG)SVq z^yi7B7b{72O0L(A>bKSS^Gl+(&FVsNPTrjq7afhfKlW}GhUMv%z|f7Auhd4XAo(K+ zb;&HXFE!CLV8P65%qH$7Y2o8+_oh~&V&>)s%80>*hrS-S%*;qb^1XJA56AvvT+FBxcSRa&jT%yB`#c18RTBo}25> z@JMhxTeCFIg{9&jd1O?P3n{{VX)(HJQqIuo6*JDfhn#O=;@pRPPf|zMmrK$rZ4xv7 zc|NgsgDUPC0RPN5v|Ln`Y^VKVn|MWZ)$ll+KC^X@oU9=DxZl25OcNV!`wP>wa zooRjsLTzgz4Rjy80%f1*Chudnv?40_EWp?IWE-%?*dH zYHBM`Cx{Ru!E_`nKYkFUs?#CVZf`|7B&&39{Qg^CP2mZsB4CGzNHJ;$GfneyqFUce zr!K3qL?7Xq!1d>V=UO2lcm|glX`NV}qn-}1?!7rwPLNlk;o~a_Z;TK<7megjiA|5$ zvm54#mhcTz#9pe3*=k^Fwso_q%gz@fbYIU- z)D!_zY*1w&_$x56oGVJSB7Si1OQ1knJR0e{l9%@ksTqAJH~q0 z2idcp@bSjeL9-vR%M^CI9w_E*V#4eqV8zFyIuuhzE-3mEp8;TbNRiGYbx+G}PKGjR zuoir`6_W^H%otFdz!N5N<9SyY-}X9l^YxvS#Bui))t~vKh;v$MQp22(XyVsj0wCm3 zIt+-6R@2Aca<6omwP=VhIB#%}GK3kVmLStf1XjwgLR^!(h`HZ1Qz zLh=hK{cP7e#)T_=+7yExPSM?lHBYKb#$Z)hP4)e{ETj6>W&*F1VVvLD;&A(EKSI+d z{%B$kecGAxiE{ngT-ib^|7kHk27dP`5)^YW7f+huu|gx3CuH>8nIsgymc%~|pOBTa zMIXW;A37WApQh?gPuJ!tb42~R|4>vE_M2n_;aKNSTBj#N1>SRzo3Y2=zo1nnPv}AeLkC$ndpl9N zxLLZpgOEYy4xW~lmLTl^5K-AUJ6KRzI#~cr{wDjsOpyN54&>1hTY|9u z=J8KY#J^tyBK5P%E)zjs35P6EY+f$^Y* zFfay`41gpDqeHo2U`i+z42%Fq_^ZxJ_!r$j>6UzfxiKO5l@9fTf%zfxN949avSf}J z<+vW(5g`BMuQg(W3Ow{LYe9eR{7q`gm?|oc>TCVROJ0?q94N1p`A~d(&RG-p{j>R~ z$0CGcbosi=FUX_)LfNG z`(u^!?+3~?Ba9}h`_Z`sjN(iT8sERXM+(rjF}kHcs|4 zo7Ot~K0fvyk6y|XISo-mU;X^OIcD;a8v}c7wWGNO7T`+@*>HA%9K&vAPNM|ra#zFx zAeRqu&jA=uq@4~0So200W5z4(e$RWGCYxK|6Sm$zJr5tw339H9xB5Ij5RvsBXEF+U z3y!V2xn7JSyPMBa8ozH8qzv#L_Zva(Js#c_>=bY9TK%)TBj$zLL;rZad5UC;64?e? z=*&?n`fxEdmE-&yvi=h4^1=I7zIS`$y{P}i&GQ%b{^#sQY6)LY@5iS#9||v)gkNj@ zGetX{JaD(hL7j7Gzdz&4tYyzVLC>I75+BB}tHc9nv7NL3+=+PAMEr@5=*1Sk9~l<@ z<00B2H6YPSywVoh9kD5ZZ1z(0wWCYjaG)WOLwjl)#O~@M4k-^AtE0qRH1u#iqc804 zPe%;{umg;UB*n2gV8OVE?+F$SqkLKmB{wPT&u#f^F73NZsqWId*h36{2$R%<;fAWs zOK0A1h~H1-j_z7gWW_{HF=i1oM(ze8F8cRn&&Fy!^kXit7r zV&TraVf@(2kUl?>YF{WwNF1%J8<#myeqQ~DP_M72jQ(?HPV9o@JJ z#~0K71f@>()dZpcOoCAwx;0Bh#5jQ(hhoxQ7cYC>LC^}|NaNu^m7^ldyFJPdpr7oi zW_mt_ch1bs1xV{O{x97S+CkehpVYykaBqyI(%CY67cslOhMc10hg_L(=_${Q7xf+^>p*brSlC`)YVY ziHJ>`^AIAH;044fwGBUZlb4TwJ$7fs%}K8hyqsHzJ9Zx)4@7^B!=nn)4OR{uaOgtf7n9itmU+>bh^`5Nr;5>i6J@T$l!_~?o5wE1L9^M` zqoUf>RY-jGi^!BIgUBZ)6-SbKq(CZH-v%;k;~hHeep4VdPggI*P_QFLWw(vwNX7PA zYBj{Dhs@OtZR0KT_SeKM1=@G91dDx>^bWR0wsx*NXbyb(Tt3_16!Hd@BWAI3cupzp z9nXH%UUYQ(*!T621d@v=fgNqp45jZO^RWpfhyI#>vdgigk+*9=VRxw)=;|SLk_8aV zH(Zfc8*L{F#(A&*o}Op01nU`Wm1?0)UE*ft*}W>q)Ue=z&(SgWETb3 zrw(S4kT(sIM7a=VsU{G%vrK}gg`{rT;K-)44w*;1qT&RQK^!{A-<-1qOSjANO>tFB2+=M;Eqv@%$7s2Y8EFPl$CpR50P%Q$9KZbi>ZdsDh1!I7M{Xyf+nDcvypxhXgH0GLE2%1Ao;s8X` z)#HOaqD@9|A$qwpO(v9B4zW?8LWhbaXcAWGq-lyyr@SJi4!B^|;n(9_j$MXAh_(=A z<^$QItAl9wJp#9;in|yp6XBOCwsFxi;7nN_I9A^Y1QTTn03aIZ*0-Y$<2P|g=YDAn z-OREz@=0u;^Cb;J6b^VHeB*yg{+RD@Px3|%vy5+;PIS3PT-yyL1<(mT%W|~% z`jJ=WKTZep82N{@#2c4~a-jtk3f+j_d`R}c8NO{AqZ680YH34)>@gZg8)i!>=C0r% z!`dM2C%JAIxGajhKczXpj5|e!a1T6}=q9@Q9&eE_+IdoHeAd1|%}+s{7;@6p+DbK| zg<@%tR0V2cnFTKg_0|4Np*2YycufMM)<*aLN#HSV&x-KM$NAm2-qV_X!}xiJU{brK zVv@{bk_t~8JK9tnXl^eU5n>7Hi@?k0%51drZ?^B7mr{5y{8oBUP->4_lj|`BU2*w! zHjCO@+_JFn-I5!Ja@nZdrt**G+wgw4Bh5Uu`a@6OcSy_|OfL;(kcaJ$P|_kO`MT%6 z(c<n768mmS`3)pHOu z*ArDYSti{XQu|h@>rcXUM;jJKSN8Mf!V`@%mx@#Igm=Y_Dk*V5Qli?6XpKCGb^+8VN@hxi|kQ(1<9i*7ye>eV=~veK4F81(mQ>=w9<8 zbDAB;k&}}n5tPg+WtpTnG6JqDT3CV!AG(55c5eu~Hxs*B#97ICe?L`Esr8I`^E z%A23kMXF+v4m)`jRL`oRb?dJa@%%f~qwkleAslKL zwFXXlmXrk$HEvrLjsio%yk#sr|M`pmh^OCP&Xgn2y6rX9QM4w%@gjfl!NLSCm634~ z%363!K3!?3`ZP;dEvtrDA?r7zkjh8ANf&ha-DccsW0hqTbDj~kzdAzr4S6TYL-o(R ze94Ow_SQoY4Ga?26IKJ42ugrJtU{6a$}iyNHzz0?k2EBLlkf6dqx-Q+?bhv@W@`!t z#OEhOr#_hb#bOcU>)7iQFnULIxv z{yJeTC@}8qZbVX(Jz|04gToZ=SeHPMZ&4V5%J(=nc|^xx#oF8=JH*j)t?v^hyK(Fl z)xIC2EEwjQIagl=Cq;D+?&s^2xqZn~`aYn4lH*#2J%#4j%Z1#{QpXaO$3|?XQ(sCS zyn+TVcJ9LpA41%A4JkozLJ`*HIgbo3I>K>g)}ApxujJp%wyD)BY^l;x5zdM{+UMui zs~e92#{o<0Q{~uSn|X#{h%Zn=H(5FI*v&)3TFNxu7tr@bEV;efI)n^y%k_1IUVP%Y z(3C3mCW?emRVn|qk@CLS`8l^Vs-hjmj{vmT81s5T+rp)cot1&o7?U$xNz`64<+GPA0LVbd zMB3o9?4ly!_8d*?ieim}dDPLea)ZXA6JkAuwnH2l&7|g~knDH?>$^SzU7ze`7TNOI zb5{UmfJd=Om>iGvYzf}pSyV}qjl=gSHLMlTliOlCu!vcs|2LX|l`xtsq2!GS6<4^6<^Dm&{P4Azu+k&UPpAVm>L_}0yAYy; z&Jw0r_1Qa(-g6$%qF+sJe?iM2|0o)R=&L21HF74yiVfZ`J3&APyP|1NUsrib(29^< zc@GnluU+Eo3(4Z6aNrlw>(eYoAJ5d&zIv-Un$(V`yiT%b{!}{&bB>%jXo6`u!d}RJ z$5CdioG2~?4z)%WSDn_1Px&Q95aLtv2Ail)^tcSJeA^2+Wi#btUv5rW6dz)WbPFe_ zc!vlHk~MW?%C)CfE8g~u0t$!c8yMMT%++F7B zI;ywBF;|um{lM1BllC1)Od3kE#Y;^W@N$I26&Wzi+<;R%i4mI{MiRyugbkNB6yRL1WM}8H_fCO>=9`D zBI~HLN6o}E7jYJpvkQ6QcLI_z#5N5>d4=fuOBd}M?PK)Rs(n4GdFDNwl;jUhlFvS~ zmxGoo6||NNy^o#RB_Pzt3%1P6M^*|~k>nW8g&J-#YrsMFeys9Ylw9295V@@_eBf23 zY;71q8Xw*u3`i_TvfS|Q3^;IY&l=F@u;*wHP9hx>6u0eau62&(7aK53w)Wyz<%h7% z?xV!hX%8!of<^BtHZ+eD>d9AgR1T#>Sy6bdI?<;4(3n}OA=-yWH{rR*QRKXo@aqrM zi(}PWEuprk7xctzN0@nya^Kteg}ms#E*%>gTc_PwSMNs~)yJ!STtu9kMQd#$9FKRb zM_Qmo-Y<#NVU!vh(bj_-2DF3Ocsphv&#T(wgp_alOoR8!K1Ft!V4(PMoFatEys&Xvq0uq)H>k}x^|)0YGY(}LKff)fT2N@_c7H; z;_ul?S7ps;JNM$lB38-w#V261Ys!lC6>~IXdzQlA$c-&z&v36qC#@u z8{_;MY%jX&tp48SZN*GFMrKD=jhWwy@9(lTZ_Tji8zb>Pu%kIFWfWff>A!3iOf6Mi zDE;LJ;3VL_IIkYTmmXpotrMcEmugN3*J{{!x{~pGQ5>K-Lcx3;&U3{$>4|{t5I0pD>5j+Pksy=c7cB31 z?`v;;(sDhE^*vdVE#;=yGNim~0!N~(D^I3SgpRC)v%Iw=Fu7m4%TrtQ!$f}X8Ij|R zF1C~{SSYwik0gYCnWx>P!S)UV=J#|B*>O|0i*v$oUaHVgzENqLtQ#t_H?H7bT5inl z+sH%OU$1=8imAwl;m;KLGdacf$D%Rr!crNvSfeCTpxo!}3S@2K`8LG@G;2lc@?%Rp z&-~WlQrh~|+-Rko6N(-NNel^z;uZeB4R;nV;ZV)OaXN5nHTPvwkQUSFupVYPWOl&M zDyNl4Rh~yhHxpyjy!5^C_&rTrk!m1*jlRJFvnKh~qB27pQyTR`AIfgpDNpbLfAjRC@*|GE z0^6e+ICW|&D*~ydRq)I!tFtW3M9O7s z6cEc?Y9=N!>IBE ztqDFV%>*en5(hGATitq8!clGGYjTwaPcgj#TG2Fp?!MF-lYBL*20FhpNS-c+(KV*J zNPqU(GgA<^zx7cu}L`?cYEEvWoyqJ zfu=tah~}YyyXK(*zWeT^H%HaS=eoO!iEOyeB;xM!-{9d}fRFBrl!4hP04J&m^&JC~ zK~7^R1e1SL4E`AxyS2nx{G8T$ZU5a^m&00j-i0+QB;@z@e2PVL4fz6=A{FFGTurgG zk^IBU&j_1MJD>DtSY}RH+Oa!-=Qw9S-E6{iydjVem*x-G{VT(Qko)V=;{pIVwBvc7 zQ%9%s>0(%?)4>FAef54a(s93rtUYZFLFy=-jYR`o9xq0hia2vt45y2(qM(4!?%`?1 zThK)8!}aFD-0A6^VOwjuv3P*%<=*E0;at_n`!$HMN>kVEZ55@_-SI+))7VtVr#~-G zIlc*ANU#0A!Q1(B_OP!eu__KrKgsU!eH<;@ZCYDf6@_@1`Oi!1_mXh@e)vT+1-Uvq zK90$REkOk@h<*=rbU2y>1h$NJWx_f{99BKGDprzY}JRUFZN2?MzW@GmM zIDhOV3=%>lB^}EtlsUgWE|a)BdX86CzEh-hetlV*amTO1I~^g94|TUsX9rV^7iT;7 z*bq}9@+W7EH*2^3n2P*E@Ch7N_BR1MLkqnb>?&Rjws7^Eln~e$n%T7ZG>PDhFHFxm zjH~s1SJhpe^z2VGR}c6;$Or`^sY(WcT>sO7}cqD7?x-& zINFJ4;9LYYibihb`Dig^$5`it+E-(?WZeU2=8vq=Bpbiwcq2A~W|sP)sauVJryCd& zzsf?V*Sbaxf``ZD9m(n(Xr6(9OeM(LH}Pqlf_tHGbd+4EIU{OT zZ8hb=%qizPd|SN9?S9Zk(U+y&bI_7^UyHfDX+#S=&!iSj6|nll>{-t$+#Rk_ZXveX7(I_BBwJ^DX9Z zRs1Hpbja7UkK{eY)i3{GklxP+agYml@y<z*$7t3AyjD1DdwXh>zHVAI5QVy(6#= zx8A7t?;$Z?M=fiE$?zhF$hYPPy{%3_Sddu_)2_5M8~D&>Fftb9B$k-PEa+tMSOqi< z=R@bx_FVvun9Av+Q;s|+rGIAQj}YSS?u{>wNuNLEWNPmE;_e1D3To`S6#NlDgX}}0 zazv%2$sMkt6$D=oI!$B(JD+G|h`6Ln+Jd1@RGm@dugHb6exaHU%5+O1JGmo6u$&dM z`kn(tav#NW7#qEP^EthnCCO7HWt90Xsq-;G5@#;1;c5D#QczFONc5D~&&>v}i4=Ea ztWy-?x0v#u@_`B6z$-@OKuyd=NV3n757c~3$ygi^Sq3!V=CRPcVF+xt=)du$voTPc zh-iNE0pT6rI@h!asUBvqkRyc40zr}^aK=g!F>$PzU}YIxox5N=P>k-~wkGZk${J?G zpch^z?;g#Sj=)m(jGMY1T@IA83ZuefMcuQ-8tQvHTqm9D#8)WVAeExFr<%dHOT}GQ zK$x%o0)3;nQ`lo%?W91n!AWhpg|$)X&YLaspb3pUoNTy(Rl}tuhX9Ba*p99@jQWFe z=oML@>JH8icC*rsEJ*Xfe~(CW!i5QJl}QBc%^z=JY5GRg@efupcv?9jc5fpKuBe#Q zhCuSV_u7~b7cubBsJ!rN!;Bv@bDu>*@rs<{!W$JFB#vUGO$qhg#+t$_=)}hhWXSqi zM0|%dB)Tm>6Z90<5kTm3Re$;b1ICj{wtXo7ra>L6Q6Mag$dLHK>wyC^*w~#Qe}V3L zCC3ucLu{SOZMW}3E!-&D#ULsO9(f!#R82%0PY7?MnD`KEs2CMKLQ zkRC!4|BTnCGS@bOscpSR^4I%*^yQKh($KoT!$snI5`P*b5eO@S_*tlpf67Y#R){4n z+uL6!c0UHEx|)8Xk!zudAu=ae4R+8s3QF0KXJMQysTFuRGc`+A0qboV`8gj2Jtcg z)#qtmI{H}!LYf*O-wlS&P1)!hrBl6va&ZZQjZ2fIp2u_7t`{VRm-bhuz>$4RzfkrT z9CA$~a3DSuwyE=Bv2~Anc?B}IlM4H4`7uLw1mZu^yDi^%KfyWf$EnMTIn zXE<@?AiVlbk;*%>h$niG>*eM8$>qk!_cqu#y)4AR%F3~uR2=(;+=9q8d=ajJx})9j zHOp3nuD=`836(j?`Sc|VCK-R7P_f*fBoxD9pmQUp>s*8H7&tZ=Ttsv`fze=@z>go) zy(xp3oes@yI5(`FOxMz`aJrd=xyy+3r+LXCU2~Mw9jVmW&-=yk-lwcB+R{1u_@|JY=8)mp!-{Ly%q!aZq z&?0t+`*kYIp5@EyXkXX6JiESIr9wv0%Y3}LhdtTn8*2Y++-{w@w7YfqJ;TRXif~Pc z?MzI*lC0xErR4q-zYQxOmzoR9Ij%oD3UvpHQ;IIB37j1mpBcU67_V-ChtU$*ryvEP z4XhT2UzdDlz(;}yOh);H?gWZspA8>v+;cZ2m3Vk#_7jb|BnlkCmvnwPCKAEeb^C_$3)->r>v0kVp{3m7FA0 zS(0*8i77Vsz+YjJ)%J)#d|5MH5MaF3l-(bSNpft^O(=WNC4?RbR9|AND zPnGQ*!Sz4J?MC+86GT;Ir$UwKPQ$PtYp6qNmJI;{$I8xOkzeNDoD1c#L7EOeY?9+V z5do57zUAZR3a;vZ>LZd=lc!J%(!@uE=Qi!h1vD%P$=?qJtP(?IhXFJHnXr!}c?Am! z+m%nKRvpQR699Zb2RbV+=lFm{gcvJd)EnHNZ1zW()W3>;{K%ja_Uwv$ zX_ppi70FUdl0(H{cyZ0AdP1I(!f&a|*GJYh*UlttOo8?;bOD0nexYF&eDc~*$7A#5 zVVsaLKSZT72C0im7swA-sVK_20T-t3RP-Xq%dvSlV#sf-}b zCR{)H1>^@Csk z%SU)o?OQC2TcpEyvz<*E)= z(CO$iI}LUcFyxWDoxOZb|Lqspy%*fNZc(s&IPjG)HsS(JBiF(>=pZa_LoT9wT7#bL z%Qk_92INFb#WI-swGVfO(B1A85{9Z;DgUu$(IG9bTbU=+c#}fWXj+)@VWsT*p)FmvdX{U z@BB=_GyKwI_S))mXV)0yT0T1Hr0CIaMiv9#)*qYpc{RxcOV%(Gqh-R`GA#-9a~SGp z_v3PQOzYO2OAV<2M|19&Z&#lwcuv0t>$^b^l!u$#buc0pkU`AR9whmNt5IPhHo)e9 z?2KKFTYt-@vT|9}1?`knu;HJIFu?|{SEk=Nj}s?0aBw6xcov!Tx6>)Q)cin-H=VQ> z`^92^_+yBZ7G_s9XvDpkNQg(Y$2<8P9?G6t4eU69%&ZH+zQ+cGh)0`^g=PVLPj4nt|*l!Yhhb}+^u*`+gME(j&$4%sVnLS?2 zACT}|c0GzveVKk#swPnbHSCSuq%xMZmeL<(pWGedX6r`C3o7yNzNr*9;{546Ny1aIdDOJ7P}D zzck3?+L&}j_O9wP2RU0t5`V3W4$@R9^UzZ2GV<75uzeN!Rh&lGLN-cbRu;xfbYnsI z#mCDb-qbb$C&n`Xd8CJS#|#2xY$#wB=Cnt*+5eIQKOuFj3TwLwKhK5w5Y4l}rir_| zp_T94>`hqP?HxnO^*NCjf&^aIDlu>i$}lCN0AqBPe z#*^rHhe9!-A>1cikqbhW?9>NUdEnMTLk^_}rI(0v+wb~Me7w)oH+JMo)~7J+Sy75c zdtHG`lA@$OXjbcw=cD+nnn>@q6bg9 zL*2sZ@X2Q)u9i)Uy1TCT@ak3>nEWD4Eg%&Hv5%KQVBr`v;Qi06?o|J>7GT8>13$&E zkE=QWJE;d$kD*k?$9-G%(e)YISXQ2W#F2HD!Z^3KMyOE(7+=hfF)m^|uQvT`cQ!^^llj9hwX}6ZAzyC$ zwN+-?+wYLMV@^YP+Kmwb*%F>E4`~UWsg!Aj-H&22TDyrfWvvQX2n^pA7~-p)lP(BX z$b_+$O6qHkrCxo>%@a1~*BD8t`N^e^PIyXTUkuOXi}iPb>2LLhZpZ z1zIgQz>B-asG5@ksZuiy7(zBpTE`PBk820A_aZ`65ABysDnJS?H|R!656mqctoyRKZ&w+!p$$l+uWg9vRtrk-<&tC3c!gfvQ~wabRG3AY zZ!Lm$btmSOteq zP?Z4rf+ldtUzZOZmaDBh#vOt`)y<6h71#1d>*0dzeBszo^q#{gyI`F^}$ zhpKz$##pslHA}qc#XKdhalJ;jIXa;|&$dW<4LxLVCr=u%vL2cINTHhvwh#z5#DEDr>vAbko2l$&4l%Mb@6$k z9_9+2!@kJ?n>IHobK)x7yYMf@E<24ePbNhtE)Ua+u(>ttfw$a>=aIkNoYkYY7%d+% zMUasGdP60Y6`;Vkfn%Bl*`5(o@?Z*hb8?F$vPi9XAZFY>oozUrN*%zf?dqdkdZh?y zSu13DhMRfDy;dlg4a@s;V{2mjvmIaP^OYw_{PstAjV7VQAjc{%-*)9;bC;C&nL}u= zv$60-zH~rNh`Od<#2*zSosWbDzs)3e9aqFBJ_(#21 z1O`83XP@@-W6l^d#qc|dIVK_TpzV$?+@)rXYBXCKm z^$H{UH7sx?32uU}L8PwQ?`w?>r(euR9!&$eEgrUN>tIN&_#&uo=N@^zMFg;A&ac_8 z4%PDgeCWjLbt%YQ2A}}Et+F0ka-ac1X3=C zD*OVg!ewAXp})XVa6B)di@(4UaIqv%(j71z*+7uQ-WuR#WS0hk2!J@je@Yt()L;kb z@sk6Zy#r<>Q|f6{rvylpLDCI7g zl`LNKORYIF2*eD8f|CBz4AkBkL9KSd>}0S6ZigK}o)$o!7ypam!~$Bi3l@h%@P(f4 zf?3G4yD0Md=|P~;5D@6E2*-a4uRoN356nb1b6-GZ3rL)z00M$N|6SPfQ))8tps{;k z9E9W&CpKvA9+(iWuPJRGOaL9-0~3+C^R`Pk0FpWblKvI9`cHXo1E@I2NZ6_=4go>I zG9VCe`&TLGgDUNV>B+qKy-Sb*C|FIv9K`=>2Z1{0QzRxyps2v`Wb53%fdPylkYV)y ztH#q3bYdUOMBcOCVK@T};qw2DQ~?i$5*~o*5D4^O%uw+IFd=*$5g00l3nqg$>;TO7 zbSrn}fv%1~*Z*zJQ!;1{(37mD$InUy(9?_@1Oop5Rc^VUYX@LXG7!u1R42e=4ww-@ zlYf5uoJX*rC8efQ5iSME?*0 zwF(#Lha<2IoKqUK>j+p7|C8u46p-wHQNI2RMK}gCAp9M)%yA4X2ER_I+%cFQ;qOpc z=f9rxc0(hM0WSaJmW6!=$ZpMee^gJ}e9JhaI%E#OgsroXQLEfm=S7^ER9qoysZ zVe&>zQ`W@H-QCi|ox{fpx^@g^rO^l49c>*gJ$zj(-zp;_{l%XV_)|dxfj$FmAkhB- DDg<8v diff --git a/assets/images/editors/charter/note.png b/assets/images/editors/charter/note.png index 703ec05669022cb58c850ff884d7cb9c596679a6..c30bc66491786ee8b2dba5280f404a5d0b34cc3f 100644 GIT binary patch literal 21952 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 literal 6299 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 R3Mc>o002ovPDHLkV1mNOFroke diff --git a/assets/shaders/engine/charterNote.frag b/assets/shaders/engine/charterNote.frag deleted file mode 100644 index 8e0c60f0..00000000 --- a/assets/shaders/engine/charterNote.frag +++ /dev/null @@ -1,9 +0,0 @@ -#pragma header - -uniform vec3 noteColor; - -void main() { - vec4 finalColor = flixel_texture2D(bitmap, openfl_TextureCoordv); - float diff = finalColor.r - ((finalColor.g + finalColor.b) / 2.0); - gl_FragColor = vec4(((finalColor.g + finalColor.b) / 2.0) + (noteColor.r * diff), finalColor.g + (noteColor.g * diff), finalColor.b + (noteColor.b * diff), finalColor.a); -} \ No newline at end of file diff --git a/buildnumber.txt b/buildnumber.txt index 917c81e5..e39b4bbb 100644 --- a/buildnumber.txt +++ b/buildnumber.txt @@ -1 +1 @@ -2663 \ No newline at end of file +2673 \ No newline at end of file diff --git a/source/funkin/editors/charter/Charter.hx b/source/funkin/editors/charter/Charter.hx index 97ee2f96..acc541b4 100644 --- a/source/funkin/editors/charter/Charter.hx +++ b/source/funkin/editors/charter/Charter.hx @@ -143,7 +143,7 @@ class Charter extends UIState { gridBackdrop = new CharterBackdrop(); - gridBackdrop.setPosition(0, 0); + // gridBackdrop.setPosition(-78, 1); notesGroup.cameras = gridBackdrop.cameras = [charterCamera]; @@ -183,5 +183,14 @@ class Charter extends UIState { // TODO: remove this bs!! if (controls.BACK) FlxG.switchState(new funkin.menus.MainMenuState()); + + if (controls.LEFT) + FlxG.camera.scroll.x -= 100 * elapsed; + if (controls.RIGHT) + FlxG.camera.scroll.x += 100 * elapsed; + if (controls.UP) + FlxG.camera.scroll.y -= 100 * elapsed; + if (controls.DOWN) + FlxG.camera.scroll.y += 100 * elapsed; } } \ No newline at end of file diff --git a/source/funkin/editors/charter/CharterBackdrop.hx b/source/funkin/editors/charter/CharterBackdrop.hx index a6e750af..26f12c4b 100644 --- a/source/funkin/editors/charter/CharterBackdrop.hx +++ b/source/funkin/editors/charter/CharterBackdrop.hx @@ -1,5 +1,6 @@ package funkin.editors.charter; +import openfl.geom.Rectangle; import flixel.addons.display.FlxBackdrop; class CharterBackdrop extends FlxBackdrop { @@ -8,14 +9,14 @@ class CharterBackdrop extends FlxBackdrop { public function new() { super(null, 1, 1, false, true); - makeGraphic(4, 4, 0xFF272727, true); + makeGraphic(160, 160, 0xFF272727, true); pixels.lock(); for(y in 0...4) for(x in 0...2) - pixels.setPixel32((x*2)+(y%2), y, 0xFF545454); + pixels.fillRect(new Rectangle(40*((x*2)+(y%2)), 40*y, 40, 40), 0xFF545454); + pixels.fillRect(new Rectangle(0, 0, 1, 160), 0xFFDDDDDD); + pixels.fillRect(new Rectangle(159, 0, 1, 160), 0xFFDDDDDD); pixels.unlock(); - scale.set(40, 40); - updateHitbox(); loadFrame(frame); } diff --git a/source/funkin/editors/charter/CharterNote.hx b/source/funkin/editors/charter/CharterNote.hx index a4a284dd..44396b3c 100644 --- a/source/funkin/editors/charter/CharterNote.hx +++ b/source/funkin/editors/charter/CharterNote.hx @@ -5,76 +5,32 @@ import funkin.shaders.CustomShader; import flixel.util.FlxColor; class CharterNote extends UISprite { - private static var colors:Array = [ - 0xFFC24B99, // purple - 0xFF00FFFF, // cyan - 0xFF12FA05, // green - 0xFFF9393F // red - ]; - private static var colorsRotation:Array; - - public static final noteScaleX:Float = 40 / 154; - public static final noteScaleY:Float = 40 / 157; - - public var charterNoteShader:CustomShader; - var angleTween:FlxTween; public function new() { super(); antialiasing = true; - loadGraphic(Paths.image('editors/charter/note')); - scale.set(noteScaleX, noteScaleY); - updateHitbox(); - scale.set(noteScaleY, noteScaleY); - - shader = charterNoteShader = new CustomShader('engine/charterNote'); - - if (colorsRotation == null) colorsRotation = [ - colors[2], - colors[3], - colors[1], - colors[0] - ]; + loadGraphic(Paths.image('editors/charter/note'), true, 157, 154); + animation.add("note", [for(i in 0...frames.frames.length) i], 0, true); + animation.play("note"); + this.setUnstretchedGraphicSize(40, 40, false); angle = 45; // green-red inbetween } - private override function set_angle(v:Float):Float { - if (charterNoteShader != null) { - var v2:Float = v; - var o:Int = 0; - - // make sure the note isnt negative - while(v2 < 0) { - v2 += 90; - o -= 1; - } - // make sure the note is under 90 degrees - while(v2 > 90) { - v2 -= 90; - o += 1; - } - var c:FlxColor = FlxColor.interpolate(colorsRotation[FlxMath.wrap(o, 0, 3)], colorsRotation[FlxMath.wrap(o+1, 0, 3)], v2 / 90); - - charterNoteShader.hset('noteColor', [c.redFloat, c.greenFloat, c.blueFloat]); - } - return super.set_angle(v); - } - public function updatePos(step:Float, id:Int, susLength:Float = 0, type:Int = 0) { x = id * 40; y = step * 40; if (angleTween != null) angleTween.cancel(); - angleTween = FlxTween.tween(this, {angle: switch(id % 4) { + angleTween = FlxTween.tween(this, {angle: switch(animation.curAnim.curFrame = (id % 4)) { case 0: -90; case 1: 180; case 2: 0; case 3: 90; default: 0; // how is that even possible - }}, 1, {ease: function(t) { + }}, 2/3, {ease: function(t) { return ((Math.sin(t * Math.PI) * 0.35) * 3 * t * Math.sqrt(1 - t)) + t; }}); } From b140ab4345829928b4284b40230ae78d1ba0d13c Mon Sep 17 00:00:00 2001 From: Yoshman29 <81191621+YoshiCrafter29@users.noreply.github.com> Date: Mon, 20 Mar 2023 17:08:30 +0100 Subject: [PATCH 3/8] progress --- buildnumber.txt | 2 +- source/funkin/editors/charter/Charter.hx | 240 +++++++++++------- .../funkin/editors/charter/CharterBackdrop.hx | 22 ++ source/funkin/editors/charter/CharterNote.hx | 10 + 4 files changed, 177 insertions(+), 97 deletions(-) diff --git a/buildnumber.txt b/buildnumber.txt index e39b4bbb..fecee22c 100644 --- a/buildnumber.txt +++ b/buildnumber.txt @@ -1 +1 @@ -2673 \ No newline at end of file +2677 \ No newline at end of file diff --git a/source/funkin/editors/charter/Charter.hx b/source/funkin/editors/charter/Charter.hx index acc541b4..c821c583 100644 --- a/source/funkin/editors/charter/Charter.hx +++ b/source/funkin/editors/charter/Charter.hx @@ -1,5 +1,6 @@ package funkin.editors.charter; +import funkin.editors.charter.CharterBackdrop.CharterBackdropDummy; import funkin.system.Conductor; import funkin.chart.*; import funkin.chart.ChartData; @@ -24,92 +25,11 @@ class Charter extends UIState { private var gridColor1:FlxColor = 0xFF272727; // white private var gridColor2:FlxColor = 0xFF545454; // gray - public var topMenu:Array = [ - { - label: "File", - childs: [ - { - label: "New" - }, - null, - { - label: "Exit", - onSelect: function() { - FlxG.switchState(new CharterSelection()); - } - } - ] - }, - { - label: "Edit", - childs: [ - { - label: "Undo" - }, - { - label: "Redo" - }, - null, - { - label: "Cut" - }, - { - label: "Copy" - }, - { - label: "Paste" - }, - null, - { - label: "Delete" - } - ] - }, - { - label: "Chart", - childs: [ - { - label: "Playtest" - }, - { - label: "Playtest here" - }, - null, - { - label: "Playtest as opponent" - }, - { - label: "Playtest as opponent here" - }, - null, - { - label: "Edit metadata information" - } - ] - }, - { - label: "Playback", - childs: [ - { - label: "Play/Pause" - }, - null, - { - label: "Go back a section" - }, - { - label: "Go forward a section" - }, - null, - { - label: "Go back to the start" - } - ] - } - ]; + public var topMenu:Array; public var topMenuSpr:UITopMenu; public var gridBackdrop:CharterBackdrop; + public var gridBackdropDummy:CharterBackdropDummy; /** * ACTUAL CHART DATA @@ -125,6 +45,8 @@ class Charter extends UIState { // camera for the ui public var uiCamera:FlxCamera; + public var selection:Array = []; + public function new(song:String, diff:String) { super(); __song = song; @@ -133,6 +55,90 @@ class Charter extends UIState { public override function create() { super.create(); + + topMenu = [ + { + label: "File", + childs: [ + { + label: "New" + }, + null, + { + label: "Exit", + onSelect: _file_exit + } + ] + }, + { + label: "Edit", + childs: [ + { + label: "Undo" + }, + { + label: "Redo" + }, + null, + { + label: "Cut" + }, + { + label: "Copy" + }, + { + label: "Paste" + }, + null, + { + label: "Delete", + onSelect: _edit_delete + } + ] + }, + { + label: "Chart", + childs: [ + { + label: "Playtest" + }, + { + label: "Playtest here" + }, + null, + { + label: "Playtest as opponent" + }, + { + label: "Playtest as opponent here" + }, + null, + { + label: "Edit metadata information" + } + ] + }, + { + label: "Playback", + childs: [ + { + label: "Play/Pause" + }, + null, + { + label: "Go back a section" + }, + { + label: "Go forward a section" + }, + null, + { + label: "Go back to the start" + } + ] + } + ]; + trace('Entering Charter for song $__song with difficulty $__diff.'); @@ -142,10 +148,11 @@ class Charter extends UIState { FlxG.cameras.add(uiCamera); - gridBackdrop = new CharterBackdrop(); - // gridBackdrop.setPosition(-78, 1); + gridBackdrop = new CharterBackdrop(); notesGroup.cameras = gridBackdrop.cameras = [charterCamera]; + add(gridBackdropDummy = new CharterBackdropDummy(gridBackdrop)); + topMenuSpr = new UITopMenu(topMenu); topMenuSpr.cameras = uiGroup.cameras = [uiCamera]; @@ -177,20 +184,61 @@ class Charter extends UIState { } public override function update(elapsed:Float) { + // TODO: do optimization like NoteGroup + notesGroup.forEach(function(n) { + n.selected = false; + if (n.hovered) { + if (FlxG.mouse.justReleased) { + if (FlxG.keys.pressed.CONTROL) + selection.push(n); + else + selection = [n]; + } + if (FlxG.mouse.justReleasedRight) { + openContextMenu(topMenu[1].childs); + } + } + }); + for(n in selection) + n.selected = true; + super.update(elapsed); gridBackdrop.strumlinesAmount = 3; - // TODO: remove this bs!! - if (controls.BACK) - FlxG.switchState(new funkin.menus.MainMenuState()); - if (controls.LEFT) - FlxG.camera.scroll.x -= 100 * elapsed; - if (controls.RIGHT) - FlxG.camera.scroll.x += 100 * elapsed; - if (controls.UP) - FlxG.camera.scroll.y -= 100 * elapsed; - if (controls.DOWN) - FlxG.camera.scroll.y += 100 * elapsed; + // TODO: canTypeText in case an ui input element is focused + if (true) { + if (controls.LEFT) + FlxG.camera.scroll.x -= 100 * elapsed; + if (controls.RIGHT) + FlxG.camera.scroll.x += 100 * elapsed; + if (controls.UP) + FlxG.camera.scroll.y -= 100 * elapsed; + if (controls.DOWN) + FlxG.camera.scroll.y += 100 * elapsed; + + if (FlxG.keys.justPressed.DELETE) + _edit_delete(); + } } + + public function deleteNote(note:CharterNote):CharterNote { + notesGroup.remove(note, true); + note.kill(); + note.destroy(); + return null; + } + + + // TOP MENU OPTIONS + #if REGION + function _file_exit() { + FlxG.switchState(new CharterSelection()); + } + function _edit_delete() { + if (selection == null) return; + for(s in selection) + deleteNote(s); + } + #end } \ No newline at end of file diff --git a/source/funkin/editors/charter/CharterBackdrop.hx b/source/funkin/editors/charter/CharterBackdrop.hx index 26f12c4b..d4e3df93 100644 --- a/source/funkin/editors/charter/CharterBackdrop.hx +++ b/source/funkin/editors/charter/CharterBackdrop.hx @@ -28,4 +28,26 @@ class CharterBackdrop extends FlxBackdrop { } x = ogX; } +} + +class CharterBackdropDummy extends UISprite { + var parent:CharterBackdrop; + public function new(parent:CharterBackdrop) { + super(); + this.parent = parent; + cameras = parent.cameras; + } + + public override function updateButton() { + __rect.x = parent.x; + __rect.y = 0 - (FlxG.height * (1 - (1 / FlxG.camera.zoom))); + __rect.width = parent.frameWidth * parent.scale.x * parent.strumlinesAmount; + __rect.height = FlxG.height / FlxG.camera.zoom; + UIState.state.updateRectButtonHandler(this, __rect, onHovered); + } + + public override function draw() { + @:privateAccess + __lastDrawCameras = [for(c in cameras) c]; + } } \ No newline at end of file diff --git a/source/funkin/editors/charter/CharterNote.hx b/source/funkin/editors/charter/CharterNote.hx index 44396b3c..f596b697 100644 --- a/source/funkin/editors/charter/CharterNote.hx +++ b/source/funkin/editors/charter/CharterNote.hx @@ -7,6 +7,8 @@ import flixel.util.FlxColor; class CharterNote extends UISprite { var angleTween:FlxTween; + public var selected:Bool = false; + public function new() { super(); antialiasing = true; @@ -16,6 +18,8 @@ class CharterNote extends UISprite { this.setUnstretchedGraphicSize(40, 40, false); angle = 45; // green-red inbetween + + cursor = BUTTON; } public function updatePos(step:Float, id:Int, susLength:Float = 0, type:Int = 0) { @@ -34,4 +38,10 @@ class CharterNote extends UISprite { return ((Math.sin(t * Math.PI) * 0.35) * 3 * t * Math.sqrt(1 - t)) + t; }}); } + + public override function update(elapsed:Float) { + super.update(elapsed); + colorTransform.redMultiplier = colorTransform.greenMultiplier = colorTransform.blueMultiplier = selected ? 0.75 : 1; + colorTransform.redOffset = colorTransform.greenOffset = colorTransform.blueOffset = selected ? 96 : 0; + } } \ No newline at end of file From beb31cd5b17847620a8e6fc7a72e06578586aaa0 Mon Sep 17 00:00:00 2001 From: Yoshman29 <81191621+YoshiCrafter29@users.noreply.github.com> Date: Mon, 20 Mar 2023 17:20:55 +0100 Subject: [PATCH 4/8] yooo --- buildnumber.txt | 2 +- source/funkin/editors/charter/Charter.hx | 5 +++++ source/funkin/shaders/FunkinShader.hx | 8 ++++---- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/buildnumber.txt b/buildnumber.txt index fecee22c..bf0b9f89 100644 --- a/buildnumber.txt +++ b/buildnumber.txt @@ -1 +1 @@ -2677 \ No newline at end of file +2678 \ No newline at end of file diff --git a/source/funkin/editors/charter/Charter.hx b/source/funkin/editors/charter/Charter.hx index c821c583..9ecd76f4 100644 --- a/source/funkin/editors/charter/Charter.hx +++ b/source/funkin/editors/charter/Charter.hx @@ -195,6 +195,8 @@ class Charter extends UIState { selection = [n]; } if (FlxG.mouse.justReleasedRight) { + if (!selection.contains(n)) + selection = [n]; openContextMenu(topMenu[1].childs); } } @@ -202,6 +204,9 @@ class Charter extends UIState { for(n in selection) n.selected = true; + if (gridBackdropDummy.hovered && FlxG.mouse.justReleasedRight) + openContextMenu(topMenu[2].childs); + super.update(elapsed); gridBackdrop.strumlinesAmount = 3; diff --git a/source/funkin/shaders/FunkinShader.hx b/source/funkin/shaders/FunkinShader.hx index 84f69dd1..ae23e63a 100644 --- a/source/funkin/shaders/FunkinShader.hx +++ b/source/funkin/shaders/FunkinShader.hx @@ -343,13 +343,13 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour { var cl = Std.string(Type.getClass(field)); // cant do "field is ShaderInput" for some reason - if (cl.startsWith("openfl.display.ShaderInput")) { - var si = cast(field, ShaderInput); - return si.input; - } else if (field is ShaderParameter) { + if (field is ShaderParameter) { var sp = cast(field, ShaderParameter); @:privateAccess return (sp.__length > 1) ? sp.value : sp.value[0]; + } else if (cl.startsWith("openfl.display.ShaderInput")) { + var si = cast(field, ShaderInput); + return si.input; } return field; } From 7c091445c252095a1196daaff91e640b844d1d28 Mon Sep 17 00:00:00 2001 From: Yoshman29 <81191621+YoshiCrafter29@users.noreply.github.com> Date: Mon, 20 Mar 2023 17:59:42 +0100 Subject: [PATCH 5/8] =?UTF-8?q?=E2=80=8B=E2=80=8B=E2=80=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/funkin/shaders/FunkinShader.hx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/funkin/shaders/FunkinShader.hx b/source/funkin/shaders/FunkinShader.hx index ae23e63a..e78bc22a 100644 --- a/source/funkin/shaders/FunkinShader.hx +++ b/source/funkin/shaders/FunkinShader.hx @@ -343,7 +343,7 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour { var cl = Std.string(Type.getClass(field)); // cant do "field is ShaderInput" for some reason - if (field is ShaderParameter) { + if (cl.startsWith("openfl.display.ShaderParameter")) { var sp = cast(field, ShaderParameter); @:privateAccess return (sp.__length > 1) ? sp.value : sp.value[0]; @@ -368,14 +368,7 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour { var cl = Std.string(Type.getClass(field)); // cant do "field is ShaderInput" for some reason - if (cl.startsWith("openfl.display.ShaderInput")) { - // shader input!! - if (!(val is BitmapData)) { - throw new ShaderTypeException(v, Type.getClass(val), BitmapData); - return null; - } - field.input = cast val; - } else if (cl.startsWith("openfl.display.ShaderParameter")) { + if (cl.startsWith("openfl.display.ShaderParameter")) { @:privateAccess if (field.__length <= 1) { // that means we wait for a single number, instead of an array @@ -402,6 +395,13 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour { } return field.value = val; } + } else if (cl.startsWith("openfl.display.ShaderInput")) { + // shader input!! + if (!(val is BitmapData)) { + throw new ShaderTypeException(v, Type.getClass(val), BitmapData); + return null; + } + field.input = cast val; } } From c95c1e29750793b7ec7f5aaef31b7238fbcd4ecc Mon Sep 17 00:00:00 2001 From: NeeEoo Date: Mon, 20 Mar 2023 20:34:50 +0100 Subject: [PATCH 6/8] Cleaned up some code --- .gitignore | 3 +- .vscode/settings.json | 4 + source/away3d/core/managers/Stage3DProxy.hx | 206 ++--- source/flx3d/Flx3DCamera.hx | 1 - source/flx3d/Flx3DUtil.hx | 2 +- source/flxanimate/frames/FlxAnimateFrames.hx | 56 +- source/funkin/game/Highscore.hx | 3 +- source/funkin/macros/ScriptsMacro.hx | 2 +- source/funkin/options/Options.hx | 2 +- source/funkin/shaders/CustomShader.hx | 36 +- source/funkin/shaders/FunkinShader.hx | 880 ++++++++++--------- source/funkin/shaders/OverlayShader.hx | 36 +- source/funkin/shaders/WiggleEffect.hx | 124 +-- source/funkin/system/Main.hx | 2 + source/funkin/ui/Alphabet.hx | 4 +- source/funkin/ui/FunkinText.hx | 18 +- source/funkin/utils/BitmapUtil.hx | 116 +-- source/funkin/utils/DiscordUtil.hx | 222 ++--- source/funkin/utils/EngineUtil.hx | 16 +- source/funkin/utils/FlxInterpolateColor.hx | 48 +- source/funkin/utils/IniUtil.hx | 54 +- source/funkin/utils/MarkdownUtil.hx | 150 ++-- source/funkin/utils/MemoryUtil.hx | 2 +- source/funkin/utils/NdllUtil.hx | 90 +- source/funkin/utils/ThreadUtil.hx | 52 +- source/funkin/utils/XMLUtil.hx | 64 +- source/funkin/utils/ZipUtil.hx | 382 ++++---- source/funkin/windows/WindowsAPI.hx | 176 ++-- 28 files changed, 1390 insertions(+), 1361 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.gitignore b/.gitignore index ec822f57..bee4df7e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,6 @@ export/ dump/ latest/windows/obj/ latest/windows/haxe/ -.vscode/ +.vscode/* +!.vscode/settings.json .haxelib/ \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..5eee2d85 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "editor.detectIndentation": false, + "editor.insertSpaces": false +} \ No newline at end of file diff --git a/source/away3d/core/managers/Stage3DProxy.hx b/source/away3d/core/managers/Stage3DProxy.hx index 63edb50b..057da05b 100644 --- a/source/away3d/core/managers/Stage3DProxy.hx +++ b/source/away3d/core/managers/Stage3DProxy.hx @@ -51,12 +51,12 @@ class Stage3DProxy extends EventDispatcher public var bufferClear(get, set):Bool; public var mouse3DManager(get, set):Mouse3DManager; public var touch3DManager(get, set):Touch3DManager; - + private static var _frameEventDriver:Shape = new Shape(); @:allow(away3d) private var _context3D:Context3D; @:allow(away3d) private var _stage3DIndex:Int = -1; - + private var _usesSoftwareRendering:Bool; private var _profile:String; private var _stage3D:Stage3D; @@ -83,46 +83,46 @@ class Stage3DProxy extends EventDispatcher private var _bufferClear:Bool; private var _mouse3DManager:Mouse3DManager; private var _touch3DManager:Touch3DManager; - + private function notifyViewportUpdated():Void { if (_viewportDirty) return; - + _viewportDirty = true; - + if (!hasEventListener(Stage3DEvent.VIEWPORT_UPDATED)) return; - + //TODO: investigate bug causing coercion error //if (!_viewportUpdated) _viewportUpdated = new Stage3DEvent(Stage3DEvent.VIEWPORT_UPDATED); - + dispatchEvent(_viewportUpdated); } - + private function notifyEnterFrame():Void { if (!hasEventListener(Event.ENTER_FRAME)) return; - + if (_enterFrame == null) _enterFrame = new Event(Event.ENTER_FRAME); - + dispatchEvent(_enterFrame); } - + private function notifyExitFrame():Void { if (!hasEventListener(Event.EXIT_FRAME)) return; - + if (_exitFrame == null) _exitFrame = new Event(Event.EXIT_FRAME); - + dispatchEvent(_exitFrame); } - + /** * Creates a Stage3DProxy object. This method should not be called directly. Creation of Stage3DProxy objects should * be handled by Stage3DManager. @@ -134,7 +134,7 @@ class Stage3DProxy extends EventDispatcher public function new(stage3DIndex:Int, stage3D:Stage3D, stage3DManager:Stage3DManager, forceSoftware:Bool = false, profile:String = "baseline") { vertexBufferCount = indexBufferCount = drawTriangleCount = 0; - + _stage3DIndex = stage3DIndex; _stage3D = stage3D; _stage3D.x = 0; @@ -143,15 +143,15 @@ class Stage3DProxy extends EventDispatcher _stage3DManager = stage3DManager; _viewPort = new Rectangle(); _enableDepthAndStencil = true; - + super(); - + // whatever happens, be sure this has highest priority _stage3D.addEventListener(Event.CONTEXT3D_CREATE, onContext3DUpdate, false, 1000, false); - + this.forceSoftware = forceSoftware; this._profile = profile; - + if (_stage3D.context3D != null) { onContext3DUpdate(null); } @@ -159,14 +159,14 @@ class Stage3DProxy extends EventDispatcher requestContext(forceSoftware, _profile); } } - + private var forceSoftware:Bool; - + private function get_profile():String { return _profile; } - + /** * Disposes the Stage3DProxy object, freeing the Context3D attached to the Stage3D. */ @@ -193,22 +193,22 @@ class Stage3DProxy extends EventDispatcher if(backBufferHeight<50) backBufferHeight = 50; var oldWidth:Int = _backBufferWidth; var oldHeight:Int = _backBufferHeight; - + _backBufferWidth = backBufferWidth; _backBufferHeight = backBufferHeight; _viewPort.width = backBufferWidth; _viewPort.height = backBufferHeight; - + if (oldWidth != _backBufferWidth || oldHeight != _backBufferHeight) notifyViewportUpdated(); - + _antiAlias = antiAlias; _enableDepthAndStencil = enableDepthAndStencil; if (_context3D != null) _context3D.configureBackBuffer(backBufferWidth, backBufferHeight, antiAlias, enableDepthAndStencil, true, true); } - + /* * Indicates whether the depth and stencil buffer is used */ @@ -216,24 +216,24 @@ class Stage3DProxy extends EventDispatcher { return _enableDepthAndStencil; } - + private function set_enableDepthAndStencil(enableDepthAndStencil:Bool):Bool { _enableDepthAndStencil = enableDepthAndStencil; _backBufferDirty = true; return enableDepthAndStencil; } - + private function get_renderTarget():TextureBase { return _renderTarget; } - + private function get_renderSurfaceSelector():Int { return _renderSurfaceSelector; } - + public function setRenderTarget(target:TextureBase, enableDepthAndStencil:Bool = false, surfaceSelector:Int = 0):Void { if (_renderTarget == target && surfaceSelector == _renderSurfaceSelector && _enableDepthAndStencil == enableDepthAndStencil) @@ -241,13 +241,13 @@ class Stage3DProxy extends EventDispatcher _renderTarget = target; _renderSurfaceSelector = surfaceSelector; _enableDepthAndStencil = enableDepthAndStencil; - + if (target != null) _context3D.setRenderToTexture(target, enableDepthAndStencil, _antiAlias, surfaceSelector); else _context3D.setRenderToBackBuffer(); } - + /* * Clear and reset the back buffer when using a shared context */ @@ -255,21 +255,21 @@ class Stage3DProxy extends EventDispatcher { if (_context3D == null) return; - + if (_backBufferDirty) { configureBackBuffer(_backBufferWidth, _backBufferHeight, _antiAlias, _enableDepthAndStencil); _backBufferDirty = false; } - + _context3D.clear( ((_color >> 16) & 0xff)/255.0, ((_color >> 8) & 0xff)/255.0, (_color & 0xff)/255.0, ((_color >> 24) & 0xff)/255.0); - + _bufferClear = true; } - + /* * Display the back rendering buffer */ @@ -277,15 +277,15 @@ class Stage3DProxy extends EventDispatcher { if (_context3D == null) return; - + _context3D.present(); - + _activeProgram3D = null; - + if (_mouse3DManager != null) _mouse3DManager.fireMouseEvents(); } - + /** * Registers an event listener object with an EventDispatcher object so that the listener receives notification of an event. Special case for enterframe and exitframe events - will switch Stage3DProxy into automatic render mode. * You can register event listeners on all nodes in the display list for a specific type of event, phase, and priority. @@ -299,11 +299,11 @@ class Stage3DProxy extends EventDispatcher override public function addEventListener(type:String, listener:Dynamic -> Void, useCapture:Bool = false, priority:Int = 0, useWeakReference:Bool = false):Void { super.addEventListener(type, listener, useCapture, priority, useWeakReference); - + if ((type == Event.ENTER_FRAME || type == Event.EXIT_FRAME) && !_frameEventDriver.hasEventListener(Event.ENTER_FRAME)) _frameEventDriver.addEventListener(Event.ENTER_FRAME, onEnterFrame, useCapture, priority, useWeakReference); } - + /** * Removes a listener from the EventDispatcher object. Special case for enterframe and exitframe events - will switch Stage3DProxy out of automatic render mode. * If there is no matching listener registered with the EventDispatcher object, a call to this method has no effect. @@ -315,24 +315,24 @@ class Stage3DProxy extends EventDispatcher override public function removeEventListener(type:String, listener:Dynamic -> Void, useCapture:Bool = false):Void { super.removeEventListener(type, listener, useCapture); - + // Remove the main rendering listener if no EnterFrame listeners remain if (!hasEventListener(Event.ENTER_FRAME) && !hasEventListener(Event.EXIT_FRAME) && _frameEventDriver.hasEventListener(Event.ENTER_FRAME)) _frameEventDriver.removeEventListener(Event.ENTER_FRAME, onEnterFrame, useCapture); } - + private function get_scissorRect():Rectangle { return _scissorRect; } - + private function set_scissorRect(value:Rectangle):Rectangle { _scissorRect = value; _context3D.setScissorRectangle(_scissorRect); return value; } - + /** * The index of the Stage3D which is managed by this instance of Stage3DProxy. */ @@ -340,7 +340,7 @@ class Stage3DProxy extends EventDispatcher { return _stage3DIndex; } - + /** * The base Stage3D object associated with this proxy. */ @@ -348,7 +348,7 @@ class Stage3DProxy extends EventDispatcher { return _stage3D; } - + /** * The Context3D object associated with the given Stage3D object. */ @@ -356,7 +356,7 @@ class Stage3DProxy extends EventDispatcher { return _context3D; } - + /** * The driver information as reported by the Context3D object (if any) */ @@ -364,7 +364,7 @@ class Stage3DProxy extends EventDispatcher { return (_context3D != null)? _context3D.driverInfo : null; } - + /** * Indicates whether the Stage3D managed by this proxy is running in software mode. * Remember to wait for the CONTEXT3D_CREATED event before checking this property, @@ -374,7 +374,7 @@ class Stage3DProxy extends EventDispatcher { return _usesSoftwareRendering; } - + /** * The x position of the Stage3D. */ @@ -382,18 +382,18 @@ class Stage3DProxy extends EventDispatcher { return _stage3D.x; } - + private function set_x(value:Float):Float { if (_viewPort.x == value) return value; - + _stage3D.x = _viewPort.x = value; - + notifyViewportUpdated(); return value; } - + /** * The y position of the Stage3D. */ @@ -401,18 +401,18 @@ class Stage3DProxy extends EventDispatcher { return _stage3D.y; } - + private function set_y(value:Float):Float { if (_viewPort.y == value) return value; - + _stage3D.y = _viewPort.y = value; - + notifyViewportUpdated(); return value; } - + /** * The width of the Stage3D. */ @@ -420,7 +420,7 @@ class Stage3DProxy extends EventDispatcher { return _backBufferWidth; } - + private function set_width(width:Int):Int { if (_viewPort.width == width) @@ -433,7 +433,7 @@ class Stage3DProxy extends EventDispatcher notifyViewportUpdated(); return width; } - + /** * The height of the Stage3D. */ @@ -441,7 +441,7 @@ class Stage3DProxy extends EventDispatcher { return _backBufferHeight; } - + private function set_height(height:Int):Int { if (_viewPort.height == height) @@ -450,11 +450,11 @@ class Stage3DProxy extends EventDispatcher if(height<50) height = 50; _viewPort.height = _backBufferHeight = height; _backBufferDirty = true; - + notifyViewportUpdated(); return height; } - + /** * The antiAliasing of the Stage3D. */ @@ -462,24 +462,24 @@ class Stage3DProxy extends EventDispatcher { return _antiAlias; } - + private function set_antiAlias(antiAlias:Int):Int { _antiAlias = antiAlias; _backBufferDirty = true; return antiAlias; } - + /** * A viewPort rectangle equivalent of the Stage3D size and position. */ private function get_viewPort():Rectangle { _viewportDirty = false; - + return _viewPort; } - + /** * The background color of the Stage3D. */ @@ -487,13 +487,13 @@ class Stage3DProxy extends EventDispatcher { return _color; } - + private function set_color(color:Int):Int { _color = color; return color; } - + /** * The visibility of the Stage3D. */ @@ -501,13 +501,13 @@ class Stage3DProxy extends EventDispatcher { return _stage3D.visible; } - + private function set_visible(value:Bool):Bool { _stage3D.visible = value; return value; } - + /** * The freshly cleared state of the backbuffer before any rendering */ @@ -515,13 +515,13 @@ class Stage3DProxy extends EventDispatcher { return _bufferClear; } - + private function set_bufferClear(newBufferClear:Bool):Bool { _bufferClear = newBufferClear; return newBufferClear; } - + /* * Access to fire mouseevents across multiple layered view3D instances */ @@ -529,24 +529,24 @@ class Stage3DProxy extends EventDispatcher { return _mouse3DManager; } - + private function set_mouse3DManager(value:Mouse3DManager):Mouse3DManager { _mouse3DManager = value; return value; } - + private function get_touch3DManager():Touch3DManager { return _touch3DManager; } - + private function set_touch3DManager(value:Touch3DManager):Touch3DManager { _touch3DManager = value; return value; } - + /** * Frees the Context3D associated with this Stage3DProxy. */ @@ -554,11 +554,11 @@ class Stage3DProxy extends EventDispatcher { if (_context3D != null) { dispatchEvent(new Stage3DEvent(Stage3DEvent.CONTEXT3D_DISPOSED)); - _context3D.dispose(); + _context3D.dispose(); } _context3D = null; } - + /* * Called whenever the Context3D is retrieved or lost. * @param event The event dispatched. @@ -569,7 +569,7 @@ class Stage3DProxy extends EventDispatcher var hadContext:Bool = (_context3D != null); _context3D = _stage3D.context3D; _context3D.enableErrorChecking = Debug.active; - + _usesSoftwareRendering = (_context3D.driverInfo.indexOf('Software') == 0); // Only configure back buffer if width and height have been set, @@ -577,15 +577,15 @@ class Stage3DProxy extends EventDispatcher // invoked for the first time. if (_backBufferWidth > 0 && _backBufferHeight > 0) _context3D.configureBackBuffer(_backBufferWidth, _backBufferHeight, _antiAlias, _enableDepthAndStencil, true, true); - + // Dispatch the appropriate event depending on whether context was // created for the first time or recreated after a device loss. dispatchEvent(new Stage3DEvent(hadContext? Stage3DEvent.CONTEXT3D_RECREATED : Stage3DEvent.CONTEXT3D_CREATED)); - + } else throw new Error("Rendering context lost!"); } - + /** * Requests a Context3D object to attach to the managed Stage3D. */ @@ -598,7 +598,7 @@ class Stage3DProxy extends EventDispatcher if (!_usesSoftwareRendering) _usesSoftwareRendering = forceSoftware; _profile = profile; - + // ugly stuff for backward compatibility var renderMode:Context3DRenderMode = forceSoftware? Context3DRenderMode.SOFTWARE : Context3DRenderMode.AUTO; if (profile == "baseline") @@ -610,10 +610,10 @@ class Stage3DProxy extends EventDispatcher throw "An error occurred creating a context using the given profile. Profiles are not supported for the SDK this was compiled with."; } } - + _contextRequested = true; } - + /** * The Enter_Frame handler for processing the proxy.ENTER_FRAME and proxy.EXIT_FRAME event handlers. * Typically the proxy.ENTER_FRAME listener would render the layers for this Stage3D instance. @@ -622,20 +622,20 @@ class Stage3DProxy extends EventDispatcher { if (_context3D == null) return; - + // Clear the stage3D instance clear(); - + //notify the enterframe listeners notifyEnterFrame(); - + // Call the present() to render the frame present(); - + //notify the exitframe listeners notifyExitFrame(); } - + public function recoverFromDisposal():Bool { if (_context3D == null) @@ -647,29 +647,29 @@ class Stage3DProxy extends EventDispatcher } return true; } - + public function clearDepthBuffer():Void { if (_context3D == null) return; _context3D.clear(0, 0, 0, 1, 1, 0, cast Context3DClearMask.DEPTH); } - + /* Moving all creation methods here, so we can trace the usages of vertexbuffers or indexbuffers. Flash will throw the ERROR, when the vertexbuffer creation reached 4096.. */ - + public static var vertexBufferCount(default, default) : UInt; public static var indexBufferCount(default, default) : UInt; public static var drawTriangleCount(default, default) : UInt; - + private static var _vbUploadCount : UInt = 0; private static var _ibUploadCount : UInt = 0; - + private static var _bmpUploadCount : UInt = 0; private static var _atfUploadCount : UInt = 0; - + public function createVertexBuffer(numVertices:Int, data32PerVertex:Int):VertexBuffer3D { vertexBufferCount++; @@ -681,31 +681,31 @@ class Stage3DProxy extends EventDispatcher vb.dispose(); vertexBufferCount--; } - + public function createIndexBuffer(numIndices:Int):IndexBuffer3D { indexBufferCount++; return _context3D.createIndexBuffer(numIndices); } - + public static function disposeIndexBuffer(ib:IndexBuffer3D):Void { ib.dispose(); indexBufferCount--; } - + public function drawTriangles(indexBuffer:IndexBuffer3D, firstIndex:Int = 0, numTriangles:Int = -1) { drawTriangleCount++; _context3D.drawTriangles(indexBuffer, firstIndex, numTriangles); } - + public static function uploadVertexBufferFromVector(vb:VertexBuffer3D, data:Vector, startVertex:Int, numVertices:Int):Void { vb.uploadFromVector(data, startVertex, numVertices); _vbUploadCount++; } - + public static function uploadIndexBufferFromVector(ib:IndexBuffer3D, data:Vector, startOffset:Int, count:Int):Void { ib.uploadFromVector(data, startOffset, count); diff --git a/source/flx3d/Flx3DCamera.hx b/source/flx3d/Flx3DCamera.hx index 4b153819..d81fc75d 100644 --- a/source/flx3d/Flx3DCamera.hx +++ b/source/flx3d/Flx3DCamera.hx @@ -40,7 +40,6 @@ class Flx3DCamera extends FlxCamera { super(X, Y, Width, Height, DefaultZoom); __cur3DStageID = __3DIDS++; - view = new View3D(); view.width = this.width; view.height = this.height; diff --git a/source/flx3d/Flx3DUtil.hx b/source/flx3d/Flx3DUtil.hx index 53d6bf44..f23788ae 100644 --- a/source/flx3d/Flx3DUtil.hx +++ b/source/flx3d/Flx3DUtil.hx @@ -7,7 +7,7 @@ import flixel.FlxG; /** * @author lunarclient * @see https://twitter.com/lunarcleint - * + * * Help from Ne_Eo * @see https://twitter.com/Ne_Eo_Twitch */ diff --git a/source/flxanimate/frames/FlxAnimateFrames.hx b/source/flxanimate/frames/FlxAnimateFrames.hx index b61a3282..0e91db5a 100644 --- a/source/flxanimate/frames/FlxAnimateFrames.hx +++ b/source/flxanimate/frames/FlxAnimateFrames.hx @@ -38,14 +38,14 @@ class FlxAnimateFrames extends FlxAtlasFrames public var parents:Array; /** * Parses the spritemaps into small sprites to use in the animation. - * + * * @param Path Where the Sprites are, normally you use it once when calling FlxAnimate already * @return new sliced limbs for you to use ;) */ public static function fromTextureAtlas(Path:String):FlxAtlasFrames { var frames:FlxAnimateFrames = new FlxAnimateFrames(); - + if (zip != null || haxe.io.Path.extension(Path) == "zip") { #if html5 @@ -54,7 +54,7 @@ class FlxAnimateFrames extends FlxAtlasFrames #end var imagemap:Map = new Map(); var jsonMap:Map = new Map(); - var thing = (zip != null) ? zip : Zip.unzip(Zip.readZip(Assets.getBytes(Path))); + var thing = (zip != null) ? zip : Zip.unzip(Zip.readZip(Assets.getBytes(Path))); for (list in thing) { if (haxe.io.Path.extension(list.fileName) == "json") @@ -182,7 +182,7 @@ class FlxAnimateFrames extends FlxAtlasFrames var rotated = (texture.has.rotated && texture.att.rotated == "true"); var flipX = (texture.has.flipX && texture.att.flipX == "true"); var flipY = (texture.has.flipY && texture.att.flipY == "true"); - + var rect = FlxRect.get(Std.parseFloat(texture.att.x), Std.parseFloat(texture.att.y), Std.parseFloat(width), Std.parseFloat(height)); @@ -203,7 +203,7 @@ class FlxAnimateFrames extends FlxAtlasFrames return frames; } /** - * + * * @param Path the Json in specific, can be the path of it or the actual json * @param Image the image which the file is referencing **WARNING:** if you set the path as a json, it's obligatory to set the image! * @return A new instance of `FlxAtlasFrames` @@ -294,7 +294,7 @@ class FlxAnimateFrames extends FlxAtlasFrames return null; } } - + var graphic:FlxGraphic = FlxG.bitmap.add(Image, false); if (graphic == null) @@ -438,7 +438,7 @@ class FlxAnimateFrames extends FlxAtlasFrames Frames.addAtlasFrame(frameRect, sourceSize, offset, name, angle); } - + static function starlingHelper(FrameName:String, FrameData:Dynamic, Frames:FlxAtlasFrames):Void { var rotated:Bool = FrameData.rotated; @@ -474,7 +474,7 @@ class FlxAnimateFrames extends FlxAtlasFrames matrix.translate(0, height); } sprite.draw(SpriteMap, matrix); - + @:privateAccess var curFrame = new FlxFrame(FlxG.bitmap.add(sprite)); curFrame.name = limb.name; @@ -482,7 +482,7 @@ class FlxAnimateFrames extends FlxAtlasFrames curFrame.frame = new FlxRect(0,0, width, height); return curFrame; } - + static function texturePackerHelper(FrameName:String, FrameData:Dynamic, Frames:FlxAtlasFrames):Void { var rotated:Bool = FrameData.rotated; @@ -508,7 +508,7 @@ class FlxAnimateFrames extends FlxAtlasFrames return a < b ? b : a; } // code made by noonat 11 years ago, not mine lol -class PropertyList +class PropertyList { static var _dateRegex:EReg = ~/(\d{4}-\d{2}-\d{2})(?:T(\d{2}:\d{2}:\d{2})Z)?/; @@ -517,20 +517,20 @@ class PropertyList * the property list is empty, an empty object will be returned. * @param text Text contents of the property list file. */ - static public function parse(text:String):Dynamic + static public function parse(text:String):Dynamic { var fast = new Access(Xml.parse(text).firstElement()); return fast.hasNode.dict ? parseDict(fast.node.dict) : {}; } - static function parseDate(text:String):Date + static function parseDate(text:String):Date { - if (!_dateRegex.match(text)) + if (!_dateRegex.match(text)) { throw 'Invalid date "' + text + '" (only yyyy-mm-dd and yyyy-mm-ddThh:mm:ssZ supported)'; } text = _dateRegex.matched(1); - if (_dateRegex.matched(2) != null) + if (_dateRegex.matched(2) != null) { text += ' ' + _dateRegex.matched(2); } @@ -541,12 +541,12 @@ class PropertyList { var key:String = null; var result:Dynamic = {}; - for (childNode in node.elements) + for (childNode in node.elements) { - if (childNode.name == 'key') + if (childNode.name == 'key') { key = childNode.innerData; - } else if (key != null) + } else if (key != null) { Reflect.setField(result, key, parseValue(childNode)); } @@ -557,21 +557,21 @@ class PropertyList static function parseValue(node:Access):Dynamic { var value:Dynamic = null; - switch (node.name) + switch (node.name) { case 'array': value = new Array(); - for (childNode in node.elements) + for (childNode in node.elements) { value.push(parseValue(childNode)); } - + case 'dict': value = parseDict(node); - + case 'date': value = parseDate(node.innerData); - + case 'string': var thing:Dynamic = node.innerData; if (thing.charAt(0) == "{") @@ -583,16 +583,16 @@ class PropertyList value = thing; case 'data': value = node.innerData; - + case 'true': value = true; - + case 'false': value = false; - + case 'real': value = Std.parseFloat(node.innerData); - + case 'integer': value = Std.parseInt(node.innerData); } @@ -602,7 +602,7 @@ class PropertyList typedef JSJson = { var images:Array; - var frames:Array>; + var frames:Array>; } typedef FlxSparrow = OneOfTwo; typedef FlxJson = OneOfTwo; @@ -612,7 +612,7 @@ typedef JsonNormal = frames:Dynamic, meta:Meta } -typedef Plist = +typedef Plist = { frames:Dynamic, metadata:Dynamic diff --git a/source/funkin/game/Highscore.hx b/source/funkin/game/Highscore.hx index b8707798..a77ae329 100644 --- a/source/funkin/game/Highscore.hx +++ b/source/funkin/game/Highscore.hx @@ -85,14 +85,13 @@ class Highscore { songScores = CoolUtil.getDefault(FlxG.save.data.songScores, new Map()); weekScores = CoolUtil.getDefault(FlxG.save.data.weekScores, new Map()); - + for(k=>e in songScores) if (e is Int) songScores.remove(k); } } - typedef SongScore = { @:optional var score:Int; @:optional var accuracy:Float; diff --git a/source/funkin/macros/ScriptsMacro.hx b/source/funkin/macros/ScriptsMacro.hx index f9e7a925..0fecee52 100644 --- a/source/funkin/macros/ScriptsMacro.hx +++ b/source/funkin/macros/ScriptsMacro.hx @@ -27,7 +27,7 @@ class ScriptsMacro { #if !web Compiler.include("haxe.extern"); #end - + Compiler.include("scripting"); // FOR ABSTRACTS diff --git a/source/funkin/options/Options.hx b/source/funkin/options/Options.hx index acace74f..1a14a7a1 100644 --- a/source/funkin/options/Options.hx +++ b/source/funkin/options/Options.hx @@ -10,7 +10,7 @@ class Options { @:dox(hide) public static var __save:FlxSave; @:dox(hide) private static var __eventAdded = false; - + /** * SETTINGS */ diff --git a/source/funkin/shaders/CustomShader.hx b/source/funkin/shaders/CustomShader.hx index 3119c180..09f599cc 100644 --- a/source/funkin/shaders/CustomShader.hx +++ b/source/funkin/shaders/CustomShader.hx @@ -6,28 +6,28 @@ import hscript.IHScriptCustomBehaviour; /** * Class for custom shaders. - * + * * To create one, create a `shaders` folder in your assets/mod folder, then add a file named `my-shader.frag` or/and `my-shader.vert`. - * + * * Non-existent shaders will only load the default one, and throw a warning in the console. - * + * * To access the shader's uniform variables, use `shader.variable` */ class CustomShader extends FunkinShader { - /** - * Creates a new custom shader - * @param name Name of the frag and vert files. - * @param glslVersion GLSL version to use. Defaults to `120`. - */ - public function new(name:String, glslVersion:String = "120") { - var fragShaderPath = Paths.fragShader(name); - var vertShaderPath = Paths.vertShader(name); - var fragCode = Assets.exists(fragShaderPath) ? Assets.getText(fragShaderPath) : null; - var vertCode = Assets.exists(vertShaderPath) ? Assets.getText(vertShaderPath) : null; + /** + * Creates a new custom shader + * @param name Name of the frag and vert files. + * @param glslVersion GLSL version to use. Defaults to `120`. + */ + public function new(name:String, glslVersion:String = "120") { + var fragShaderPath = Paths.fragShader(name); + var vertShaderPath = Paths.vertShader(name); + var fragCode = Assets.exists(fragShaderPath) ? Assets.getText(fragShaderPath) : null; + var vertCode = Assets.exists(vertShaderPath) ? Assets.getText(vertShaderPath) : null; - if (fragCode == null && vertCode == null) - Logs.trace('Shader "$name" couldn\'t be found.', ERROR); - - super(fragCode, vertCode, glslVersion); - } + if (fragCode == null && vertCode == null) + Logs.trace('Shader "$name" couldn\'t be found.', ERROR); + + super(fragCode, vertCode, glslVersion); + } } \ No newline at end of file diff --git a/source/funkin/shaders/FunkinShader.hx b/source/funkin/shaders/FunkinShader.hx index e78bc22a..6212357f 100644 --- a/source/funkin/shaders/FunkinShader.hx +++ b/source/funkin/shaders/FunkinShader.hx @@ -18,50 +18,76 @@ import openfl.display.ShaderParameter; import openfl.display.BitmapData; import openfl.display.ShaderInput; +@:access(openfl.display3D.Context3D) +@:access(openfl.display3D.Program3D) +@:access(openfl.display.ShaderInput) +@:access(openfl.display.ShaderParameter) class FunkinShader extends FlxShader implements IHScriptCustomBehaviour { - private static var __instanceFields = Type.getInstanceFields(FunkinShader); - - public var glslVer:String = "120"; + private static var __instanceFields = Type.getInstanceFields(FunkinShader); - /** - * Creates a new shader from the specified fragment and vertex source. - * Accepts `#pragma header`. - * @param frag Fragment source (pass `null` to use default) - * @param vert Vertex source (pass `null` to use default) - * @param glslVer Version of GLSL to use (defaults to 120) - */ - public override function new(frag:String, vert:String, glslVer:String = "120") { - if (frag == null) frag = ShaderTemplates.defaultFragmentSource; - if (vert == null) vert = ShaderTemplates.defaultVertexSource; - this.glFragmentSource = frag.replace("#pragma header", ShaderTemplates.fragHeader).replace("#pragma body", ShaderTemplates.fragBody); - this.glVertexSource = vert.replace("#pragma header", ShaderTemplates.vertHeader).replace("#pragma body", ShaderTemplates.vertBody); + public var glslVer:String = "120"; - this.glslVer = glslVer; - super(); - } + /** + * Creates a new shader from the specified fragment and vertex source. + * Accepts `#pragma header`. + * @param frag Fragment source (pass `null` to use default) + * @param vert Vertex source (pass `null` to use default) + * @param glslVer Version of GLSL to use (defaults to 120) + */ + public override function new(frag:String, vert:String, glslVer:String = "120") { + if (frag == null) frag = ShaderTemplates.defaultFragmentSource; + if (vert == null) vert = ShaderTemplates.defaultVertexSource; + this.glFragmentSource = frag; + this.glVertexSource = vert; - @:noCompletion private override function __initGL():Void - { - if (__glSourceDirty || __paramBool == null) - { - __glSourceDirty = false; - program = null; + this.glslVer = glslVer; + super(); + } - __inputBitmapData = new Array(); - __paramBool = new Array(); - __paramFloat = new Array(); - __paramInt = new Array(); + @:noCompletion override private function set_glFragmentSource(value:String):String + { + value = value.replace("#pragma header", ShaderTemplates.fragHeader).replace("#pragma body", ShaderTemplates.fragBody); + if (value != __glFragmentSource) + { + __glSourceDirty = true; + } - __processGLData(glVertexSource, "attribute"); - __processGLData(glVertexSource, "uniform"); - __processGLData(glFragmentSource, "uniform"); - } + return __glFragmentSource = value; + } - if (__context != null && program == null) - { - var prefix = '#version ${glslVer}\n'; + @:noCompletion override private function set_glVertexSource(value:String):String + { + value = value.replace("#pragma header", ShaderTemplates.vertHeader).replace("#pragma body", ShaderTemplates.vertBody); + if (value != __glVertexSource) + { + __glSourceDirty = true; + } - @:privateAccess var gl = __context.gl; + return __glVertexSource = value; + } + + @:noCompletion private override function __initGL():Void + { + if (__glSourceDirty || __paramBool == null) + { + __glSourceDirty = false; + program = null; + + __inputBitmapData = new Array(); + __paramBool = new Array(); + __paramFloat = new Array(); + __paramInt = new Array(); + + __processGLData(glVertexSource, "attribute"); + __processGLData(glVertexSource, "uniform"); + __processGLData(glFragmentSource, "uniform"); + } + + if (__context != null && program == null) + { + var prefix = '#version ${glslVer}\n'; + + var gl = __context.gl; prefix += "#ifdef GL_ES " @@ -78,503 +104,501 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour { var fragment = prefix + glFragmentSource; var id = vertex + fragment; - @:privateAccess + if (__context.__programs.exists(id)) { - @:privateAccess program = __context.__programs.get(id); + program = __context.__programs.get(id); } else { program = __context.createProgram(GLSL); - @:privateAccess program.__glProgram = __createGLProgram(vertex, fragment); + program.__glProgram = __createGLProgram(vertex, fragment); - @:privateAccess __context.__programs.set(id, program); + __context.__programs.set(id, program); } if (program != null) { - @:privateAccess glProgram = program.__glProgram; + glProgram = program.__glProgram; for (input in __inputBitmapData) { - @:privateAccess + if (input.__isUniform) { - @:privateAccess input.index = gl.getUniformLocation(glProgram, input.name); + input.index = gl.getUniformLocation(glProgram, input.name); } else { - @:privateAccess input.index = gl.getAttribLocation(glProgram, input.name); + input.index = gl.getAttribLocation(glProgram, input.name); } } for (parameter in __paramBool) { - @:privateAccess + if (parameter.__isUniform) { - @:privateAccess parameter.index = gl.getUniformLocation(glProgram, parameter.name); + parameter.index = gl.getUniformLocation(glProgram, parameter.name); } else { - @:privateAccess parameter.index = gl.getAttribLocation(glProgram, parameter.name); + parameter.index = gl.getAttribLocation(glProgram, parameter.name); } } for (parameter in __paramFloat) { - @:privateAccess + if (parameter.__isUniform) { - @:privateAccess parameter.index = gl.getUniformLocation(glProgram, parameter.name); + parameter.index = gl.getUniformLocation(glProgram, parameter.name); } else { - @:privateAccess parameter.index = gl.getAttribLocation(glProgram, parameter.name); + parameter.index = gl.getAttribLocation(glProgram, parameter.name); } } for (parameter in __paramInt) { - @:privateAccess + if (parameter.__isUniform) { - @:privateAccess + parameter.index = gl.getUniformLocation(glProgram, parameter.name); } else { - @:privateAccess + parameter.index = gl.getAttribLocation(glProgram, parameter.name); } } } - } - } + // initInstance(vertex, fragment); // btw make sure to disable the prefixes for ._isInstance + } + } - @:noCompletion private override function __processGLData(source:String, storageType:String):Void - { - var lastMatch = 0, position, regex, name, type; - - if (storageType == "uniform") - { - regex = ~/uniform ([A-Za-z0-9]+) ([A-Za-z0-9_]+)/; - } - else - { - regex = ~/attribute ([A-Za-z0-9]+) ([A-Za-z0-9_]+)/; - } - - while (regex.matchSub(source, lastMatch)) - { - type = regex.matched(1); - name = regex.matched(2); - - if (StringTools.startsWith(name, "gl_")) - { - continue; - } - - var isUniform = (storageType == "uniform"); - - if (StringTools.startsWith(type, "sampler")) - { - var input = new ShaderInput(); - input.name = name; - @:privateAccess - input.__isUniform = isUniform; - __inputBitmapData.push(input); - - switch (name) - { - case "openfl_Texture": - __texture = input; - case "bitmap": - __bitmap = input; - default: - } - - Reflect.setField(__data, name, input); - try{Reflect.setField(this, name, input);} catch(e) {} - } - else if (!Reflect.hasField(__data, name) || Reflect.field(__data, name) == null) - { - var parameterType:ShaderParameterType = switch (type) - { - case "bool": BOOL; - case "double", "float": FLOAT; - case "int", "uint": INT; - case "bvec2": BOOL2; - case "bvec3": BOOL3; - case "bvec4": BOOL4; - case "ivec2", "uvec2": INT2; - case "ivec3", "uvec3": INT3; - case "ivec4", "uvec4": INT4; - case "vec2", "dvec2": FLOAT2; - case "vec3", "dvec3": FLOAT3; - case "vec4", "dvec4": FLOAT4; - case "mat2", "mat2x2": MATRIX2X2; - case "mat2x3": MATRIX2X3; - case "mat2x4": MATRIX2X4; - case "mat3x2": MATRIX3X2; - case "mat3", "mat3x3": MATRIX3X3; - case "mat3x4": MATRIX3X4; - case "mat4x2": MATRIX4X2; - case "mat4x3": MATRIX4X3; - case "mat4", "mat4x4": MATRIX4X4; - default: null; - } - - var length = switch (parameterType) - { - case BOOL2, INT2, FLOAT2: 2; - case BOOL3, INT3, FLOAT3: 3; - case BOOL4, INT4, FLOAT4, MATRIX2X2: 4; - case MATRIX3X3: 9; - case MATRIX4X4: 16; - default: 1; - } - - var arrayLength = switch (parameterType) - { - case MATRIX2X2: 2; - case MATRIX3X3: 3; - case MATRIX4X4: 4; - default: 1; - } - - switch (parameterType) - { - case BOOL, BOOL2, BOOL3, BOOL4: - var parameter = new ShaderParameter(); - parameter.name = name; - @:privateAccess - parameter.type = parameterType; - @:privateAccess - parameter.__arrayLength = arrayLength; - @:privateAccess - parameter.__isBool = true; - @:privateAccess - parameter.__isUniform = isUniform; - @:privateAccess - parameter.__length = length; - __paramBool.push(parameter); - - if (name == "openfl_HasColorTransform") - { - __hasColorTransform = parameter; - } - - Reflect.setField(__data, name, parameter); - try{Reflect.setField(this, name, parameter);} catch(e) {} - - case INT, INT2, INT3, INT4: - var parameter = new ShaderParameter(); - parameter.name = name; - @:privateAccess - parameter.type = parameterType; - @:privateAccess - parameter.__arrayLength = arrayLength; - @:privateAccess - parameter.__isInt = true; - @:privateAccess - parameter.__isUniform = isUniform; - @:privateAccess - parameter.__length = length; - @:privateAccess - __paramInt.push(parameter); - Reflect.setField(__data, name, parameter); - try{Reflect.setField(this, name, parameter);} catch(e) {} - - default: - var parameter = new ShaderParameter(); - parameter.name = name; - @:privateAccess - parameter.type = parameterType; - @:privateAccess - parameter.__arrayLength = arrayLength; - #if lime - @:privateAccess - if (arrayLength > 0) parameter.__uniformMatrix = new Float32Array(arrayLength * arrayLength); - #end - @:privateAccess - parameter.__isFloat = true; - @:privateAccess - parameter.__isUniform = isUniform; - @:privateAccess - parameter.__length = length; - __paramFloat.push(parameter); - - if (StringTools.startsWith(name, "openfl_")) - { - switch (name) - { - case "openfl_Alpha": __alpha = parameter; - case "openfl_ColorMultiplier": __colorMultiplier = parameter; - case "openfl_ColorOffset": __colorOffset = parameter; - case "openfl_Matrix": __matrix = parameter; - case "openfl_Position": __position = parameter; - case "openfl_TextureCoord": __textureCoord = parameter; - case "openfl_TextureSize": __textureSize = parameter; - default: - } - } - - Reflect.setField(__data, name, parameter); - try{Reflect.setField(this, name, parameter);} catch(e) {} - } - } - - position = regex.matchedPos(); - lastMatch = position.pos + position.len; - } - } + { + var lastMatch = 0, position, regex, name, type; - + if (storageType == "uniform") + { + regex = ~/uniform ([A-Za-z0-9]+) ([A-Za-z0-9_]+)/; + } + else + { + regex = ~/attribute ([A-Za-z0-9]+) ([A-Za-z0-9_]+)/; + } - public function hget(v:String):Dynamic { - if (__instanceFields.contains(v) || __instanceFields.contains('get_${v}')) { - return Reflect.getProperty(this, v); - } - if (!Reflect.hasField(data, v)) return null; - var field = Reflect.field(data, v); - var cl = Std.string(Type.getClass(field)); + while (regex.matchSub(source, lastMatch)) + { + type = regex.matched(1); + name = regex.matched(2); - // cant do "field is ShaderInput" for some reason - if (cl.startsWith("openfl.display.ShaderParameter")) { - var sp = cast(field, ShaderParameter); - @:privateAccess - return (sp.__length > 1) ? sp.value : sp.value[0]; - } else if (cl.startsWith("openfl.display.ShaderInput")) { - var si = cast(field, ShaderInput); - return si.input; - } - return field; - } + if (StringTools.startsWith(name, "gl_")) + { + continue; + } - public function hset(v:String, val:Dynamic):Dynamic { - if (__instanceFields.contains(v) || __instanceFields.contains('set_${v}')) { - Reflect.setProperty(this, v, val); - return val; - } + var isUniform = (storageType == "uniform"); - if (!Reflect.hasField(data, v)) { - Reflect.setField(data, v, val); - return val; - } else { - var field = Reflect.field(data, v); - var cl = Std.string(Type.getClass(field)); + if (StringTools.startsWith(type, "sampler")) + { + var input = new ShaderInput(); + input.name = name; + @:privateAccess + input.__isUniform = isUniform; + __inputBitmapData.push(input); - // cant do "field is ShaderInput" for some reason - if (cl.startsWith("openfl.display.ShaderParameter")) { - @:privateAccess - if (field.__length <= 1) { - // that means we wait for a single number, instead of an array - @:privateAccess - if (field.__isInt && !(val is Int)) { - throw new ShaderTypeException(v, Type.getClass(val), 'Int'); - return null; - } else - @:privateAccess - if (field.__isBool && !(val is Bool)) { - throw new ShaderTypeException(v, Type.getClass(val), 'Bool'); - return null; - } else - @:privateAccess - if (field.__isFloat && !(val is Float)) { - throw new ShaderTypeException(v, Type.getClass(val), 'Float'); - return null; - } - return field.value = [val]; - } else { - if (!(val is Array)) { - throw new ShaderTypeException(v, Type.getClass(val), Array); - return null; - } - return field.value = val; - } - } else if (cl.startsWith("openfl.display.ShaderInput")) { - // shader input!! - if (!(val is BitmapData)) { - throw new ShaderTypeException(v, Type.getClass(val), BitmapData); - return null; - } - field.input = cast val; - } - } + switch (name) + { + case "openfl_Texture": + __texture = input; + case "bitmap": + __bitmap = input; + default: + } - return val; - } + Reflect.setField(__data, name, input); + try{Reflect.setField(this, name, input);} catch(e) {} + } + else if (!Reflect.hasField(__data, name) || Reflect.field(__data, name) == null) + { + var parameterType:ShaderParameterType = switch (type) + { + case "bool": BOOL; + case "double", "float": FLOAT; + case "int", "uint": INT; + case "bvec2": BOOL2; + case "bvec3": BOOL3; + case "bvec4": BOOL4; + case "ivec2", "uvec2": INT2; + case "ivec3", "uvec3": INT3; + case "ivec4", "uvec4": INT4; + case "vec2", "dvec2": FLOAT2; + case "vec3", "dvec3": FLOAT3; + case "vec4", "dvec4": FLOAT4; + case "mat2", "mat2x2": MATRIX2X2; + case "mat2x3": MATRIX2X3; + case "mat2x4": MATRIX2X4; + case "mat3x2": MATRIX3X2; + case "mat3", "mat3x3": MATRIX3X3; + case "mat3x4": MATRIX3X4; + case "mat4x2": MATRIX4X2; + case "mat4x3": MATRIX4X3; + case "mat4", "mat4x4": MATRIX4X4; + default: null; + } + + var length = switch (parameterType) + { + case BOOL2, INT2, FLOAT2: 2; + case BOOL3, INT3, FLOAT3: 3; + case BOOL4, INT4, FLOAT4, MATRIX2X2: 4; + case MATRIX3X3: 9; + case MATRIX4X4: 16; + default: 1; + } + + var arrayLength = switch (parameterType) + { + case MATRIX2X2: 2; + case MATRIX3X3: 3; + case MATRIX4X4: 4; + default: 1; + } + + switch (parameterType) + { + case BOOL, BOOL2, BOOL3, BOOL4: + var parameter = new ShaderParameter(); + parameter.name = name; + @:privateAccess + parameter.type = parameterType; + @:privateAccess + parameter.__arrayLength = arrayLength; + @:privateAccess + parameter.__isBool = true; + @:privateAccess + parameter.__isUniform = isUniform; + @:privateAccess + parameter.__length = length; + __paramBool.push(parameter); + + if (name == "openfl_HasColorTransform") + { + __hasColorTransform = parameter; + } + + Reflect.setField(__data, name, parameter); + try{Reflect.setField(this, name, parameter);} catch(e) {} + + case INT, INT2, INT3, INT4: + var parameter = new ShaderParameter(); + parameter.name = name; + @:privateAccess + parameter.type = parameterType; + @:privateAccess + parameter.__arrayLength = arrayLength; + @:privateAccess + parameter.__isInt = true; + @:privateAccess + parameter.__isUniform = isUniform; + @:privateAccess + parameter.__length = length; + @:privateAccess + __paramInt.push(parameter); + Reflect.setField(__data, name, parameter); + try{Reflect.setField(this, name, parameter);} catch(e) {} + + default: + var parameter = new ShaderParameter(); + parameter.name = name; + @:privateAccess + parameter.type = parameterType; + @:privateAccess + parameter.__arrayLength = arrayLength; + #if lime + @:privateAccess + if (arrayLength > 0) parameter.__uniformMatrix = new Float32Array(arrayLength * arrayLength); + #end + @:privateAccess + parameter.__isFloat = true; + @:privateAccess + parameter.__isUniform = isUniform; + @:privateAccess + parameter.__length = length; + __paramFloat.push(parameter); + + if (StringTools.startsWith(name, "openfl_")) + { + switch (name) + { + case "openfl_Alpha": __alpha = parameter; + case "openfl_ColorMultiplier": __colorMultiplier = parameter; + case "openfl_ColorOffset": __colorOffset = parameter; + case "openfl_Matrix": __matrix = parameter; + case "openfl_Position": __position = parameter; + case "openfl_TextureCoord": __textureCoord = parameter; + case "openfl_TextureSize": __textureSize = parameter; + default: + } + } + + Reflect.setField(__data, name, parameter); + try{Reflect.setField(this, name, parameter);} catch(e) {} + } + } + + position = regex.matchedPos(); + lastMatch = position.pos + position.len; + } + } + + public function hget(v:String):Dynamic { + if (__instanceFields.contains(v) || __instanceFields.contains('get_${v}')) { + return Reflect.getProperty(this, v); + } + if (!Reflect.hasField(data, v)) return null; + var field = Reflect.field(data, v); + var cl = Std.string(Type.getClass(field)); + + // cant do "field is ShaderInput" for some reason + if (cl.startsWith("openfl.display.ShaderParameter")) { + var sp = cast(field, ShaderParameter); + @:privateAccess + return (sp.__length > 1) ? sp.value : sp.value[0]; + } else if (cl.startsWith("openfl.display.ShaderInput")) { + var si = cast(field, ShaderInput); + return si.input; + } + return field; + } + + public function hset(v:String, val:Dynamic):Dynamic { + if (__instanceFields.contains(v) || __instanceFields.contains('set_${v}')) { + Reflect.setProperty(this, v, val); + return val; + } + + if (!Reflect.hasField(data, v)) { + Reflect.setField(data, v, val); + return val; + } else { + var field = Reflect.field(data, v); + var cl = Std.string(Type.getClass(field)); + + // cant do "field is ShaderInput" for some reason + if (cl.startsWith("openfl.display.ShaderParameter")) { + @:privateAccess + if (field.__length <= 1) { + // that means we wait for a single number, instead of an array + @:privateAccess + if (field.__isInt && !(val is Int)) { + throw new ShaderTypeException(v, Type.getClass(val), 'Int'); + return null; + } else + @:privateAccess + if (field.__isBool && !(val is Bool)) { + throw new ShaderTypeException(v, Type.getClass(val), 'Bool'); + return null; + } else + @:privateAccess + if (field.__isFloat && !(val is Float)) { + throw new ShaderTypeException(v, Type.getClass(val), 'Float'); + return null; + } + return field.value = [val]; + } else { + if (!(val is Array)) { + throw new ShaderTypeException(v, Type.getClass(val), Array); + return null; + } + return field.value = val; + } + } else if (cl.startsWith("openfl.display.ShaderInput")) { + // shader input!! + if (!(val is BitmapData)) { + throw new ShaderTypeException(v, Type.getClass(val), BitmapData); + return null; + } + field.input = cast val; + } + } + + return val; + } } class ShaderTemplates { - public static final fragHeader:String = "varying float openfl_Alphav; - varying vec4 openfl_ColorMultiplierv; - varying vec4 openfl_ColorOffsetv; - varying vec2 openfl_TextureCoordv; + public static final fragHeader:String = "varying float openfl_Alphav; +varying vec4 openfl_ColorMultiplierv; +varying vec4 openfl_ColorOffsetv; +varying vec2 openfl_TextureCoordv; - uniform bool openfl_HasColorTransform; - uniform vec2 openfl_TextureSize; - uniform sampler2D bitmap; +uniform bool openfl_HasColorTransform; +uniform vec2 openfl_TextureSize; +uniform sampler2D bitmap; - uniform bool hasTransform; - uniform bool hasColorTransform; +uniform bool hasTransform; +uniform bool hasColorTransform; - vec4 flixel_texture2D(sampler2D bitmap, vec2 coord) - { - vec4 color = texture2D(bitmap, coord); - if (!hasTransform) - { - return color; - } +vec4 flixel_texture2D(sampler2D bitmap, vec2 coord) +{ + vec4 color = texture2D(bitmap, coord); + if (!hasTransform) + { + return color; + } - if (color.a == 0.0) - { - return vec4(0.0, 0.0, 0.0, 0.0); - } + if (color.a == 0.0) + { + return vec4(0.0, 0.0, 0.0, 0.0); + } - if (!hasColorTransform) - { - return color * openfl_Alphav; - } + if (!hasColorTransform) + { + return color * openfl_Alphav; + } - color = vec4(color.rgb / color.a, color.a); + color = vec4(color.rgb / color.a, color.a); - mat4 colorMultiplier = mat4(0); - colorMultiplier[0][0] = openfl_ColorMultiplierv.x; - colorMultiplier[1][1] = openfl_ColorMultiplierv.y; - colorMultiplier[2][2] = openfl_ColorMultiplierv.z; - colorMultiplier[3][3] = openfl_ColorMultiplierv.w; + mat4 colorMultiplier = mat4(0); + colorMultiplier[0][0] = openfl_ColorMultiplierv.x; + colorMultiplier[1][1] = openfl_ColorMultiplierv.y; + colorMultiplier[2][2] = openfl_ColorMultiplierv.z; + colorMultiplier[3][3] = openfl_ColorMultiplierv.w; - color = clamp(openfl_ColorOffsetv + (color * colorMultiplier), 0.0, 1.0); + color = clamp(openfl_ColorOffsetv + (color * colorMultiplier), 0.0, 1.0); - if (color.a > 0.0) - { - return vec4(color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav); - } - return vec4(0.0, 0.0, 0.0, 0.0); - } + if (color.a > 0.0) + { + return vec4(color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav); + } + return vec4(0.0, 0.0, 0.0, 0.0); +} - uniform vec4 _camSize; - - float map(float value, float min1, float max1, float min2, float max2) { - return min2 + (value - min1) * (max2 - min2) / (max1 - min1); - } - - vec2 getCamPos(vec2 pos) { - vec4 size = _camSize / vec4(openfl_TextureSize, openfl_TextureSize); - return vec2(map(pos.x, size.x, size.x + size.z, 0.0, 1.0), map(pos.y, size.y, size.y + size.w, 0.0, 1.0)); - } - vec2 camToOg(vec2 pos) { - vec4 size = _camSize / vec4(openfl_TextureSize, openfl_TextureSize); - return vec2(map(pos.x, 0.0, 1.0, size.x, size.x + size.z), map(pos.y, 0.0, 1.0, size.y, size.y + size.w)); - } - vec4 textureCam(sampler2D bitmap, vec2 pos) { - return flixel_texture2D(bitmap, camToOg(pos)); - }"; +uniform vec4 _camSize; - public static final fragBody:String = "vec4 color = texture2D (bitmap, openfl_TextureCoordv); +float map(float value, float min1, float max1, float min2, float max2) { + return min2 + (value - min1) * (max2 - min2) / (max1 - min1); +} - if (color.a == 0.0) { +vec2 getCamPos(vec2 pos) { + vec4 size = _camSize / vec4(openfl_TextureSize, openfl_TextureSize); + return vec2(map(pos.x, size.x, size.x + size.z, 0.0, 1.0), map(pos.y, size.y, size.y + size.w, 0.0, 1.0)); +} +vec2 camToOg(vec2 pos) { + vec4 size = _camSize / vec4(openfl_TextureSize, openfl_TextureSize); + return vec2(map(pos.x, 0.0, 1.0, size.x, size.x + size.z), map(pos.y, 0.0, 1.0, size.y, size.y + size.w)); +} +vec4 textureCam(sampler2D bitmap, vec2 pos) { + return flixel_texture2D(bitmap, camToOg(pos)); +}"; - gl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0); + public static final fragBody:String = "vec4 color = texture2D (bitmap, openfl_TextureCoordv); - } else if (openfl_HasColorTransform) { +if (color.a == 0.0) { - color = vec4 (color.rgb / color.a, color.a); + gl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0); - mat4 colorMultiplier = mat4 (0); - colorMultiplier[0][0] = openfl_ColorMultiplierv.x; - colorMultiplier[1][1] = openfl_ColorMultiplierv.y; - colorMultiplier[2][2] = openfl_ColorMultiplierv.z; - colorMultiplier[3][3] = 1.0; // openfl_ColorMultiplierv.w; +} else if (openfl_HasColorTransform) { - color = clamp (openfl_ColorOffsetv + (color * colorMultiplier), 0.0, 1.0); + color = vec4 (color.rgb / color.a, color.a); - if (color.a > 0.0) { + mat4 colorMultiplier = mat4 (0); + colorMultiplier[0][0] = openfl_ColorMultiplierv.x; + colorMultiplier[1][1] = openfl_ColorMultiplierv.y; + colorMultiplier[2][2] = openfl_ColorMultiplierv.z; + colorMultiplier[3][3] = 1.0; // openfl_ColorMultiplierv.w; - gl_FragColor = vec4 (color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav); + color = clamp (openfl_ColorOffsetv + (color * colorMultiplier), 0.0, 1.0); - } else { + if (color.a > 0.0) { - gl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0); + gl_FragColor = vec4 (color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav); - } + } else { - } else { + gl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0); - gl_FragColor = color * openfl_Alphav; + } - }"; - public static final vertHeader:String = "attribute float openfl_Alpha; - attribute vec4 openfl_ColorMultiplier; - attribute vec4 openfl_ColorOffset; - attribute vec4 openfl_Position; - attribute vec2 openfl_TextureCoord; +} else { - varying float openfl_Alphav; - varying vec4 openfl_ColorMultiplierv; - varying vec4 openfl_ColorOffsetv; - varying vec2 openfl_TextureCoordv; + gl_FragColor = color * openfl_Alphav; - uniform mat4 openfl_Matrix; - uniform bool openfl_HasColorTransform; - uniform vec2 openfl_TextureSize;"; +}"; + public static final vertHeader:String = "attribute float openfl_Alpha; +attribute vec4 openfl_ColorMultiplier; +attribute vec4 openfl_ColorOffset; +attribute vec4 openfl_Position; +attribute vec2 openfl_TextureCoord; - public static final vertBody:String = "openfl_Alphav = openfl_Alpha; - openfl_TextureCoordv = openfl_TextureCoord; +varying float openfl_Alphav; +varying vec4 openfl_ColorMultiplierv; +varying vec4 openfl_ColorOffsetv; +varying vec2 openfl_TextureCoordv; - if (openfl_HasColorTransform) { +uniform mat4 openfl_Matrix; +uniform bool openfl_HasColorTransform; +uniform vec2 openfl_TextureSize;"; - openfl_ColorMultiplierv = openfl_ColorMultiplier; - openfl_ColorOffsetv = openfl_ColorOffset / 255.0; + public static final vertBody:String = "openfl_Alphav = openfl_Alpha; +openfl_TextureCoordv = openfl_TextureCoord; - } +if (openfl_HasColorTransform) { - gl_Position = openfl_Matrix * openfl_Position;"; + openfl_ColorMultiplierv = openfl_ColorMultiplier; + openfl_ColorOffsetv = openfl_ColorOffset / 255.0; + +} + +gl_Position = openfl_Matrix * openfl_Position;"; - public static final defaultVertexSource:String = "#pragma header - - attribute float alpha; - attribute vec4 colorMultiplier; - attribute vec4 colorOffset; - uniform bool hasColorTransform; - - void main(void) - { - #pragma body - - openfl_Alphav = openfl_Alpha * alpha; - - if (hasColorTransform) - { - openfl_ColorOffsetv = colorOffset / 255.0; - openfl_ColorMultiplierv = colorMultiplier; - } - }"; + public static final defaultVertexSource:String = "#pragma header + +attribute float alpha; +attribute vec4 colorMultiplier; +attribute vec4 colorOffset; +uniform bool hasColorTransform; + +void main(void) +{ + #pragma body + + openfl_Alphav = openfl_Alpha * alpha; + + if (hasColorTransform) + { + openfl_ColorOffsetv = colorOffset / 255.0; + openfl_ColorMultiplierv = colorMultiplier; + } +}"; - // TODO: camera stuff - public static final defaultFragmentSource:String = "#pragma header - - void main(void) - { - gl_FragColor = flixel_texture2D(bitmap, openfl_TextureCoordv); - }"; + // TODO: camera stuff + public static final defaultFragmentSource:String = "#pragma header + +void main(void) +{ + gl_FragColor = flixel_texture2D(bitmap, openfl_TextureCoordv); +}"; } class ShaderTypeException extends Exception { - var has:Class; - var want:Class; - var name:String; + var has:Class; + var want:Class; + var name:String; - public function new(name:String, has:Class, want:Dynamic) { - this.has = has; - this.want = want; - this.name = name; - super('ShaderTypeException - Tried to set the shader uniform "${name}" as a ${Type.getClassName(has)}, but the shader uniform is a ${Std.string(want)}.'); - } + public function new(name:String, has:Class, want:Dynamic) { + this.has = has; + this.want = want; + this.name = name; + super('ShaderTypeException - Tried to set the shader uniform "${name}" as a ${Type.getClassName(has)}, but the shader uniform is a ${Std.string(want)}.'); + } } \ No newline at end of file diff --git a/source/funkin/shaders/OverlayShader.hx b/source/funkin/shaders/OverlayShader.hx index caaaaa8c..08eb410f 100644 --- a/source/funkin/shaders/OverlayShader.hx +++ b/source/funkin/shaders/OverlayShader.hx @@ -5,27 +5,27 @@ import flixel.system.FlxAssets.FlxShader; class OverlayShader extends FlxShader { @:glFragmentSource(' - #pragma header - uniform vec4 uBlendColor; +#pragma header +uniform vec4 uBlendColor; - vec3 blendLighten(base:Vec3, blend:Vec3) : Vec3 { - return mix( - 1.0 - 2.0 * (1.0 - base) * (1.0 - blend), - 2.0 * base * blend, - step( base, vec3(0.5) ) - ); - } +vec3 blendLighten(base:Vec3, blend:Vec3) : Vec3 { + return mix( + 1.0 - 2.0 * (1.0 - base) * (1.0 - blend), + 2.0 * base * blend, + step( base, vec3(0.5) ) + ); +} - vec4 blendLighten(vec4 base, vec4 blend, float opacity) - { - return (blendLighten(base, blend) * opacity + base * (1.0 - opacity)); - } +vec4 blendLighten(vec4 base, vec4 blend, float opacity) +{ + return (blendLighten(base, blend) * opacity + base * (1.0 - opacity)); +} - void main() - { - vec4 base = texture2D(bitmap, openfl_TextureCoordv); - gl_FragColor = blendLighten(base, uBlendColor, uBlendColor.a); - }') +void main() +{ + vec4 base = texture2D(bitmap, openfl_TextureCoordv); + gl_FragColor = blendLighten(base, uBlendColor, uBlendColor.a); +}') public function new() { super(); diff --git a/source/funkin/shaders/WiggleEffect.hx b/source/funkin/shaders/WiggleEffect.hx index 291c8a85..bb9bdd84 100644 --- a/source/funkin/shaders/WiggleEffect.hx +++ b/source/funkin/shaders/WiggleEffect.hx @@ -62,70 +62,70 @@ class WiggleEffect class WiggleShader extends FlxShader { @:glFragmentSource(' - #pragma header - //uniform float tx, ty; // x,y waves phase - uniform float uTime; - - const int EFFECT_TYPE_DREAMY = 0; - const int EFFECT_TYPE_WAVY = 1; - const int EFFECT_TYPE_HEAT_WAVE_HORIZONTAL = 2; - const int EFFECT_TYPE_HEAT_WAVE_VERTICAL = 3; - const int EFFECT_TYPE_FLAG = 4; - - uniform int effectType; - - /** - * How fast the waves move over time - */ - uniform float uSpeed; - - /** - * Number of waves over time - */ - uniform float uFrequency; - - /** - * How much the pixels are going to stretch over the waves - */ - uniform float uWaveAmplitude; +#pragma header +//uniform float tx, ty; // x,y waves phase +uniform float uTime; - vec2 sineWave(vec2 pt) - { - float x = 0.0; - float y = 0.0; - - if (effectType == EFFECT_TYPE_DREAMY) - { - float offsetX = sin(pt.y * uFrequency + uTime * uSpeed) * uWaveAmplitude; - pt.x += offsetX; // * (pt.y - 1.0); // <- Uncomment to stop bottom part of the screen from moving - } - else if (effectType == EFFECT_TYPE_WAVY) - { - float offsetY = sin(pt.x * uFrequency + uTime * uSpeed) * uWaveAmplitude; - pt.y += offsetY; // * (pt.y - 1.0); // <- Uncomment to stop bottom part of the screen from moving - } - else if (effectType == EFFECT_TYPE_HEAT_WAVE_HORIZONTAL) - { - x = sin(pt.x * uFrequency + uTime * uSpeed) * uWaveAmplitude; - } - else if (effectType == EFFECT_TYPE_HEAT_WAVE_VERTICAL) - { - y = sin(pt.y * uFrequency + uTime * uSpeed) * uWaveAmplitude; - } - else if (effectType == EFFECT_TYPE_FLAG) - { - y = sin(pt.y * uFrequency + 10.0 * pt.x + uTime * uSpeed) * uWaveAmplitude; - x = sin(pt.x * uFrequency + 5.0 * pt.y + uTime * uSpeed) * uWaveAmplitude; - } - - return vec2(pt.x + x, pt.y + y); - } +const int EFFECT_TYPE_DREAMY = 0; +const int EFFECT_TYPE_WAVY = 1; +const int EFFECT_TYPE_HEAT_WAVE_HORIZONTAL = 2; +const int EFFECT_TYPE_HEAT_WAVE_VERTICAL = 3; +const int EFFECT_TYPE_FLAG = 4; - void main() - { - vec2 uv = sineWave(openfl_TextureCoordv); - gl_FragColor = texture2D(bitmap, uv); - }') +uniform int effectType; + +/** + * How fast the waves move over time + */ +uniform float uSpeed; + +/** + * Number of waves over time + */ +uniform float uFrequency; + +/** + * How much the pixels are going to stretch over the waves + */ +uniform float uWaveAmplitude; + +vec2 sineWave(vec2 pt) +{ + float x = 0.0; + float y = 0.0; + + if (effectType == EFFECT_TYPE_DREAMY) + { + float offsetX = sin(pt.y * uFrequency + uTime * uSpeed) * uWaveAmplitude; + pt.x += offsetX; // * (pt.y - 1.0); // <- Uncomment to stop bottom part of the screen from moving + } + else if (effectType == EFFECT_TYPE_WAVY) + { + float offsetY = sin(pt.x * uFrequency + uTime * uSpeed) * uWaveAmplitude; + pt.y += offsetY; // * (pt.y - 1.0); // <- Uncomment to stop bottom part of the screen from moving + } + else if (effectType == EFFECT_TYPE_HEAT_WAVE_HORIZONTAL) + { + x = sin(pt.x * uFrequency + uTime * uSpeed) * uWaveAmplitude; + } + else if (effectType == EFFECT_TYPE_HEAT_WAVE_VERTICAL) + { + y = sin(pt.y * uFrequency + uTime * uSpeed) * uWaveAmplitude; + } + else if (effectType == EFFECT_TYPE_FLAG) + { + y = sin(pt.y * uFrequency + 10.0 * pt.x + uTime * uSpeed) * uWaveAmplitude; + x = sin(pt.x * uFrequency + 5.0 * pt.y + uTime * uSpeed) * uWaveAmplitude; + } + + return vec2(pt.x + x, pt.y + y); +} + +void main() +{ + vec2 uv = sineWave(openfl_TextureCoordv); + gl_FragColor = texture2D(bitmap, uv); +}') public function new() { super(); diff --git a/source/funkin/system/Main.hx b/source/funkin/system/Main.hx index c311a7b1..567ce503 100644 --- a/source/funkin/system/Main.hx +++ b/source/funkin/system/Main.hx @@ -107,6 +107,8 @@ class Main extends Sprite // addChild(new FramerateField(10, 3, 0xFFFFFF)); addChild(new funkin.system.framerate.Framerate()); #end + + trace("Hello", "World"); } @:dox(hide) diff --git a/source/funkin/ui/Alphabet.hx b/source/funkin/ui/Alphabet.hx index 97f3a48c..a0cd3695 100644 --- a/source/funkin/ui/Alphabet.hx +++ b/source/funkin/ui/Alphabet.hx @@ -142,7 +142,7 @@ class Alphabet extends FlxSpriteGroup letter.createLetter(character); // anim not found - if (!letter.visible) + if (!letter.visible) xPos += 40; letter.setColor(color, isBold); @@ -190,7 +190,7 @@ class Alphabet extends FlxSpriteGroup override function update(elapsed:Float) { super.update(elapsed); - + if (isMenuItem) { var scaledY = FlxMath.remapToRange(targetY, 0, 1, 0, 1.3); diff --git a/source/funkin/ui/FunkinText.hx b/source/funkin/ui/FunkinText.hx index 72b7ea22..b7b35937 100644 --- a/source/funkin/ui/FunkinText.hx +++ b/source/funkin/ui/FunkinText.hx @@ -4,13 +4,13 @@ import flixel.util.FlxColor; import flixel.text.FlxText; class FunkinText extends FlxText { - public function new(X:Float = 0, Y:Float = 0, FieldWidth:Float = 0, ?Text:String, Size:Int = 16, Border:Bool = true) { - super(X, Y, FieldWidth, Text, Size); - setFormat(Paths.font("vcr.ttf"), Size, FlxColor.WHITE); - if (Border) { - borderStyle = OUTLINE; - borderSize = 1; - borderColor = 0xFF000000; - } - } + public function new(X:Float = 0, Y:Float = 0, FieldWidth:Float = 0, ?Text:String, Size:Int = 16, Border:Bool = true) { + super(X, Y, FieldWidth, Text, Size); + setFormat(Paths.font("vcr.ttf"), Size, FlxColor.WHITE); + if (Border) { + borderStyle = OUTLINE; + borderSize = 1; + borderColor = 0xFF000000; + } + } } \ No newline at end of file diff --git a/source/funkin/utils/BitmapUtil.hx b/source/funkin/utils/BitmapUtil.hx index ce22e81e..2346cbee 100644 --- a/source/funkin/utils/BitmapUtil.hx +++ b/source/funkin/utils/BitmapUtil.hx @@ -4,66 +4,66 @@ import openfl.display.BitmapData; import flixel.util.FlxColor; class BitmapUtil { - /** - * Returns the most present color in a Bitmap. - * @param bmap Bitmap - * @return FlxColor Color that is the most present. - */ - public static function getMostPresentColor(bmap:BitmapData):FlxColor { - // map containing all the colors and the number of times they've been assigned. - var colorMap:Map = []; - var color:FlxColor = 0; - var fixedColor:FlxColor = 0; + /** + * Returns the most present color in a Bitmap. + * @param bmap Bitmap + * @return FlxColor Color that is the most present. + */ + public static function getMostPresentColor(bmap:BitmapData):FlxColor { + // map containing all the colors and the number of times they've been assigned. + var colorMap:Map = []; + var color:FlxColor = 0; + var fixedColor:FlxColor = 0; - for(y in 0...bmap.height) { - for(x in 0...bmap.width) { - color = bmap.getPixel32(x, y); - fixedColor = 0xFF000000 + (color % 0x1000000); - if (colorMap[fixedColor] == null) - colorMap[fixedColor] = 0; - colorMap[fixedColor] += color.alphaFloat; - } - } + for(y in 0...bmap.height) { + for(x in 0...bmap.width) { + color = bmap.getPixel32(x, y); + fixedColor = 0xFF000000 + (color % 0x1000000); + if (colorMap[fixedColor] == null) + colorMap[fixedColor] = 0; + colorMap[fixedColor] += color.alphaFloat; + } + } - var mostPresentColor:FlxColor = 0; - var mostPresentColorCount:Float = -1; - for(c=>n in colorMap) { - if (n > mostPresentColorCount) { - mostPresentColorCount = n; - mostPresentColor = c; - } - } - return mostPresentColor; - } - /** - * Returns the most present saturated color in a Bitmap. - * @param bmap Bitmap - * @return FlxColor Color that is the most present. - */ - public static function getMostPresentSaturatedColor(bmap:BitmapData):FlxColor { - // map containing all the colors and the number of times they've been assigned. - var colorMap:Map = []; - var color:FlxColor = 0; - var fixedColor:FlxColor = 0; + var mostPresentColor:FlxColor = 0; + var mostPresentColorCount:Float = -1; + for(c=>n in colorMap) { + if (n > mostPresentColorCount) { + mostPresentColorCount = n; + mostPresentColor = c; + } + } + return mostPresentColor; + } + /** + * Returns the most present saturated color in a Bitmap. + * @param bmap Bitmap + * @return FlxColor Color that is the most present. + */ + public static function getMostPresentSaturatedColor(bmap:BitmapData):FlxColor { + // map containing all the colors and the number of times they've been assigned. + var colorMap:Map = []; + var color:FlxColor = 0; + var fixedColor:FlxColor = 0; - for(y in 0...bmap.height) { - for(x in 0...bmap.width) { - color = bmap.getPixel32(x, y); - fixedColor = 0xFF000000 + (color % 0x1000000); - if (colorMap[fixedColor] == null) - colorMap[fixedColor] = 0; - colorMap[fixedColor] += color.alphaFloat * 0.33 + (0.67 * (color.saturation * (2 * (color.lightness > 0.5 ? 0.5 - (color.lightness) : color.lightness)))); - } - } + for(y in 0...bmap.height) { + for(x in 0...bmap.width) { + color = bmap.getPixel32(x, y); + fixedColor = 0xFF000000 + (color % 0x1000000); + if (colorMap[fixedColor] == null) + colorMap[fixedColor] = 0; + colorMap[fixedColor] += color.alphaFloat * 0.33 + (0.67 * (color.saturation * (2 * (color.lightness > 0.5 ? 0.5 - (color.lightness) : color.lightness)))); + } + } - var mostPresentColor:FlxColor = 0; - var mostPresentColorCount:Float = -1; - for(c=>n in colorMap) { - if (n > mostPresentColorCount) { - mostPresentColorCount = n; - mostPresentColor = c; - } - } - return mostPresentColor; - } + var mostPresentColor:FlxColor = 0; + var mostPresentColorCount:Float = -1; + for(c=>n in colorMap) { + if (n > mostPresentColorCount) { + mostPresentColorCount = n; + mostPresentColor = c; + } + } + return mostPresentColor; + } } \ No newline at end of file diff --git a/source/funkin/utils/DiscordUtil.hx b/source/funkin/utils/DiscordUtil.hx index 8e81c272..dfcf4bfa 100644 --- a/source/funkin/utils/DiscordUtil.hx +++ b/source/funkin/utils/DiscordUtil.hx @@ -11,142 +11,142 @@ import lime.app.Application; #end class DiscordUtil { - public static var currentID:String = null; - public static var discordThread:#if DISCORD_RPC Thread #else Dynamic #end = null; - public static var ready:Bool = false; - public static var data:DiscordJson = null; + public static var currentID:String = null; + public static var discordThread:#if DISCORD_RPC Thread #else Dynamic #end = null; + public static var ready:Bool = false; + public static var data:DiscordJson = null; + + public static function init() { + #if DISCORD_RPC + reloadJsonData(); + discordThread = Thread.create(function() { + while (true) + { + while(!ready) { + Sys.sleep(1/60); + } + trace("Processing Discord RPC..."); + DiscordRpc.process(); + Sys.sleep(2); + } + }); - public static function init() { - #if DISCORD_RPC - reloadJsonData(); - discordThread = Thread.create(function() { - while (true) - { - while(!ready) { - Sys.sleep(1/60); - } - trace("Processing Discord RPC..."); - DiscordRpc.process(); - Sys.sleep(2); - } - }); - Application.current.onExit.add(function(exitCode) { shutdown(); }); - #end - } + #end + } - public static function reloadJsonData() { - #if DISCORD_RPC - data = {}; - var jsonPath = Paths.json("config/discord"); - if (Assets.exists(jsonPath)) { - try { - data = Json.parse(Assets.getText(jsonPath)); - } catch(e) { - Logs.trace('Couldn\'t load Discord RPC configuration: ${e.toString()}', ERROR); - } - } - trace(data); - data.setFieldDefault("clientID", "1027994136193810442"); - data.setFieldDefault("logoKey", "icon"); - data.setFieldDefault("logoText", Application.current.meta.get('title')); + public static function reloadJsonData() { + #if DISCORD_RPC + data = {}; + var jsonPath = Paths.json("config/discord"); + if (Assets.exists(jsonPath)) { + try { + data = Json.parse(Assets.getText(jsonPath)); + } catch(e) { + Logs.trace('Couldn\'t load Discord RPC configuration: ${e.toString()}', ERROR); + } + } + trace(data); + data.setFieldDefault("clientID", "1027994136193810442"); + data.setFieldDefault("logoKey", "icon"); + data.setFieldDefault("logoText", Application.current.meta.get('title')); - changeClientID(data.clientID); - #end - } + changeClientID(data.clientID); + #end + } - public static function changePresence(details:String, state:String, ?smallImageKey : String) { - #if DISCORD_RPC - changePresenceAdvanced({ - state: state, - details: details, - smallImageKey: smallImageKey - }); - #end - } + public static function changePresence(details:String, state:String, ?smallImageKey : String) { + #if DISCORD_RPC + changePresenceAdvanced({ + state: state, + details: details, + smallImageKey: smallImageKey + }); + #end + } - public static function changeSongPresence(details:String, state:String, audio:FlxSound, ?smallImageKey : String) { - #if DISCORD_RPC - var start:Float = 0; - var end:Float = 0; + public static function changeSongPresence(details:String, state:String, audio:FlxSound, ?smallImageKey : String) { + #if DISCORD_RPC + var start:Float = 0; + var end:Float = 0; - if (audio != null && audio.playing) { - start = Date.now().getTime(); - end = start + (audio.length - audio.time); - } + if (audio != null && audio.playing) { + start = Date.now().getTime(); + end = start + (audio.length - audio.time); + } - changePresenceAdvanced({ - state: state, - details: details, - smallImageKey: smallImageKey, - startTimestamp: Std.int(start / 1000), - endTimestamp: Std.int(end / 1000) - }); - #end - } + changePresenceAdvanced({ + state: state, + details: details, + smallImageKey: smallImageKey, + startTimestamp: Std.int(start / 1000), + endTimestamp: Std.int(end / 1000) + }); + #end + } - public static function changePresenceAdvanced(data:#if DISCORD_RPC DiscordPresenceOptions #else Dynamic #end) { - #if DISCORD_RPC - if (data == null) return; + public static function changePresenceAdvanced(data:#if DISCORD_RPC DiscordPresenceOptions #else Dynamic #end) { + #if DISCORD_RPC + if (data == null) return; - if (data.largeImageKey == null) - data.largeImageKey = DiscordUtil.data.logoKey; - if (data.largeImageText == null) - data.largeImageText = DiscordUtil.data.logoText; - - #if GLOBAL_SCRIPT - var event = funkin.scripting.GlobalScript.event("onDiscordPresenceUpdate", EventManager.get(DiscordPresenceUpdateEvent).recycle(data)); - if (event.cancelled) return; - - #end - DiscordRpc.presence(data); - #end - } - public static function changeClientID(id:String) { - #if DISCORD_RPC - if (currentID != null) { - DiscordRpc.shutdown(); - } + if (data.largeImageKey == null) + data.largeImageKey = DiscordUtil.data.logoKey; + if (data.largeImageText == null) + data.largeImageText = DiscordUtil.data.logoText; - ready = false; + #if GLOBAL_SCRIPT + var event = funkin.scripting.GlobalScript.event("onDiscordPresenceUpdate", EventManager.get(DiscordPresenceUpdateEvent).recycle(data)); + if (event.cancelled) return; - DiscordRpc.start({ + #end + DiscordRpc.presence(data); + #end + } + public static function changeClientID(id:String) { + #if DISCORD_RPC + if (currentID != null) { + DiscordRpc.shutdown(); + } + + ready = false; + + DiscordRpc.start({ clientID: id, onReady: function() { - Logs.trace('Discord RPC started'); - ready = true; - }, + Logs.trace('Discord RPC started'); + ready = true; + }, onError: onError, onDisconnected: onDisconnected }); - currentID = id; + currentID = id; - #end - } + #end + } - public static function shutdown() { - #if DISCORD_RPC - DiscordRpc.shutdown(); - #end - } + public static function shutdown() { + #if DISCORD_RPC + DiscordRpc.shutdown(); + #end + } - // HANDLERS - #if DISCORD_RPC - static function onError(_code:Int, _message:String) { - Logs.trace('Discord RPC Error: ${_message} (Code: $_code)', ERROR); - } + // HANDLERS + #if DISCORD_RPC + static function onError(_code:Int, _message:String) { + Logs.trace('Discord RPC Error: ${_message} (Code: $_code)', ERROR); + } - static function onDisconnected(_code:Int, _message:String) { - Logs.trace('Discord RPC Disconnected: ${_message} (Code: $_code)', WARNING); - } - #end + static function onDisconnected(_code:Int, _message:String) { + Logs.trace('Discord RPC Disconnected: ${_message} (Code: $_code)', WARNING); + } + #end } typedef DiscordJson = { - var ?clientID:String; - var ?logoKey:String; - var ?logoText:String; + var ?clientID:String; + var ?logoKey:String; + var ?logoText:String; } \ No newline at end of file diff --git a/source/funkin/utils/EngineUtil.hx b/source/funkin/utils/EngineUtil.hx index 536357cb..cb6d68e6 100644 --- a/source/funkin/utils/EngineUtil.hx +++ b/source/funkin/utils/EngineUtil.hx @@ -4,12 +4,12 @@ import funkin.scripting.Script; import funkin.scripting.MultiThreadedScript; class EngineUtil { - /** - * Starts a new multithreaded script. - * This script will share all the variables with the current one, which means already existing callbacks will be replaced by new ones on conflict. - * @param path - */ - public static function startMultithreadedScript(path:String) { - return new MultiThreadedScript(path, Script.curScript); - } + /** + * Starts a new multithreaded script. + * This script will share all the variables with the current one, which means already existing callbacks will be replaced by new ones on conflict. + * @param path + */ + public static function startMultithreadedScript(path:String) { + return new MultiThreadedScript(path, Script.curScript); + } } \ No newline at end of file diff --git a/source/funkin/utils/FlxInterpolateColor.hx b/source/funkin/utils/FlxInterpolateColor.hx index 2c4c8d32..370e0707 100644 --- a/source/funkin/utils/FlxInterpolateColor.hx +++ b/source/funkin/utils/FlxInterpolateColor.hx @@ -7,37 +7,37 @@ import flixel.util.FlxColor; * Gets rid of precision issues with `FlxColor.interpolate` */ class FlxInterpolateColor { - public var red:Float = 0; - public var green:Float = 0; - public var blue:Float = 0; - public var alpha:Float = 0; + public var red:Float = 0; + public var green:Float = 0; + public var blue:Float = 0; + public var alpha:Float = 0; - public var color(get, set):FlxColor; + public var color(get, set):FlxColor; - private inline function get_color() - return FlxColor.fromRGBFloat(red, green, blue, alpha); + private inline function get_color() + return FlxColor.fromRGBFloat(red, green, blue, alpha); - private inline function set_color(c:FlxColor):FlxColor { - red = c.redFloat; - green = c.greenFloat; - blue = c.blueFloat; - alpha = c.alphaFloat; - return c; - } + private inline function set_color(c:FlxColor):FlxColor { + red = c.redFloat; + green = c.greenFloat; + blue = c.blueFloat; + alpha = c.alphaFloat; + return c; + } - public inline function toString() - return '[FlxInterpolateColor - (R:${red} | G:${green} | B:${blue} | A:${alpha})]'; - public function new(color:FlxColor) { - this.color = color; - } + public inline function toString() + return '[FlxInterpolateColor - (R:${red} | G:${green} | B:${blue} | A:${alpha})]'; + public function new(color:FlxColor) { + this.color = color; + } - public function lerpTo(color:FlxColor, ratio:Float) { - red = (color.redFloat - red) * ratio + red; + public function lerpTo(color:FlxColor, ratio:Float) { + red = (color.redFloat - red) * ratio + red; green = (color.greenFloat - green) * ratio + green; blue = (color.blueFloat - blue) * ratio + blue; alpha = (color.alphaFloat - alpha) * ratio + alpha; - } + } - public inline function fpsLerpTo(color:FlxColor, ratio:Float) - lerpTo(color, ratio * 60 * FlxG.elapsed); + public inline function fpsLerpTo(color:FlxColor, ratio:Float) + lerpTo(color, ratio * 60 * FlxG.elapsed); } \ No newline at end of file diff --git a/source/funkin/utils/IniUtil.hx b/source/funkin/utils/IniUtil.hx index 48ebeb16..662156f6 100644 --- a/source/funkin/utils/IniUtil.hx +++ b/source/funkin/utils/IniUtil.hx @@ -5,36 +5,36 @@ package funkin.utils; * DOESNT SUPPORT CATEGORIES YET!! */ class IniUtil { - public static inline function parseAsset(assetPath:String, ?defaultVariables:Map) - return parseString(Assets.getText(assetPath), defaultVariables); + public static inline function parseAsset(assetPath:String, ?defaultVariables:Map) + return parseString(Assets.getText(assetPath), defaultVariables); - public static function parseString(data:String, ?defaultVariables:Map) { - var trimmed:String; - var splitContent = [for(e in data.split("\n")) if ((trimmed = e.trim()) != "") trimmed]; - - var finalMap:Map = []; - if (defaultVariables != null) - for(k=>e in defaultVariables) - finalMap[k] = e; + public static function parseString(data:String, ?defaultVariables:Map) { + var trimmed:String; + var splitContent = [for(e in data.split("\n")) if ((trimmed = e.trim()) != "") trimmed]; - for(line in splitContent) { - // comment - if (line.startsWith(";")) continue; - // categories; not supported yet - if (line.startsWith("[") && line.endsWith("]")) continue; + var finalMap:Map = []; + if (defaultVariables != null) + for(k=>e in defaultVariables) + finalMap[k] = e; - var index = line.indexOf("="); - var name = line.substr(0, index).trim(); - var value = line.substr(index+1).trim(); + for(line in splitContent) { + // comment + if (line.startsWith(";")) continue; + // categories; not supported yet + if (line.startsWith("[") && line.endsWith("]")) continue; - if (value.startsWith("\"") && value.endsWith("\"")) - value = value.substr(1, value.length - 2); + var index = line.indexOf("="); + var name = line.substr(0, index).trim(); + var value = line.substr(index+1).trim(); - if (value.length == 0 || name.length == 0) - continue; - - finalMap[name] = value; - } - return finalMap; - } + if (value.startsWith("\"") && value.endsWith("\"")) + value = value.substr(1, value.length - 2); + + if (value.length == 0 || name.length == 0) + continue; + + finalMap[name] = value; + } + return finalMap; + } } \ No newline at end of file diff --git a/source/funkin/utils/MarkdownUtil.hx b/source/funkin/utils/MarkdownUtil.hx index 1f240f96..3b50aa2b 100644 --- a/source/funkin/utils/MarkdownUtil.hx +++ b/source/funkin/utils/MarkdownUtil.hx @@ -4,84 +4,84 @@ import flixel.util.FlxColor; import flixel.text.FlxText; class MarkdownUtil { - public static function applyMarkdownText(text:FlxText, str:String) { - text.textField.htmlText = Markdown.markdownToHtml(prepareMarkdown(str)); - var changes:Array = [ - createAdvancedMarkerPair("{title}", 0xFFFFFFFF, text.size * 2, false, true, true), - createAdvancedMarkerPair("{subtitle}", 0xFFFFFFFF, text.size * 1.5, false, true, true), - createAdvancedMarkerPair("{subsubtitle}", 0xFFFFFFFF, text.size * 1.25, false, true, true), - createAdvancedMarkerPair("{ident1}", 0xFFFFFFFF, null, false, false, false, text.size * 2, true), - createAdvancedMarkerPair("{ident2}", 0xFFFFFFFF, null, false, false, false, text.size * 4, true), - createAdvancedMarkerPair("{ident3}", 0xFFFFFFFF, null, false, false, false, text.size * 6, true), - createAdvancedMarkerPair("{ident4}", 0xFFFFFFFF, null, false, false, false, text.size * 8, true), - new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFFFFF00, false, true), "{o}"), - new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFFF0000, false, true), "{r}"), - new FlxTextFormatMarkerPair(new FlxTextFormat(0xFF00FF08, false, true), "{g}"), - new FlxTextFormatMarkerPair(new FlxTextFormat(0xFF7D7D7D, false, true), "{gray}"), - new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFFFFFFF, false, true, 0xFF222222), "{italic}"), - new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFFFFFFF, false, true, 0xFF666666), "{bold}"), - new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFFFFFFF, false, true, 0xFF888888), "{bold-italic}"), - ]; + public static function applyMarkdownText(text:FlxText, str:String) { + text.textField.htmlText = Markdown.markdownToHtml(prepareMarkdown(str)); + var changes:Array = [ + createAdvancedMarkerPair("{title}", 0xFFFFFFFF, text.size * 2, false, true, true), + createAdvancedMarkerPair("{subtitle}", 0xFFFFFFFF, text.size * 1.5, false, true, true), + createAdvancedMarkerPair("{subsubtitle}", 0xFFFFFFFF, text.size * 1.25, false, true, true), + createAdvancedMarkerPair("{ident1}", 0xFFFFFFFF, null, false, false, false, text.size * 2, true), + createAdvancedMarkerPair("{ident2}", 0xFFFFFFFF, null, false, false, false, text.size * 4, true), + createAdvancedMarkerPair("{ident3}", 0xFFFFFFFF, null, false, false, false, text.size * 6, true), + createAdvancedMarkerPair("{ident4}", 0xFFFFFFFF, null, false, false, false, text.size * 8, true), + new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFFFFF00, false, true), "{o}"), + new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFFF0000, false, true), "{r}"), + new FlxTextFormatMarkerPair(new FlxTextFormat(0xFF00FF08, false, true), "{g}"), + new FlxTextFormatMarkerPair(new FlxTextFormat(0xFF7D7D7D, false, true), "{gray}"), + new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFFFFFFF, false, true, 0xFF222222), "{italic}"), + new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFFFFFFF, false, true, 0xFF666666), "{bold}"), + new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFFFFFFF, false, true, 0xFF888888), "{bold-italic}"), + ]; - text.applyMarkup( - parseWarnings(text.textField.text), - changes - ); - @:privateAccess { - // hacky fix for the text cutting when bigger text formats are used - text._regen = true; - text.regenGraphic(); - text._regen = true; - text.regenGraphic(); - } - } + text.applyMarkup( + parseWarnings(text.textField.text), + changes + ); + @:privateAccess { + // hacky fix for the text cutting when bigger text formats are used + text._regen = true; + text.regenGraphic(); + text._regen = true; + text.regenGraphic(); + } + } - public static function createAdvancedMarkerPair(marker:String, color:FlxColor, size:Null, bold:Bool = false, italic:Bool = false, ?underline:Bool = false, ?blockIndent:Int, ?bullet:Bool) { - @:privateAccess { - var format = new FlxTextFormat(color, bold, italic); - format.format.size = size == null ? null : Std.int(size); - format.format.underline = underline; - format.format.blockIndent = blockIndent; - format.format.bullet = bullet; - return new FlxTextFormatMarkerPair(format, marker); - } - } + public static function createAdvancedMarkerPair(marker:String, color:FlxColor, size:Null, bold:Bool = false, italic:Bool = false, ?underline:Bool = false, ?blockIndent:Int, ?bullet:Bool) { + @:privateAccess { + var format = new FlxTextFormat(color, bold, italic); + format.format.size = size == null ? null : Std.int(size); + format.format.underline = underline; + format.format.blockIndent = blockIndent; + format.format.bullet = bullet; + return new FlxTextFormatMarkerPair(format, marker); + } + } - public static function parseWarnings(text:String) { - text = text.replace(" ", " "); - text = parseEmote(text, "⚠", "{o}(!)", "{o}"); - text = parseEmote(text, "❌", "{r}(X)", "{r}"); - text = parseEmote(text, "✔", "{g}(+)", "{g}"); - return text; - } + public static function parseWarnings(text:String) { + text = text.replace(" ", " "); + text = parseEmote(text, "⚠", "{o}(!)", "{o}"); + text = parseEmote(text, "❌", "{r}(X)", "{r}"); + text = parseEmote(text, "✔", "{g}(+)", "{g}"); + return text; + } - public static function prepareMarkdown(text:String) { - text = "\n" + text; - text = parseEmote(text, "\n- ", "\n{ident1}  • ", "{ident1}"); - text = parseEmote(text, "\n - ", "\n{ident2}      • ", "{ident2}"); - text = parseEmote(text, "\n - ", "\n{ident3}          • ", "{ident3}"); - text = parseEmote(text, "\n - ", "\n{ident4}              • ", "{ident4}"); - text = parseEmote(text, "\n> ", "\n{gray}", "{gray}"); - text = parseEmote(text, "\n### ", "\n{subsubtitle}", "{subsubtitle}"); - text = parseEmote(text, "\n## ", "\n{subtitle}", "{subtitle}"); - text = parseEmote(text, "\n# ", "\n{title}", "{title}"); - text = parseEmote(text, "***", "{bold-italic}", "{bold-italic}", "***"); - text = parseEmote(text, "**", "{bold}", "{bold}", "**"); - text = parseEmote(text, "*", "{italic}", "{italic}", "*"); - text = parseEmote(text, "_", "{italic}", "{italic}", "*"); - text = parseEmote(text, "__", "{bold}", "{bold}", "*"); - text.substr("\n".length); - return text; - } + public static function prepareMarkdown(text:String) { + text = "\n" + text; + text = parseEmote(text, "\n- ", "\n{ident1}  • ", "{ident1}"); + text = parseEmote(text, "\n - ", "\n{ident2}      • ", "{ident2}"); + text = parseEmote(text, "\n - ", "\n{ident3}          • ", "{ident3}"); + text = parseEmote(text, "\n - ", "\n{ident4}              • ", "{ident4}"); + text = parseEmote(text, "\n> ", "\n{gray}", "{gray}"); + text = parseEmote(text, "\n### ", "\n{subsubtitle}", "{subsubtitle}"); + text = parseEmote(text, "\n## ", "\n{subtitle}", "{subtitle}"); + text = parseEmote(text, "\n# ", "\n{title}", "{title}"); + text = parseEmote(text, "***", "{bold-italic}", "{bold-italic}", "***"); + text = parseEmote(text, "**", "{bold}", "{bold}", "**"); + text = parseEmote(text, "*", "{italic}", "{italic}", "*"); + text = parseEmote(text, "_", "{italic}", "{italic}", "*"); + text = parseEmote(text, "__", "{bold}", "{bold}", "*"); + text.substr("\n".length); + return text; + } - public static function parseEmote(text:String, emote:String, beginning:String, end:String, emoteEnd:String = "\n") { - var index:Int; - while((index = text.indexOf(emote)) >= 0) { - var nextIndex = text.indexOf(emoteEnd, index + emote.length); - if (nextIndex < 0) - nextIndex = text.length; - text = text.substr(0, index) + beginning + text.substring(index + emote.length, nextIndex) + end + (emote == emoteEnd ? "" : emoteEnd) + text.substring(nextIndex + emoteEnd.length); - } - return text; - } + public static function parseEmote(text:String, emote:String, beginning:String, end:String, emoteEnd:String = "\n") { + var index:Int; + while((index = text.indexOf(emote)) >= 0) { + var nextIndex = text.indexOf(emoteEnd, index + emote.length); + if (nextIndex < 0) + nextIndex = text.length; + text = text.substr(0, index) + beginning + text.substring(index + emote.length, nextIndex) + end + (emote == emoteEnd ? "" : emoteEnd) + text.substring(nextIndex + emoteEnd.length); + } + return text; + } } \ No newline at end of file diff --git a/source/funkin/utils/MemoryUtil.hx b/source/funkin/utils/MemoryUtil.hx index 451442f1..7635512c 100644 --- a/source/funkin/utils/MemoryUtil.hx +++ b/source/funkin/utils/MemoryUtil.hx @@ -30,7 +30,7 @@ class MemoryUtil { } public static function init() {} - + public static function clearMinor() { #if (cpp || java || neko) Gc.run(false); diff --git a/source/funkin/utils/NdllUtil.hx b/source/funkin/utils/NdllUtil.hx index 9780d6d8..a23fd527 100644 --- a/source/funkin/utils/NdllUtil.hx +++ b/source/funkin/utils/NdllUtil.hx @@ -4,12 +4,12 @@ import lime.app.Application; /** * Small util that allows you to load any function from ndlls via `getFunction`. - * + * * NDLLs must be in your mod's "ndlls" folder, and must follow this name scheme: * - `name-windows.ndll` for Windows targeted ndlls * - `name-linux.ndll` for Linux targeted ndlls * - `name-mac.ndll` for Mac targeted ndlls - * + * * If: * - The platform does not support NDLLs * - The NDLL is not found @@ -17,52 +17,52 @@ import lime.app.Application; * then an empty function will be returned instead, and a message will be shown in logs. */ class NdllUtil { - #if NDLLS_SUPPORTED - #if windows public static final os:String = "windows"; #end - #if linux public static final os:String = "linux"; #end - #if macos public static final os:String = "mac"; #end - #if android public static final os:String = "android"; #end - #end + #if NDLLS_SUPPORTED + #if windows public static final os:String = "windows"; #end + #if linux public static final os:String = "linux"; #end + #if macos public static final os:String = "mac"; #end + #if android public static final os:String = "android"; #end + #end - /** - * Returns an function from a Haxe NDLL. - * - * @param ndll Name of the NDLL. - * @param name Name of the function. - * @param args Number of arguments of that function. - */ - public static function getFunction(ndll:String, name:String, args:Int) { - #if NDLLS_SUPPORTED - return getFunctionFromPath(Paths.ndll('$ndll-$os'), name, args); - #else - Logs.trace('NDLLs are not supported on this platform.', WARNING); - return function() {}; - #end - } - - /** - * Returns an function from a Haxe NDLL at specified path. - * - * @param ndll Asset path to the NDLL. - * @param name Name of the function. - * @param args Number of arguments of that function. - */ - public static function getFunctionFromPath(ndll:String, name:String, args:Int) { - #if NDLLS_SUPPORTED - if (!Assets.exists(ndll)) { - Logs.trace('Couldn\'t find ndll at ${ndll}.', WARNING); - return function() {}; + /** + * Returns an function from a Haxe NDLL. + * + * @param ndll Name of the NDLL. + * @param name Name of the function. + * @param args Number of arguments of that function. + */ + public static function getFunction(ndll:String, name:String, args:Int) { + #if NDLLS_SUPPORTED + return getFunctionFromPath(Paths.ndll('$ndll-$os'), name, args); + #else + Logs.trace('NDLLs are not supported on this platform.', WARNING); + return function() {}; + #end + } + + /** + * Returns an function from a Haxe NDLL at specified path. + * + * @param ndll Asset path to the NDLL. + * @param name Name of the function. + * @param args Number of arguments of that function. + */ + public static function getFunctionFromPath(ndll:String, name:String, args:Int) { + #if NDLLS_SUPPORTED + if (!Assets.exists(ndll)) { + Logs.trace('Couldn\'t find ndll at ${ndll}.', WARNING); + return function() {}; } var func = lime.system.CFFI.load(Assets.getPath(ndll), name, args); - - if (func == null) { + + if (func == null) { Logs.trace('Method ${name} in ndll ${ndll} with ${args} args was not found.', ERROR); - return function() {}; + return function() {}; } - return func; - #else - Logs.trace('NDLLs are not supported on this platform.', WARNING); - #end - return function() {}; - } + return func; + #else + Logs.trace('NDLLs are not supported on this platform.', WARNING); + #end + return function() {}; + } } \ No newline at end of file diff --git a/source/funkin/utils/ThreadUtil.hx b/source/funkin/utils/ThreadUtil.hx index 2ecab02a..3415f49c 100644 --- a/source/funkin/utils/ThreadUtil.hx +++ b/source/funkin/utils/ThreadUtil.hx @@ -2,31 +2,31 @@ package funkin.utils; #if ALLOW_MULTITHREADING class ThreadUtil { - /** - * Creates a new Thread with an error handler. - * @param func Function to execute - * @param autoRestart Whenever the thread should auto restart itself after crashing. - */ - public static function createSafe(func:Void->Void, autoRestart:Bool = false) { - if (autoRestart) { - return sys.thread.Thread.create(function() { - while(true) { - try { - func(); - } catch(e) { - trace(e.details()); - } - } - }); - } else { - return sys.thread.Thread.create(function() { - try { - func(); - } catch(e) { - trace(e.details()); - } - }); - } - } + /** + * Creates a new Thread with an error handler. + * @param func Function to execute + * @param autoRestart Whenever the thread should auto restart itself after crashing. + */ + public static function createSafe(func:Void->Void, autoRestart:Bool = false) { + if (autoRestart) { + return sys.thread.Thread.create(function() { + while(true) { + try { + func(); + } catch(e) { + trace(e.details()); + } + } + }); + } else { + return sys.thread.Thread.create(function() { + try { + func(); + } catch(e) { + trace(e.details()); + } + }); + } + } } #end \ No newline at end of file diff --git a/source/funkin/utils/XMLUtil.hx b/source/funkin/utils/XMLUtil.hx index b3e3fdd3..af62c1cd 100644 --- a/source/funkin/utils/XMLUtil.hx +++ b/source/funkin/utils/XMLUtil.hx @@ -13,34 +13,34 @@ using StringTools; */ class XMLUtil { - /** - * Applies a property XML node to an object. - * @param object Object to which the xml property will be applied - * @param property `property` node. - */ - public static function applyXMLProperty(object:Dynamic, property:Access):ErrorCode { - if (!property.has.name || !property.has.type || !property.has.value) { - Logs.trace('Failed to apply XML property: XML Element misses name, type, or value attributes.', WARNING); - return MISSING_PROPERTY; - } + /** + * Applies a property XML node to an object. + * @param object Object to which the xml property will be applied + * @param property `property` node. + */ + public static function applyXMLProperty(object:Dynamic, property:Access):ErrorCode { + if (!property.has.name || !property.has.type || !property.has.value) { + Logs.trace('Failed to apply XML property: XML Element misses name, type, or value attributes.', WARNING); + return MISSING_PROPERTY; + } - var value:Dynamic = switch(property.att.type.toLowerCase()) { - case "float" | "number": Std.parseFloat(property.att.value); - case "int" | "integer" | "color": Std.parseInt(property.att.value); - case "string" | "str" | "text": property.att.value; - case "bool" | "boolean": property.att.value.toLowerCase() == "true"; - default: return TYPE_INCORRECT; - } - if (value == null) return VALUE_NULL; + var value:Dynamic = switch(property.att.type.toLowerCase()) { + case "float" | "number": Std.parseFloat(property.att.value); + case "int" | "integer" | "color": Std.parseInt(property.att.value); + case "string" | "str" | "text": property.att.value; + case "bool" | "boolean": property.att.value.toLowerCase() == "true"; + default: return TYPE_INCORRECT; + } + if (value == null) return VALUE_NULL; - try { - Reflect.setProperty(object, property.att.name, value); - } catch(e) { - Logs.trace('Failed to apply XML property: $e on ${Type.getClass(object)}', WARNING); - return REFLECT_ERROR; - } - return OK; - } + try { + Reflect.setProperty(object, property.att.name, value); + } catch(e) { + Logs.trace('Failed to apply XML property: $e on ${Type.getClass(object)}', WARNING); + return REFLECT_ERROR; + } + return OK; + } /** * Creates a new sprite based on a XML node. @@ -69,11 +69,11 @@ class XMLUtil { if (node.has.scrollx) { var scroll:Null = Std.parseFloat(node.att.scrollx); if (scroll != null) spr.scrollFactor.x = scroll; - } + } if (node.has.scrolly) { var scroll:Null = Std.parseFloat(node.att.scrolly); if (scroll != null) spr.scrollFactor.y = scroll; - } + } } if (node.has.antialiasing) spr.antialiasing = node.att.antialiasing == "true"; if (node.has.scale) { @@ -83,7 +83,7 @@ class XMLUtil { if (node.has.updateHitbox && node.att.updateHitbox == "true") spr.updateHitbox(); spr.zoomFactor = Std.parseFloat(node.getAtt("zoomfactor")).getDefault(spr.zoomFactor); - + for(anim in node.nodes.anim) addXMLAnimation(spr, anim); @@ -116,7 +116,7 @@ class XMLUtil { if (i != null) animData.indices.push(i); } - } + } return animData; } @@ -164,9 +164,9 @@ class XMLUtil { // nothing } } - return OK; + return OK; } - return MISSING_PROPERTY; + return MISSING_PROPERTY; } public static inline function fixXMLText(text:String) { diff --git a/source/funkin/utils/ZipUtil.hx b/source/funkin/utils/ZipUtil.hx index 99594616..a4fa8e8e 100644 --- a/source/funkin/utils/ZipUtil.hx +++ b/source/funkin/utils/ZipUtil.hx @@ -24,81 +24,81 @@ using StringTools; // import ZipUtils; var e = ZipUtils.createZipFile("gjnsdghs.ycemod"); ZipUtils.writeFolderToZip(e, "./mods/Friday Night Funkin'/", "Friday Night Funkin'/"); e.flush(); e.close(); class ZipUtil { - public static var bannedNames:Array = [".git", ".gitignore", ".github", ".vscode", ".gitattributes", "readme.txt"]; + public static var bannedNames:Array = [".git", ".gitignore", ".github", ".vscode", ".gitattributes", "readme.txt"]; /** * [Description] Uncompresses `zip` into the `destFolder` folder - * @param zip - * @param destFolder + * @param zip + * @param destFolder */ public static function uncompressZip(zip:Reader, destFolder:String, ?prefix:String, ?prog:ZipProgress):ZipProgress { // we never know FileSystem.createDirectory(destFolder); - var fields = zip.read(); + var fields = zip.read(); - try { - if (prefix != null) { - var f = fields; - fields = new List(); - for(field in f) { - if (field.fileName.startsWith(prefix)) { - fields.push(field); - } - } - } - - if (prog == null) - prog = new ZipProgress(); - prog.fileCount = fields.length; - for(k=>field in fields) { - prog.curFile = k; - var isFolder = field.fileName.endsWith("/") && field.fileSize == 0; - if (isFolder) { - FileSystem.createDirectory('${destFolder}/${field.fileName}'); - } else { - var split = [for(e in field.fileName.split("/")) e.trim()]; - split.pop(); - FileSystem.createDirectory('${destFolder}/${split.join("/")}'); - - var data = unzip(field); - File.saveBytes('${destFolder}/${field.fileName}', data); - } - } - prog.curFile = fields.length; - prog.done = true; - } catch(e) { - prog.done = true; - prog.error = e; - } - return prog; + try { + if (prefix != null) { + var f = fields; + fields = new List(); + for(field in f) { + if (field.fileName.startsWith(prefix)) { + fields.push(field); + } + } + } + + if (prog == null) + prog = new ZipProgress(); + prog.fileCount = fields.length; + for(k=>field in fields) { + prog.curFile = k; + var isFolder = field.fileName.endsWith("/") && field.fileSize == 0; + if (isFolder) { + FileSystem.createDirectory('${destFolder}/${field.fileName}'); + } else { + var split = [for(e in field.fileName.split("/")) e.trim()]; + split.pop(); + FileSystem.createDirectory('${destFolder}/${split.join("/")}'); + + var data = unzip(field); + File.saveBytes('${destFolder}/${field.fileName}', data); + } + } + prog.curFile = fields.length; + prog.done = true; + } catch(e) { + prog.done = true; + prog.error = e; + } + return prog; } - #if (!macro && sys) - public static function uncompressZipAsync(zip:Reader, destFolder:String, ?prog:ZipProgress, ?prefix:String):ZipProgress { - if (prog == null) - prog = new ZipProgress(); - Thread.create(function() { - uncompressZip(zip, destFolder, prefix, prog); - }); - return prog; - } - #end + #if (!macro && sys) + public static function uncompressZipAsync(zip:Reader, destFolder:String, ?prog:ZipProgress, ?prefix:String):ZipProgress { + if (prog == null) + prog = new ZipProgress(); + Thread.create(function() { + uncompressZip(zip, destFolder, prefix, prog); + }); + return prog; + } + #end - /** - * [Description] Returns a `zip.Reader` instance from path. - * @param zipPath - * @return Reader - */ - public static function openZip(zipPath:String):Reader { - return new ZipReader(File.read(zipPath)); - } + /** + * [Description] Returns a `zip.Reader` instance from path. + * @param zipPath + * @return Reader + */ + public static function openZip(zipPath:String):Reader { + return new ZipReader(File.read(zipPath)); + } - /** - * [Description] Copy of haxe's Zip unzip function cause lime replaced it. - * @param f Zip entry - */ - public static function unzip(f:Entry) { + /** + * [Description] Copy of haxe's Zip unzip function cause lime replaced it. + * @param f Zip entry + */ + public static function unzip(f:Entry) { if (!f.compressed) return f.data; var c = new haxe.zip.Uncompress(-15); @@ -113,156 +113,156 @@ class ZipUtil { return f.data; } - /** - * [Description] Creates a ZIP file at the specified location and returns the Writer. - * @param path - * @return Writer - */ - public static function createZipFile(path:String):ZipWriter { - var output = File.write(path); - return new ZipWriter(output); - } + /** + * [Description] Creates a ZIP file at the specified location and returns the Writer. + * @param path + * @return Writer + */ + public static function createZipFile(path:String):ZipWriter { + var output = File.write(path); + return new ZipWriter(output); + } - /** - [Description] Writes the entirety of a folder to a zip file. - @param zip ZIP file to write to - @param path Folder path - @param prefix (Additional) allows you to set a prefix in the zip itself. - **/ - public static function writeFolderToZip(zip:ZipWriter, path:String, ?prefix:String, ?prog:ZipProgress, ?whitelist:Array):ZipProgress { - if (prefix == null) prefix = ""; - if (whitelist == null) whitelist = []; - if (prog == null) prog = new ZipProgress(); + /** + [Description] Writes the entirety of a folder to a zip file. + @param zip ZIP file to write to + @param path Folder path + @param prefix (Additional) allows you to set a prefix in the zip itself. + **/ + public static function writeFolderToZip(zip:ZipWriter, path:String, ?prefix:String, ?prog:ZipProgress, ?whitelist:Array):ZipProgress { + if (prefix == null) prefix = ""; + if (whitelist == null) whitelist = []; + if (prog == null) prog = new ZipProgress(); - try { - var curPath:Array = ['$path']; - var destPath:Array = []; - if (prefix != "") { - prefix = prefix.replace("\\", "/"); - while(prefix.charAt(0) == "/") prefix = prefix.substr(1); - while(prefix.charAt(prefix.length-1) == "/") prefix = prefix.substr(0, prefix.length-1); - destPath.push(prefix); - } - - var files:Array = []; - - var doFolder:Void->Void = null; - (doFolder = function() { - var path = curPath.join("/"); - var zipPath = destPath.join("/"); - for(e in FileSystem.readDirectory(path)) { - if (bannedNames.contains(e.toLowerCase()) && !whitelist.contains(e.toLowerCase())) continue; - if (FileSystem.isDirectory('$path/$e')) { - // is directory, so loop into that function again - for(p in [curPath, destPath]) p.push(e); - doFolder(); - for(p in [curPath, destPath]) p.pop(); - } else { - // is file, put it in the list - var zipPath = '$zipPath/$e'; - while(zipPath.charAt(0) == "/") zipPath = zipPath.substr(1); - files.push(new StrNameLabel('$path/$e', zipPath)); - } - } - })(); - - prog.fileCount = files.length; - for(k=>file in files) { - prog.curFile = k; - - var fileContent = File.getBytes(file.name); - var fileInfo = FileSystem.stat(file.name); - var entry:Entry = { - fileName: file.label, - fileSize: fileInfo.size, - fileTime: Date.now(), - dataSize: 0, - data: fileContent, - crc32: Crc32.make(fileContent), - compressed: false - }; - Tools.compress(entry, 1); - zip.writeFile(entry); - } - zip.writeCDR(); - } catch(e) { - prog.error = e; - } - prog.done = true; - return prog; - } + try { + var curPath:Array = ['$path']; + var destPath:Array = []; + if (prefix != "") { + prefix = prefix.replace("\\", "/"); + while(prefix.charAt(0) == "/") prefix = prefix.substr(1); + while(prefix.charAt(prefix.length-1) == "/") prefix = prefix.substr(0, prefix.length-1); + destPath.push(prefix); + } - public static function writeFolderToZipAsync(zip:ZipWriter, path:String, ?prefix:String):ZipProgress { - var zipProg = new ZipProgress(); - Thread.create(function() { - writeFolderToZip(zip, path, prefix, zipProg); - }); - return zipProg; - } + var files:Array = []; - /** - * [Description] Converts an `Array` to a `List`. - * @param array - * @return List - */ - public static function arrayToList(array:Array):List { - var list = new List(); - for(e in array) list.push(e); - return list; - } + var doFolder:Void->Void = null; + (doFolder = function() { + var path = curPath.join("/"); + var zipPath = destPath.join("/"); + for(e in FileSystem.readDirectory(path)) { + if (bannedNames.contains(e.toLowerCase()) && !whitelist.contains(e.toLowerCase())) continue; + if (FileSystem.isDirectory('$path/$e')) { + // is directory, so loop into that function again + for(p in [curPath, destPath]) p.push(e); + doFolder(); + for(p in [curPath, destPath]) p.pop(); + } else { + // is file, put it in the list + var zipPath = '$zipPath/$e'; + while(zipPath.charAt(0) == "/") zipPath = zipPath.substr(1); + files.push(new StrNameLabel('$path/$e', zipPath)); + } + } + })(); + + prog.fileCount = files.length; + for(k=>file in files) { + prog.curFile = k; + + var fileContent = File.getBytes(file.name); + var fileInfo = FileSystem.stat(file.name); + var entry:Entry = { + fileName: file.label, + fileSize: fileInfo.size, + fileTime: Date.now(), + dataSize: 0, + data: fileContent, + crc32: Crc32.make(fileContent), + compressed: false + }; + Tools.compress(entry, 1); + zip.writeFile(entry); + } + zip.writeCDR(); + } catch(e) { + prog.error = e; + } + prog.done = true; + return prog; + } + + public static function writeFolderToZipAsync(zip:ZipWriter, path:String, ?prefix:String):ZipProgress { + var zipProg = new ZipProgress(); + Thread.create(function() { + writeFolderToZip(zip, path, prefix, zipProg); + }); + return zipProg; + } + + /** + * [Description] Converts an `Array` to a `List`. + * @param array + * @return List + */ + public static function arrayToList(array:Array):List { + var list = new List(); + for(e in array) list.push(e); + return list; + } } class ZipProgress { - public var error:Exception = null; - - public var curFile:Int = 0; - public var fileCount:Int = 0; - public var done:Bool = false; - public var percentage(get, null):Float; + public var error:Exception = null; - private function get_percentage() { - return fileCount <= 0 ? 0 : curFile / fileCount; - } + public var curFile:Int = 0; + public var fileCount:Int = 0; + public var done:Bool = false; + public var percentage(get, null):Float; - public function new() {} + private function get_percentage() { + return fileCount <= 0 ? 0 : curFile / fileCount; + } + + public function new() {} } class ZipReader extends Reader { - public var files:List; + public var files:List; - public override function read() { - if (files != null) return files; - try { - var files = super.read(); - return this.files = files; - } catch(e) { - } - return new List(); - } + public override function read() { + if (files != null) return files; + try { + var files = super.read(); + return this.files = files; + } catch(e) { + } + return new List(); + } } class ZipWriter extends Writer { - public function flush() { - o.flush(); - } + public function flush() { + o.flush(); + } - public function writeFile(entry:Entry) { - writeEntryHeader(entry); - o.writeFullBytes(entry.data, 0, entry.data.length); - } + public function writeFile(entry:Entry) { + writeEntryHeader(entry); + o.writeFullBytes(entry.data, 0, entry.data.length); + } - public function close() { - o.close(); - } + public function close() { + o.close(); + } } class StrNameLabel { - public var name:String; - public var label:String; + public var name:String; + public var label:String; - public function new(name:String, label:String) { - this.name = name; - this.label = label; - } + public function new(name:String, label:String) { + this.name = name; + this.label = label; + } } #end \ No newline at end of file diff --git a/source/funkin/windows/WindowsAPI.hx b/source/funkin/windows/WindowsAPI.hx index 2d7f017d..fc35756b 100644 --- a/source/funkin/windows/WindowsAPI.hx +++ b/source/funkin/windows/WindowsAPI.hx @@ -7,103 +7,103 @@ package funkin.windows; * Does not have any effect on other platforms. */ class WindowsAPI { - @:dox(hide) public static function registerAudio() { - #if windows - native.WinAPI.registerAudio(); - #end - } + @:dox(hide) public static function registerAudio() { + #if windows + native.WinAPI.registerAudio(); + #end + } - @:dox(hide) public static function registerAsDPICompatible() { - #if windows - native.WinAPI.registerAsDPICompatible(); - #end - } - - /** - * Allocates a new console. The console will automatically be opened - */ - public static function allocConsole() { - #if windows - native.WinAPI.allocConsole(); - native.WinAPI.clearScreen(); - #end - } + @:dox(hide) public static function registerAsDPICompatible() { + #if windows + native.WinAPI.registerAsDPICompatible(); + #end + } - /** - * Sets the window titlebar to dark mode (Windows 10 only) - */ - public static function setDarkMode(enable:Bool) { - #if windows - native.WinAPI.setDarkMode(enable); - #end - } + /** + * Allocates a new console. The console will automatically be opened + */ + public static function allocConsole() { + #if windows + native.WinAPI.allocConsole(); + native.WinAPI.clearScreen(); + #end + } - /** - * Shows a message box - */ - public static function showMessageBox(caption:String, message:String, icon:MessageBoxIcon = MSG_WARNING) { - #if windows - native.WinAPI.showMessageBox(caption, message, icon); - #else - lime.app.Application.current.window.alert(message, caption); - #end - } + /** + * Sets the window titlebar to dark mode (Windows 10 only) + */ + public static function setDarkMode(enable:Bool) { + #if windows + native.WinAPI.setDarkMode(enable); + #end + } - /** - * Sets the console colors - */ - public static function setConsoleColors(foregroundColor:ConsoleColor = LIGHTGRAY, ?backgroundColor:ConsoleColor = BLACK) { - #if windows - var fg = cast(foregroundColor, Int); - var bg = cast(backgroundColor, Int); - native.WinAPI.setConsoleColors((bg * 16) + fg); - #end - } + /** + * Shows a message box + */ + public static function showMessageBox(caption:String, message:String, icon:MessageBoxIcon = MSG_WARNING) { + #if windows + native.WinAPI.showMessageBox(caption, message, icon); + #else + lime.app.Application.current.window.alert(message, caption); + #end + } - public static function consoleColorToOpenFL(color:ConsoleColor) { - return switch(color) { - case BLACK: 0xFF000000; - case DARKBLUE: 0xFF000088; - case DARKGREEN: 0xFF008800; - case DARKCYAN: 0xFF008888; - case DARKRED: 0xFF880000; - case DARKMAGENTA: 0xFF880000; - case DARKYELLOW: 0xFF888800; - case LIGHTGRAY: 0xFFBBBBBB; - case GRAY: 0xFF888888; - case BLUE: 0xFF0000FF; - case GREEN: 0xFF00FF00; - case CYAN: 0xFF00FFFF; - case RED: 0xFFFF0000; - case MAGENTA: 0xFFFF00FF; - case YELLOW: 0xFFFFFF00; - case WHITE | _: 0xFFFFFFFF; - } - } + /** + * Sets the console colors + */ + public static function setConsoleColors(foregroundColor:ConsoleColor = LIGHTGRAY, ?backgroundColor:ConsoleColor = BLACK) { + #if windows + var fg = cast(foregroundColor, Int); + var bg = cast(backgroundColor, Int); + native.WinAPI.setConsoleColors((bg * 16) + fg); + #end + } + + public static function consoleColorToOpenFL(color:ConsoleColor) { + return switch(color) { + case BLACK: 0xFF000000; + case DARKBLUE: 0xFF000088; + case DARKGREEN: 0xFF008800; + case DARKCYAN: 0xFF008888; + case DARKRED: 0xFF880000; + case DARKMAGENTA: 0xFF880000; + case DARKYELLOW: 0xFF888800; + case LIGHTGRAY: 0xFFBBBBBB; + case GRAY: 0xFF888888; + case BLUE: 0xFF0000FF; + case GREEN: 0xFF00FF00; + case CYAN: 0xFF00FFFF; + case RED: 0xFFFF0000; + case MAGENTA: 0xFFFF00FF; + case YELLOW: 0xFFFFFF00; + case WHITE | _: 0xFFFFFFFF; + } + } } @:enum abstract ConsoleColor(Int) { - var BLACK:ConsoleColor = 0; - var DARKBLUE:ConsoleColor = 1; - var DARKGREEN:ConsoleColor = 2; - var DARKCYAN:ConsoleColor = 3; - var DARKRED:ConsoleColor = 4; - var DARKMAGENTA:ConsoleColor = 5; - var DARKYELLOW:ConsoleColor = 6; - var LIGHTGRAY:ConsoleColor = 7; - var GRAY:ConsoleColor = 8; - var BLUE:ConsoleColor = 9; - var GREEN:ConsoleColor = 10; - var CYAN:ConsoleColor = 11; - var RED:ConsoleColor = 12; - var MAGENTA:ConsoleColor = 13; - var YELLOW:ConsoleColor = 14; - var WHITE:ConsoleColor = 15; + var BLACK:ConsoleColor = 0; + var DARKBLUE:ConsoleColor = 1; + var DARKGREEN:ConsoleColor = 2; + var DARKCYAN:ConsoleColor = 3; + var DARKRED:ConsoleColor = 4; + var DARKMAGENTA:ConsoleColor = 5; + var DARKYELLOW:ConsoleColor = 6; + var LIGHTGRAY:ConsoleColor = 7; + var GRAY:ConsoleColor = 8; + var BLUE:ConsoleColor = 9; + var GREEN:ConsoleColor = 10; + var CYAN:ConsoleColor = 11; + var RED:ConsoleColor = 12; + var MAGENTA:ConsoleColor = 13; + var YELLOW:ConsoleColor = 14; + var WHITE:ConsoleColor = 15; } @:enum abstract MessageBoxIcon(Int) { - var MSG_ERROR:MessageBoxIcon = 0x00000010; - var MSG_QUESTION:MessageBoxIcon = 0x00000020; - var MSG_WARNING:MessageBoxIcon = 0x00000030; - var MSG_INFORMATION:MessageBoxIcon = 0x00000040; + var MSG_ERROR:MessageBoxIcon = 0x00000010; + var MSG_QUESTION:MessageBoxIcon = 0x00000020; + var MSG_WARNING:MessageBoxIcon = 0x00000030; + var MSG_INFORMATION:MessageBoxIcon = 0x00000040; } \ No newline at end of file From fef21a0d2d451c1d0d7c6da38ccbadf52e5d338e Mon Sep 17 00:00:00 2001 From: InkyBox <85509162+kittstone@users.noreply.github.com> Date: Mon, 20 Mar 2023 21:34:50 -0500 Subject: [PATCH 7/8] I NEED FILEREFERENCE BACK --- source/funkin/editors/charter/Charter.hx | 1 + 1 file changed, 1 insertion(+) diff --git a/source/funkin/editors/charter/Charter.hx b/source/funkin/editors/charter/Charter.hx index 9ecd76f4..30a02c63 100644 --- a/source/funkin/editors/charter/Charter.hx +++ b/source/funkin/editors/charter/Charter.hx @@ -9,6 +9,7 @@ import flixel.util.FlxColor; import flixel.addons.display.FlxBackdrop; import funkin.editors.ui.UIContextMenu.UIContextMenuOption; import funkin.editors.ui.UIState; +import openfl.net.FileReference; class Charter extends UIState { var __song:String; From 8bf522444b553eec47dc84fca5bb330986eadb2c Mon Sep 17 00:00:00 2001 From: Yoshman29 <81191621+YoshiCrafter29@users.noreply.github.com> Date: Tue, 21 Mar 2023 14:17:19 +0100 Subject: [PATCH 8/8] selection box --- art/flashFiles/RECOVER_NOTE_assets.fla | Bin 126577 -> 0 bytes assets/images/editors/ui/selection.xml | 15 ++++ buildnumber.txt | 2 +- source/funkin/editors/charter/Charter.hx | 85 +++++++++++++++--- .../funkin/editors/charter/CharterBackdrop.hx | 1 + source/funkin/editors/charter/CharterNote.hx | 14 ++- source/funkin/editors/ui/UIContextMenu.hx | 8 +- source/funkin/editors/ui/UISliceSprite.hx | 61 +++++++------ source/funkin/options/TreeMenu.hx | 5 +- 9 files changed, 151 insertions(+), 40 deletions(-) delete mode 100644 art/flashFiles/RECOVER_NOTE_assets.fla create mode 100644 assets/images/editors/ui/selection.xml diff --git a/art/flashFiles/RECOVER_NOTE_assets.fla b/art/flashFiles/RECOVER_NOTE_assets.fla deleted file mode 100644 index 96bc1a235e0b4834bfb88571a4a8dd282118f046..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126577 zcmaI7b8v4_vn~3IZQI)MPIheDwr$%^c5FM@v2EM7Z96yLJ@4GQr|P}8suup}IjU#R zp1nqm)k{ti1QZnjfCK;>o#|EZ;EX_^006*$PK2LRMpj8!SKram*vXO3&BRJhK~_zj zR#5Se-2WK$WB7lLA0U8~xPSt`f;#>Gx7B~}rG=IFX~ktk{(sDne$4Eg4Xn%^&76#_ z?X2{jj2-_Ub6`lw|Lt*shP>A|1OT8X`(GXl$w~{^8ai7W+c?p=SzBFZYC0CMpbl?y z&R_S;9P2p&iF3M`#=C8LnAB&OH#LjG5*H8d0Cj|Sdz0CR8}HTT+l#D)W%;)?Tr z#*mW6l;qeH*S4$QQqJS6>L+%2N(F{@P1HTM&z|h=_PX(jWNyUdng`4huo7Htkm<5x z@F$wc95`^xDi?(*^xy7*v2M8i@puqSi;i}(-fi*Srnn`)tJ-IfA%8=V@^-o;x~V%9 zf`CnLYdYxt{Ef0L^{cBjgA^&+8(xJAmY9wX#?j{mM|O@dnw*0<)q`eN2A$%5B!=Rx zsG&+*q<3sI$n|_?^n*=Z`e8e8B$7Zu`#qjwnxNaU%T89)Y8+MLHWl1o-y%{P(F2>< z4^mWhO4t6*Nb@D%#&@FvT?@6;?U&BS;3iFHWagu3T=#X*Kf8U&9s;_8_t=7elwd*N zb+OhUB2a~L8!q{T+TgRF*0@4g>0gYqY1a5U-;Vj3YFaTbhAzi{UMIl()-GKL`(2T_%0soavw$v(o2J7Z)%3 z+B|sMdzR2T^q9iv>EgmqQFYb^vJcJgj;l@4dm%~Y4U(P1FUu{>;-8nFU^}{t_sYNa zpSR8Lm}HvEg>j1ypFj4v9QywbHyZbShF_72e=vMLyo(CXlvwf)sXD4QMVKWrxOBW) z40iG{n;v#}2({>wU}Ve;V-$Y?A|pU$(l-aPD}-ea^iYISp@5b|E9t!4c;7ds!45cr zVOVVJfI!xIgLRL1KR1>k5>j|lrFl|o0uj2mo}79Ni$GKYK?X>5UGGT^a+o7bRnP*#kVkJ3 zcKq7~V(7l=_wI9FNN^L7*xL*V>2ZZ{XOUnq2uRMWPNFKeN{JZ!<M!VGo>p3gsFUH*a{~>vts!_ zl#{#uM)Mg9&T_e*#%ooyW};VdYhX|#m8r{$1ph9zC`-LR)z}KlX||*r7M=3I8qqJ( zaEkTiY-=_2Iy4f$d6_eEU&BdK85cSP(nA7)ksoQwzXLGM@O*0j#(lgu$t06W9Q#AD z=wWeKtQ)SRAe|U02NE$C)`z%G*g58qsklE2g#JxYoEh$;k1eo;Swka+DB`fyh1j_e zYnh6Q0!zpsY=ml&m(AUBv1pQ~H<<5!8L#|ap|%;*rS0G$_~@oY=EKsDY5-|AScXZs z5`~nI3OT~!07IUm`*`L!;*6#Ua#(5r3}+`&+BJGM9`SWuQ+9)*h$=?d6s&+=u>^FI z?C^e3rkWF4m?W@XQxUIXR5M@l*r7j(ffq7r0goCdP3T@n7{6ve$2EFW;TE6n6T&vy zjM^U@&Zvi2UKpOGOv62{pW^|F* zFeLTY+e{GbYLmmc^k_puUxm(aI-#dB(Yo-3^r#L@?QQA33ahc8b)%)Plds}d&(kiq z^#s8c$8TYiMP9^<$VI(32>(Ng-z-nfH?E^*H`pIeedaAvj3(TdS3xr?+ZJ17?Lb7q z<*eE_T-%w+p5vjCr~veJe&~mFL`K}g3ur2@Y_ZGCbxa0jNaWV@3#+EQg5NLd6lfn` z1+zr>J0~@4s>~Za0+i(}=EQ)gKt~DfI~*B|ydFSVq@3AG33K3>qAMODJU%t~w7`*+ zzTtNYYTLmd!opmBheA?KQ?Z5l+u_|iP{1HKU0j_Ecf2BdpK@Gg*15*s)$1ORV=!hM zBR#};;pdQY|Lzz~BXrh6_MNYH5F5Vt<4*OM5FVS2NA8o|Z#Rz2DARhZZ14K|VNp1v z_4UsT)jc;Q$0toP%9w-{S5U`y(dprT8KCD`4pFuVd|i$$`|9XI&z!7F8N!%_<2ixM zkqMO@RZ)q&|DN}G|BHeAH&^&lXErhh1^~3-0RXiBn}JvxJLwzgJL&&##-O@slfi)5 zIjyL6b=flnC0;8~#zJaAzf#6B=W-q}p9?-wqba6aiQ!q;*@t^q4{G*2uYCb58NRd6 zc|3BwLWnROkqCyM<9lLQKJ3GB6nS#TzTZ4eVA^{xxD#|^wSa}* z5H_Dm4Ibf^CZ^F68@v~-=-o+20y&2MxYKw42y!#n4Q?1`Kf@F*9tC)A@3~6X&Ug^N z1|h`EA?D)Kwo)ruAYR}ATL%)w`{bSIWAD5z*5vm-?h96+5~iGXWV%i#ZWm47XM;o$ z3d`e!ZIwW!juOhY5_93gPvJ)|`h^Uowq4J8TdD=gxua)gieBQGCzO6jGs!nlsz+5P z74>98q1jAbfe#6*-_Fu748NsgiCwGOhJmg-2=NT&%e-`E}==K01-oN8uRUtG9zc_~K_YufBWZj7g+e5nd#Fi!?58n-DHf!^`QKTo7@5J<|8QEkhD5 zkD^dEn&5#$Wm=wCfI~NEh<-DQBD)~|M{~PGHC%}X>LrPF4vZ;6z=CuB{&wNY6TXQ8 zBiVU(WyP^0n{_bo^uR#w%>lM@)`QqBs_`J1cZEoqPmWV?2 z?&8VF>+em?ug8`)&zh*Q2E}CYE|;xf&U1aZnxRA}1@y#o3d&_qHX+f)W&PRhAeF$b zsT_K@yQMC+6OSyRh}JRnq3P?!@oqOqW+Drgg1^&AN^;!E+6zgT8PAu+W!nR9Ony(> z{>AQ}@3RpN#Fb*ybN{)G_>#?GUCG9C%?=N1<)HWi{%2l3Xv^PF{SfDLJOBXYCokpx zi}ETOJ2{!#nEo(tYpX$ZYg=M=x@ z@?BM^(1{y{bR$4I_%dQKV0uFsac}8`r&wA}z7;5)hBJ<1Ny~|hEeD39hEnYV5`d#; z9K(*2DIuqm@;PVHUv!!?cay@j{$eTy0qfgu+x1X+lE&$tCNp)A{1)IB5xS8u8eGns zq47m)AcY~K@j<9U-P5)^!g zCrCemz3khOvdd#;i_Q$Z5I7oXmBSWu&6AJD99TqhjAcHFP7PGkWDJ@}UfKM7xPu~t zIvQ24(>~D_4}ESXbtU)dU)^Lc1nlLM0|xC~QgFcxcpWGrfEu-@U{}&Mp!~+I9R~)% z5665XQ!L)KQu4jrdk$GR_G%0v4Dd%Tod)!e9R`6?*3amMs@TDRg^OL>x6T)_FBK|P z&r{ASE$W?SD;gv(UFzK#F=0JEzl7zp4Lr~IoiQ-HZPltXQ>JkGE&k~|@+np-(8GB? zs&ucGHq)O!#*|q?IUfsXSCTJgX`W$U#{4UXUuWoE#a_~Lme3abXZb0n-RzaCwO;gr zU3acV^eyNd4s;aT%eO(}Q5_Z}pn&-`YbVkx-H_X*`l|G*^r>{Zu#@w0zVIu(G#e*h zKP;VyOAu4P+Bz(mC_RM1qoa)|3V#~&u|w8cumN_Kd7zaDJERmR-z2Pzh)Y;$BGzu& zasd_US5SRlvMLxEp1u@vU#gm(D5hlq-_NDTO%$_y6cdODpbrD9%=rsehvIKr)W3*3 zL4i5w^%A7eE!t>>LYSkNkY}_9foSz0Hl9KQT|O#%Wlf3?DmlZpnnQX6-Rer9H2KQ? znO_GI*Uj=KTBMd=e(48&3cAgiFy&Y=MpL_Ab5#K*!qgww35OAaRn2;QOheptiOtx; zCyOFM6b{buayzs|wUBKe$}>SEL&IhXJFT%z>a>W2hsDGX29zY*L`#&3EX#|$}BsYepF^D*};mx*cwGWz0lZFdE z@bt}!R1BE>{ilk&L&R1PRhWsLz4u2-E`tI`^85aR$p4<{9YI>f5>4aGu2MD|HnLgx z%?XbwlhkJ(vM3C>-3yJ3O4+DB*{_lu#_W5yHzJNbdq$dBb;~qPO84Qsu^}6W+O}>d z$WYAbM&Yuf&~lNfw(6p#iuQL+f?r%Jj&m+M!cs<507k<=imkzZsFdm}E;9*_h*#3f zzf6NiX!1r_5AY>CN;D-=s4t3*>+Nkg+bSMk{H-VQW!cWq)5p){jP`Q+?+-^ochSP; zd=7;iZYJrZNe3u(#v$0bsPebez_z^^m8Qf=Z_O3G;+%h3c(ba+{Rv=o0*Gs;o;2mD zFjT!6CrPBBGMAMbta8VMF8m3tb>(IejrCX&YUjoQxko$Ia?UPk*YIlpGMFeZSiMoV z_2GBjcNKvshVe+zmaOPIQsJUmu-q26t@ua^`QFVS1YEnygPf!DkA;Ky~Zq@ce5uFR7JEl2^ zifr{aSS9WZ-l$4By}9g!C)piwQb+Hiee#-72fuyI>!S${JEab?+rT?PT-}>th}Ea_ zv=Q5yjX7Y}R6WyOUfR|4`-a;%$gL)RQ;%cidi0UsD%a`0y`s z$`=&LhyWYu8Lh$$uklZjR@c;GBIDyy36XKQt~GNIQU6-p=!-3ciI?l+J&0rcGsH$K zp_iYbUisr3({3>BZn*$`lxnG_%rMW6`w;*7y=TMMYxeV^r1$DmPhH0hTP%_kn>LJ& zmWhH$PI)`^Z5W9pESrIS8#4nc8KYAfWh@wJ|N4}v*M!yk)O~{P>nQ@}3>`E#dc{s6 z223Ko)5sl3>1D@x>l=>nEXMCTy^&e3-C!RqxrvUU51GA-flZm5y;E^plD{RsT4**) zGw3`QrhNO)^O+xVLN{+%(~)1m!J`oQ&xrPY`h#TGH168?8KOb`;bKks)h7i^3!i7{ z6US`v%NGaCt|wQsO}^gwnr{gjv(=gIzMKfrogzytqLh?TlMo@_%2S%{p?UmJ(&+_frE4H3C z&#(K*jOI62&ntqDI^G36&&Ccn@8`E44}4){b9mrnZ=Vrtw>COFo)6A8GYEQu)|;no zu55HV_SX(Fo{t79wmW*QY<(ZK3my|e#xKjOZGAi(jH{BrJ72LfKzB1Y>>o2AZXm-t zKv%bA{uFyYZQftoe(6O?wsf|?7YrNSP=V)kzQ4+(82HL+#^rQ&wST_xjvyS4DZaWo zf9AbbC-roy?p!qn@FwKvtl!6d9eqE&ieA6oK8DI3+)gfUf5~V$-S9HDcrlST8!Zwe zaJ6dOBVkxtw;f!dTL!2*Oi9AqU*=#~MrlT4q8nT=R)5~d$J7LE(%xast?}M|c7ZnU zd$zxrEqzgKw>$YoI7imIZa1L>WxC7;lSUes|m!|%+?GKA3`;OO-2}eO|&+)<6bqHizi5z3}*l)@OIt4oQx!k%a0>q z$H@(bwX?%yWLAYB7|jqMjAAPdoPIWy!xrF9_JzjU0N=?gjC0rKUrx76f{?)IfDuHA zasga0-h7Dd`u=Ey1l3@=E4v+0crL?CtSQKMT*TzVQ9x!63}@2;Q#Rhr;A}ifXW3g$pk(x)mQ!Y8H-Txd5VWR2!^M;ip;+d^`M3ov0|X z`)%|&=re>}Z#GHOlU&g6pWp`kag&7tK}pblrwHRCw4Y0bjAHTBfv^i-!1bizO!X3K zewvn)051tDa9Q9q<*~x>sq6}AdIDMdIHf@3>MzoCtW5*Pw$A+`_5TTx1rw142BtMg za`6mUUk9r-Xps5`&?OF{=xs$z>MzclKYU4?e(pqcv;KIi{jjNqcz_TsHLu)6xobSx zS|GN*AY=T(E8*>*^{5D}YT^3|7>zw}25@=6l<$UzgFqm`x&Q>(N@^6Dh-zn3odLKJ zl7(FI`L5?nKz1Xe^6C-XQ)WMqga{C{2oIrFeQyv0y<)Vx5^lLf_oMLo3kqzbyyN#_ zM&o`yKnIWQ;IqUIiKa$+9FV(qXvIB;jQF7QJ{^G9XE3p2kiSCmcg#_({N(~0wU-4( zunod48@akcmY?nL+E(=h2Jqa%^DoMIE{QBNT(^+ch+D2<1=4>31BW#S${=is=-Ai* zEYp-FAU#U#6(1QW=@MluKq%MB;u66=vVs~!4}V0(iIc`hbdnQbFVzgsJ(D>oyto($ zaW4x!@(EEYU{oCfFpB{p8a@OCfq4OB2dN-VFZC($ss;hzE@<-jawR=0=*5N@kcZBp z=+3!i}M9r|Xi#Pcqjv-(JEf zAe0OXU`6S)iudpbNC5tn<0pkF+~C5X>HHOs^qnC^!*BY?z-7Ppj|`h^7*2NaQU%L{Bz0$;j1#JvVsK z_M_n(i;wTJb!y4>R2P6hx%>~9|Aa}(1?(&)_vZSYPB6TmWRbU#;B|gWH}@hLA*uRS zfV3Dzp!BaLcd&QE@5}+!M|E6vjn~yx@M=J$^``Po&Gb0K?esap0^^s2fBGKh5rr91 z1BvYE5kdrOLfDDZe%?Jd643j+oIQat>2Oa&#JEM_@QL4puAxaNBVlk~`T8>R7jZi% zh!ZQ}1Rn;K5!3yWcrM9z`R*kN9dQnXo_Bp|=>=7@C&bwlQ69*LFDz3`TUopzU0ICd zCu0-~;Iff%ppsh^EBa+1AL>-4Z{TYfzLMjL@0n+PLk@_~D(;vy&-SD`<0)@jfb!T! z%1eRhG-9c#WWWDQ_mSCN%2a)}L-E4yMgM|zU;Ae{6ZiyA3IKnHqE!*0wh)}d)y3Pn zJH-#59T$pDY754mK}x=ZEP&@GEEwPj_FTf^#hsdVZ<6-bOT>S{PT?Z5SqAbiN-Zz? zME`81O=Q1=ftH$t%7z6T{L;lRHGe)Csd@pacOz$}CISK9IK~{#i3S4EU>DNFzCgVK zM4a~M^O&INqPM^sq5$@86cR}^`2b76+DHjc3|nbZtti`O_LsXuSS^Fewnko0y!Xgr z88Q0gTA7K1;=>w=K=mZ;>z-|{;}ugzW?kc?T|^~XyG3ZQvByGQ=TCSxFVA3f%Hq3=U zkn%`Y$-dij5vK$zi%?_Esz^7Gxv=FD@L+lRB>FtN3olHT$eL=6EN)g-+`^(?BFMv# zWEPtchS!MN(WvVTCsP>6A9Yy-^$N%#p%3zg-pOa8;Ulg95~>a_bTCvNu|zDsqgB%!5EeQ zj51QnJX6U@Xg8V`>mTx^W(4rSWsNAFn6XmOSt-&aq6HZta)f?lvT)x?FULQWR@y72 z`Vb|y2IfIa<02@5&RkM*%k2&=i~(;L*mp+WDagC!xG_pGs?#*Yf}|3@FeJG0GxXZ| zqf;=(?~vDXzF!3$MTI3lU$hXHR;^Q*B23mb-C1lo|Fn=K$*0dNW+2-l5gT4G+P2=0r)TV+oJVUrk$;WuVoH-#jP; zv%#x*f?q5w!L50u=j1Q)D<48x^iwe)7B*V?kVddR#a~-b9wQ9oFYc6`t_p1|kPr<> zb9#}`;3B_zCwTIb#^59jbHp-dW!BUbSU|vd+I98xZS?BR*C)oomiEP~2-9eMlxrYn z=Ca}gb#B^`RLlv9u!RUG@>QE70#O>wDi|%^4Mstn$^aga6H|;S(4*aSij(NEJcH&n zQE7FvJ+t$c6|p>MLLdBggJ348X{!%=n*REnO}IxSbIH=X_J9!Ek>p~EX8iheKjUanF6=;GUv}bS8T!4+gjhAc1SMETs+(}yAcx7nncW?}pZ!1k zd%raVi~rQM1r?PtEn#C^G#M!M(ETozNAU;xDVr;sy?Y9|*yEsNfA@ti463c9#^W9T zIs#pwJek+@Xid5hz34fKIO-h`2M=rUD zpS|8eA1PejU9RIHi$ZV~x; z_a0xsHr$3!61f>g@?Gv1IU_D?u`}oszvF?S{UuE;y||gnuEdj?448B#OtO!YAO0L1 zKzgL0L>gYI8m*@#uF!-hTXaiL*P;XIwe z9LlxF_~$@Thy+8OHB$6OLLC|($1gPq1uSQKS`=@k$M8pv{wg%`-62q&eCyW{)7yXB z#hboQbhj&DhKxfQ3ae`%876AyV}ev;W+n1Kscbh*G*(0oha=ktM*i^nNQs684hzwW zL&CXblTjB^omUsjd#Vz|*vCx^0>gU9X zALGixgx{sgTv8@x&SM}u87u;qzQH+;bsBVyEmSLwMJ&{rHRr7Q%T)Bj2Ni;AQhv-m zEvK?%F2~NRQo$H#deg*x=G!bme+pg0bFoGDq!d-#Gb_VR0xZ&mfZpKeAz>wa;V@26 zv|0nwUPXzwQKif;6BXdD8uRlMzT*v3&J`)OIRYZI98L^%2@8cZxV({?LK1XqhVnHP z7Qt#>;%BJ`feMwH2BV@9p)QnX7R1P=3T11hj9mlU$AN!XqoOE*#wN6sMt3=Rk%!fb9hrLJxhI)=)Y2|3Gj2_ zwBwxwiEQ^x4J78C_Y)tNP)9}(#3Dx|L`SsxA}j*7VJH8ovFdHn_@`7*u?3|4h+L#` z%0VIyx4-zFJhqG*QkG|xd5{E}bUZ~+ZV)P@jF;Z^P#s*>qd)2l6KDVGdSZMnXlFjO zj45Ys|7a=|p{SA?pw7|?<5ptE%zaC<-yH7T=u+qcGa0e#Nor!1Sgw&n3qKRgvBA4+ zMbWaP$0fYtaeM8_rL&sY_+8j1s>msDYD>ECMcyZs)YXXXNX=PizZG~pBr75BbnVZ& zkM}Ri#%Ob6LdD29ERw6FaR@RwXm4!Ioq@nWKX+X?C>|HZ$Hh4h^Zcb9;*K))1w( zhCfI-ckJX@b2(`Z&FTMfBe$ zh}E8>MTO+Abam_Nl*!aTdy>J-HVBNi0yp@Fjm$#9-fh2iRB@0NCeS_7N4YO-jEd#! zT0d2r?eXki!#LTzgOHOC+8}=qSb%|^t+>mW@X|kzopdhD%>~gsV`EU(DhFM{r-330 zIcxK$v&4>>nJQnV$$j3wVO@WYus3103~;gCf3b@51aSYnDxVk1y0Td0pRnlrx!n#L zEuky)l@}VH_gEDEMW{VgwmQP0JPeh)7Y+-c(64e8u(&UetS?<9|Bx&1&}*&!32qBt z`B+*{E)EK3H*~Dc*)6O>j{ZdWfqYxkY|B*k?k!BZhv+4o$X0h-YH6NQrL{U{CSnQCj4`|E?9{zK#>4S!nme7Tq3WV%IM&76+H8>*rjbJ!zyvImvTM1R;i z;NY(}glDf@A43#zEZv#W{K*)~lON9E-S@j<-ez zt{jWs9F)Db{L#Gs?a+Wu*wvr^YHdx>*;%i4AQ^6&>$&!tDpA1jK78o#%v9iNo%Gw9 z4aDoEN76?oZ%T~%`z-8nC_e;4=#j)M?|9v;QPHX?^iiXMbcA2->_zQt2&G=#HRh(T zTs}@f`tYLhcKWS%ar+3d{XQ({`{4+57xnSbQw@%<`+emK4XWq^%HQqf^;xbfjTlA0 z{rwm`ynOwMDX5wKH8i06jqpEpK|+y-jqM*@F!29P7nBkfQTi`kP}>q;w5|)`fOo>o z)=3Xn+IPa~c}z!*#S)Sf7yEdx$Fpcef;igB)Cg=imY{oDabDTb)<7-;)J1to$@Njx zTeUIU=d*je)9w2#l+|^cYoi0($J6=w?Q+}K)ARk};y5%^_shrr_G+`edMmhkYvbE# z_jpzNW7~DRtL5wUXmK%Nec6_vN=J7)^RmEd;JjH^yVL8we^PbXR!95eX&-O+FtUF4 zaj`tZ)KvBP*>=nO{rY%22ku7`oLrusTC&4Cw)1{8I`XyoYuc}=KKFd>+Z&d1RqgZo z`t)Yi((dtovzd|7%)7PK;pK9)gsPBMFmC$&au=!Z_Gb5fc69ah`1b?mduXc5w)+j_ zG6bZez5JQ=+4ge#y~Xx*oW(43bJgzi=xXw_zP@|#csghJ_~p6!`I)tvAUlhD<2ypI z#ru8l=<4Xr-!fs_i-E%A^A^9p^Yg@&v-0?ZVWZ2({eHc^{?+Q`JL7qU6f))De$^MQ z2NBU7tnQmTN#=R)xLnuf>i{Rk&eQeTwEtk=(aY=h=4&c>?@MewR=1+AK=^!oL5u*CM@baFiBtB3CCcKe0xqcnjN ze~}O*JL_+i5o;n@=10dtUd8>+CNiK<-ap})5uR*U5jL2u0GOgX1g-ybXF2%(MIOjY z0-q1pD)v-w!E7#lH`}YRbdahQX=P9id9VyV3J`IG?Ti^>G=&4r(qY6i?yhK{ zOjU~%WF)m3k$DvO?ztAEzTphtdmC(@>NFZ@J{!JoSOGu9HCufS_jRxwWC8z6I;3!v zb1;l>vw(H#D%aL1kG;5q}2I@q1;1MvdX0_uF6c+9#&X?*%Yc(zg_V z?*QL((HN2ZsHw-Szk1f8FonAM$c}&eYB+k)>@YRnir(Q%ZFPSDHxNn3p1@|4?+yl9 z-uKPR?q~$t^>-A(;_aw7IOy0xL+@hdvI5ZXk*ZCh3i#QU`5@y@OdvW=+ydY@l4zu$ zw0oG~%<<9Kj2-NI>VC%&WflOJ&`9O%$1=qo8!PQ3jtm=>4c-pf_Wv?}Za8Y?UjuWENE-GZzJJ@Xaf{9+Q1B&k+)7*|R)QHhd5iMRt!e)LQE&D68U{Y6RtQmAjJP zuV^7;G#GSX75N=h2EZE5^4c;(`_V2W;46-!u74n1zxa}g;#1_Rw2n4#5y2t`3q-#mI8SEi=dO_ zd!u0n>w#+6!s|rkSO0z+vQI$`dyg12!KZfpR#fE&ZSe-Xfl7fo-;lOK?|c-03IWc) za>+IbrH#z`C5H=Sx(!%61Vi>3L9YrHSrgV^phOjr)&lwq{s}*VbXUONy}r^dCQu8; z*x8Vhb_N7vEvF?C_@YdT`mSAIhorhjcmc8uZ4GRMwAvvMNe#+)1kTi%4qyeU?>Ux- z#Fs}t42#qpr@0z6n;9($ZmO7ph1|L-y+rJw6}=Rfp}nty|Jj}GyElpbTo`8tFYqM# z{tV5T%y@=UH{5=tw)vae=X)Ix|C>9^Cm< z=K~IP;MO+rj&VP;@PK70L2>wbLS0Ar0)HRRnIT>!Q6svhUJ;N3v0i-<>~6M0fC{(G z6#?D<1@|v-`xmW|$%9r5BuWKpbAZi75-P=wH);#*pJIM~ve9Q=bRecROE^I@C%(@A zjh-3BdGb9cj%N$Eu~47A8Z>i~{&*uIO!ls^qfKHUV`8t%tC3_fc>1&@}z zkcYkVyKT;^&suEH##|9CNTTGhBl>59348koQhSRlvAL|UWw^3q-#(91!l1}02a|fY z4v?LAWvuqXts|8F*wplUapj?lWa}o<!*S$-x@I59I2)Si@kwp7P-A(MpAS*M7R2;>k6E1lNNlQ-L40JXq`5rc0%tl=z z{-p~xrX?&2Ruxc)WLrgpb14`iZvpQvLwJWfu|)`1`Z7Ns<3!`!H7>KVT-_#hH!Wf z%tM6SXLKHHkbi3xw*`{Im3}-$FT=Gw$t@8T_}aLRp`p`A_g60L*k6jSFGqL5b6s=H z{yWHrz?sV%{CUWS5vh*#is#~dW6-E~zTybMZOk}x|KNsY(br6NES5ZLT8j!nuL2{E zkTF{@oi34Ia7cL#dl*rGZuo?&AS14Yu&GRY!0E&n(`7>*{H9?go4A8;{7*b6oc~+j zvn=>KqX^WaBY!g{Ulp{wi{V-Ux`QsB_C^cFsf1WPr26QxjD=eH;bqVo@&rvRO&7V`ZblasVzhSd_krP+g>d|2-xmJ+ycFcgAeKMO z{BBKkHm9_L8WAdjrebA{!^P|E1M>}gH%+)cGI1EOX8NxF^QWENut~XjZf?}MzZ6`=5T{DHFpNO8%Jt;?eyy*aA4dXSJJ0-LWTMq%y>iNk>qKLL;J?=D7rmSYFl;`qT$X z8wpf~2Qhv_$%0LUVk2gEBe7RZ+=^r_DajqAFR8phQCG^2JOp+Q-am^hr};axX`d$~ zWLS566cUMB;t&(Md}+J2-L*2Hl-+}Hl;KgNfsa*hq-ao;z7wu23f?!pYXBZrNTPDD$WH5 zUdqjrw#msQtwn?I^||!^Tl;6okth0Fb227hT$^j&SqHk)vgR(ED2=JaCTuYxFe3@H zy)N(_aT0!N6$j0gZ+Jr`;9@Mhk)y5$d0@)(RvevBo?7kI~(x~I+)HdQn+kb+7n)u0gKC=j6dEk1D=(<;iuBW zY%#bD5Y3_WR&wbpxeZi0jXcGZZ7Cjg8I`s|^`dF>RS!Ba>$EBsR903@0~T=P8I4H~ zMll-KboCj%*Q{jh-FOk^WCKzrf)z`9?dpcMvQ4$LajPvo6L6j3N~HAJMNlC#UKd3g zkrO6=8M)*1&b7chiL=SE{Jy{yk>>_F?hA=jEbV!oHVlh3w;4Wr4xU!fxA04Ml!}7g z4AyTt1u8s*O>a9i3Xl-9SjgJPA@uZT}ICb%H}?uvzFo%b0{6VFx^jm+{Jm;^O)C#TOn zuo&Ta&+&OgD(Bv775o1}KQ-Uc25IYpC@yzpaywBX5n<5aYBh3}Og7cIAD&Wx724HO zB?_TO6SyeEkobbkSPRRhp;)|yXA+EUwM`Q(RTi~U(==rh{^T}R)cklV%gM4{(ENlZ zq2RmuoIqj_ugq}@eg4(-w=9N;#T#T+IT|V3z?oFvhvlMrR{D)F(2r4Pu^HQ?7%!-y zI>z1WWi^_XAnc|GaqE)S$I8G@irSzNyk}p@^9=QGMhnxwrx`6ePUwprBaz z_@0zlAjrYKnV68gi^l2J?%V!R*-_2Kjs%ht^_!?csur%W5*w|(iOF|shK1(ZxX@WE^ z@S&bMS`bLZ zS4ogB#IqU@`R1Gy!i#!I*bRa$q{l*!R|ePfSw`0yuObe4g*8Vox5PD*y{dmC3UWY)DQjNQf-NQ8#A{{NaJFPl zcO9+D27{T3$x~BZi7D$crusQwh;L`;%kHh3WaGlVf|h8vRjF%EgbkwBuJt!eW*0a= zH3co%2aoWI>0(fG=$o*nz4WOYl@Y0UlDk&qiB7F)a)r+`m5On|uCdH;CvIgC;u%M% zUCwURhTwBA>VW@F8G$CRo-z)}>cCOhmD&7ZbJ>XamM0gFcM4v~A{(DzaGfmlw9{#` zx&}{TNadXks~6tVDcKu>2t!B{h+@J+_9b(B{@QVO4g-{n_;UE3SEDM8WD3Zs-fEp{ zA~TvR&U*v-{PsT;tXUv*^I|ls$uFnTEI9xra3zT+lncec7F70j1Xjs&*(uXr)Fxkf zbBaFFNxjyX)!4k*LfG6)NVx3nX-ol)8^^LvLL&S)6~Y`>%}&IU$T|lhyy~rI!6HXn z*p{kOY}PX^ph4w@`4-Id&R)XG(uz%ayU+Zzya2s(d3%Z;!;D%5c&2@{fU+0>z3euDuSeuE4f5JKhc1S004+TorVA1DQIBjZ2W(k z1RLvoME7`|WOcy*sn2&cUS=6d`jgHjvvAb)^~WtKih+ksk>({3^6d@hTvM+v_FG$K zN|UPn8Be(@x>D9b!2h0Bo%V76oLtZF^=|Ru{``15ntb>D`1o4vkG$sfdf6pVRptGB zm_Ma(^?1K(r*5x0I`i#*d#=aW*6sHBdM#(Y=H>Fe-+RlCosaKTi#5s>-~QAcGwS7UkSe7)S~@yKQCK++8e4`U2Ut=*_zya!^-mL z{C>u=wiE@=I_=x)^Q`k-CHOT-ulWs~5&7dqM)Nhk&c^*uXW-*cXJE|rmUj2+&COmv z=jzD2=`!mwJ&&FG-DD*@<9YKn!}|NSm#RItasR{FG>i6! z4Il(CYMJ}_spQ>ey3PB&`zE{A5~Rw?>dPX9os)mN8mepKM0FI?(s*Cr%v!DEGkQOx z=>F@QuIkI;i(1(37;U8%Ep_J-6^Sc}C{FBg9P5CnzCAZ1H4zD@cw{zz}XpYHb9Xr{wAs9-C&p!#h8? zN2VBTy?|*NzFgHjcEUylq9#+`fO{=N!s;5~gca;?`l!RGiL|}SNz^7ME^3T^|7<(6 zD?l2`)NCbaUYvdU2gi1qYEQzd=LU1R6~wf?74&x))m}xd_69Au%ZU{e`Jbht(aIh} ztre5tsVP15eZg#i{-O_4y@1tV8OT?|>Mr(tMBw$zD!IUF!5emnt!_k#nxH?FU}hg1+a4S|sypWoC`^ILYE z_WkipP5So|b>@gvV|tdB5)ObD3P`WTmogho{aHBC8c_{?=Hv#ePu))(5n5;`0o> zniE(PLT2h9l|49cp?FnUj=G=NlQ5sq4h00&o;OTF>(ea3VGE^1X^W2Jz}xBI#uniM z!e9SP;_1zEu;+xuMfHtW0j{tIOh$UML1CXxdsfwup+r}cSfhR%p;pP z%q)J=`ggN+qq6$Wju0zGB{lNNz@sL88$c}bItqR(pmTer(3xOjaSlQ2_brmaD=l%i zEy&~6Mp)`ZO?SU28)0R+Fqx7c7bWkC(+W;_Ofw_bY zUy@KB3rrm>6UjT|i1ok`pWIbHyz*%zG%H@K-=BC_n+7_tgZnP%fQ$E0CpaI%lFGxX zU*sJyU=}))DY+w7j1&taPPdZZxKl?{+S-Ff+$dxLq1!JL=yFfvS`mylOJp%}bMOGZ z#$PLV!R5k^Qf&EJwkr#|W)@lrsDnBFZNRGebEzFn6|9q??vA0} zNuP}|1cKco;Mn`<*2^oY)O)sU{zo0UY*yRf7|XuZs7MlU5n&kj!*+KN1LxbPfbHOk zLo05Ft#Sqn6tSq;#ajR0ZkO{ptug3-g>%^%ajO&BeRDZ#Jeunu`UVrQ8L6-VuL2XX zU={jZ5S{D*3OXCO#`L3UNTL}K+_@qbuVhDw-CHW&O7TdRbndd-vy?T z6K?s3h$^;5zYR!aOW}!Di3mCB9R*;!-f$_Yx!{QdWg2H^(Y759vmi)Zpj!c8}$Wv1ca-1>VRJ^>tuMn$r z2?3)q2%w#0LfP!qq_rtxZo!1$77(?pXJDRqaRb%JF&DNZmXhvQXwLx1bL2HJItAGA zQSAoEi$$XJaWvg3gO>aNfPEoI9~{uL7vEW24R8I54wP^gIvHAT2RrU^92QZR?do3H z?D4P*xRyQI7j1cuo#rT%`he}0Z3ggVqI0=NSg8ohyrLd!0z2059dS`NyxSWAddB?Dns67-ys{=h zjB>bB_(zBJh@|{|<2#tf8S;?OZ&()8D5xgjwd?3xx?7r<&j9lrUc&TYL`R0r?%4!XsNfJ~?+HDlx5oXfTP@_NUOlg;N<1f+cJ z*o26cs{mA92Etv`mhNX7t1eucHtrTXGo3B>^NzlMq!fdqAEp~=u;B%|007|S?KfsO0U#)`F{oT~-OtX@$VF8vyH{jJimG}Rdt=YN6siQ&1$io~4M z9hobYk+wIdaD_e)qg3s{*a8>qjQskH3+bX3iHMIx<7C|YDxS|`4|}JY!1<@^y1VP4 zxQiJMs86KR-+2Tn$0CbL!I02`VB@Po!4O?AII!c@Pu)=p`KhkCm2eb@QFF(vpIj6F zjmmy~CKZ2C3n`W2#eVg;agPyTI(^=qe(7pj*DICd>r$Mr)qa z@~|_#HNY#3OOZ%z*k&796;kN5cU0h?zojK9J?db&W;9mB?37e?SKt$*+AVr$;vIlpV zdYw^YMoeu9!T(M4J4k+kwHGznJjMaqu$^=q*t`@t?0FR7m^itQLFz=L^ZWn#$f9rczp5olo$~u=_l3M^V^Sq4TnX_u1C_L3LpXX9Prr4L;o4g(#DyOe6N^2($R;1> zXin7vDBuaeoZfB9J~IS z2hw@!Uy!(ldZ+lUaiWc#okuR>GR+wJCT&DQ51x@wb(5$@mG4?buh8vTSgn|rUfp49~%o3Hk%PSDV0=WWPk~9*_Z{}Ud zYrENaHl)8Ff#hWkH4w=U;|UZ+M%VH*YEU9>K-RLgFa_V6;RZ8;y9plp!8tC5h$|IE zWX~xHPP46`+npwp@|T;pyGgSI_+Y)n^b#|x$!<{JLO;r7bNd2zQuksUe0fr;80u7L zhUJP)%+s9NdS!I$vs}q>=2NZ_c3VDs&_hDjkfDWCzp4RGvL+Q!(IywSeyD+QTZu9& z#5u^Y&~pUH?>f}0nMo2|c8gnzvU=0xV$DRm0v3oL7>onQY@~zak(}KO8LQ+qwRq#i z+WDwGmdJ-L98XX2GUcAsZmJJGA%n8$P#it^1D_H0eHSiK`=VIq2#KDyDjsY?!{+&@ zrP3^?v@oeMN(pM*g4G##R)SsVc0He0afXb4Hff&nNP;6j>>o7kEoBrw1W}U(1j5x$ z{KWuOpI#e8t~5nF(ip|{K3DdtQCl?&aMR977pcJvhv=O*dz>Fnz?Eoq1s)7lJAOyR zFGYoegYhy$hQ*Ab!&QZoj<*9PT2-ub2_tsLS~#M1N|tuleTM0|cu`8Yvl2p?ckkG` z0{u`Uxl&w=mBshpQoV)gV*Px9Zm6+(j9!DB1sT!9S|xs&Enc*m-ldi;8)}{XA|0#t zP&~WbU)=^8Dwo|)rmA@^47%W7g>eK}v&n6RhPviS?^U7xpm@#%Ljfe@k~l)N8z~|2 z%v67m2_Zrjez+~iiB7<|(^2CBZ9bz}LPc<~T?(@#b<_cOn%$IclY!$h^H8F)P4hro zvuf9q#zYDX85N0HQ&8Co7k6t(c zqr&}2Gor4hx>^I~=ib+pOoP36WkB3O&}=m>tayn9cdO{oRyVEy#nLNAw~8@Ls8Pv+ z+AmX|U9HgUV!DiytSnmOhj!UqmEyBr2$zelQVD%)Gu^`!1hn=ab$xcP%s!j)3{fu!+RMOXy%lcj@ms{56;>ePsd>n&lSiD5#YGxhh)3{(g&GM(J z?;QguSQ^%QSX2QXQ`OmqPdv(KS`m7TCtKW>-5;YLt|2d}o{}ove1l}n8+|8IF>U{u z>9hClpPNX`7sHHH9zzU?UmLI-#A9QE*d;cPJ<|TQbwcJ#(~KX+noxB9#!vKMr5`b27? zir62Pv}{SOlL<*D%{|wKU#Un?(h+);R*` z3J;vQbz(M=6_Ylt`Y?4eMZwPCOrCNFsyE0pMyW7(+F3k!CQl8>rkoRR9GG$zCA!zC zwTg!kEH6)zCBZ+T#f|{}NJD!#akE5m6>;W*$4oxz;F&N+deGY-l71e$BD%wFv|N^t z2K?2?B1~VAl?7OthIkWK*6w|~Lr<-;_|f|Z6cv!-##pX^L@;4_^y5S4ysZZge__2e z2}j3{{FV?yjWW`T+B4tK;=er)Y4qVg*^`TEk6I6=u|U_2rsjkrqLu+A`}c;WKYeA3 z&DJG)YR3gj-!+B>-2qEeLjL_(P2efXCA``j=iWmF9%OIQchz-|L=1QaLe;{ z<+!{Y2ga25)pmE+Q&nPG)inuDV%yTws1sodRCs+upabh$&htVgSd0&c*el+c9Ds2w zT>{SpdN6OkXu*FC^pTUVxQh#V$IOPtq>E$_!;|oaT4QC`YxO5^u_TC$PMNXlo|#!YB&nk!d1wswG89Lb z24{ux>G9xa(EE!jkS}pe`Gcg0(dnnYl1uns)koa0d0}a*^p!3sI$Q|o>jLLwn#N!cND)EPyYFj2@j9f27Q$7 z_Ae6n35j@(U;jQyL#pw+4SyxTcjk}qC3JdN-9xc>(Ezr(2;BW$tH-~a$6 zFqVq-zrv}67WOtKgr;^T{}Wf$n6O(HL)-j$!mrbSgPxv#zr%wmso7K!0Dyt**F@Wq zNafxM8O-e|A=^$b7q``O>G!)Hb3at&$3O!zs=&D+D< zUqk*rYyb9qy|Asbv$IY4XXj^{kQ04WFQ0Fh&K7IdP}bvLmwf-K$6LbJ|sON3g2EqP~OTbgDUb^EsOM784udc+a= z&c!#c&Fa#2Mje46&fmT7uM~x2j@_1Pk1a6v9^%A#^E1&kN%*YmL&A;x*<1T-@qUbS zG5?6m4r?|q%U&4{ZP;ndJ$g5Da@Yp-<1fg-%G7t^Zl`ivRk*7pG4F)NXkp<~ zRa7z2NK3|&1{o<#nWphlmdqrV)STyLW~Y;wR8vj<#1JY|p-TPU<&kc{K-E(bEmSFv z9Z#wbO(KmYBB~Pn6;<|&uU7MtT5u`R*}+mL)#Ngpq=I%BVGdO@36nvRMpVv;S;}0J zSXLZkANxFqSu?45E+{*ZG=$W8oOVphL6A&Gy*#r;6U|jM39Xn3j)vgZZ449@ z=dvbRvj{S-q9K0>BbRi8+MLl3k8-|BYnvth1@z}Y5=zXS1F4WaeEb2h_-jBe!y)6& zBTD$E4{rLcb1`3TaMa=Dq8C;g_-Nelv=q6NO#)p;Gybv67`^O2l9^8Ecl{A_?fAa% z#|EPkfC_E6<}r6zzg-&IQH8OW|FO3O9V>R$IO70sK6R<|m3Mr<(|@FAuXr#g=wI)k zmgK6G@CK1eEV*Zb1y{$~GMBvA(q$P;WGS%qMHR?2TUGQ_lRp?9eq~?x3tO<(_!MVS zkCArN2pu+GeyE%^fjkBA(Q2us?%>sAxD_N~VYfxk-!F{lo}GhaVXoV=s`U}(_HoHL z6h*RZ*XU-Jt#pI6(4(S1A%>CR+I@&>W{>C z%caS38QiYWyff4{eq`(D}A%Osd zKa&**Sc5U*GXY|X=5s(9(ahz%W7Iu3cqNWb6;9?ccZg;g6e^^41_^X`v0(g#4@#4@vcAj`d6LtnUL#_6MjRgVj>_d`xcJe0u=>^|TJh{Q9+ z3j-LKZT>a-8BtC_y8c_=l7nX;$0mm?!;*VW{23Epl#gahTdv zI~9(3*B`s@B%j3V3P}TId9Q6A%6cn8wM{9fi{2ZmhvcNx^@PGt1w0@zoSpdDQ%A0Y zpQpzfO<c1yHdizu9>nLN2fcNe5(R`9PS*C39l z*R#S;CMs3UkL9iYqM*GKSxN%h0J3}&7%PG(sXe*c>7G{p_HgpapV4`AMOhRM_b%S8 zC$h8guFsQY=R+TR@(<$IDL>w5#O22b9$|BB1IHQ#mZv{<{VO2Y|ACh19R}~u&U3qL z==pe~@qJG9?wUDfgwVL?3c`^e5{f8WTrYHo*%Z#^6WnIYlzW?~%4dB`z>$jjSIla2 zm-J9AuzKiQ*hcLb8z$pH=Y-|M?)#tw(O0X16)@VvmeEdj7PdGNx zKOGJM&BN5q+~spV;oI!IzQkE$Q$WzddqGMGt`{+AfJ|YG3G5zmk!k|5AJpKqh7>A8 zd1_&Ai5O3K4v|ZQyfoZOdJdWMLHnZoNIdFCg2c!-uvNt@2B}zD;%msbdpK zghlT30y5~RU*yj^Qmv2}>`?9!D(p(2e`wrU3;hgdD&KsI$>3m0nmlJ9#e;FJ?GWCt&75u( z%^h%SGUThaVLtRnZNqkGQ>~?c{7GXKA9;aOP0@Nu!FuVkiLA=vJ)@x=K`ZexdPGl7 z4zt+E={u;a4(WbRz$Gj)9-Nn<%8cXq9_txUlQh5-L# z#`pKACt?fqK~ZzZaG08U!jXlovLL2=Bt>%*?r9SsG?>zcT!KyNPL*(WFd_5go=ln= zA+Ru?X|CML23)l%UC5^MretAKk+9S{`l^rE+EBj&R(r)s;zQ2kEh&LWcl-ny5*=|^ zL7vH{Zs9K<3GyyTCCX9H!qLet`VA&*buFHUMBrm=v_cLId?x*Eu~SZc_neHOKMA-z z*jIR5G*d+#mUI$~@^-HC0aQJo$b($9X7wMGfPmMTug<{*l3?6dax!)BYmeAF!x_S+ zB0)UhRpSWUSDRS}_!|hJVTeAq9bb4U0DHF1-`~jp?n@>>(GUysC4Vf!GNF^DF_Oll zps>Ni5n8aCq3@}UQPXLbkX5`}{F+@&W$8YaRoqMH>E3To zZAmb-YrybQGSt=PTo1LkYp~ot=X{XN{!1LuQDkrUvwVg3H+)BK@5nn=Md}k#yZ+^G zIlG_K>!L2CrZGm<LVw8XzE<*|PMIH}OxG>^~zDUsvz{+5ISUwD{9rvzu_*U0u z${*3u;Do_h%}!8nOKnvy&*MOpx}bUqJY2!VQbW=`h)94iSM)ImN?t&O_yss?x(7hy zqZX97pBWh@Y8u?+jSqQ@Sr>y5xqmu@6I@SD21b~R?H~}DlMWRUL<)J39h`;Q z2S-qar2qGe%N6ID}%rj3Nv|leL9WT-X7RypnsF z>rCR|>{o=>o$v~>RuDPY1!W%i`K#3ZH8O%i8w4eyB>-ELfr#__#*OQvSAg0CrzHCT zPjX_4E7DMzi8Emvtxw}he}NklcC@w$ftm3K6f`t4c%QDmU;C}|@;~d>jqCb}dHxnp zv}Akj1}iA}H^qh;af*LG=}*izj8R&Y$Y}4H%J*lL86M)r<^6^NMfty9gso46=XS-* zW{Ya&1|{>F-17Rwptk!W_Rqh5Ht)}FL9w&fek;7}`v2eWGoW=rzaD@EV<5r+z<Hn7?G7*Qzk+g|(!*8-=!z!?r;zQ9{tT*`pZIK@fQlJO#px&Tj2dA7QBN=Af zN5Fp!J|;1iIxO0+bu!#7$vkS%Mbd!(b=lkNc{ed(ufP5Ixp_Hpc%0^5yY+Q=+{%Ej z>-&ARiS!?e)M;5>&)1mm=i5|o&1Fy4`S(o5jgU`?X(hhd(FoZZ@OSTHP7+Hpe-9Mqs{H{ojzq z2?B`R<^9`z@6~!+CBJv#eZ_*O7Vj<|H_tiZYrdxV{XSOsfk`;qUG2V)SF?+q9Q;np z_IVpyn|$6Qv11I^eT;KgO$b zj2@$cYoZP*TSAWV=y)G`F#uvK9gV^y3~i7YLnaSbA|G98tU|z#ku!`Py8?7L==vdf zoZN2T>k$LupMXG1nDIkvb%;AgMuTfm_1rcz#{GyoF|ls-*{1G|D>1g9fC_+KjH9I^ zqH}C?G>69u2p?>;d}{m$s#_~?gbP%o9g;?oA4?!Nvps{*m6+bNRE}z3^q{z>J4FJ_ zcvV6^5x;WF7*j_^nHvRt#;f|iVu^-=nW}_(L1EvtgBgvFmG$~^dE}%$$Y^IE;-@^W zOml85HD5>|oyG<9{p!!WObT)y;0TLXorBdvJ*dS;Ik;Nz5Kq*J?p~&zbnl(&*v&l( zpjWH}JkIKK`Em1%&>0r46}+isq<89y)xcgTX~z#cv+b4Wg$U}*a0Dw)H`b~PI(N}R7C=F6rOR4c| z54PO(;NIvtBn#B6b3ZBj{v2=vO#v%_xC8hG;z$|bbPE3>mjD4+fLjy;v8M`Rt_8`H zYLzt5J4WvUoV1tH2mZj`QvJfzug7JF>~5zHNkPygs5WmmZ6vT%Jqel@=0qJs7W8tj z2J0&VV`cRLKNASA1#8nlYEE__V>j>$+JN6ND&p>gJ(b93vkk0I=gg0u(m>nur?rE^ zFJEh;c5xh5Odx`jTL_FdQ;m?X0LM-Fg+2h1t9D|9B*b`wOexJQ)PuIyf(iqGO){;X za0Jf!c>^M0hG#Mn7Ql-HjaEz~xsa7%lqp$JCGexlVf_W#ys<68Pvj9nIz?pLaqDmJC;?Zn%Ki|c$Dm@owh)2M zVJ)xEckL5SeKRz zbz*;maK05`Xp;vKIvTFk-&9=SsRbII4U>X~e+N~Gc&3_^#Im8Ka!Dp!PKY%w;tu~@ zD|G_(lo2t(QX*n|%mYz~gRlHbHp1j{k!;h^CPry;NeAU!@XAsH-(ybl17%#MPIIL8m zY?sKBh&t8Ke>PYo#Zlb>Tp{4YLHIT_3j}>+b1X$+(k>cqz5ZX1{(V8lzc&0PSBUoJ z$b`;?L6^TgBR6jCh!_ZL9-*DN1ERyN0Sqb3 zanX)DMIfxzrvZ1 z@Dz82%>Tgd>g`l$-3H~9l(P7&5!Ibcm#HN10hj|XHi>w6p&cCpG66KoBks^fqGVn3 zrQlLX7fY4ME<8vy!R`JD@E5#tE{qyxP_esGcfGR3XBT*A$Gj4QcZ_;ohfXzCWM=Q81d-N4j z_1HU#D8@C~H{L_{=r~wg@ewrM^CIa#zmKOO7RYWddn7xLMV!7ScuJ(vYgH)vanx@= zmcSBOMcNqcI^qHsq5rO#JdYG&?DQkpOxCk0h9PVb-f7B=iGeA(8Yn6&Eq2LdTdkmF zQ(tRvU+z&JPYoLka@r35N1S)LGTieqj^@m3#YM#bLM2@$z;s)g)O6-9+;J&IOsW z%eJs9E~A?@x$`GO_Kup7J_}|Cg_9Ns4@0*F{$B~A{?S)Nn3<2mZ#=oC&Hw}Szuo&5 z3Nbk7#(2Rh=3D-s1rzuigP0s+Wg#J^yIC_CYZB#LkQLr+MJZlSAzEXJLa5{&0ufqc ztFaYnm0;22hLz-IW;c&iLA8JAPV=?}j@QhcETop%hp0N#9xBxltf3B^fb2}YR2-I- zuQbRE9^);UdBC**kAe5Ww*Z%wh_sp2TvXhmqD3lAJ8-4g$UB{XO6H$r#yb>T4Q5TW z7r{4TR8Q-%nm>qITa+h$>yxVD@DykOX%`BMF|&iO!)SXfL7`aHllM$k+-*<<^X+c4 zHmZy8OEKu@$^qB;xi>LVacC8pT30s4!xuW87FX3)e6~TkBtjv6cTFkWx-M;O0Y0e$ z&c+^^z)=Mnt!{of_oO0Sh;c!Vt&Px0FynFI<7$rNGv7tJnqZpK*G!#6birM&X+hov z@CIw*29J+gE+rmjCvi&7MD-2PT_zPgYQuuIUDlPx37V36oJ+h;6Ix;E62qFoO@al% z2y#gZ9n*s$H)xZtD*v*1SU)yKpa+u_24~{K|uHx-I_K@s&RDNLc(K~Xm zCMTtAU`CgB>WQf-4J2m-G#o!WGEP`f1WCF53j|3^?r|9GV#&V%i^c%0Ed4gusmN_L z4#>^VEZztRh!W=_4QyqyRR>DNgWh8CRt)y3rbwoVUbe>QC$Y;Iv^RhGJE!ft;=$7T->Ox+XC$NXyuPlXHO)jdkBmPIrlS7Q)O{ zTFzkk_(tta;N`XUQDpcKq+{o2u|s0W)~m@@%eDWF9kSTyBeP4hATk%wynANdeGnY( zD-12KJS@Yy&Oa{B2-x|ItdZ#I4MxD(Ns840TB6y5$1!1LnD`da9pQ(7MuGYnPz|n? z$jDS^agA_vy5dDe{;Y^nZ+3h&3W}pj+)g1>$6sR;_B;xB15xCcz=9A0O`4@ZS$3*E zZE_x3Tx(2+gz}b=lEpi#+Fe=7QN0Re-nqQkfJ!0k~9`;2IDOP z@w}TI@?VWi1Fq?9co8bQ#kMlDF=W!UF;-VcjY>kkiq*L-i9Kb)2HVmwk33%@<24jr z1RJ;sz5}#sg?YnGGKJ?L2#P@MY}m^reXHJ3E{!+aL}kIl*0B|-re@|;lJ72c`(ET8 z*++XA#6*?QgZtPI(V{{upe(BU1JCHVYpcyEv@^XrgCca#L4=DFTJ*$Znhd6DL+;VK zd`?C%a6x>Klbf#ZMxNQ%;VWPX@k#&5k|=%+@dG}FCH;z#oP*W|^7n==P!O_)D_f$b zcFvU}YHNWx6C5+`PlZ$F%4Jrc_9XF#+Q+z$8cAv>N2kmrm3(y;MH`-T70RLaDwAXN zr`8lCF>39JzCcN2pHsEX&5{&;=7Zw$M#Y>_cEZtS2`kHqs{Us~5h6?AB! z$m`w4e!080(yr>dv%1U{Tp~{db*Fa#4$PT=GuflQ5U&IZdYQ)JR~?K`(J#PDP)d3N zK5vzp&9#wx-|$rc&`r3Zs9fTuOL0nV*NJfWMcdF$bLQ|Txggsok(>vQThP}Om3f?X z6gSJ;(b(~Y4WkmZkoVFt^8slm-&IAI_D3SN)}JEuQc>)GndIhPCL@HO^~K~}@czuO zL=?v+LK*Fb&%(;k&}3hl#92;_K7y-X=<1`oNn$udoMyztTfDYS zSv{9#*MIE_w8W`HQgI>~?bBB9jZ81oiK)K_Fl!lE+lS`R5{mvPhBa?FDY@pck2LFF z0TXd{g{Lm6=#JBSq7s>tV~8MR?{7IH*5+K1?+w*O9?NI;x;nRL&Lh-1e}kAsT*6Cd z*&zDJz3k0`>v;kxX@ywcLge|KZ-0#>LAJAkIUzZw(xBkPi81t^&%8xDGa!pwav39T z$b);hWov^sA%hs(owhZuBMx;B9}hEv40Qz<2R{f@V!32V?^h~uS4X;&O~E>VfKSC* zk?*sIS4F9xsKUf4R{`qJ)|>*UTz&dYR9*UcD3-<7j0XIMZ4k2x*0mj_yF6upA)mG^Jog{e%fTO;MHB;(GEX#vh__a*_opIx4DD_cy$z1HlyO+2PxHstl*P zK{v*sgI%l{ccTkiQrXF;MD=($})Qw-$yGtKe zH|laRzg${Ygml>+RR z+%rNJ-JqQ0HWza}UeUBk*GkVaD9t+vE?r}cD88O|rp{);lx&fyJjPBfB^PFv;5wl0 zV5BZgRDryRL#*$PYjikG0Jv3pYmit}7a@1z+mB6#;;3PhxxC|o1E*ShavB$-1!}vm z>*2-#c+agL{O#4`(gSg}ZPrD|f*X-&ujM)q=K;3e4jO1xL zDm~m@FqFtDN9j`(dCihDl2d{Byor+L0?}~ta|NR7TFz^O1GDQMO%!Km5qlc9I(!xl z+{&4pQ;>E0Ap3x%D1>E;eyz$M)x9#SLbch#xr8OPAhB%TN(1X}gAy6vguduD4d*?8 zW#OVh%1W$XoK`93UU2JTO+$kxwBy8E-+a|k>_&@fzdzQz=gJ@&X#;vOEi;8zBx!ux@|oH4Ed60qF;Sr1vjI8*zJv@m>mPUbt&9I2N76$+N| zbl-nj;AnJP;$^3Q;C%a25CV(J|Bs-*kH=?!o_hkyx6ik|2v3*awY*r<<*9zx%lZG# zc{t+ajC}>RW4Z^nW5WDDVuU94?skO6_I75LPPYH0JY1@8%dayc`{gx#_uu78UT{kO zSh!(SAS-qi4wAe%AxCUJB2C$^y!7vl{-O0oqRLHjNSGLg(3sK+-bF!M*0c+B4>u$fx;~6< z?X&Gk{P4<9vo(@%b)`#C?+}ym@o` z#}BgcYKT2e$VCCUf?8@#Y&XZO9ZHujgAt#!9l?XTPif7YARM|hDBm4CU}E_UcQ~Zq zjk5Roi7$tW$1im};v0w&3FI(88u}c>*ZP0N{>YHpTurvX zQR=wRAQ83CkzGH&#@^5h>4=OFHzucvXF(^;lD;&y`%Pop5Z;WbGWqn)vo^F zi1&XJjAmaSc?M_B{)G6yL+ZNh^w>jW0Kil*0D$qo)y2Wd)cJoJMP2Gj#}l?X_Tb$3 zpXBP03rMf~aPW5Wtuz3@*g=K(z)$9-xEnB5!`nK8NCo)$9?`2R$ut{Me?UkEVAhqo zWy-RT8P%UvjqrS(Y=6CtwKDMge(wFdzS5`P?((@kyS(o4eE%4m`gy(O``RfU-}Ci$ zj?{}t(BpUiEbh0xS>*qHuFv;+5&fPf&+qXCY|&6w%h%b9WxtA3yXE)tuzD_k&Hr)n zI3d36^96d17jKuUF0a4E-|qSJcCJ2=W`DKa)2*31pWy#>GA8@hweWG;_|_ly9s2Il z*mY?Cw%)2gN8|5*|1iOj>+jas-7fbN3{vR zrbtk$-{p6IaHPLCLg0_f-@=!-(dB)Q{%7L8HE*N0?fU|+C)NMHo3CQ|AJfA+!G~SU z&~_7#|Kr7176r%q)ZIlDhx|6L|L56QY_I0m{+G5E*jtp=hvR)w>!~mHEt&5?{QF`L z|Lfjq+B5$x{Pz9FP;{PGEP&7wL#i>UL01&w!c$j$9{QqG+*`=B~*D=8wrvXTU2fbc+{8Yg`H!;MU^5&B&Zj* zkxqz{9UH8Cg|h$5{J>C2NE5Z-r&n(=@(D^TuCHbarf}FElaY>(TNP@V^hmu&{Fk(b zPdV_*y`TPvpnbbc?Ry>d?fP~$Y0Wq)vv2IWWx|d+*$pM#?T)ymBz=w4j-rOr>g_1Q zYKbZgkCXH?V*FD{aRaquNB7d91Z!hAh7TpLGAxoM*?{5=8eAtqm7<5#HUXaRq~8tX z%rfO8p5l-n2c=h$0S=gJU0F`W_Lmu3W-gTX70DJA|G%`}LB83Q@R5WsibPmeu7$w`H9Ctl}XUzn?YEVevSb)mB% z5ua{KUr|$X_nu;D_kbNDX#98*Z?9@v@_8jV?;SUtdX&e>CMrz_?%*%zYy|Z?q0SC! z5I3GwWSW+oHV1|()WN|fbNnhL#5dXe>z|+$NPR({natF1b z{cJuxaw95)*!`f2)GpPu^cE9->ZwGPqEiq_+d+iJlR{m))O_79=H~Q44}HkDz`g=G z>(b|E)aj^yo0gq4c*|#Z)cpUX3it9?mr>KQ<5c}}+4du@;JznKQ}Q0(8$^tHGQnVC zI>zO{dv=h&WugD#0~%Zos4}Jv9v4kA|lZym|Zg`d1sI*1&>D< z9g;8pfKG+$0e-crPDbcJO~=K+69G0!4vvp^lBFNBL+$6RK;bU0GN{am@uWn>1Mw|n zqn0WSA|F~hY7{=hjR_&nmV+M zmi5Fqx(w^Ms75S@kEL_2{mJ-KSR?kY`D}2`bS)CM9bCLUM%0n;!0w4rZ0}1sFO|0@W>1QIN#AxLw%RZ z=8W3e1N%);la@zu#jO7VS@J#4q!@%qS4@?25UtewJ1q>YG5oZ(eg)HMF@N0#DC zIs}*7>26vdQk)BsUR85$=(K!EB8%=zN+}`#zifw5Bvea-NfmW6xd?G3)H=xokz0)v zPF_18LXe`|0{LPawWCA*sOuezlxv)4o8~sS_4Kw( zaDoLAqhwy04*M!~UZi2nuuvoOMxF$4pA<8ESD_l3RGF}w`1s3d?l0KkW0a!uKUNau znxD}rez$B10nweSgK#-^?)y5QpL1y6NdC;5cH7rtkWdaNG zc|^_97Ad(%LAb$kNw5Bp1|{bU8ke3f1+ZKbxqQ|ZGh4W`g2R|-)kTRy3GYm#6z==h zMGP+$=$3l|%}WEH;Dp$wApAlHw(A{o6W0n=6NzUlHbm)q_(F+p|FwiWBka3`@RbIW zcpAuOw3{YXQld-Jho3w!FScugpTzRdNQ(%bGb`0SnRE{#Uy8jrsU{^UfiR;X*aP&`-xxv>^ZVRF zeI>9cvUt>vNnA~JbClxVM(6wdC}_(|?;-CX<|BqxA8p}~u5sRs0^+%g?0$kuksI7J z^3fJZ5IGORWYe&-f_z3!X#ry;U%Q5#iqHs>=Y_z`yf{yO58!I5E3$@!J{LI?!-I9%A)~i=s!HhvvX)m`! zur-|+q@)(GyOt<&%z6&3&1_1Y!!HYZhQg=Yx^IK|g&X=YAsSvI*?@_M_sl`-O6^oqHO zp>4bLZEtpNG%lS~{unlP?r7~l6UbjfVB2k5 zCX7z{8tmk_E=9=S=&rMMYS%D$e9u12wROWqw&4jNZPMcG3%V=^dY;FIw`EQ)Qz-+n}Ny!8O`shGG;$fGqeDrQ5fIIK7f^)hu$(*p9eh5|_qd7$d` zu)_Z8)M>CnRMXNUS+2k*bf~#mq36`>>D61e(Ya+4LoB490msf?LNLj~lwYLAzNSov z6Rv|HVHpNvr>N8(FoRa$P_Z!M@r2m_b%dI3kfJ`zLL7RZUDK0Aq_n9}nE@xG*AJl< zr88V2fGOCE(|bR%=+5F(jbp}6l(Eo4IE%*EduFKYnS>2sF-W&zl<8ozF)MUo(FS71 zG4l81#nb)XJd5MC0c%*f$3Wt8oGYg?TR|7iUTwP#gGc*Kunwt<;BY7gy3%1ArR^rl zTqcJbT<5bhms2Cln_Co2cE7D;rvYt=~2r^wwwUZ3kbI#Uj;pGC`zHw679k zZH7JJv2y2RewiR|Zpjp4^U@$3unVh>@gW@u$$2uhwi~Z&bs1n~S%&Nd%#rvaTtCFt zNvcgaFp^|e5Xfzo#mpAuBs4_*B>tK$eeK*#fOwG;wjLmr%M}2Z4xq%LU}?nT8#+u9 z*-{@q1+_8oKAr!=GHm<011ob8{V*LG^Bbu%tH+m}1{hN~@oTXYIVIgZUw-aae4d!#^WPToaHBGRTMjaKz00F=SDBe+$DJMvI5R zBm?sVh{;Bavq0d>R<#+Tce2?WX|*qTgfW>)GU8XrH)$Bih;adEI42i|_O&|A+PpcM ze8cn)&|}0~ieu6OVHl_7rI3){s;{5U@R#PU!v1{NU?c2^`^tY}MEPs|!5F?A?NB^eKl-xpkviPl0vIkMwbek7?69nGjc(~^a>ULWzYZ8CDmx~l;V8L!RsbicKt+IK*sr zs$F%yXYbFxbxso@k0iUa0thJ=x^66@t}KB*e}Pws-aRq=W>MSkF+I5p7fX9AUC*JYnK_c3qaxraiv*>o@e+=(58*&)1o66E-b&-l*4s5 zaFk%l>%xR*VoWn;v##4`Ha#t(lGk$iJ|qy&*!72Wt+{_H8%rpfiM!yVWW7WhHM}V& z1v?D?%44&REvs8pI1mGBl#ds=lf!DSVI^3wC|kB1bC4f&>sK}wqAK@UbYPb~eAaM? zYcxa_&>Qx9%yUXm3l`S)U`EqtWiG)u>}%nJxa_g)R4ZnHWsAF4u-jrlyHB}Ts~={f z2g@L+Lk?<@qQq7Fr;~Bl=-8||^dZ4z+xHru1I?to_KAeYII zKAO0Junm|6)3dX8z*aW4xPCuXKnM5Um0qjUwy3O?a-d)dwQ^PJg*QO6U92~dohp_t z(XsUV77EwYKKN6JhY9(&-MBAlQ8Cb0J4NaZBA0mtaH7(xf2eaUHV+`5BLOe;d6xTH^R}>9|%POxd+}6R%lyiR+U}GK~z{IuKiIPxu1p^-t5$HKxbaChrgN9z=CCYaN9RpO>IKe;A z7C^kJ>n4c#C8jgT)@Nmus$J#1?ey9hg zU7Qqhm$f|ohVjg)AX*cL9lp2)oXzQpeH46JKvN#_))QO!C-lHVfGO#C5zu*$6KyFA zQH(6apn}vf#N?wXSU^r(E1Z)TdBuc=e2y@MHgj!a&=g!a zpkUgA=AMA9MpW~wsDh8^I*bZV0r63;dn`9WH&$dEmehng7diJ4MmmG=1_Z$yNx}jy zA{5Lo+|KJ-X*Rir`YuOn?ZKcCW)QZ)Km^Dzk4^A0Z`+uO|1xD|US6CT-XBAfxxZQP zMR|Ld@F_cU;A?l{c8SjEFbKqaSy`T@?y#S@tvMCO@n86wyR9R&zGSDC`pThWcAwj@ zuah^XQ(baB<76Z|ky^AWsWQma=p5Vl*oP!*T*dBR97|p&=!z0@~{%BKX*UZ*5;vP)9#N|LwFA;sYU#_vJR2FirU8+W>0UqG#t@1{>l%=wpuX zS@0|A;QG6@5#~EF5|~kRn73Vd_0N8sJk2 z9*P9z#3P>~M3)b48GQ#XLKKMp^wTgp&{STCr3;BtM|eyWA0mw&YiQg}Nu-_-F4ZL; zte@y6qSPml#jzf*?o$=l6CcTCSI?B>6vrZrVk6 zG4%JX{Aw7`e~!U>Vx$EM)2(~QEpb9;;gqSLM0GMj_Igs>qx^+^Ys3hV+ZLWGopI++~sOg~T+YGty04!G7c76MfCQ}WwZ38Q@p`nRa= z3()=&)njK!tU+p1^x}{or*-7Xx{Dq3)k+je0UXff>&K#@(}b}oNpfML0`^p_;1h;v z1i6usK^;?E@_uG92y$B?oq~QW5LSKgf$H`nY89By`T-RkevqyxLxN-VS8nSdM`fHG zsCARCz{RI}ACT{Vpr+`a*B_|d84vwj7LI?QHPp!^sDnc~QO6AB6GTMvF@#GFsq5 zQ)uW&Aw1lP)g;9u#9IX8y&|)uC|r`DU=iuad-mk=^PbYOVx>GT*FglKT-NDc#O&ak%pEs^$v4$+ye6eKvjoP>fOARLF!W-Ks~=R6!Fr7 zoTH^)bfeV`GFyzCcnm8iNv-M<0L^Gp8=)$8iC+YKx;(Y;K|)B!X&(y#OWOHG%90)F zz(O4QjK{t6EHo~FY9Ag;chWE$n*~Zmf6)lg1#%&^Aclyzaks{!I@JH>E|5x6q#V={P;1?dNb2Z|Rpw$TdIEI;Afm>Y*W-v! z4nc|=0=%Ezeyg$rUY~Xvb5x8Cxg?VJkN~a(NaLq0;ZY>3t924NE@RmTXOcSvDYfWD zCziyHP`?qsb|xjzV3f}A`cpu6>#)y~MAuMC6p2FIZ2SI^g}I$+z`PZMEfYjmKkzuc z)fH0!rJPPo{9#Ilqo4swnH-a>gysWo&@i$oYc&4YbaoAMLkkfhewYGz0%I z)DT5VXewR^FHhC+JKnfI%2d$ z&&YTqae-raVG(+98VtX8b#xy^kllkoS(?KG9LCCzi<6U8$8R3ZeYo|!WwIOU6>@4x zOu0;XZe;S42L}Sm-LuiOHOM21xZ%+`iS~6})%GTZo zvZ6{a1NFguC6a!DuL#^ zKwoe@wiLE5o{(096fRmFa^|0ikFXOC0G&sU0oZY2vlaM8>sIU_pfmFc|2Af zi5%7&b*ge1%0+54!cXCnrSj{Gt;pok+e*`UY4&ho@**x!E`}#w0uvf1>u%@RM9BdH zZt$5Ta7Lu6LK}x`GDx74Yo896= z!<+$BzLU<55$53wlu;DTgha&0HPMvm*o!}Pfqtb9lz;;xUkdmpzi(E_uR2k#Ku zhi?y1xY=M;dZSZzxMso2SA0h4mX{ija15CzakVmWzf+~V5fa<6p${i(zRq4i3Jcdm zIcYIsH7vnhWnsi^>l`#G2fjPDHoJ(WL7%z09m?%dRmqRqavp_k? zbHM}B2q(J?;)s^iiP$;=a;U{>(A-0lGsc!i!Xh2r5sTy)T&>DSiqtc?2GwH)iI5IH zON(-gF13OQZRF*}3qj{e_i1M}v5K_Xt$M?95smaB3P&E2!mLljjSky> zcnGik5KyZ{w7}MavedYhfah}iikII7NzZ)B7A)JuMM^5bQU-QsFD&nlYv3o0H)7Wa z8L^4jf0v{sic0%BrktYA3zHE8(*-3Ou!|cTwvVwO9bzUj-;fzP1ofiG;W8kk53sx$ z6a53J(0FRnUaX*YHk5KRGIRmyI4qN+{Efd}@yOb(*h%bGCJh#rM6zKbQ0QSI17TQ% z9qSZKuqDT-hAO2=SuHL0EFtcM@!*Yfxp=7J;TFfnkSRA^ZC2s9&%!9CAWX+-Va9|~ zp?y3A7XOaNkxrv_tgKgKM=hamrFZa&eUWxTzOf`I6Qyi`JOEZIR|j2{*uZ;gf6QR% z829cpil{aF9yd1Wo=vf8hH<4iWAjY)HJ*cIMQ|X0zCSUL_*BmlAAJUWmk{-5k1&(} zp^h>e8ISQLD(9~@RRuHc#X6mHWb z?e9LB5k0~kVNv-iL|uq{l2T~(Mh@GfpZ{C7(XX!mTwtk0=BlpV4g^a`wS>>wz1&iK z%D4qS4Trbj?yITl@Igt$pFy9Vbzui>!?)$l2SG<`O@SYTQYQ*6!h^GlUofXkoV|hIImdk+(lZajx`~45SCg1P=Fxa@#7I^prAwm0UOKCM7-zU*YU`rXe~q>Bjgjz)oMfUoj7rNe zJ8B}aIWaCOR*Q?z%S(qG%%o1jiDL?WqEV(KHJAB}Gd;F2^2-=<*~xm@NvK?ZJ$9cM ze*K}Ej|W&e4)sXE)ehUl%WdWW*7zWxfQk)M%CM1;V2z|J(a#4uq4!IC0USt?)IF^! zLkn0}{mxb^zz8kP15!ElyV5?FjN-)x||Nkh`EnBQ1u-LDIq62hDJbjhe99Y)Vy{XjZDRR5x4Vvcx)=mud=@oCdGS zuIwZ-&?L!{c^SBaCz?h&V+EyLRQ0u}c;@RfM(={A2w=vY_!YmJIN=0jU`o-PX2Ucz zk0z<^020_0Tsbrf(Kp?tlfbNN*OAN{NZ$53|=qstQ7LC#B`t@0XhAKrEiW%GK=8WLz z&uOU?#b_`AoTr$;Lp~g01UzcZ+lwyBIczbmm+1f6&`cN)W%e;Z2=p-%Ba5Tcxb#Pu zX7eadN)DO}Q*VhVmCArQjxp-6TFGYE;4ab^z8oNbgsFnqEwVAR+i=~WsW|%N-iQr( zLdq8R^?SUhBA|g_#b!d?y2fs0Wz4;>Whm|3NFQXAWS*=V&3U|kmF`aJ6{VM1rx0Nv zql$!ORTcS!yR)!nN~Uqh?W5a;sjwsrg6=w!zMt$Ezhgs!vOq)Gj}O*V~6Li$ifB&s*s}{M(=GDk=es3jJOqSv2C50qOP| z!crc@h}0ZiLfVK6dE`fs0PUJ+#*;P<+YjqYlu4dbN72_I{g*y$#)(Aca< zr%*PSBJhtMn3qNV3-S%)V>+0mU6IJmjRZzA>FIj8m3)Aly*bT?S$Uel>!Qg9za6^< z5pe?@eC7~|d!%qKmeCC?2Cc0XVRR@R+}A0hSvkerT&IW16@+}Yp*vVUrcicK5LKC? zZM{>A(!vEmr-vHKMBWHWb}xXs+;t~BkEg$lEH?8<7t3KLnJb}7(NS1BQLy!l>)~P* zL9=7M(n_~EvXxqR5GAF@0{0hSV-+ZIq8f{t|5Zqf(LKDWGjR9JZ-j zbM$2!V|AKxXV07clc1z_tSu(i}Q*cAQ7!wh1f&>`|; zBA^~$CJA^vI)&a!M4%W!HOu2~AoG@pQ!r%mgp*ZaNy@hZ%(HK0oFU!0QVGmB(ruzL z&!>z^L!^i;64XhvO=Z_lIGAf2GyXC|{7RBz%M1RlN0@IxnhGB7f;%_oCistjLj~`S zE=kotIP9MesW1C+s+az7@%86Jd+JV!A=tl?Z-}d+JC#qrUwdF;#2OsUB)()JY-+xl z!GCYE0aqYuqYDJ9l#D8xPWo)XUv09;z-p1reQZ;d)vs)~0wi-P%l>@1-B+AfP z(}yuT58lC`r^CznY4E+Os?B1Mz5MfhEvf0zn=ozZU6S>ib^8wwuE3Z}&*vp&zu)UZ z{L0JS(P4P}cDJ|h=jY?nIi-bpR_ybf-Pc8)fgdwmyr6z>M`wqhH@W|=L-pCl+Y)}~ zBR7-1{+HY1SMZnKzgN!QYG6UFZ1}o=TixE@2N!`|-Q6x}FYm|C*T8r*ALpmr&l$~+ z$8byyPK`PNXMG@UpPBjW`I>n>oOc^tJI#klx7XMA@jU52H8;1bw(EtE;{Js-Dd_jn z65T{0v&!$j9UaZ+CxxeZyzK2eaPpwvORh(K>}^dwp4W{d9{w%) zaCiIC*w3R4^q%SaX9ML=Ib7l}b+2-q{jIZd@n&v#ak$|5d4bI*@NJXf;q&+wE(lXC z;1d@<_-yAWx(t6ekkmAX(}qA%JMl$SJ)>~-dei6s`0?;?YB+_WaBgVP6xU|B=h+WC zl50$s+b^hI4`|-cW74$Y5P&?0!A2iY35VW@5rj2OQz8~{4S0!n!uq%2sah`ZIJZ~P z4`OsUhQ5AjyI+4pxNm`Id0!*~%wooExB*|9zwc=N!sn6R8OQoN_FjSS&I9wio;S z_$r4`J>G(-cUn{Cb+c%j3I_{Lg#*{E6f6M;GfXl;e_t57i-8b{!-sxi<6}Cc`dpl5u-ciIDl|agJJecy+oW`+@!gx zWn0zpZyn}LHfAW9xoY{ zA$!fJ;$b&cke~fSoQ~7VK^kLr;7rU+UV3RpqzLj;s{y_`Kd@MBK{s$x8~j9Wj);Tc znYu+Gf`MlB2i6aRo*CZs)#Z5yXhJv=)WYV1_xfBpN)ch?BRU7eZa#rsgekW|%o^NG zfk8@wT!3k^Me4OPs=6XwL0$0uRRm@P5E=U^#-OiWj&Q=c&zQuS_n!jo;7j*7sX|%D z;G}5=CjsZI91pm5gpdsF+cF&Yyy`Atqx+68c~$W4+We=3kI05WQ<-9o7Y@T>DiM04 ziU#xj0PBjDUX5fvLpnVLKIE$CzzL(ELBJlo1}z2C9=NbbY5}oQX{4t>-du)n< zP=h&r^8JPV5Nwv=4Eoe6e7<4Z*caNtZm9e@*!EV%|MZBv0Jjx&4B`+IbW^`YJb<%r zIom3)Kn^csg-AfpgJ8%@rKrwL)zW{bm!k}+ADt=wjU39rbA@QH9TjZ>{Q4-#SN@WD zAw6nym`kHSI`D6XzjBx1!Y6P}OGMG3qn;rB@$8KS0{oU`3LT!g(qk*tuVo{L^F8LeuL#-UZ))Fj*iN0QrWO{o(k@OBA zd1uS!@?Bk{Xg~*>)<`Rhy}I|3z70z$fHk82g6ZleMwG!p~39PY8*{44cp@JC7} z@Fm$IY30mHbv9(tFcUT1w|~h zK?Ncl#0$s(x?OKr&SPQlnVI9ItylJc*C-W2CQ7e^u&jQ;xJyJYndF*x;YBX(brDS5 z?yDZXv-=1p;8@y9IAGu*mC{$d_X;(~^y)YS^fGDavV^1=YQzjf8eL8b=6~K^yUsP> z&eb>w^cBe{0ybue%4QSMofPL@>!J~84pV~vl7R6j-5^lW?&TY=377C3ATs8Ql*an` z=u#r$f)e@#{mQ_VsGRnxo%V%}J=-%OuCG`S35FNW&HjOc{S%9yvv`pNoZQD>#MK;F zM(3goqzUtaL)x}6^M{j6mRIGiOzrK&C-owxR6h)4@01D*3bouV7W0x6^~zX9uon9~ zXw&krJPIVeQ!d?>#*HOdytAkby|VJtR-R&X7J)v~aPUYC6(S6@#>#m+ihFvxbO-{ckWyI?1urOyQ)CHE0<^~SQad}gn3z-j z;^|RK(gN|xHgrUaKs$bmEWhNBTB?%9KK2t5@gI3`{FQ}Qhx{9r&Xzod)Aux6RW}=y z-cpU&N~ZoQHanrxgJ(hsAJ-H%g#WNkTim9sAk8NP-}uAq6=7W(IVo&IEBNAlp~|W) z91~XyCf;XNU1|*Oy`9@H*oao%n!9VW(Sv`Yl9@LRa>6oW3eq(HUbb(a66#V5ISJ}n zOZ1Jv>k+*G+O?hjCkh>GK9w|dI{Wn$@Q%6&FOvz+G*sPo;qf-)>^X^OF$_Ns;ngoz zM@WNzR`2>E{>ii<;z#tWO};%D7uT6bKuv-Nc1l6sSW4n`vNRc9&RiWe&O{*$GItGy zenrSX05nnDd9ol_e_}9z;1hpUVn!MI#Iy8S$c!Wf*efc>C|>7_mL|zZ2(hc#HxaqK z&q)9`7r}j4I$P|o3#%1oMiMAs>gL-JtYZQmS3+V!;x&TS&&*n$R5G$*zJ-f}4e0L&iBk5Ry0zIl1LyV^u#R5AD{TQ8Nd zf`4CPbYp55)%Ig;$sdvea6MXiw11RbN8)J#fCp9eAyV-*6M-to;@4tpMu{Z*4Q-Sg zwu*Cll?=9&RCczj{FQD&o)}!TKUBn`f1RRH;^ku`n@9+lt>XtZ0YVR$R_$;KN1T6kJ(Y3S2P^t1h#o^r>LuuykzWJ3+^78{qBb^-sYnPfOjt-_`c|6nU zYBd|f+|Zq)oL#D>Ku^>1F$b-UB1BJ;E3vt=gjq{+QM|M8Evhj*7LhCt66B8_o|Q6*b#L`k9JQHD$9%erf_Q8cDUWtC?WLBrf>W9aNRM zzJC~#f$EnF$0|`jnknhoPC}$cmpl?J*Td-I^3jmjGO^`*6uluZx9Fgh@%v5!TxSr%2vHY9x$y6xt z$}aK7r-+But2e+2{cjT$BFwjq$vBqZY|Ou1Vse_l52RRq^#N6}ax@RS*3>~(^xl-A zz;rc!RqLF9Dr2mf0f8g@Q#LVb>;!;@B61Q2T3qw8Md{>0y7YD2%kPT^$G9&yrZyGx zn*GB4>X!YWCJx>=HC@@{Av~MN1Q-IxU)fc~z7pZxF0Za;QM%|wWT)6#{Js)l@LWcy z3YtJqwM9DmdYuRHvxHTa8sOYP@-UrIidk@k?O_|NrF*ORnbQ}qh+dEBxQ5_BP0 z{6AD?;?nQHHf@(lZR?8y4FhB^Gh5}`JfYFmU<}4Cb+xmy#KIyDx?%14q^XPy7TClS zx(I35no*f9^+Q*+ho{qSp&{}_>Js(9MiL78A#?g(H!j?k>yneg+Y4E_fhIsoB0-8s3V1dMX#Y9t*#0wom&0%!aq2f@QteG zFcoOGmeH4m%KFGOEQLdaVF`)_8~dR$!hD%FT|mDgHEeGOSxrE6WF*SaQZyBn)~v(X zMzIxllFydK-@OXAFU)w$P)={lYXSjn(3xMn9-pd%s~yj^7>6DOZWm!X$TT-z>k=eq z`p?1Ss)&Tb&Tf2tc79xh!(>9DU)#QL`bW*L(}~>G*c^0bs};9p{ma~awKA&n;4)!C zbm$1~UAx~;S&?#_quPla$EJ4Ur##ao=sD-GSiCGLf~>;Af?^QAtAP7Tv&E<8uW*TK z_?Q6#NQtKaE%znP$w>g8;vt}YfJZq5ZCb5$)l6gQcRddkc zn(z!Gv8BUeZ^V*Q1I3C@bB+_D_>L4*4F9gR@!&mg@>mK!NQQ-wsyt3s`j)=WE^BxS zW?o55@dxGiBZ-(sOKr1~^b{&XK~rL36dh5z^1Ugc8gOoXs%v#s^Hc@fzM^>XSuQ7M z=Ifc9er2xSrvPnr&|HqIC-7U|AVhJK!InUYay-o#-g%6VToDA$i$4^JkIqsvZ`Omj zD{V$~-O=Qrv7`jDV444AE9;f!ua&pIXlA~+OVIB{>0}6{x@H+3frpy1^U(}ib!{%= z7Rby6qkjr9=srxRiiF&_O_@(ivV%wU%+lxesm!nxT*;pm@m4rx%XY;W%z-mK+~cNQ zRvvQWlJTtJIQcaS(*x(hX))!E-`>TAH24Q0BWxSnU=iSR_y+{>JOzGACb zX=$xwEQ$d|Tw-`2m{X-;@}f!*9Akda(Ry6tAYh@m|Bo5MlheVjPuq?uO(yFF*reYAgy9qGyB+f>?0@S_815nYeFE=Yw z&~GgnuK_#jJ<0k2R@pu(tuD39xwXhXzwjszw({o-zZOm9nqop)HRqw1XkEnzCgkql zp6RW{oSaSnRxZY)S2W1LdyQ>NA28MR%uf$=rDr-#E{ZvY5e+&eNv!Vz&o@LSG(3LX zZ{=9qisK2CL2c;&W^If)$FVSS3+~$%}N)9z6*q5S;$0r2ExmqHnud^HL8B6}_lE2&yO@h+sg{RF*G)G!LDIGwbeJyi~ zm-h|HMNe7$aX(|YNOA=aq>3%bS(#f&Rp{NTm_Ie|N`EHVdEBEJF|GNGo}=Nq(b#Jf z$vxf~$=L_PF5YEdir>OyS~wG8T?ECKtB1X!_-}%wuKE*%mL;Z?V2?T@%kx z#QP}`Zg+Xj*}30UXLk{t`}QOJ`U~4{AP1pl{@(RPrH!wuNc7y{rn-_)lYe%j=VVvw z@x9QUr`d(mMXk+iJr1Gfdv)RIMfd9dW4vkf*#C8c!Q*tsA4%fhZ^E>W`<>fYLcd4} zrb7$+hl$Z+cRx%?rk+2a8$9td4xfwi8M$9xvx47<|5J)J7WcXXg#-cN0Al)a{$DBf z|KarO*lb9l`5CN!GtKvS7~xF$O0?)vZLp(hW9$pios2i63{~4|w2GpP#b0w`R-};` zhQgCcW^(^x*!DS&p-4jf_R;6FWqh6*Rry2yykYL{0U5T;w zhkNq`>D4(O-CoU`cym*`)N)3F)ak8TEFn4$HiI%3VF}xQ%j}#3cu{Do5|D2XSP4TaEX%^ z%yl@k^zi@P#Qp3kE;#lj7cb|S2!C_D*xuh$@MEfpnTarJad-;1`U=mSGPe$U-WV+S zms9$B>KHxAIV!%jSe1mx6!T$-s$Pds@AhFu_m=tkqj9a~{M~BW`Oe@o;OB08^T1&* zT^|b9+Q4O9DbKIytizSJ3~s`KQmb4Y3<`^M-E4wP0kp40_qy&?&a6iRf_Q=yt(WoW zv|k#pB!C58t=(US{c9p8ZKt$$=oN z+!S&n*sn2|i5u8)>;)~f6r_Y&GMwwp6S{F3fNZ;ICRP}-k?k_SD)}IeK8-^Fa+&Hf zKVKL$#`anfEu;}+@GY5nvgY?+{wH6+G|mALtp)pTmq1|$@^aNM*rNyvX7|D?d+ zUS`SU7Olh-@hBXgbuHtc8RS~hgOSwajR?{f((1Z>(R4pF5-mxa$bj#UkVin0oGnv* zwF!u9<)p43g+4o18V8PG5L5#KfXse$i|q15lWT|us4fgMa(2pT7!a`f;_*ZX#W+ps zNYogt3SckCXmfs>*dUWlWXx9)2^jkz6YX^4fBVZ^572E-8UaY)WzJah3NS;2Gi%jL zmxt!)n2;2)Bh!Gt=!%U|+UKW|C6)^he0O!RwjaNIS|7(GH8sf9@I17knx;`R2JExY zjv~i$dhhwk%;QH&*%q04H^`TwUK8`{Hz`6rX(Ffh1Mozq35euE;rasHK(ZP`pnr_z zIWVhjS<+>fj!+en8AA^Oas3k<)RQV5ZvVmcCt0#F_!eg-2LTj&A@0^&{brG>clkqyN0BPe)7s4`K`=4?iboHra(Nvpu@BE4$u z3;Y0d7_38C$dw)+>c6dWfP2+tJDOuq0^{BQXwnLaGO_)e=KI)S8HKiTCI$GCd#;e3 z0+ra2RHp#D$d)*5e~cdzMjgP*7XR|Ziz@yH*sln2Qxxq~S>s@yyXVBw+6synj|VcU zbSfW&m8ew4KPuau6-Rczn9;=s7L)Vh3wx` zWIt?K-5#t3LQEzj`(n#yEb**y6Dw{N(bQG^FiDihhM%`=V7gz z2X|ioU%>vJX9;~pj<}#=DbWJ4&;nN!o)&0ZynK^ePB$x#p#(&GytH?UwU%i^GsBG! zeJx@+zTe3XXufL0b^B?-*=UTuvkFm|4o;d6ABT+9KQPDh7;}b`bS!4!G}f;*cJ|76 z9cN$e_CvjtKOB4Gb|1efJf7kIr{g4!x$?6E68rgp#D3uC|L}nS>mAmAJI? z%Z>D{fAU@b?|m=Wu6m`mn1>6L@Z)X1+WUmpuf!PVS4GCZ%dSSz@=@N)DP~f8am9b*x)T3X`nRJK9nIpf2=J&m7 zyS`+ve8nL+`+X_hWjW)1LK4e2`$LqbVsKRpe>#zYbga!=r_W^V-hSaB$2_UE_~<4FjuHUkAy;s1l?XEw#jtyfsrasy!BVZ?#TPW%VW zKePiztlr67(1&hwy?FnAN9E%s=u?WgeXbFV1P_H&%@aY018ou6X9!Ob7#mnL>LSq` zX!+lGeha0FLJlCFU-2PiIsu61-&B4GnfE|@rMmk)LW}@Kk#7vd^OJ@Bv^mFr9hyT8 z`&09$O#GxYE_i4%JrZ;;bYd$0pI^JVarz;LiV zD&ophyXg}~Aix5rum<0w7H3_rfawZWN3^vPguM`2#6r`6{VMoq9SN|HXl>sN4eB47b`g zKIIZrJk|uY#T>T9d_!L6E~+(;x@#jJbFIMx?+`6Sn5X&5`TY90{wXT)3=Wf!ny0#Q z+CO`0reo#CiVqK5<5XLmYe=mmr|y=m&QYO@Y%%ZJKMrx3ku^+u4J%U|5*K#Vq8|Mv zDrZD(RkD+8vn?Ht7e!Q8QsuO?9}ZBT9|2c8`Nr_$af-?U{{s0$(!n)0wy8FMa&DtE zi0vxzr*#hZx)m4=wAyNOg7xA-l~AQL5&QWdyDT-3*(dB`jd1_muiGmy6->2~*aF@<82!Ry|*n^%?r@@l+7p!0e=Cd&{&ysd=__?4H ziaWlSL?VE02i=f`j)CIS#GgF1tgRZE92X8D2UbL1vun(h=p4S(EXZd@LUCV2|H32Y zBH622*un4}2@NIELcAani?)mRqLA?GlmwaJMWl?+R>=zpst!&p;=@b=q!U;eK>UJE zOq9U__V!RRLaGr~7*G|t%Y!K7RB4CoRdq=c>UAZSndkzF=QPzK;!7%`#bVWM68-et+GOE%5$N%>hZGhXT91-8#@y4N4DzMx_2YBR)NFDrgiH(=ZsJ8nF(dDm4lL1F1s| zbfKIMrerdrih{}396|_?%eH~Z>?7|)?QrRs-q2gq4&j55#@jljy-90TE5Y?6zyf8& ziU!t=M6<$?Akj~Nfhp$oCqTOW5#cc;FBBZfn0?`299|PF-LRyLu-0|%6Jt{z)6oDfA-5|N> z;lX^-w>apnOKzI4DXEoJIoc1%{KoTC#9(rHSmFi{5t#p zK>J;~X*`pXplSOcCD0L6iOMbO*T6w;f~bXv{%np1qX`HD5VaGax`20vQ8X$bR$129 zvLYTjfuv5rV?YrNx!BTLHli?$NXpHfB<)|yLI00w;}h*=RNY|F<{m~Nj2DuX2Zmmx zTXR|>usICHq7!n66+!{|v~NtyQ0t<^q)t-14mC<{TN)_nJ5F*Yf@j7vd^pGhAhqB5 z|EKnUIqx6W=B?ayY@4K&eXkxVDfKvvS9yEP{~GTi$ib`Cot_pj&uY8~68?)&-NU%>zM z^YR=s{`z0{_s!na#75OqvcT=p=YL54pGQwsX$}Sk-w&7kd9o`S6Ttdi4te^%&sR@R zQ(2rE6Zkiu`_~F}aSkT`RAl1eznj{2tvmd0zXn$v47Pl|-QUknQ{YEN(vuW4fOUWJ zQV++&yH?ts-5u-?89!o4KdSs6X~}${jy8K=UZ1wSKfCxJ75vr+t?K`1>-YTef4@3i z@_(_I$$hnWc@KBLw%_*g@Os?cLgYH%dOvP^2GW!qE$*fyZH$*3wvAez^L$nu`S<&r zpO2O<6%^_wm+t)A1otC=adNU6y2Lyr zJNJl!+vn;R4o>F>#}3!m`k$Dm1***c_y0z#&Sz@;YhVbv!8zN4E$+4nJA-}gp_lpJ zv$(%z@n4`XcVw9bI=+CIAYgTYEe9-h=x^NMi8d1_SvReNz%q@hrY}uffv4lEy^CB7 z3%4ea#+Okb44?;qKE+LyFq}Ffv1UPQPRW>t3{It zU$;XP(?VC@?aQPnGC)KZy;HN-TZo!&nc!pkRjnYJeYBz7_GuW$L5KkJ*@T=9X@oz4 zfOnbWWz;iIJ(THhQx{emlyG1Tzz9vpdE`zjd!h6~BecDd(iEfLNCi+Og4YsKeF3Wo z2OQL4A$1u!G+knn4z!~*HW|AnM`$pn(K4tm%BdA1+$C?kwWvNQz%jBrW9#5>Ed9z^ z7uxYw6TWO{Fx~c^0QkH1OgRPy;>0(r%e=HvE-9u_B;bRIOX|J*0Lx=b6Arf(H0=jS86=GU zjg=={Tr+aIW6~Wc)WC{!_YOwyu`3AXao}zrfgVe48eA>jtQoYN6Q1s(Ja&Emh8l4U z&)yoonRJFIkL)Z^(}rBvLwGISbj9^uBX>Ge2o0P*);= zZYRqBfi3-gpBFIb1pR)ChjRKHY@^~MY;8Dz03D)a#QKHpe&+;Y2IbMmReh>Y}L1+$ky}O3}s+f(hw-H<@2`v&93VTT|2*K#xBs zvFQ!XU#!wuleVn^jOgr>g&Kv%BMpL_C-@J5-LT0N>}y7rZ*N_YaVU*RkgUm+ zs{PCJ2T}-}I!r#OeDBi?Y&(H19+8?VbE@)EKs5X;1au_IILk;iczXcjxS08xupexi zC4S$bV>c)qBo)_*P%pv`3NUZMiQr;b_}Q0R-|;X6H&H99*~6C0LU#zE$&O3?+_j^{(efwtW>y$^SpM5&S`U!l9sgc<3BZCY)S`ztxDPLWx1a;Yrr8 zqCC}L7UklS%Op-%09(>UZg>gUsO6ECsY4QYi$>rB<>MyFXHQ&kX1;yBAS_@QAysAQ0~aB@E$VgSS|KsS^L!-9e%oAia?wW~ zYqwA)fVBNGm&zx;A_BlESpb5ZMrS7?wX4zi48$Pc9+3v(ulkWk7$g>wefAr>);ej! zS3Nr*P|I=x+#P;H-Y0)FfGbLk&vRT!wBJe#ec+^lGdZAp^R^O65}aG;=E$5LeSpgK zOt`I2!a2U|d7jv^wMZBXT?bg~N;dyo_@qF`<2u|!u}i2*WVHZYfW!>1MZh*i#P?gZ zUIcMHM2$F3yHZejWcG_^zFQPcQSm#!vR=y`Llqy`{~ys&+ycsziaXwrjUhKZnN6rX zDJKJTFiHp!w*Cy~cvr(M7}&*^t_)UZ_M0`e0$J2Sq1*9;TvEU@XGGC~Bo6goBoFQy zpxICmA?h!?cNREP7)+#N3o8Swz_vppfL1w|JLC7w$A`t=LeaM#~D5aDxvRPTRr z^^MVy2J6cXz7ch^&U z1I;I5ttxTf7L0mwl)Ces`FsTS=7_qCtG)2S-5!FB$Fc*7lo&sxybT9a_KBPr)ei>X z9-2Hh4uTp6h5yN-NhJmQ1Lwt9>uCnO_D>P@w=sBO>9(lkNQU`5g>w*`_QZD8>}6?9 zng?Hs-6C4Q15Ij0)fs-bNH3d4y)bB^w?pLZjc#+dny!bFh>Lbmgvp>TQQsv%Ow(!L zmb|e|Law%l$$ng|zo-T^)5Ht9c8Asd36!iQyj#>=qlC5`j~IS#5uau173R_vrNYh$ z5*iX1e$ORGoAKE6ItA0eh^6yP^@y0VDB^hFRknErHfK4O!SQf~+^#_fr;|2F61}J-c8t`<6KR*BLBM)}47P?cno8rcRL*mip}QI3$l2 zO{`YBR4ejh{)I?4;SU;yPH44RFtKjr@(OENm+q`apUpIuJazNTlci2E6%mE0#Cvmj z;DZsNj|E6{e^n>-4ONYh^DJrWk;NN{044hQ*~(;d{wJ6N8B*4&Nv!8=s5pPHY6z&& zKY+IU`A%R;j%uzC>BA3yH#;CU^+0ByYT;Cn1;l2`w|>fosIYP~F5y zMFF+>lcR$1C|2FItCGZ`_T}W)C#c^ zGZhOq3Dn`G#!|@0_024{A_vT&M=Z9#gJ-;Smj!Tbt;uv2R~6hVRt$AD;@n(j9iub% zg}Uwt%RWi;{P1qH9ysQ|#|Y%YLjQv3)usw`3Ar6dE3k0ZoEndjSTL=q%H%a#7B3z- zF{hm9j0~2JH6;9$lYXsgiZ0JnBxEs*=%6gZEsnMuiM*Pfw*}!)7?q-`utsaL6&46~ z^ipx_0>dbWX{J0PXc}_I-|qm98g0jsTU%V4HvqBf`2FjN~IKcX>ICgw{EH- z*%@qTw>~2PuUbf<1c%~ry@)CVCt95&P;!T?TkRZWpS=K_KY&TxD?SHmVF76u6#lLS zAD{6yM;If;_8#jF1G5~!NqrhTDt+hg%Or?94ogkANCYd}0#zT0#`x&Hu*Ihk^oB71 zA7qnQJYk#+-1dM*!vYl_!s@5Dg;+~#3#QwOjW+gntDo{1fcH!D61M93*0dt4 zJGfsb<6U4&@M42`NTK$JO4@u!m}{kMbR`oIYOn})u~bN3yxpL33n_YKe)n$v=8~tF z4}5UP>{T(E>t$Qec^>muofh&88ir>Fd{k*FApaHw2$D39is*iYhDp5~b+*cz?pQNS zJ2FgbehGX)Fr{Iq z%x=gP&+>)DvMFH(evtz078vL9$R3tQ3R5ZtsxHpKzs=8uwK7lpiwo9onTf5WOo^QP zr&_lRI%xW}Ye0M6ou|~AVnkNzUinvd`xt)A5=0w4UNV2lj_t&TI5bUQ&7jiNzRJCN zA3<*YqW&;0VXX&~{B)wM6v;Gf0D{mSi|=t#UA0o<^(0Qs3>CgGFFyYv6H=x?9oS+7 z+O04=!1;;nWo>N;Ef6yAC$p}4E}uq?oosc?T0@!yK#6ITHBU)GlwQ?33c zL`qFIkvt(L3lrV{F-PGHgpvyk({8e-NHtGspg8|RsPPH`&L)AvOLalG$8ADnk5qV^ zRP>o1qESE7zYN~2FN+DGHQo^{37)p{Vf`XVO_LoMp;T$*n9EawI?slheO=+?e8n5a zqR|3Z6n+SDKY45Bd3gjYn%E?u#K7-EObw79nHFgC7=$tYOA|> za@YlUdQ3x*cO9MOI*9Sw`Y2(_x%fn32>mM4xAT%PnsIL5BcTh zxiYJ#nbr0--U_{Y!dltY_99^6-be?c_%)UQ68Pn_>`K-{TY!&~2xk_8FG3M4P|2hz z%Jsza%$C@H2Y| zRpt_-h+d|^Mn6SsU7{4oBs^02M#!)bBs)M1l@hy_c_=Y}_Q}TqBsyD4dBSS9H?IN zWPLg6AK^v@!sabPbm`F&_qXmeF8J z?LRp~U-I8CzOG>%`URhbeu_G|_c2{EM#o(%=33Fd#Y-%4)0e+AH)iha8>ql@`80XV zk+c_dX+QWUri`c^#{Qe2K8%%ir>vLr%Ab|i+LojPE@Lgn*QK}rvvNF?(1@q);RiNB zc$TJM$2@`Nv)wuQ4FaPyTF_=*C}q<68%`zI1SI3!aO?dl&vI4G6|ezhW~SM{j$z)p zXdUOLi}rVv$}}EY(-&Z~tI4^@hd*%6?e;#2`i@nTUBWZ26@O~Bq}_K-!M2xjk1j9+ zN(+oa!n$b-057aIuOT14fneuyf*>(N)+Z+39;2)!sT{xRKV8&9Hu&B(Py#ysPM(Du_?AnsxTyzW1|}d?!;0(@e+#> z8?6v{bjT~dnft--{Vq^lR1+H`TL_x7?Pi6Gti|q5MSxZo=L%I>^Et`c)MV2JTSw8# z>VA}$>J1V`1~qR3Yw{jIczN%D|736MVt;llWxgg6Jf3Zh=|S-Habtg87BkLgE=A>( zg5~<8=Ij@AeodC$@erc*}VzU2(e{XD+)@Z$Ol|`BJr!~KYTu}3MwHdS> zV50gUHjqh;haS_mldsC17M{qxRXWkCbJAjA)#Z@9+v%t`ldPGY#_Ok%FJTufr3!7eM&|e(LFlczZR%`LBqG4Ai`aFi^6U* zm@7+Uv}x`kbkEtHPm=$op0C?}nE`9Wp>YfVv{={*wp{Vq zXawHE7Sc*_5zNa{M5NLHf#)%V!rlI75KhX3*R}$HcR`&}gNI8ai&0FXIW1b@3Y0r7 zH2qXI5ZraW9A^%7XS%{ZWEW;Xet4L zR&Z!AipVsi1E75)D^2gUG_P3NrI;+>o}IxvQOTtkuc^HdW7qvfzt6eMZuF_6u2feh z_U$>6uOIjX4SzFt{XG-RPu`n#Gv1eSzWvb`GL>rNILBO|A9&}A%(ibt{B1pya-I+% zR&1{n2)N@7z1{fp> z)?%ubHEGyVw2HUDPXcqDg^vnP+QNRJ@&fVm-TNK7| z7MX)m&qc%W>DR9s$=_^?bpj14!nBSI%Rid_r8?UH*!E)}c*oxQ zGj0rxGe(F+2qBesld(~3mKWDH=)!AawN+y=)h4ORjO1I?IMLN$tMKFuEq_s`Tc8Nw z9G-Qcl|3gk&*f>hjxK{pSc&D;s7kJKeP5Ix)cyUP2; zU}bAf6s$jmq3?}D*4)KCDfq3FMVN_qaqqQ7@RW7AK(LZfedesPCZJ)Hst_)u^?J3N zw(TD}m?xZK$!>9H$;AwuWEL)6?n_CBnjxHtVbBmF2aSIhsfM&F8gEDSJM{a^aP^QB1M>>sx8CY5QHZ!yP-9dK*|YkMybwH&TXD% zbFB~9)q@Te6_zF9qZ0HIM!`JkqDb&uQTLmaBirm4ZQ`l`OnG*ftGQug<9 z$;A(U7zOsyQP1LsTEQ*}_3Gu%vcJm$zx=?Bmkb~&|E#v=R{QQ3z ze}BFDt&yZl-=L4k1YbiA5cDL4CT4P*pmBKw2x+G|CnBUi>eVgTu#y-()kK_|go4)U zn&>7orA1$k%nbCt)v{?*?srXt42{-;uhH+fixBB&Zpq1^yegnh#{`Y(2cHrw{!L^al_tGTywGe;c{o|)W z;N-T~{nzqrulM`XXMJzL``hidVb`AT>+R;{^!@Vl?3LkW?~Bv>)8^;lI+LX@Ka6r_qrj2XZ!P=Lg2@hUe{fP=WOri{bc>MLw$bl_f2H`e~bq1zH+QQ zf9n5JZ=+1>4E#J~c4)64HtgvMe7u|P{(%1mQb?7(Z-ANJugOl&XGcN5TgChf&o`_s z-^Y*6chBq3?e4Pe`;0aD3aysgr=@kz*{d&`@4Xo2C+4ncD^KFBPssbbyU&d0`m5fr zzWTInzeOrt|Ngq|?;X!>=GXG|N$%~9@5@y}s{NeaF5j=+!*%Z2tAWkS@6EtS-af5V zjJwT*t&#VWTh5-{(M#QRqp#Q3cA%Pn?DqZLQcZ!60uj)t)hOWQDlKsN?b-jwJ@8zj z`{QVvmse22L?^KGmuEs?-RJ05KXsr8&U*;+L14ine4El+$n5IAAlK2u`io;PFA@Jy zMM7YJ5`Xviky2p0@8_=L?ak8wp3xrzhr5C1PMhg>5BgD$Itxk_ho7{snx?t2JcG$v zD2G@Bs3Nr~s8%a&VeNN}cHYoQROB-a*YHvMP-H2Yv3(_D?SB~w)!1xZ${k_mKCE z&V4t_%H8WMeVHX-O`6oDs%S7}-7vQ|FB|Ac9j`L_0-J1;oCCdYwR`DxpG;B1Ss;av zrqY};S&8>|sZP-T_j4L_Fdo*(9;1hTr`2s|VZXy{KrB0#Z#mTOkFj7prvE{#XB^)$ zp&qo-?UIQEvCS%V#fEZ+%jdpD|c-sB&8zLcQEGIhWKvg19fCjUPRSeqw=XX^`|!xj@J3TeA9sCnb#b20M?%kOAjbQf}lfMPWc&vX&mRpRIm)+UGn&~g}-KKUuoTh&SQzAmQ z-ID5oETEEODZtjPI?HWDK*nUqy?LwLivb#xQ$J&aUJjYd-Dh7KEOuLJdHVRBS?#$A zy2qo`xcp={9(H8pa8CF?wDQii8`fEuEOvEtN$Id2enB9SyfNYv9mauK=EU}qql&Ii zA8b?v{G%&)OxX@r(A4yZ@MaFKS%7teLREia*;p0I4HYaq@uhFq7R}&dHRGo3KkYAx zQ>ChF7jP1C2m4{an`QK_87T}LEg{AI4HI>xYZQ5W|&DFkv<9O9uviJz5Xh6W8gCA(ch z@fp|?7V;YIxUQYg0w0rnjp~{p@j`+J5laf4lUVW)N4d_=5cEkeXMyf>29%T{`JbgY0Z5I z;I^L(G+Vw9+TdIxnuQ)sZvaQ@ebe@Wq%HF$ae0ilpq6m{g)zJ=Qq&s_k@!SaF(Yb2 z2v_zfd7Dj5J~My|)78l2~bu$b^= z{Aa(t?zzA_&SE!!DS9`p}#(e`oRu3J!2c*gqGSq82@ z7NiMi+|2)y>p6H?Ul4XcU5pGm~2N_ik6RbHIV)QgL60wBXZ<3jXd?>JOKAhN#3 zX|2`$7{#=qPRaL;f4G~PDO25}jOJw+_c!4{sw5wp9z8U6$1UfocttCKqy=Z|>(Fp$ z(q%wn#;2_v_P^>^qKxrmpix(l#DE>D?*eGL8djTCUTm3|D(mJ#;8N5K)*)NnNWm;1 z`N~x)E}rW8cG#thj7pr`r2<6SvJ5L#aECWj!uCjGOL-P#P0|kDRdQ~so?xJjKj z>lpha@zd5)Zn~#2<~q|aber8lr>3RbF)D2-1c@9_EJ>Llb!cs!+mrTaDVTg*_Y@V*m@<} z&X5M0bPxaZ!HfobYp9U*zrGG&%6l!D%z%gZ1BMu7JErP{6gQy7*m6@z?7wH{_nA>| z7{Hj`>HkqeO|mdmpV7$M3cr+ldsOmqOby=spjDc&xwci->!dP`>nM0!uobg;kdQCj zHd{d2b28pD8g&q#=cgt8o*v|s~hh5 zc}loiA>fnDjQ}zFkiHBF!3EZmm$eoj7|7XLkwx|ZOve9*>X4Po7A4Alm|5lQ-Mpk; zZ#l72;c2eBP(od3X{S%4_cOl;lET)2-KrK?=C4U=S7UJl*g-TxXQo7~^$>@-T?IbL za|NAhTBoh+z7b7Kgm*p%@2$!Nf?OVzummtNZnNt00Zz5E2*t#%e(;uIUgeKV>%h>t ziYFd1-v`T@s-$U*$>8`!aS18PTGt{3=1DH>HO~eWtIVkB%nd(6o8FpAYoQGHcsIiX z`#fIG+)D4`SlX2H4)Du$gLtIEktv_0;Zzi1k(VuY(eB%Y-zye@Ig+|x?_;IVP^ zd__Mcoe(Dm~ixOOgPYz#>p?-)4VVZb(NSgI!_N>fy=7a!I7g~1nP}_0sNB?_6*%0 zPg}ZHx9~E|(DLbTZes_etN$SImkvd}_DQd$e+Tl1@dgWJOnPz5-1RQA_mf^1DWw8Y zv8ge@VI`y5nxhf9T-BGiDjh-%%!qiAI}T19cf%XTx)FXw=EF6bNmv{CmUIyM0RX5SPW)7lG)K49XQ&2ILPgePn*@ws65!Ih@IiAT8 z9xCV%F)=p4!e`PDCM)OaQ%#go!O3*8He`g@0?#lHKf*a`7Fv|G^gW&HW-yq6{rW>I z=ZC(Oy1IWj_<#=5`^0ZdO(c9lz~FB=E34Y8Gkb?%V1tqoe%dD*iCkeyBhU@U{Ep;3 z@*Dp;yW0IZ1+JB_M)KRIEeIcaQr$z|ga^lS#H%U$DZm~al z0|FQ;>i!pNgW%^ROJ<*5#!Zkkt{x6~!9wF&yB2&tH)1w2g90+;UFN_YH3z6cEq#XZ z@e+OmOJ137%ls%8*$5?=(x4Cn`(p|WzJvq6Glz0Itke>YfAic&)X7!9mPd#Latk$b z^%7nLB2q2y%?!`ERak-+OZqPw zqg#7In-Fh~0EMMPF4+qb8LtJ9eJm1~7c|uIdfG`bPj77;dV~^+idyC+H$meQJA5RU zs}yROTr6dT%gl2m&HM)EJCAjkVioB$1L44B)n%L~)*%)sF*1PaG%R>KtpFdb zZ&8bcVUL7N$TEll2FcDK+Pv+w3!rx@@z*!bw8u$e)fklF43&y|`GG+|_C=6wz(MXw zXQ1<;!M}(b5yP%2mBcX`AN%5pu_bqy+0js$il0{<@jwarxq?%(ACyxPDCOq-DgHJ} zk@*{Cj{(W%?RzhvGH?NyXq;UFbm?OEVtd3NT&joKFb;LB2AEb5b~G65MIlLz!HmgJLX`W*hpTX9MLA6+#u-Z zH!VLEZ5D#l6Dg>N_XLpjgm-v|yYqXwV!Z4yU~O5M@D|!jnz9sLV(_Vfi{&Fw(Wr4= z__L3Fj`d+=iF>-0*2IzUILos)QK`{20#{-r6I&#Gyw$Jh#y#hKO(VDj&jb?!ihWns(P&yo`#$Npp=Lj|ICBa9VygkbgchV{rSP?gKJMMCXbASUIWStF^`gECFcbNdCi%^ScVqB2lKU z3;l|x0m^1WPX8%z+aQ#%k@V384U!nl9JPgS+9c%c_o-EM+&NZF{(%#08mdZhMam~Y z+dPnW0+QsdpS1XnZ)7Qjmr23ITu>vzRgm_Hygp0X|9nRyNM{iwgjF+=&(M{hOcq0x zLGpE`)At<9C?UrH$<(Y%V2IJKUV6u9qbYZob55=uz7}w<#guUm>5jLGPuMi8NQ3yp zGLUm1_c`yBbjH_TY#tut?q!Q5#$`B8%Nmz9g<2$zhMSIsb{U|CT4^<-;tW}AvH;~W za+WwZsfjn=pdnKp1E@0sbFNac(RM#HB=;D{tpWF7hWrWiHa!(J2xW5$eu2$mQ)b$h zCs>g*5PPkz_{pjC7f;3h0n=?1WyYuPX@Hq^Mq1ho>(QB6Ykdj5kICI?Oz<@gKAdz z2GV)u4&!mZRDOxg`XdO@&HRtv2>?_)s?C7E*-Zqinu)!+J^Nl`_SQCijkD>TGeKT7 z+O76(YsFX#O7vxAd`c16O-ekSf+j=wg*x`8qoPk1{eCPw>Gu*Mhnyp4r;f|qvC_2D zjU|_!D2yYOKc`BqMea+RGk|-Bl-oK-ob1{Bkz(tV{83Rv5PPX{>#VF%;HJQ*NA8{> z1C_SwjW^A{c-JHUJiK2WU}dI$!D|%l_ozPfbBesJC4g)el<@Y)=ch#pEGZszQRZ*# z`bPEHl|K&CpnAG-rp^qeXJi6mKgip{7~n`^Qcgx(A2*7BMnIdg;iZHeGDVMp9ZW!@5rg~TYh-TK??bnujdZzo~TZP*=B#TbHVWrT3aZ> z_fJ7GVjoRSL#WY+E$Q>c*v3I*Q?@*vz&=dyng*D{us7lnfR~S&I%=S6+OJ9WaSJ5q z`B7UM0Py~?cgS!6A$D>3^v_sIKCw`%Qn?^e9}xdMPF#{1+vuY>9I7mDX(Jo>Znr8p zOe?mDWA<2Ec=SiOWFK9aO0kQiPt)?l9j823x;pC6w$mqn-Xc38^K( zdYMoRYOVYd+KWFeG0bf8B8W_IQH4oaD>*uCj9Y&*gT|5WRHIrN1z5MRqmUP>*h2m@ z(dh+`?O|1VBz^W`gf@q$MnMR`nXrM#rPWFYt9q~ApGO?9~a@ox1QqC~HAC#1u1xFDO!-!l50 zluS8QH=!&tIdXB9NU=|}9%>qE!OQ0iB`R(+A;wsY+NvbU!kPAl+A6ydZ(&45u6X+o zl?NtdLOnm02fW0uJ0R+YMWr5{+HR|iJJSgg`{;(&Iby2tT2x5cB*^c_-T{Vd3Uc*2 zM;T=vS=o3Mx@>o8I~K=$w|zKmnIvm#A`u;^3c3=lQXC)Uu{C4Y-}I~f6{?EN45mdU z2b!n;TJy3QBo}5h5OXxB^9G(_UF3)K`5ID5*u{f!+8(*Ie8a-2jh#atstQFL4&kOJ z%0a2K?4;ykN_>Nby{{h-`@_ewCh~6jj$q|Sr5AG9xo6}^Xr@?&+NM>QCE6_%0QVu- z?cW6N2kJ`1h!V!}cRyryG|%)sb;+kBbhWltX-(uM^XNA--R_;0*mjzM{D?PpJqHss z6n&dA6*(}fK_wd`+%`i-#)1v(M`#f=EicKAh9<$u&?|i-#qSL7>$0kEASIsP#1x6ff*!=U!vZ%cV7d5r2Y-QNu~ zFC+@aP=@{IYi0vWsTdOKAcc~_NdIGqQJzA^xQxZj)Rv7eW|}q8{1QNDX3m=98vmcIOr=gBCDQ;k! z)7mVeRl7jyqpIl+g&>fyfrEo6fyuN~bUpyca<0>{oWO|DJ$Fb*<|fsl)!CsDVp^?4 zrC8^HQiNIf-&XmXy^fLpswz+$68{o}Cw(e!Jb+ zBB+tbQ#SP3?E{QvpRyhF?o<9^XR}X=vfuD4NSCTr-{AMAE^tcC)>Wx)7zA@BLhkrq z24}ae*Oip2u}5H#ITrq@b99`02PZi{jc30@RgqU(1i*gB#=@c!Epg z{I|fWm}amUhMrC$H|Xm=)h!_$G{CTG?v0vUkc||#WAE_XgCk96vVHuJL>cMh| z){^tGG`^n4i9fYaSg~v1B!X#=EO`w%@64stHv>)1zn>{Px42>d6FvS`;449#Q2=3M zgTDmrG!a8V)uteKPfesAW=y&PY4iYtK2{lPeoR1CsVzVEFC2Lmv?c_>bBmg`bBGQ5 zKFWhj!{WlhBJGyd`1w^Pbk#eMBwF&TBq$^C{-I0}%Xi2W>5NM&NfW3^&;)2vw$}Sg zK`ZEk6<=u~`*`Mo_66G+=FUdXOf#%29iwdUo(dFQc3;B4*tce|ZWX3>g2UJ0hfsB< zoV?~Cmdy(RT#|@o8C9X0V$A9)&k?J&XXWzp4#Sb(xg8pN+8ihHvE~6etHD6elL@BS zUg>`u110uA(ki7`UD%%~>wbPD25qS@MuP@xmOWaDvP!9ji#c0z^rI?w6Cot_i9H&ix zNbKNbapn7ZTzJ%aeyJWPQe&V=9!;5%o+_T zGW05r?fjjGA$+k&>rK4r+#3Cpu30}yRsB&^2np@>#6mCjFB*0eH>X}sO=&7-u}q{L zKP`LOzwxT;INcA=wx(M6^2HG_a@kwjUdvAce8+DUe^jQyi8rz^Cov3p#m1vCDkbU) zMTJwtGCZlkXIFzas%hF???_psp3TSl^M)7;n%;=5TASX!=pY`O zR2|-%Px%%4X{X|$*mVwSRT;2WLJdenFpL&2K>E zv-;FcFbka4-oR`KEvYnO68@&%1T6D zqycEp+oERT0&Y!1EENme)_dW)fdNXf2Z_#UR-DcHr-(JI=OiQE3eBx?%Ir;W`w8+NimJF)m!Ba+f<$`M5@Q}_MB6~fx(*ZJak;(u zA+qtnaMnDhtgA*fvR2oswl0!uSuisB;GO<2F{>U1N{9%WXYHbsjCb!^UEM0zvK2Hc zv7f{_sthf{a)jt`XYC~UI|2zI-r+OaoBAC+CNxaFIQstU+~GBHd8q86 zmNBo)a9Z5tr$BD%_B7emuXu$(mBpm2uGzzwTgv@1?rda_^C;=QP)<>}8pE>qVw%;) ziWP*?xT-A}1v5K%qT9(#IG}RkfN86UWAth+WsR)=##B5W zz)sirHA<=#%clAK!TJ0gS6T5Ez4HrjDx3U>0OiqL3~Xg{Uy2uobIQP-B*|sv#eUadzHqCoLh`}ibl z#}YVORP@9eIgwuqiS1#Bq6qcFd2YqZU<6f7gZ-S$HI8{c))-t@7+eE?uZ@)U7Dbjm z72^vUC#RyYqUW%v!jgD&M#RK~ZI}2N4U<`*6N<)CfLuirGTItBpA#_~sTx9A$Z#kg zb#B3-UfmG=olOU!mh(fcwbHfO_4##_h@g0j@q@|gv^*HKJjjvIPffRSTjLN*m=ILX%3hJa*PfZ|%&=ce>@EAbl*Hxi z8sJpFiT6#elC~I1etC0Y3{3qU$nX{4g%LXxr^uww0v%pNVkv>wO+lP_k^aEUn zC8<1I@6jM>K4_PQ+%r(YDNc0F=WCSP;vfl$gWuKcTZ%UpIWTUaj7f>iP01}Bx9;1j zqakRZp0e^)ojGfN!Uxk&o?5Ri>chWFe$?8K^ANv2{9RdNkBk#hORx7_pj*a4KJzjmeb>uxTYy$;W|qLH3h==lE_)D0Qd0pm zF;$^S)3oYuxVg6Uzn#86Y$Nc*yy`Wjy=0F9NH!|6g;ViWsc0|LxXihS%D)ljdt5f6BO z<}g9X0`PsFeFC)4APWH?MXM48A#9pb(Hx_Zv6kQ1G8daASSGM~Mx{vIloqSs;ec+a zDSM<*!c!$7m1@MXm$v+GW?@QG?ZpI}*ri6MX;dcis*<#1n@Fu)Of~9=swZyOWeE#w^vTZ^t z%(1jn(2vuaxjQ+#O5a9tt6*nu>Aa!D1W}%ha=^4HFUMCR%{d@V66Fs6rDkQVkoro7 zK*;Te*&`g<0@9Z_J-AQ-=El*2$;AS?hjN5-v`@5YFj?%Hk+hu9)QI-q@g;lC=d1Uz zb41=A(rH7v|KW!8IU{utH5gI-gp}~VwZY&ini{GoKnWg5RqbfhS}B4oSH4k4qX$My zJ6b4Z2vxCllFW7Ehk;DoR9%0(y!p4Nb47(VnjIO zHGMnwf`Q7|#r%&s9Am zE=n9|-nK<`hTvkFX|}b*Wmg@Lqr^_}Rn;&quafnerjlJzOkT%LY1LX&L7w5`a+j|P zlk;YJsTL9WoTu+V9#eo^RI=@d9gvIiR%aj?m_zXw%FO#K2SBkMlCM7UTe|<1U8aNB zPwb7d?v-&$1IZjQsw~K_ z{)Gy}Oc{BZq$iB13Y?#Gut?F_yZLHw093;dPtttB4;xA9cmNLETFxgdLTA~#!8}zF z`99r<);EX$zPlipSzt3qHuu$*RDW;8662&3se25S>B9dsFheS87r({s^WrSGl}RD` z!jI~IypVhV4|Ul$q8dqS+I669P~%$holxfdoZo0h4oWCTu^g8S>CbkWZ`P#eV1rJu zEmvKbDr;mF|A%PRYOfhk+?L;vX1X!I|2MVBRUV%&VhAkTK#Hh@mvxswLp6)TbF{iXr@)S}w)g?2T zRdY7Q3q^ihUjEcEhcS(s7ZXF%EOtpPAe;IPA%R)$HL*4@2MJoeGM`F(vq9fpONp$* z?v6Aw%L`_xQ!-HWWLSm4C;;nRE33Nf@4KoXN}z^jP1zq{``e-GOd#KAWe>P89_>`2 zLB9@UGH6&>Gu|so=l7SURp>tLiYfoagDc}2{QII#rqgMi(d&r>+aDBirw;T-MgQ#8 z6FfNG$NtzH-57X%Ki=N#y*Co{|A_wPV%mM#pIm;fH|#l`7V!VreY5)Rx;6}ad|J8| z-01yU{{BBy7v=cm+g&mCf6LkjceH+Z8==+|L#GWc|HGr ze=C?Z^aEaCf5rB!-|i0ldK`k!F7fY-h0n)8C5ZmUi|f6nfJud}D| zrDw;$-|t^UaaSx`LSJ78w(neNob~NSJYUB~S6U07_nz0i0rz)T>z(TvN_8JsezKHh zUXSfU-!|Dqy}iEfzJbqgnqT38X0YF9y>HVbd0-sRvw=PS?=xSUx}Pb%7YcY!S_?7U z&yHJyf8ON$-X3iHq65Ego-QxXpOxyidOw2~0-i6PzMh7CXXFF!YXs-d+a2fEJCOsH zM|>ub7dFo`+JyxExM(c|Is}fOu{z0+8hw_7W*aAJ;XJh)*m%zN_GgfZd^OS6>Ah2G|2%s$`!reyLCzP!$>~>ny>6Z{ zCd}#ABK`8DEpUgr6=8o_L?t!~)Tbia?)iAWhWID=g)FGJZF`)*$0id>t<}uD&X?9D z1fQ{^$(`1u*dJ+s$1~boBnJ~fJ+OQtFm4H%(a;$y*hYI1oM+z*<`<1hqCg7imOog# zgQf}#JcH-&csfy;w{S0#Cvwu=%%>tAIY(0e zkcYTJF&e-kRA$naW%wYpEQ5hpz$I`Zxh0&A=qu?%W|9}oi0ig%E`m>_9^hcdj$pME zd&veLb$ZEG&B-8b8%F4onx%9_e&WFINHm8t85RzpTzg)fqkM^r+I$at4Nw05s93$B ztR;fUO$k&q(VN#r)y%zhPcZh^`9nxK8^KZ!(vf`2`DfrV3RuV@A6I`p>N;p0c=+nv zuwxC09Tt!!uGMZVj;U}8uNBSk%g5Abqi!#G%oiqnW}*LW2kWOxYLAcI+JPvi0W(g5 z&TZEhFESbN$HVE>bozyHZCA?8!a<1XWZLYy{C7GnCHHed1|nL6qc%3BGorB!v^M4; zwEu2o&U!+O(n>5Q|G*Hh?K|w1JXes~J5=DU1j}^S;z&1m_qD2RDjdEjSIV-UhtyO%YW`%fbC~%BmaASm0 z@N;+ic1kf#Oamud0LcoaR6gs)Pw0#$H53sYn$G!QoqkF+-DUd%G=SJsbBG+(^x1u? zX9#A_a=%5zh0hebB^z%luCSsH4Yn-c7=+#(oWfo+h+G7BH>t!;5;|`Q)D6pg)2szz z@8a)9pr~OWAyVgEHPHlU#n_Js*_COZZ)1^%}fNMnc&sGxUs zh%l8oO)x(_Ng)5fH1n?1wm;uP(tl`OVQ{>=X5gHJy{u_i0O$Ykl1#Zo}BVF`;JboG{4Q;V&=9a#NFV5)dwCwzED^}@G19~ zVYvOi6?HLmqf(3}yWq!=r&(lUaRz+Y!E8i}8`EcmNl?{wlV5@Ks2Ygg-g7|NB^1kb zhH=?)&0&ghd|PUbC?hvHgofF=O|1Ff#EF}g8mPXR3Ox_$4qu)at z_!snj`sOxt*E8R$fGl#`ITZE&LQ15$$VeP`1_gYpeY8?NCuR$+7`gT1g4iEX{yr-@ zoR4Te3a>rEmgo-{#k$a|yNNr(M!K|%s--q4ZE^}Zcyo;6)+Z@``x#{^B{kRAW#IoK z>0k;F&l|_Q=C)YY99Pfsz8Yw`5h*klzK2fa^ar-jkNA4$B$CtmaV;iarhD$@igK1*OJErRvq%SLP<<( z@ZmXI%5=>|mRK)nV}g}ZH^J0Jm{UlYcJP^U#1Ck`rr*M9fh&ae5Q?PX@e!)uO!JDqRmHj7kx{ zjwk?Ps&#&&L?MG)n1A7r$y+KUS?_E_fJ#eiw|%DXXc|wxtMfqRFveqj{G_JAeHO-R zBo!^<6wMPPV{;JwHp&r+PcHODFxuB%q~n!gR7%a+%RJ&vk1~8r8&?Y)U#t_G{ihK( zcu5Nt+eEcLG%j=g3CqB^Lr7#ovBy;jzVsm4iBH){x^O6#=B;SWi*j-G(QOgb{UEfe z+Uxvuhhq%E#>wO!JO}w3a9J-B*HEy>f7=B=T_oB(7<*k; z2O61JTJJ>ogciHOL18a}!A-1oz4~jch-dOt2^cn+_yxe)3xiwguyMHu)iBj*mR7u|pM8Wrct+;+y19goq3Ea+EHOL{*1nL^ z+F+MmWqZjqlvNI=6f+V5%Z%rrY9j!aIsb@RP)=2V#t_2TIhQW*UT3*PWO<5oY4nrq zZa}4y+9N)9fl0IN;KX9k3p6M-`Y3awr$(C?Vh%6+tapf zO?%q5ZBN^_?Pvebi8$|lPQ)9rKUGC$Rc7s6Rk5zT)~`a847HrYu#YP;6uCt7tRi#( z0X81~6v++mk62;&Atq&FpimFbonXYiQOMF~{NV4Tz`G{skqr$Qh=VlV+0YP^Jy7Jg z#vAMHIU|CFKF{;Zadzpi{$mc<*%D0&Cw?xqkn``2cjh2`m&OJ)S{MST< zId3c@cE$%LMpr{VH?Hy7DK+NhUdfuMJZcHzf%lZUtR3$eBh#+y0pl*Q>1Gl30snp( z(U%Y_oB$6Q&1qDD6Q+UL8I*~#%N+@1O#JT1aWVMT_GFKxu6Gwj$>kOCmW3*++ zMRTi~z)yrq9<%x^M*kYG!%sKlK~DjPXfc*QT-4l3CHx`WgwZ?t8{6&OlfZha9g*O)NP&6|AE#<06(-rlhM-4Dm*7gPpv#3^Z3Doy~oUN+hsYaaCm}lw*R3YB@S-NMXJR^wafB?M_%m&1|Da z-Rjj7CTEx4B>Cxpa*B@L3iq>$$fPkY+$|D~CjP#_kvVmy{C~DJW1X)6Oj`KcQ`}5Ny zc0o`I<38T9k!Mk%T2Z2r6~`%LuoYqQG9lRyJhV2zxtx)eg?h~$t$uH>k9}4 z5-1F?UH?!8NI$YW;$xN?omD!71NxoAVTCjX&V_WGuP5=WFwAW`Wr8QVjzP$YsmMCx zX6t9&<$l57L7E!wT18DP1OO!@-yTqN(Z={e0!!ToNc@uob&WX-P~jFd)OIn!MC!r z?|$>izxX^^!i2^&rbFl_S!&k_t467IaiZ4cqGZ)+>h%tZmJn(m2v$4=a?k!>Vac0c zA{J5tD{1qB-W2|(tlB84Uy?8=vf!R>i%lD6p;uk@I7&-$7X{GEiDpe0`=5>*u>4Y+ zPBCq@)Qpvr%XUj$R|RM5iG~uiT7U3Ez9RUxcV`B=aBVO!nCp0ymO8>jC$S~yYL-Dj z_mXt6yu-7eWz8Fw0^PvN3?eJkr8RSo7Y78ZHzLpei7%GRYPGU{7I`fNR-Zvj5lF47 zWHzg?A*0wB;Qg)~sy-7_YfQmFdT-)F-7FdUj2zT!nOqz93nca$$z*#HY(Pr%Q=;=4 z?-Ig$icAhlGc(()O;n|KW0uC!63V}o`+zm}=HPvcsPaOV)HiK(?L_5h^Q+Q} z)v*6n$ddCwxLJ@S!@9nQ^p&b-XtGE9T=5NghFH^Yo;|HJZWbAb0VT34ar%r#9t5r8 z;yHw~5DTx9F{p!vZGG05MY`Ws+73??zLxcj=r zCpg7Zk$>@I)SJQ1>jugaZ8a4SY;ykA6}lFcXlIPCl^0FGz}JQ>-G7Cfy-9Wz>OW1k z;o8%#l@ZxT{lS7ozS>dHtR{P{6WI;CbB&6T<*o@;7h7LBPOL`>q_pQ>QLZ-LtK$g` z9I8_1G3g@FC#Xc-Eu?c6cUF@piLKL?egs5_C#ziMt6nOt-rO2yUrP!fBMHVT3W1ng zI#B}b63&7<$=2Uy+z;pOVQU+h6J%4cH*ELWuOFGpG*<` zLpU`t8pETCRn&Y%omM9!k+H3mhi#!gRnua^wrZmV4vCoNE8j;3+jy7~Fm#N_F!Y5$ zuv1cO#cbU)9`BqQQtPzUmd95TyTsBdYvdYue@`N1Gqq^bjVI*?X;dp;@F9^pUHN@Q zeFS|_Fi9PHWrwX2*wX!rI^oy5;vOw$4QDe`5x`@dXV{gd`KMuwKe(9Y7~1a^#otvjxQVgq9@A*Tbh3n+59-+xW1kaX31*AY_T44F8$T zZpiyW9t%k!bbdXy$k3PC!fQ@q#{uxo@w|D}bQ;#xcZ?8?IR+at%d>j|Y4UNVnhm2cUM)iq0 z1ivAW{Y;jRWeiQzCg5BS=lJ2ZzUztf7H{GfIDpetU zTVroA3C%07E$-073`ze%NeBFe9+{ZX?}dph(>ReK{Byt{K5|{K=2gGMiTQPp>C6s@ z?&&C}?%NV*#dl;hug>)JUJnyU;VX1bD3)M7zBxY&*V2_yOBoDxs z-Qg=;C4E7rmcL-tVMFw`>1-cwZ|n{`De4Y2I?|xNsf|*1gVx;Z*qreqIqLbF{^{NS z_Ui6Q@+S%y=j)D8FoEMf98KW$_VwMv-%Xh6NReli5s>k@=^qvqNdP(b~EE*_-}XE$jcv25Rd39{_;3 zOXZb-ZD*Lsr154rIDdP~LPqM zb>jQ*t?Dp7*s_LiAc)7g_<8Kw;j4%C^75kba&PVbsth&ad3Q647`-Ilt=F@D8CP~> zuXf_3)@$t1rCsxqe^I&Qr^Bbq>6c6I+@NEBVddx3)@f(0e6xILzEcH20PMWnl(u(p zDAdS(MZFOg=qY3!-90+>ZtFUnKe3%;IhkZGk@!D+IE2V4WZP}oy1RJ}@+!Zjgw1ft zX3g29#Xs$>_Kq$Qei~}y?GZQ}xArUQ9Pn@#yP zAWaw~@uZ#T&GB&pOWyxPkUxJ)w|G3G{23u@zm8!=#D|70^*Y7_AOME`8v&s5UkHF@ z&89M6N@uVs^Wz{()0G3V<&_6rn zy0j^N(o9lSTL9)66eGEkwmEFfYp0NDJIB+R;k zNg5%zoK2?UeB=m0y#}qy&e?1=U9=1~934_B#=s=%a^^fg)hG`6S<;{Nu@S*hOr7}O zAx{hQNuY{@hRfb0Dyw$M1ANHs4<7B|LznZKyz=Z1omYQpG8v&^Che3n%92j`5XOiP zFM*X+$AI80A?v7RJre>xk1$l0Vn+sOD%_-HB3JvFhN3)H{sRnHVF;h(_e22@2qY^a zP*nro5yog2-^*3mKrg|4HQAcz<`FUqC*BdLsVXXC7avrA+tG9YXJg^sThjFl^A!|R zS!g3m_<}kt@03^_)whag||1 zP~_d=`upe_4Jh;f3sB}CihyUy(iRJHH4Mw7{LUiL5H0OL&8n*&xWGyh*qnjHfdo6S z$|hdTkEsbPOl)xb?#6%}@lx%{BZ#q^CtNo7^gPHi%Vsu9nEOO|68dGdf+%~wSZ*Z) z1gQwlXYX26vOFNYH}LP$dC%2jM#x*4V2MJ+tf2E_CFLr&&$~WKPq{vVYWl!=(uI(v z;_|fKMX~=S`D#doyJaJs0Tb+lcnb9^5W1#4iqT%-&69B>~F zX~3l*qkM?MU8_c&0vD8FEo*V;oaN=BBsAqrQ( zxR9rspRsyb@XUw7xT8ls((cu)n%Juxy=v-GsETAqxZ(zCcNed}6O#8gA-{^be4+;n z4Gg{qvK$jX?-sQ9I^7_q9ZSC4!5RG8Kp|rlcXs|#4tro;V(I_H2XPwwpV(<%&uaJr zP*C&$3JS{q8#~>c|3^TPcOc+Q>OlmQ7S{2Z2g&_AZq7NL$R9pk6$nhBi8Nsp_)@&; zOj7kZpB6MEipc+vfN4a5dSucm4jo_u)}%Z?Lo7^A1+F^F~xN+~tUcfk4973(i`<_hhM!(Vvmgy=H}LDu!S< zPd|>1E(TGBja0!mugvhA^nTu61cX+9w$sDz4X8aE$2iL(5X#T3y4q&-Fja zvo2Vlc=dU0wgC;e(1E-mihl5{e^TmG6W(~MWQc9qC>#wTqHN|YkvtFIjGlvKy^iQE zEa#vTNJGph?BUoXf^XTq7BcSGM>-gSxiDxQ5m--#SXcKg=OU?sUtpoyL+4szA#%HP zpq;!i>jm-`4SrZ~e&0ufg3XKzLiRFXRU^6Q+`7RU`s#b)amPX!=@EEx@7d(A#*@ZC zcSD8>2aoKdgLSW(8&_)kty~bz5DSxog4t^Hh!Kd-AxPt> zP5Rm-w61P%ovC4~CM*S!*|rZr6HU`DuLmr0$__X%BM1)UjJ_X)tl`brL&*{t=Zro- zG>L$;pnnvSF%ZyM0lAC6_3OSe$3KmZi{p)e5E$(hYx@WJ(4J1Eh)j)Iq5TbSsWAjb zuwLy`2d4_A#Sqrg?#IVknx%;y_3$Yr@pE0m>^x72@B-Blb=H_1Hl9R?!W=KmHXF9$ zAhDztxrSl$R07XwCAdLaBad0dnS4M84jVz#P1AGbo9Re^_aRe}GOifz(Sx?)0IA#a z9mKkR3E5Niu{sV?WI=NB&YVrouJH?;@ZiT`qohDs%lsvplSycR*i~5#vm+K&mvSG$ z<^Zw@+YdB7@P{IDXQByEjH~ENhK80QiiJrKMEHmjVH|O@6%?jcGeZC-jZaqs)Cfg|CIU;1SdSAEv-vPu25P58X#w`X*^NRb}iKv3vxW1h*9Jg z+IAmTGNNC|D6s4-G>#|-xQiOShFq>RCu^`?=W}w6`UM%1!4(y*Yr)*OVk7;W*zkp( zzkbZmNvL?=fr^CdsN*E1s5QBSpB+`v3UL>kaCLzgTYT7{wo@s|v~_QXx~=ENlNoPm z{|=K{g7JXC?9nzC@0>Q1L;7(;?Mi79P05R&cp7ocr}oD}%;S=UOkQaGbroXrhA~IBA+EX)O2K}Sbu zFiv{XGXG}>UHf89J;P!&cZw}&KSN?>_0O~0af=#OZ&Ico-R8d_R!jq8u1bjJS_E}m z6P#YScRgZ<-UFx^dWJO_4;&d!wg`<#&%go8O&v~LT(v@9O z({}GFr&9`^Y!9q6S?i=d*^PoSu%rX|dQOwTK zhI!q)TJE7MK1O+n)0`9BoHGgLCUi`kq))ae7#9akCQr6WXZY`bc9NjGHOD?KLZ2JLQCq^1Y$m_5Xtg(xD@esq4 z&oDB-sCM_mhZ7cP)^|tZZJ?K1QW;NOt}4aK%`gTJJ~kFThwOTRq`1iSa^@5o#UfuP zTw>G-)fIUpW0{`H=g3v1L&E*1RbQhG)IYCKrXWsB1ukqHjT_2S8|V&-A#D!3`9C%* zOjQRVSuatjS?PRcBQ>nWyy5a)tI#tSHB!eb&r=3p@-u>rixQyOP9*#B0ZOP?&9q74 zVfZo1$?yvO27&qoNY%9LaHKq|J|cdcL&jIbK?d*&85l%BcZl%2Addo%g zdS?MD3;Q%dIfPxraMe;lr_U+-N?7N_ztzXz%VK^DT)`e8$6H9zUQ&=2AMK}7j0ps- zz_XA@dcJ|XE7+KN%!m%0wY9P`6$SrPlBuBcz?(f)E#W(fF&=o`AH=;+n~6JmFZX{P zsU(Tt`ck|LjBXBh{n_Fxs(Gjs71Ngr^)@CwLgT!fIQ00>nT9RC=CZ{_HjJ@5^$#Hm zWxKw>Oma*Ks_Q5XI`kGD?<&#ozeUjGD0pOovq{*uhZl6;GzE3I#?1b1oP;gGc?iJW zb_J$P4()gPQal&}ti&EudQ(2z(?!>R%K8H{q|XtL#W5IvrCQWgpPF$=HBk3wpE=BK}-ab+&Lp3&tcWIR>~OdnGe7 ztdnM*@mj=|GaCM57NFifH~np0#`e~(i;|VaYc;l06p7YAorPevfbci>-+k4}5XZ~p zTC=#w;aI?=EM> zb+!qhv51f_9q0CBwS)ASoGp)v=r*p?&37sldH`E^F_!u0thy)l0ng1oR#IPI2u};>-EUoAzMyXrIX5zO8jDUumt|F7D)hUR$wm~3y zm_s5+pjSU$YVV#!M{i%Ctf%mWq1I|lyD}^=K`JHaTes8?m%z+B96TGE1kJM;9Z#)LO z6{X9N#w2b1YsgSaAYFTYM~A%kgvlB?^#KwFMF-rn<80k7W`H9rJ4&@_p~EJy*#g%s z1Wb_cc?t@JBW|gLywoZ)Szf2fzSE|?g)&n~2jdiSj}N4lvyHX>dL%DY8m}r$wW-!< z#XXE5zA_Go7;8MzjN-2qCpm_WMIFPzGp+JG1N7wLZ>{$-1>U+G9xHCQiAnEb|E8LC zC$?&!aad@7ntG2Y1`*Sn$(U7|drKVUd72XPkRH0(5J&0;b*{lQJ7|H4WFADmv z7hADn12owz6!$tI>74W+1-jtsKL%fcF2cVH*&5@;H^I_8BOroGZjz_1+p z8I8Q=F%!BFc7yA!jqr%IXI#`k-DPk{PO!GGB1OB=UM?5Sk(0Yc{Oe5` zs$k=HnI>$`P~TqxT;<28wI-ZEbmN_&JeNhD%PXBl?|nH)IwDU|ly9BI=Wi2nF^L(Y zb$<$*qZA2wrk@nxFzzHg?#S&L}HmkV$K?BB=Gf`vXAvAabH&X%wN4kYQ3=q%qEr?K6?_1 zmlWIZcb1~p1q)$wZzh^Ob-7-doTY0Q0F7l6R-A5mxl4!DMe(^EpRI8g7ND`bZ02+L z!@5d|)i2*};SBgZuV|mKXLHRiG){9-%C3L{U5d>|xozI8TkbTrFDnhxo@6GJ&`$r6 zk#VstuQ=inrCauH))`b=LI1mD(B-@>Js$&YU!Z~84^;vPg3Xav%XrJ8wLOdpGUBHD zNY-F%hsYw2V2<6m%JY&?ojv@g^W@cMu^zm0(Hqt@4h`R&B8J5z7#DH892=swHNTW! z%daW9he(?Yr8fy^lETy;;fL)RDZNdLWzZ{$BUIK{&N*A<-V=fYBK7Av2}YI>MAkK- zWNf^l*A z->*-9%DjU39AuI?H&7{gRNNGZuWt7IS!9TwN@hXcLewU4By;?K42uS-qD04$L)`=~|-ec$G zCW_ZXlx;6MCf4DfG@!6(WoY92pahtSr z30nE73RI^lzRyCs^=k5KTV#%jGQ7D*fm+V1x*cbiG2^%eKW+@~_Erx*{?_wXn{rYI+@9U zFP7O@gvqsJ9=pI^)qGH!^M7cMJPmwkCiLLCd@NwYc@p@1*JHn$WH#Q+(pqSqPiqw3 zE48t4x>Sn`Yg_3|<^ctX)ljkkZp;!DL-CYJz<$gu_xxx9xn^q%jZ7UFMmm=dI~Z2} z3o>c@(`V`i%IX3%UzxI_nz((J>h@fNFg8V7#5E#3+6`@^W-_B4CK;bSYwnxb1y6V4 zulM}d=Sz{Fnf`nM6{pS2}ZN!U9(b@^fv+3V#v^rq!Yz|vLG+QkGd;ISCbY<_h z!$8fTZ|xj+UMJ(Lz^~ubm#fh*$cjF*p7&|XTx_dI|9fOQ50~8eF}>BL)LQx0+>y=B z_B)K#|I;_)kkjm{)C__8Yi)qsT43#(L1U#cTg!!CPEM(#K|%f~>BV7(ihXq&WBPZC z?I(aa7X5}-p`d{IZhZ50SifewvBUR`sutF7n=K}<@vvl`@tG7WQDhs^d&8M+-i}Mr zIn7UR=(9AHeHQooksUJYuXm$x^OX|*EPEjYyN*65;vkv)Kf!5I1`Ns?Ssn5n_&#E; zageeveVM}=drFVkb%M^Inb_mXar>6f_av9A*J0DvO#ZIbu0^fb;+F=g z8$neF&c?S-@)h3$DBN22_y>31sY$>08I8)f%XiT3Ina=(-2UW<` zZmt%q3!f>QEr%heu~ezat%;5BQ94?ZMyObMLlqiD!hzfuA#~4?0eBv3o}T=S~aD%kg*-` zxXL+;V194>8Qx!2V*1kNooA1 zJt4dv7oJW@hm;G9S1hA7K93a4=emD03*sq6fxvOn46}B{#MzWGf;o|fw(!(|E|kFMPMp(PBbJ!T%hi0x)3A;FC!N9(&uu`cUr#infA zwHI^3*H2Jpr6~+)IFkYkFe4C3as@6YZN<=S`M>0*!2EzZ@_06(HxvJzq8$9GVGkSP zX@Z1{^7Q{LxA#%Ws<*Fjz#Uefw(vG`Hh_QF6|GdWdQdUaUDvKLMI%XBF_P>GxJ78( zB3seCe+nAd)FzR(QsnO)2>6F|aZ1lMt{WQ5Bq_-7XAXRL)5_9rtrffs5izvQx! zfy^K~SeR1)a>KJFYxZToZgZ41|HopRs_XE*&ekDi*L%uqsBViqxcJ@puRFSKO-Uut zFR_J?D};@l>wFt~Wvfd+rfgRHfL&lH!T=x;C}JTtk^m+UD6)WGAW#$mjv!D}LTuDR zAI8F(z+f0cmcU?`L|K@Bz#))~frKHD%z*+SB1$1F>w!Ty`;fW%6p0|APJsgPcd-ce zbJCDw5Q#p4K#+*QfP;{brjdw{fJKmruz&}UiHLwjP@IHmNHfTV3_(ET19ri{@&YXX z1f)?3C4hub3;h8Jp&?PBi!rPL0)|Cu01}2pY6-Ax3rJ%Sx&;Yg6aoSbVIsm|{$mD* zGzL@vhcpGW7t=!_(B5^Unr-+M` zzTp4hI`MgD^#5QC?JiOb?HN58RE!Va?oXF;ul*{0|2FvFTOEd2kr;Xaa@~pu5D=i$ z|Np#)oy|=D+w8PqkHwkfikKLzPf4=qz#>L}<=}F13pGMA$ z;YS6Ehpq5@p^w3h6TvS}4;SVwLI0QU4Nk^u{q3zDPiG?y6P0xl8BG75_ev}8&+qG{ ztFNsKoj1(ySa#nPzbE9CXSCUye1CvkR`b)@bI17Ikf>qHSepIczNgpt+sCuTTeP3= zx2uhfm79FsF8>c!48ND_wX3hIX`dMxzlZq@tfwQLnCI){9W{N$H^UB}ul?s0O3Y*9 z_udUeO#&>3@uTRS?f{LxL-f^eKPvp|wfI^8j;~~koPn*cul#Nb#Qgoe#uvit57kRT zFOPi-hwB^tPt2F1n+cV-o#CaEk=}DS0zObqj$n4}g9ig1(4RlppQ(6*yEP7e4+cFK z@wEbssPPU4pSO^KSBO8jh-K+KZ3S&PKTUj{(%b&d%m=E=BJLESfaqbtaBdg194gL0FM%R|D#O8n6;{D-V0z7!c4Aefhibwiv^zQFq=rH zsO)_7OOC9V+`Vn`c(*kzVD}l=KJUI1-Xb8#Aj$da#jt5T__&Ji&DO*Ee@lDhqQ^!b zU7ugP%+PvrJ>S;Ldwn=MINaixS7>+?n?MwJb-BRGD9(k4Q!sUMqgO*FsCBZyl=DCw z;kXf3ju0p9=9fC4tIA`hESn3v6n{6hfDu48GV7{m0=XoiBtSjEvTTX#XM!?1xBB9+ zU#(z0X^oASahOz^MB%7;M~r%PVfylB(S^79(!+jKQ}Dn|G=~@wiL#x%qCA`oEMz$|#V8b8^eLEI2)e9(GGD@;o~y5&7>GRe@($ z*QcsSobDWn=F06c(gbN&S>q=<*s3d$v$XmNJoTLR%8*R|aM7-U>I2;(8N|h0lmc)_sfyt|CX8Do-UI2IW>nuGfs>Y*gM z2&VuOfGmecW=-#^pFo&{cfvt_rB^caBRO4Lj)rlQBxq6zvt;lNEXJ0hz~$M0=8hK7 z4lIg2r-=&B+tbc;1^N!wlZ)7|GHhk|b+Mah;MBa*{uR%ubx+d`(Hp9eR<)&$An z6;aBl&N&c#7vvxeVyqb!LMQ(Z18%@~=;MQZd&IcK_7wyX5^dEl88q*0d2224&QZNw zu|>~DWx@SCx5p=q&JB*4kSxp42(EbFD@%_=Yko2%F`-OOUF2r8u+W6XDpfWQFy3(9 z6Y96uUht0)ewC1`CNUCaB+;1gZuO?<%xJDuJS(&M4H!p>f5=Vo5Z1Vb`4Fn^uQ_Hv zs%D}jsOAA{Vbqir@i30dnW&{v(Oe2p;cw2@ct1RiSFl;5Zu{8_vMD)y~K^$1-( z3DNDOS!nCMQqt_S$m}MfT!~^G5wb?6NW8SG;?;w?io}r{4Kpy$eY}t^fd>tRDi+{% zz-bQ=kG4Zbndm~debHsd(xAQqv;qIdQw)F8w$g`c0kg%EYL>OZNHqrOT|S1fSG760 z2j|ePCd-4dnc@m(phwUF&tc4S2c&a&41tpG$Hq5dwZXec`tYa3(oiX{B27)>f0d3s z?`RPq)+XgU1bAg2CY$q0mj__I@TWUa^^H~#4b|RW&2ps^#c1P2Ehdjl2fFD4)2Bl z?+2l2H3q7FOM^)zmD7haXnbarJSsvUNlC}=&SSyUS38Y#xtqbD#Q>U?p$C71A?D_b zEk4*O3fhA#@f14~(U9|%w2WiS5JC4*CoVcA8ax9mfrAmGQo1WXZj|9xpI3qQ(c-uh zr=aQW>UDh%BnZ#ek67>sVk0%WsEk#vZ-%hz>^iV;u;hXON>aN=DYhNnWeBB>3OfTQ zjnxUm!(()&bU9DDQ9!G1u!pWgKUz8%sOJhNi7m|-Q#@NQ8($tzV1an6vIXV`k+eS) zku61r-~u8@RaS(W2LSTPs@xqm7}Lk(@7)<*QV~F;K)+m{hFCxt21I-N?}Aiz&GG)J zE>SjafUDUSao9Z#Dd~)q^gxh&ZPpm8jooTrMa?zwuyEa_@qm|!?3-3ovq`h>RXgJt zSg8Iezm|MuN6h|2xk)7>Y`iQ(w#bIEC;{}ae=-wyQ<$nZwOOyG>qyi|4O4nkNWY~f z*x@5EQ0uiZFe}U&HIo#@W>K9(6m&FfgD(17AH&QNKF?b&J>e zD0O#ww>S3Itl{aGsC!xjxkne#fz5ox?S58&GEX`K9J}e9@oS7C)67iD%20TPiqa&V zU1*WBu#kIBw6PG;q8Rw*=m{p78hfAWB6wR8ZX#9>k(>qxoe&33FekCc$&20t*4$I% zb^5>=t{B>xu*EXQ*V6LKQ340lK%Ww!a}R@xFU%cy^#}i!GUu#ws5b1eQ zh+!;4;q*AOUA^O{Xk?T*8_z{J>jFO@`e2vvRTnzhumoF}zDuA_yF9Aku69rexQf@4 z6HdeN~(Vl$^I#vR&$9W#yR{Jyy-kgRUUA zmU@Y}+SKusCm1oF@iAw{g)+qK$0>M9xRd&5%F6B|8(V67AsTFFYiDT(9YClT7M7HY zMyrwb*!zOU&}~{`jh;h~*d>$Tvb`;b(`ys(vVHIvvs7F|lD;?Q9Rc&$#+gIG0z+*H zp;iBVVn<-IzJt3)BeRm0The4OtrTwqrznTy7ms$_(uTLq_1@N04zqz6P3@5xQYIr3 zVQOH);?{dyfHkxD%Ys6>0s~U?hn^mn4>E+it(`*ZvcC@9TY5YS11C;jA8WTH)pX<_ z+kj)ahmTC@+yo&h2_#6mghtyzplOP)a7jlgTZSo08nV_c7~DuamJj2e3$W0ZZd@Qh zKec1SXmyAQtLh}P(}p5oe8T(i4mb)6LvwnnN$)(jU`7s{^fZTqCV}GQguTS5-ip3x zw9^Eea0F2ZS2$CUlXKgoWgC(%f;iJ=jiNE$5UZ~cnUsZ5VBs)>pv@gP>NVA6)ZvB> zsGUkMo8t6GaHQFq?4c-duwukU?_I&}r|w0FFkpt}p=BMixrWV#@LH*zebd~Ptu3To zeG-y321GX6(-vTzB^d`}@pLc16ID|RwhT`qG))jFY(^^n6KEF4+K-Vd7b<+4rfyBT z%pQf6szwj{GLL$SP}B4=_`I1NhuWGLaPD2?Eb7?yoUH9lR?&BF8e)$D%fEF4fL1X# z^}Rxe&dw|@h{qt;8?4~bEe(z3K3Of{yv6Ibvlzm(M4y|ypq~folRK7w^f#wZ;YOqr zE00>1Mx>8N;Bvfz=WJ(Tzit+`)%a?HJkCLp?~_1H_KWxI|JJSbGU;6HaNz@;K#kP%n72|lv%=!l29a_e{&SVd@7 z)Ff;xw!MMAm&JF3l8f7E?1qbqfD{rMOHbMwI|FLZK}CcYBROC6rKs*X?LesgGewZ%NpKLdCa<%C`Y*s$ zHVC^l1<6RB(5c%)vqA>!JHo7gT?yiJK1u`>rT;*_T8&}`3sH2(s0uZPVDyAuhgoYt z&xX|@GhCrN8^u=BjLNtDqi6_qKLorEOxB>%pQ9Z2RyVOGNlFg);UD>eGK&^dx69ov zgV&|1w0sORA*Z33*V3fPdvV%1BFeOyZN{C{XtA@xMvAg@+3`AE$B={xutM(&*OES zXi-cnlqCWFNXoFT=xvF6Hb$|;v5^(#%9Thxf0uN8uO`Hk^4F5_x`4h7l-4>{q>YhI zqLDHNIL*vJxMFSQ3J~kJ#KJj{;iH&i@UCUqnzb<+fX*x{)L6-B)-PQx;}?O7mTjg$ z#1r5S(3pDI$UdlmoHrw)ILHXs!}-t-Wj8PwN=;G?^(YySKvvO}*sI>CmF8z^dPacN z7E4DAH&)Qw$L0na+j9qi;Qs(->o1~RJ^^*R>Ro%6IlY3i|0VOhzCAGDMbP5)GL6S1 zP>qdn3^boKeOX|lM`B?WZPE!sr$|b(&b-3u@<(WX2$D7_Y38_0vjkvdD2CZKtFk22 z!+cHrTb?Br$#mb)U%6(uHmKalfq+I#9CXXV0`Mzxp_)H07$6T3~n~xjyvjv@~@oNT&29oUen@e2^W>MicX;>pv-N#a>{eb zxRM|JN0nQ(3#^+RIkW3b4YE? ze(Zz)#+0CCKC((5@Y;p%Q{%vTZlUGuQoT%%TyjIph-YO#qRN=@=DD6eh$KK`IFeGJ zG&9}rOXdcC+Z9p2!zVi9uT#CXDc#RSvLnaMkd>w1;A1lSYN!4^ElUXZ1LiK=8d?fJ z$ZJG%;H--3j?e|GjK_iNvq6Nz{y3Ll;c-(>F(0dYts4ozkGYjN0DUTF6Yt$p-QY;l zuM(~|#hl)MJNio&M>P{TjkHQkPV;VNwKJUfr+c|ulgPX>iOa9fsq)ckk?mtH+C*IN z_m$D-uk;jMCL=V{gF1N#+|~(76S)0%db)RZty+ErwL+US5t{itX@gQ|t=1?ui@Y^) zWNvc0uf@a07B*#k`x1sKIu--$Ak~Y0Zk8U7sxS)F_wf{H{pWBELMN%RQ@1jGVxHDUelRNsH=Z2(`>|9?wUkL}7YOU;;%x<8aF>Nt%J zdTR{QM1nm#y2VZMaO$f<&c&ImC->7HGnOn~KeJE!Mju`~zqyuloO|uuM_XS;r`dY> zb9;K|qdGe~D|x+|1%Fe6nRLCrydN05={Tf2aC9D6wd*W-=`Pi-;@75Ke4V^oH}7D) zaK;)~MCV+lZFpx9p0l@aaoPYpP26jJXW=i4x?5P38nPc@Z-hq7OLXyN7hm2kjpZwg zIW{A)W^t)+ojd-drq1iO7v_zXgSgv?qh)N5NoBL@OWp1=PfVK~ zp2MxaCAqVwC$P7B@e!V`*`^i49mc#}bpOeB^Ss>-j3IIuJskttjOLFN)@J4tWp8!# zjI5}9co7i5iO)9yTv=LOg9P%_1Nz-^o_ylv+UdI2rRh3eR&3-7F78({Ev~yD!DzR%C zSr~RA#KBb3LI&OV1d%v6z8U=dI>2wF>{6I3woH6RHy#D+nHYDgj8bBjW;$F#Bw}N@ zA7;K*b_6`I9P+4-_^;N7p4K*QR|p)6Dp_2~X+-*r>sbM*sNP0NUD?UF8Hfl-_MA={ z$Sg83NwYs9jYhVip@nQBUI#wFD~)V~9(lnK&(JEHTubYfEv+jEUQZp^c=s@j_$x-} z^Db#x+xMeOYgjx`x~QH#=pKbCGYRM5OtQps@$vs->m8#cYoc!5vTfV8ZQC}xY}s7bs589q|e1aYm4YOMX6@m0zHk_#HP{)6r$D<%=5(9@3}^}CPC&7xKY%zVB^YT^NF}hl;uxo@SO<%|11FBQ zHekF2JfLyqbB$oEWaVnUar_-O$z-pKX?+|}z7kOEnpASngH1-z0I;`^gTik-2i{UI zkAn7XNrVfuBC zFjuYi^F%-t7DFK96K!%}ITmj_xL(5RTrkNb@L?$E;VaT-O9Ty0f$^ieYo+T* zq5>UGdNZu-S&wUe00kK3yRZaPs|o6cnQg?N^z5z74@{`~EM*EG+qC8UR2FyLdoAIRAf& z>1b_k`oEIGX>Tjyaw7%QFZ~!d`%Ox3#*M$c7Ymj0T9wGuDxmvuQ7fXQb94!HC05mr z5C*Uw-iHe%F=>*qpx%1&TTz;xIIv zvDoboaOlr=_j~p#OAB5Xyxqmm_djP;FkoP;=cLRi_sg}2V`Zq{Olf{D@8j1uoc7PD zw=(#>ynH+<9-w6SY`L8Ad{Oh>b!B~nlHup$s^oDhkhO^FS$U=iX{cG9ayj$yy#C<3 zo{zt@*K@Bdeto$*m#@D3ZQ-?0pPs=VFnrsQlECtG*(!!4u1P8QQGI#ull2)7VQz6y zSf{XB{k$yvH8gwb!aIHoc$@P+H6z^H`7W_yNcdX)?J5fKFhQSN@%#zXs(%|>+IsR- zpkt8tEQnyEuKDvK=v3a}_{6j1L9vIXcLb8rTTN5V`|bSD`ZLPPV%(|oWrHJ_b2xlB zGq-F7vt{UmCSXvXZW(cuut4kbU2TbYo*xIxw*jJWCCs+)X#gvi30?En@xMleGA|G~W7oj*H z-*!bJ76P)+8i21p5^{M!#`=af%5!_KTrq&dJ~qw3% z#Y2xerMd;~&^Y65RaXDTb0cLhec&`%mZyV_sw9l}m_~LgYYm(gP@~6FXFdsx#f$D} zd!#Zc7}fqG%@wL0NWy7MA6P^Y37(z_u1*bf0h#C+7z#>;N3;(F4JpMXGz5%-pth7W zQ?YIm1by5pZ@Er`AX&r}533vYA#90WcK>B{^qG4^(>?iBPc-|AvmSo|f_m#QB8h%^ z-mW;MDu7ZtBlntUTcC>EonkZa9>1X`DvaMWzt-`+=F{Sz$vpGtr2&>h%WADL#Cl%C zrm(FLg4=Ar(F3D~RG`GK10tsw4W^?|3hsLPjTkmgzs-zrl4MD7MMRQPWYy>*skLs9 zkDy6T09B^t5lkh%>Wq&9reu;cNWED|AdH}1TW1rEntFp2M_ux*Br4p7eVxI%Q$3xI zs4RroL+KxOEbTIG+hjP-JrRp(48uIbjA^u-=rjQacPXM$nyJXXbRL$DMCf>%T9ZOn z(58}=pXGumOsxlp$)**RbvT`>G$j>OeV|0F!^n}-S%8>nYD% z+3g5JB|ARoNO-|%Vwi-QPLbj1LG&3uVhJI(foj7 zX%uqe$P7jmtBDp>)H1Hrk-}o*pzTJ;xr-2+Of)W`z7s#Ls#vy~p#o+F?0kjM$9lzK zOoI4rpcXtUWdHKRBw}CLzACj`7VKjPc$B;kROjyXuXJTST<8= zZ;MM>C)Iz+;8kzpcG`4P8iyAV@^{OId+1OZWjNr~AEMd-5=Fa45fKjM zj1=m-N*hGYVL}&&Q-Cvu9HCg@38(Pn#S>%L#hEIiEhL{1O&obJZx#08uAwp1pBjMD zNotV7q!UFxMM1d_7E>ZJw3rHvoD&*Bbr->L-2x{0_5e;YLP3I#zP0-GZbzhI)+Hw; z6skZmM65uL72Mt`4E8`@2N$~c70e8!5>7P6JZ*KxGlz!qJ#hN(TRB{S3KsP(652n=Ej61p+fDbH}*HL-3xV2U8b zhvrEogGkqAbR=Ob*vc_jT4AU8V&~TO5PO>9k=A+F6liX0T&R}?ts7R zNdBVV9@0(N*Slc zd}`)2Nir+_qjhAg{?Qz{CCkmAu<)x4S&!Zm`lg zGQR2X{bJc}07mgR_L^D$f3KAGU-dRe08qpR0E$5VKgWHu|5+ln>ghV*b0+&ECjQLV z`YnK5N4DE1llmCAuM7a8(m~A)gM1xn{Snhz&uc>`1AaI>{fMS(%U$a(N@7pU`Fl(clY~xw3^V~u;17D_2g@KinHFH@uEWDVCKWYV5jHn<|SLx!O-yQ^NWAH zv^wT|W@@#4j$vneXKM?9MijiP_VaaX^(U;C`#z4`<@b*MdS%=d^!<1_x%uec%(ldI zXXO~nY4g25t?$n&D@XLGceuUX+4^JnhKu{=^Kn6na?Q*+JA?fE+`&%es*`fZvpnr9w^q_gV0R$dkMIL z`CNl(TgJ)%o<|Rrtlg8P7U+HFQ{?OI{WpG#)h76<$d}W%Itjmi{JHpWLxKHsWzsfQ zvxxBk+pmkd*digQ-M&H1#Y@|;iS%$Z#Iv3VAe;anmNO^4_&5el%G@-JJS;#P>O4~) zT1o*&cx}JX;3YQpC?@{a4BX@l7I(bwwP-5F;Scy>mJpSZwSaN@(Fwx6falqyf{|V<)U02g&rdz=>(`(D zZ=0LP$=X8-y*uMS>vt0E+Q57+T80x`P~)tT1l5{W?E+4Oo8i6da*@9lh_38L1s<}z z7%(jNhPH_FbWRwY4g?+oY;$-+QFj|C4!vAEym9$|3l;W?Xz`~fIbAXA3!rT@vf-7- z@rh-4T~Zuy8wI)l^2u!ic1z4M0Xk&|x(e$Zk#cXlOojVh0PGp6ypUozxi~ou6PU)| znUg>zLlCF_$+`twVnp800c2u2fa>g?+5u&33#2d$8~7DSr6>Wc2Sre8pUr~c z!P-&v-g$b~xIB}jStTTxuI@jMyFwvj?kS8AN@g0+D1%{Uu3@B@YI}LmVkZHh7+wZ8 zhrbkwC)6%$1_+pd0>|ySSQQL`_4MjC29yD*(Pv<;KK~k#F>v5aQxJZjQh~@FQ^?t0 zN8etaB5({d*AR(RhW^b*U(+P0J)^`7<-9{O^23@ugUHCi0aW{xD^i4-HmqumON2XK zCMg&iY$j1qr>JL^7yaO#^@#@ojtDVd9GL?*`VoTzQX|9__M$U%rVZlXWr0_?9mO?z z*NN1g?9EdGPMT#X0*aKdPCpaVtzQLecPxeN7U1reAel%BpAci~Coj+(TYsNMl7wdf zECg`hs6d|4Xq3&IQ9gX2lqrfLylp{KFuENhkQkUVQURDg6W2S`xi!!Ta#eElTCJ9E z5wR5zmPv?8bP`T-bdE^*{7vB+C9~|#FEmW5V+6mi*RfKE%($okl z4OpcjZly>H_{HGKN^=@E4=5W%n2nUj`+V?!k*umvdC=kg7(~wrn^=*h=AtYQ+v}k>E&E*0h84 zKY^_7sKpx1HUYIt<#EU8Xs!`^R|Av-G38dn=58`<0Y2bcFq-{15(LTwTEGL`F_m19 zK--EpTm#gSK-wUGNg*U@zpBIsk3$ONJvPmRlLxq@AWgw-Z~X9JJ&96SpB|MZUwYf{o8TuS;HQ!dQlp zlYo|eYp-TNfj-u4&6>TG{)#w*}P)7 zNYGBW+G{`$RY-XjG)g-&Heeek2wzo7SG%JabXb&fmZ4!93qTS?ezUE9z_4Euuwe;W zR1=wX_hCQiOyai33b>)SSlebix-jffKUBFj-K3&1*iAc=_ z_dm#BY`mo5L3OpPB4O3QkFJpxAqd+N$VNg&*gw>v=sfp(XKtLUP6Mwk`3A{vd9F+; z9oJ;w^@XCIGA`EEa0Jp%%L%*Ny~&Z9w+|0l#JfY68L&4>C}(Gps+K7M{R9On5m0F* zE|7(oivROn&$#M2@y#)N(PN9*yVlM}m;tHjA$a5cLSwYVWW?AEXbGDR1ohi*STu5b zBV7O<;gB*Wf+HzO2iHx0CZNeAR9}m9v{%L;4F;ksS7!l{-m=jbSCknf>H#8RV3@TQM4W<`iKr1%2o^{6BXMo6KLBu>RqLlvpM9#%VTmL74@hFd1f6C z^3>+0Z-jmxuERpQTvG$A79X$WU3I883^ZkX0z!8ys>1|c8x3v_K_%w{KB$ApntpNTEI-R)2x)O|VLZ?8c8)V-pZyqx0t@#s?r0P2jA2#7L)Z+~G@LD*0_z zEq+#sU!Ed3@P-DG3faWsP_s~;W20b0g;L_8C!(asgZRW+{XGWsTmr0N07N4E8tedY zi1b|)^xrt@->t!8_8P(E#g?eCT5I^7q;p7hw!;MnyS+1)|z3Ae*oi$bhCu(n`e=5#VyA-2Tx_KrkRgW8C zh;`=kyvv_*G%=5n)i-N^)oXvl)ATG4&dlHW7zcW1#r=Kcl|(d@+{!wEUZ@?sDe(<% zE_oaQB!KT?ist1xz+R8bF|L(~mW-^lKIZrJataGBi6dazje8RL1}j^ zFvTyU>ba!Dz_EGVEMnBw5M;&RGh?g2h9G@u&zS(@b4ap=#sU3@NYIbH@FO4r5D7Dw zoEEXNUv!+wwqNc+(ig&t3-5OA8laNpd7N#jds%}{rS(lFv?xf#SlU>zISk(C>?^El z*ilKg{6We}@v`Bk03JKpHh6>pPPZ@vt=4LN|7*EjsSaFVKL7&#sLQ zF$py;Ua*tj?ZoKxmrthnQRA1&OazAQVeIrBa0L@&sgj||0$lY)?3<#pt)%x(_=Tar zpF+v#7i8LCceHrQ>2-hwTJCs-q_CywnDn41vU(>?8f(xRup;Xz$I}dUc)XQu$rk2i zj^)^xu(a`caW#bU)(x0OM8dfMioyPzqAxM+q)YN@X-!$0j3M3*Nj*SM*PZJ_-OK0k zRJ1iQ+A0AoEsnhb--aH^eqz>Sd36D}4-d2)AA&}j+84*WU}Z8${@C)eE^}?!UabEM@Wda z$!H~$3=WmdFCfb@66a7CGs;OO-GUt2d2_`_*?M+73AG_MDR1zz4c*F%bxhBc8pXFoX&EI_1yTf6B{sYM*5?LfN8Y$ZZ!e!z@` zO|1a{3Awf>4A7we>sN{h|t#zyi z{wGfi03-khvLzX<5GDiJOdNfPG*P2E_@^*fqQ+|OL`7+P4G*V#{frF~xDBVSaN41F zom2sUgg9T!wW!(!QlSVZFYMvsKO$4GmH3<#e6^9kQ?HVY8;Ffk_$1`*N-0WQ@~Z_n zY9ELv486pAXLdlKPc1(&!bB+s5;g_WBCxw69-^()k(NGdP-z^YYFeh%f0$v@HdNZ? zd(DR;rQr9fJ!B&{ z3iHiWnTyhFhTAsUw+&oapuB=3w z!gjIO^$5cEHgoAP97kaxe5!94SXWOMXCIm;-4)qORFw=$g#(JZmlr4ag$H3;5AuKU z5gnrdKBAj+5Wq)3mAc6j)aw4nN7w`S2=BcA_=v!kM40*d4l9rILitkC2(@f`Tb#f9 z5@k~3vOEc#!2fAEuM48x1pb<`Emm+(1J=w96NFZ}A9$k$?<3$~cQk?>1&*017Wc%I zjZG^Z8E{E+rN#_E=NA_Xdlf)KbxxUK(S%uIRR=!*=3Qw54~)ZCTKPN_>Q9Oa_pvz$ zGvQZ*ZE|=~V-D0sRvFJICPlk@0=5*Z$ZBJQ*zCKRsD-2F+l?V&6#}JFS*W`Z&90P` zVMz01sMn53St9h2YiZUEoHZ5C?)xxCz{+1igLDbBnxuI7+sKfV+%n#%51d|3jDDSS z8NsboV09IOFD*^^VO^_7Des~Je#@uPl3&OADYc{~UnGWQJ$Yxta-}QtcdD0c>;}HH zg~CDI6|~WAk(5k?m_2#1+PnPZUq#(&or8>ni6DP+Qj6ZNG=XgLq!EHUy=*N<&YI2+ zdy8myffrj`CHLnv2rV$Jzwmj+3jXVC7iI>%#&U=2uK0tbptP**@RXGFPSyMiuzHty zCAa#2N$u4xqlmNED)oNlhpWwEF%&<~?rq zG=vmXJ=;~InXWclqOs(TYTNH3yAsP!z;#;nwI8jPc+35mrv*3FyBUnnE8NRCEML!V zLXm2UQ#DOuAw+L1rBi7DHj=BtD(&@fUcyv>h>hPfG!TrM?lpl-1VrDASJ>DsqWcAi zZ&wrwMBy09LU16n^(wB$d!o?Dr$v54BI{9_B>gumlWMj;=g-uMY^ME62|+;sPxRNq5B|rLTeDRV+F1fV6nVx$C*7=*w5wpcxBV|XLfFgP*G>yw@fVQB$X`P>-sa)_($^;$o^!$btMg^c03VTCaL1F*zmY=nyl`D~{gS~~dv)zAm#I>fpLopLlZ+*+p;6olP2O&h&{BT>e znsu{orG6zp3R9dqXp&Rv(eAC0)L-93iP{Z)^=whI1pY^hD=$PWy)T??h8QREdUnS7 zqC|7Qz6$YJN*%>HJ0F33U6<9WrQ&NOk?W6zgiY6>m?OE=R)s&Qhby+%$}1Yl>ZbOk z>c))D>u+Hk66Pv*ShV+C3skj#^eR9|fh$%unO`1>Oswm}3V zC`m@8C|U{BGbh03OysZ&g^ySmM=%ZhiP+|g_Eb{0ri~Dmx82Hy-_GTz4K4~n@&q;9rWF-IF#NL78c^E3pD%NLG7$Lh-7fDkl}Hu?ACcrZ2J(8(Q} zG2HMOjfjn>N#PW@dCis_u`H)e<{7-9MR$W|8xch}B^w}h$jx&#VO}Du*h-(stuc^+ zAg5uNLDq;`atxMKNfDiipWVmp=mRoX+1YgWG%R2c^268Q2&Wqm`vtECc5Fkx1e$zs zCb_c9d@Hr7x3=XnFL1+iw>rDQpNT}mx^tL$;rR_q7`NwFaSQC!SS1;?|>t*X7z0xAZV!MbaQpF0W zaxswe-*8o{#Wve&#(ULCY`pY&c_lY4^usECguibu61lJZh@E%n#Adet#ZQTBL@H2< zb&s7~M2ZWl_<#h^3pn`M_el6*=~p9O)_-WN1$mvHi}w7&P$nr)F=I>7kt^M+;yxl( zoa_s{Ep#pKeSp8JRpe?uy!rP^thZnRFi;ByMhXAVK4fpIL=-{}1k@b@1cdqj=|hgr z<}NP((}VP76R_Ho`XDC)&hmPvLF}skU07I_;JKrM0;AADoi+&NoB5a_Y9Oj6?_=F1 z?B3EgRec#K(-LVJ`Q4?Kt(&FLVO-v;&m0PVjqeJ4-Hck+=lvXCf5n^=GUoOBK1Kxe zczHTME^oFQ{_HOlJM@3O96Ah-*Bb=KtI zN$E~>_k3Re8qe?dzCRP2g{{H-x&B?h4I`%o0 zpSM+F`O)b2a`k3)9I&t5k-0M=`SsOZe?Oa1pYQ**JbcQz_*m|+^L@RHi8x1a)9>kg z*tUEv>BznHdH>pk#}F`$CqbLt;`6{{2jsmpHF&0 zP5;Lbz(#AV2wx|X{kEo)obrf_{T)B!DcR2!?+4kdin{_m-v5rqcIAHDe(*7X4V|t8 z052NsdJ>Qg_i+6;>R-OjH5L2&e!?t2^CC{?0?ygJ-k=Hm-(R{`}$vV2nFBW z@;rTiMl%Et4Se1#`Ev5CPpcj4z80MbQhI)lECe_>uLW}LpEp}d{hS%Psl7O9ow^bq z&^QD;9X*jem!cNM5rZ9$eG3TrE=JDd-SS@=6c9{IHWoQ(gCwctK5p);Bo9LpaGc)R zN2nuAA7(qxwc53z`8FO>Jp});zf+fU(K>nemz{HM9S!F(hwNDvD-ho2iK5b_E9Naa z+H+hyZAK@=5}3lY;(O{=E>ga@i1{O@5BSU}UM!uz@E0t)W$SIM2PHHsYjLUgh-nhv zl-#LN^SNcJ4O!mMdPiwNmUa+YVYb=vG!zJQ++F%U3EH(cUw?nyT3p}oaUkp+y57Zz zL^h+G264ZFkDUGsMQ4WD?KOGv8hr^PTH?VCD}OWVCrqLRvDq{i#~FR*;S#K~7{d}M zU8lMV9XG+lh1f7Tc{fc+56iJxaKam#SAOLdOoKrJi7)7Fx+6?G>T!ZA8-e#2;i-G(>(t9=*~5_r zfmsW5{7v8Ms9Y`x-B}O&*ViCuxKjdq%3U*x<(Qe%5tFO)UkiXOjDPw~dL64onFQ(Xt)AB7=)#|^3G zZx$el)cGYU`(~Jyj6^jELh%&Of}$J_IPq%O{}Xu4w}imO`^{LFMt#cnntw__tuW|w z<}j@Jl;8ieElr%=1m`WJ5F*JN#JHEa<>ft4;SX-<5o}_6C=8mQ0w%^}LOIY!GR@@B zok`dJezpp8l6l!#|=^qjZ@$<%gYX}&rKU>;|g>HMn(`F%dYGv7;@Phgb`=)b<}Gj z0+|=RSYiBn#iB4wvW))LQHb6`W%J}@PO!iC5Ds-1{zwC}@RpG^(;^eC(;s<}Z$Z!W zoF90*Ys&|L@ARH_SOOIL@qYsk`y$8U%h12LULY*TomRPPTl@;9#@>tfKvz5Dxnh?3 zW+apow7eu;MjKgYCGUz=-UOV3BaQ~Qhrbd&exbdDOh>7QwGCoA3eyIqB$%E!nTyR4 zEhbsh9|4TzU5xBdN-m6v!yuQoDp2mF}^xCu}cia%$GZNmk+WXdq zo}hOo{Z3m65z9;CLhZZ*8n=7M1~Oiaaw!f(BF=x~sk0)V#XD9$2)_T4s;yDw8}!|n zt=dxJ8_pdvQMG^pm5e4fb|~$;RnxI7&dP$631zJ8nL2UT$v=df2oI_M{BWuNVTX8- zR8`;|H7!R=s8Piz6bq+e#ubN8SFD8m<1UPu8OKv8m>3L{hFK6n?NlZQ9krdn&CZ~F z5Ub})Nd3h`lbWR+wW#_P#We-&UCES)VhN-xtX4*C218geDiat~bP5sNZI(FvydV^q z(&;k~jMLr0M(boBFLzSWm*RkTdn}Rj@yE|;sdjy>z8QriTBssb@RI{K416lii8;>A z0nT=5og-|6kAnybcUHo$e#xT$@C4krlgZ7-qp34@<&--B3IayZq(F!{FX78a36grY zS@jKH5i4(2!p&lGN$6=Cku2KIUe8eZ_XMMs1Qwc>VQB?#;KLG#K*P;$JqA_klDj@< zRsqqR%w1lAN{09&vK#lTL~aqhmvWSvIo>??7h?b%Sc*rHjn_pqc6T8f1lm{9!xcW{ z=V$gDfk3&n?WTthq_b|vVNfO$85BXm&O&_=oo7Q zAG5x;iU}9H+K)6`yV+%ilW2<|YcCf~U6(CiT!C9qWol$p@Er~>=I^|jEPiz}-V}n} zqO7bbrhYmyAao%xAVq|EwJ1SK$xvkDw2e`x+ZsOFgS1)|FIU4$)?vD@)u8oT=U~U2 zrt1M7t5j#$#6Rv57sAtE8*R^Ps|wa$xl>0tN|1CUSFL8H;dgs+7Npr(EFeU0tS!XP z$HodT%s(=;w|M;cqWkx4X_ny0_PFYTtB;2fydUez3Q)8x_ zEvkS@v3#*b=tWP)9G2v{GDyfQ#-Y`&?uLG2dQsQKCxD^>72x=`$q=Itdk6IG>QO8AZ6|p-56k7$7 zl_WswX6+D%S3>EgS5w|xaxA46+B?Q4mWcpGP<@@uJKBTlo+>G3 z*AFkY^g!g)Ek04*Y*EPXt&clOcW<+DG2mGRsay@6q=V9mb75`k(%c<}q1PIoq0ZS9 zPX9hZ9-2i4$mV45YgN@@I^Dx= zM!y;UF~g-kkVn_!U+C;54YDzbTCR#NBv#Kj9$DCg!#Pl_CHgc2wV6{Q9*F1=u}^PM z^_3XF>y1`Dn z2oly5LOmNDmR=2(3J$J}Sv>2YCv_$58#cb10A)_633fRP9iCq!jw}B60e@dqBg!-_ z6bu${lB$dAzOen^EsjLMYnk2@USKBiUPGK$1Z+zysOq15r*mXycF02~guw2HlN}rJJnbV2 zHD8Wg%}y6i*m1&lWNHO0@Xpo{khkEQ!x`)A%4=pES`Uzzqyd}z{-mi=P#P|S62%Y> zg}`(vyf7o$(5jUNtcN0;9TPMEFLdS*$6MGMVu)#1Mfh4_L4}@ohVbKx@I9;raPRrY z7lg|QS|Gec;wXM(JZu`M;=E-Yboe-pxX8W_rT4MxZGWSG4T!4YUXa{rSn~R3#f|nc z5IQq{j|TpQJJ+seU13?2xg*|QVN0a~4Hh^c0|dsC+@Qh?VtF+aRs$l2O0DjrBH$-f z-h`M-jix9|T$Rg#6C+^sp&%4IW%42ns?6%rf9nTj+ga|s&wA| z%wq$-@0cb6xczziTkJ}w1&8?jjC|sNwjs`~Px(v9l2j{D23MPCF#vPbjd=^GvKa7C zDuQK$;m&*Ly=CS7OFPjkC+l0Z4>{ak^SGqEhfR!kYzDW9%awda^&;-)mCed>yWaEY z015D_2^ulf4I~PWrs{ZmnKDW{TU(49=U>J&Udbd$!bNMxF6bq-c zx5)M^S1vl9I4hpZoz2)<^(B0C9)Fn$UzG2!LDHL!jR7THxsum~hU->+U(CLERiT(f zi3X&nvW@UFIxdKs0oZg=YGG0#Cg3V8ev8}+M^fqG#0gllJ_vIBnOL3fcVK! zA1CmnlZLBooiXa;e`C=^i;ZUsGH5d~k+o6qZaZn@E*wNND%}yuySRfI8ih7GKKEYJ zIZ*y4FSMPPE802kK^!5!A60`4U<5={QooxEM6EJ~a=0}y*xZQ>Xefr34h1MA2z+%B zEF@p@*P{Kc)qMyLg(Gvh#3(JBWgQ0%j6qejHqOEnj!|+Mw|l-ETrVE#NGSVoKgfCW|1dneC;sSJtHe zFohI!7JraF6d?bO?er&+rVOtYq2;_LyJELt;E3W<2liTxfM*;`YsU;(gaQ~gNTUu1 zOfVsh#?@hr`83d+t>Fa81U74>swWxcG=vgh4>uDnVM7R4N?eKBWx9}|SHYkmq7DF$)YC2@BJH!h_OpR8VoPwAl%*wYGrsfVopa zYH`b1M^MzvKJ6IcxEH=+o>dsSJX+Q#+G{iTpKbCb^v3PyOTP3B@2>r%V~qBL7t_@& z;Pz>1i5enHK}kwOYLK)&Ch!J^)~`&nut6-9G0Zq^cC77VSFZ^ltq}#yoynbHf@2%L ztVZtas5{)3OKZgxu)1gjej7* zcQpr17N4nT0vC#oJ)kKaS?)TqD3dO^CO=7tqk8^2LndB&2(e-^@i}uW8*KC>N#MiR zrxjPSRbz{q2q)0)N`Il)vAPmKES-b%_LdIRE#L=CQrI}_Y-F|~r%|^Fv-q@vh_`w| zfT2(Z=$LX;FAJW`sIzw>bGQ4Vuj15;y@dyR_rpihARaxM5gGY26mPqb54*G{Q7GbL zJT=c`A6l9km54Z4OJgW-HgMwMmP`y=4hD663eGZcH=aEkT`-7fvmmYAzb1sP2b_q) zufcU@g?JaLkw9C{uhcMRNSfacmH4{C7^#p$v(GJfBfDdlob@fPq6HA`wCGfyqZ#4D zB6T}t)o2tIc~W*YBm~=93kS|n`wmP-S^hF4+}Fpyz9ki$1?;aMO7`oR0Wp3#+ktpV zMiYEK4JyVEzY(H~O8pqZ@BbLEhgNe8=6h_35I(`~)bb1ocH<1qspe-3&rD~eVYtDl zf;x*?>~I`R2Wt+Iw}esIS&+|CL1QWXDXyT)&Q9Yh{(UB`=S80)5tTBp>Lq3j(aJV0 zle2_^C04|M{jlYqLx>DI8qIs7=dhfaDbjz>63e+o8hw}a*0urmFPrh)|%@gD-Y4g*`UU1+fU zbd1`88I~->cv#Lb&uf12MNV!YOW7CK$@gQ4c>{7m=-}U*lW$a17+2%@0V7w=i7^h8 z;dUv`;>!-aOc-iGU6yZ2cwav0K2ra^_6{b&p(@TNkSvb_*UUmw6O)cAU{$qXcCZ1U z9u|=6U@S{=1ufnVYU)#`FWFXD@&T}xE3IpjQ*s1)OMu-3*9$W-C3~=y&XlK8K8FHG z$0zM&(dyGLs~#g-vFO6?`EO!7?&HWv#J!wJvIonEHl-AV+JejDg6um8&CWbL0}Zr$$O|8fDBdU?Z=XmOJz5NwDSb<%k*3}+>6D>nsfbFXy87M2k*{>Y@#;g zKr%ij4k+YuLHnl0SsC^-Zz@+dlM+}x|DAo-e(2>Lb=3y(GTT27*v{OjL-P#IvM!1T ze@=Up1sE0%Wo)sub6|e$K_9U^xa34Jah3>%Jh-DaSU$WFYwDGrLUkPPXr&@tD0r|C zycXmNMGF)w`1kX=P&5E1gp{gOE~~JNotal3`i{wfG87`(w_x>`#zAP?xQm1(HYw4X zI=L1~;4u(c--Oqwc2qO)1t+y*lVXtcL@pPiBX^o(u$}4)pvM1_Cn0!;ax{#c>~eSC zo${gh=YaRit0af@b&{R=Pc(Lv0Se={rl$P<-6^2%l#0xHC&j>uE~uBY5j zBe?Y!kx!>EZDB8+;XE`(^&W(s8cbsp0%bR&%>t(KvOV7dhZ{os@Kl zLhhb$V-AY>phV?WXQxcidJmbV(puuiTbqh!mrQA1ZkBz?S}2tYjNB|_RCu6V+AYrV z-=HsriLN!Ak4C_N7o%PL4gcc5-Qm;4q){+Fduu|uj(rzf=`lv)Qv73pMfGELc`ri;Ip zCXu+PnWiWvxr{Z6($EH4*~Q1+GWBY}QemB;IVoW);N|9_)8`Aty;`E7(2`_wdZzF) zlmEFLg=<5n^A|9W_Gn;-PA@-6Bw~WwyK4{1evU+&?B%Q`Z^|LAujtc zQEgGIH6FzmB)@$w?aH+%lcTcmhy02Y-%TqCU>$;arCPId?x-BNCWF&_T;PCG4+hhk z5ha1Sj^Q_>m=&bIG_@@>1OQw}x#UC8V+D|~H6`*{G9B!?tW=+MP;vzx1D(H#E%!^P zxK1Z)965v=v`$#!(rq$aDpP2oZX8vZ{l)`JjiIom$G?_dWz0YH?O(%r!H#K{^2}X$ zYv;WDcS3@O>e1a&njm}NoelakMzDk3EQ`C$hyyc>Xni&+Zm<8BHN#h6f{m<|4aPRt zB$`{~Cu|vs1wZUD=#atZqGN5e+yr@KXvGCEXOJRT?Q-dY)PMD=lnVt&$y+e=d8~te zVMVQbMIqG)HyK-Dy1^)#FS!5Al77#(Zn&!`xz$J|qN}e`3p=0+ui`4S9g8Aty+oIc zdS8BMwTw&r=hcA5d;ab67ggLi!CV0Yjd=@`AVn_*k5+Eg5LYj$l37G5=&O`TZc&US z`0|h1Co^f_3J0pFVy7!}(KloQada?@+>eys2IuIhhkcx`fM=M8u)`5w9;%8ykW!KK z8HONHC3L-t_5cBMF$GM&s;t$`-2jV9%1ja=CEb#TZsZYae?;LtqwW9xGR>fxhoupa z)0J0ZfF(#{{ZES|kNFWU$IWjJy0TM)T_!LqdmCEOEJ)&~r@;t2{Vac41<$jdWgLt} z|7z=zVrG;cl7d~SH8zK2x>0m7)?!?*58>Va42}1HP()kQJ-H1j;b3MWL*7tYN`DAS zs%98E*-@Z=CFdrgOacQURJ1WGqsQEIJM7gr^(BU-9Gk0s^*Ev+co*{8(xv3S6r6bh zE4wmWjYTNQvCDeLo}KnMl>bZ_w)rHia2Um;_H5~Ot5jC6O&pBw6Gmx4G!lE8R#5!(@ZwF&qrmld4Qd(Z@v?fu}y?+?jvK-jq5`L>HN*R`4;I5zDbd$~D~%{{$ch zF>(yo!jf^s6#PA&^{4l0EG**9p4i(Xz#ikx0WHx-ZzN{)Zh!1T2r!v%msXejBP7(W z+u81c%esB8ETd8cLPr#l(*X|fSJ3KgfDwVTGuJe{UGqk}&b%E2#nM>t}+aNA1(OiIWf zSe38l&!zq&!5^#=HSQ?p_{B#p#&Ng z#|2enTv)qPRw3H!9&rivUM%eo*Zgm*3SUXz_BfEM5$W2S>LR!uJAO-UCeav%iz|MT z3hozOcBs*+-#Qs*KReAuYkRj1n8%8`J#e16P1Cf}W?{XgL<~RiHw&$u)^xM~Iu+@d zQw-_f&!DHNt^3^c%V>I2q9hnN@0*$EaNKHeY)PPW{u?n-JPdqgZh~TZ6zm9B9e2vs zOP%VXg~}@7O61HPQKRJbK1LOGELO7(_-%Hqkbkmr{^#&9qkrlcv4AVvrD{8{pycAG zEdeT%?STx zqMD{7c1=FdP_%@ngBlx|7CQ=;$-Rd}@<+xhx-B50)b@25*~_@p*GaFj!M)Y!Wx|u+ zT?P@9J!axJ%VI#otHDr3C}#P8c9AxtJ2sZ0Ao8I(#cy+oFb|#2>eR#H-w)m0Cn|JI zhV)p1O-}sIbdov+yET>*O)}b4vtFjN5gc?FCVeM-U`BS#0XtI+^uk5Pc?B-QL7s}f z#H?zq#>|dF>{0`fkfq~W=fcJ?{JjQyFuSM~m4>Wm2DQeGd%mrSpGLvVhRDU4;CN)( zS)~Xi6Ce-;n3M*7n6R&!un!4VAo!3@J|6S>$p;MoOltl}i;aj7i2-DF0YzOHg;X4I z19v)jxCps2TYDP#2id4l98ssZXbsk7rzbwKoAY8r;xHmVCk5@wQ1KAw?u7<5l{el(hLgBDk5@ zKxc~|txrI<3p}Qz2@N1%5EY$RrbYr^u&t3HpN$bx1=Oly_;aZ65Ox}9P%gO*!f`XQ zli1@Tba?@>L!%9h5acAwao!ws5Nus!6Om(^q7Ev3(^csbl_WUjH(Rhi06*Qtb(zFP zl%en?nj2x*zW6An>%C2CPbxej99KMPH-o^zwY#gQL`gRh1d`uy<{)`hZrqamu+;C| zd@b|QM+zFK@Woc6Q){b9r^fjV460AW=DF(_2{x^}y^Y@#hhAT&SDP7Y?AY2zkuk62 z&ofWp(@+kteEmk@%qU1D^ z99XHTvZ)-$l2*8Aro#Z}`i|#+J1ROzjvJ)hW^q{RVP{=GnkT}9L?rS!ysBB7V zv<*wAyV%l6(Rf6P&5kK)YIC2|+8{*tN83Q5A;HfHojou{=5xv@BF!KxjBfI`0w4Bg zi)p*f$T{>1=2XAh7|S9qER8x;YvF}Wc&7kPzJ1@8KI;}v)Ajq3{x$6davJ3ad7iczt%{ag?ZR;dMqCIC5ZmZKuL7Jw;s02(hK!lPpKQET^)#Y* zlREneeC9>RQO7`LAMJvQ$r;?$MXuKWj_`dk*cfQMV+F0jw?H4C7Z4jrIRkPfLl+=~6*vtdS;KC~s39As6aBI(vv=7CPE0 z34TnLWb?CI+DdC?bcp0gadwbx6gN2;ps%;!n4`pO|LG#de2Fd)5I_1se6WuA(J=1T z>y6Wub*PU}E~OuPko~RM+?TBZ??$w8@yB*7Cmrl(XKWQpO()&*K7A1w*$ESs$jPE; zi{dOd5af)k`DR7NzZpt2Lw3pbqJdW%RZyC!z?+`Oq^S#74YW#nX!RgsNyzQKfOugB zFI5lI@$rzjomMx+73F8&P(enrKOKU#5}K2{8(`LR;O$%-*oXy~b zVH&h53~aVn!O$WehJtccb_ORn7R!Lw0WW`Z15AlFPAS4Ijode(r;ys%cm2p?A z%OyEgP;Fj;n>8~Ge#1#$F1LbJUz#jKnWK~yaCO~$gzvY2J`}Fwr|jbfRKAx`39Vm9 zUK~DXm|4^_r)iEKqid6lFht33_w_5z(A)c|eLeGD?(=$n>Aj2QccF`{zP+XT9& z2PzruQ|V}Xn*o!k(u|eIeBHL)>mtjyEhJsJi5?&i>ZAGn=DO(kt+gc?Ga$gz>GN&R z{QT;=sC7kXz|K@EutHIv`z(7DE5kWvO{|9f&&GCN|ALWz| zn322xB|eV*@WST6$5e-jx+3k9b#z6G&^cdCIw-&F*@@DH^#gBD({6|)#Pu1z^#h42FGEnSWD|+5IxQ4#**A*f@5!!O83=S-*_Vu z#ni7|f6?fs;G4i9k7O{XMK!E}v!>ZQ%Y*Pfk zL$k$vY|~Pxr#XasFk`0u@+-x>29;hP{R*fNb)jo`4+?7d@v+S$Jlzd zR?QoDH06o-_O(QYpVdl{6Twq#7shuv48*p?lro9?3}2W*lVPn|3kml$pY==NU-YGrhKp0N6~I%5lA|yoLcbKq8`3c*#$X;*M^+ zcxU5lFjYoN4qlzagM%`_Mev8PF zxeS0^ChAc;U$;L%J9aNXP^$l=268MyVUb15G_f`UlK#`*DsXw5>jis;j{*S5n|Gpv zuY<63``0TalK`xv?=&W8X_)Wm;VYw;P?RbzoXiJFf19G z639jj1pz_--%OeZOP|2Eh&m4gc41xX#hh@ z;@s_-$+3fh0dLhB^qO+iV-fSEZzW)~bJe{cfbO+KA zEoTh6yz290g{XXpZvxB{Ac&GHac)zmKHH@tyW#~zyMO42#~wW}hQ8MlPyOp}Z&#P+zgehe zwtc-m-#*S;-!z{m`0M~n4r}*0j~~mg$qwxTKF?F{LV`UTSN1!;pD(8ymURaH{>Q)V zKaW44CPBIZBS#{H*e{!O-wmR z^?u%dV}Vsd3b>uN#=@ZI5uNbZ zCe1wN>~tB%_Aewd?~j%hx1eJdJ)!5T^KTq=nvbNXnM`D*_Q()1I(V@}D$!7j8Q9bE{XMC-W!~PrDk);%~>W zmg1+25rr9MN>#VN+u!|&ha{tSI~O!~xP_NVxhgiT}Urmf)tj#z+Z**7XStYr?r z@_U3e(nZPhSBo>;nz5t#oT0B+H%2E=??NJ0D_|y+>tL9~u9a+1B49>!-!9=~#(bvX z%AQ09Ot=3SZ-o-zWUKl$L2g>4y^2w8N(#^-%j;D&RFmnCn7GD!q+aJD19FG}7>BBbcuri(>hWv5- zd{Jzy)UjDb39IFTeAAwN3nF_oGlNb>-6q5Q1#`e-N5tJeeVG*VtDaz<6&eCUOWm>_4FdAklhJlqLX=u$y3I}-Yfa1ly!cMD5QatLO z*34b9xq{=%H?8$9SS5ZqgI>z;==j&3%G$hl#e-wU!Zib2ySnvDk4igeds_l5*?dJ* zK~XSzZ|I($d`?%suFAol7eQYZgd)}47fJFZjE@t5p#kVz<(#IZ_^x~RD4%&5ye4hc zP{8so@MFV)McEjZO|D z3I<*Z_p43Svyu&F%~I3|4l-J16b3&{H<%wE95a;<|Mx=)i{pyX-zx4ZyegT(%aznCPiX-Y(P7vj)bjRm2G!g@m?I1>*14#*iLufGAJd;M8D zkkNd#XsXeM#BaEzld!z|pIOfa8_Kv7I>X2^mZhXE=0%NZx~M^eJe~>#kfN0&8kKjw zXjy!K5qP*f()dT%$Q3!g%^xzXjPEx#PbFWNhhmJ1?>ODhQPGX#pfS#+QW&^d1yF ziOIamU-8g;0*I6<_Cr-Mi~Li0a0AX4X?~2SJ2aAFA2(nxtst9FK5(G3Sfl5+`*-ke zj}UtInV{!66M1>9T(^(;R-)&RJHa`t0CoEi?XmPjSVcc*qfPt#js{3(_=d_(o_CF> z0M?SZks?l(s?A%T!sXWP&9XEXXT1cn@3U%T@tYYT{ZYGw{GJA#2Z&+C%+X5EHRv4t z0kZ^~z;RS{WB4=kQcw@cX@|=620~FxcVbATU|6gK4uksfDrsnBp-YH`0Q@Cy%2})p zt^Kb)HUUbK=A5uJ&qYP0aI}n)@8wFSUt@Vk@Ls33-%IX_Dh)9s`LJSP>}f>VQ_(_*8iupL^yejZ$lGrgx(Wl-mM9YXe$Tf}m0 ze4urebA~E%W-LeQmU{N6ss%wdi-uT-lvL6#sW)ezh-1*Z22VJZSRd9ySLxMQ`AMAH zF)tNnd>tX$N%CI{8R2QeXc4+|jRo}pZ5qVT*?+pLTsKj>bOJ>U=X+}jkLekR@7z|ab}*)s@c5=b{7>k3wp{6!C{7Q zX>2ZkZ^2oYT4_Kiu%!GooT3bK`hV* z6iA-~dH%j0V#-Aw-v`jbC@u<4h!4nXa|bPAGbC6V5F&!Z{32DV74PC2T`F2?mueTM zvspA37P3$6+1^j-E|fMf5w58gmmW%l6k(PaNhHcu11W{XX_^U3RN02Dvj-`r%Pbn` z0IV_S`|6k1QmQ#8KXTWKa7;P;9V>BFMWmRUyp@|Se>tG50XvMaFVzb04LE!E{KL)DiW&J4c|N3)5d*PrHXu+z@8+qv z{-|m|IM9Ag2{t*?QXxNy7dWeqx@^ODk`G>JGaXLg zn6|kV?lY4#%4qRrfu>1e)U|=AYlp3A4~D>I=|*hlj+H(3cQOHd!)2Ug$83nvD-TB1 z7JQsP7%Yo3vy(`NxMTPy>$ybiSXF24#R7oSd}n`J|2F(Pjd+^wIO?^JnN9RFc85my3+Qj zyj;^>Ih!S4WO5?y$ee9>;@8`gK{(%Q-+{ipUAdD_`q-pvMBQC*YoB@qUnc_8^N0ug zw&$Ox(QZ1oBre1yy37_j1znpK#0+0N&ELR6`*^4XF=+LuN4#oygA#Jjl>P!7c{k5% zyI8ap9j;)<8e{x0O*C@pDu#q4j>KB-LkhI=%RcUBE ztas+eVc50CjizaoAPhXUrf5B*c1zP(Kp}}~O0pZ(5mZ}HvU0g4aH~X_xW!O{nFgrk zxZ`NbFfeWL@HND=6~wgIk_)9q#lPP$GjJ)&3}@yJj%zk;L#h!Nv!8pKK;3CGx(g3# zyGt&&r0s#}h!wn^1bbM1&U;vBi+Y?XMh z$*Y4DMT7Pw5a9V-@9&6>E41j{@Z{aZHSDnD-3FP8l9R2R`1<5`DKFF;jP=s4h6kXZ(-%l#UW2qrGr^5hW*8w_X zfdRl6?hUkX48+MQopXI*0ec;Q^|H6w95w(uzblxvER0?1znTiZM0=0Znl*Ia*C%(R zH1-V=%+HL`Lj|52V9!(ik8B5O@Zjd08i@)m*&}(yGwTzjuFRmZ4Y=9>9B~ss&o%7J z?dCJ1k-Eu)tvWXTQY~2X8g^A5Q?>|W>6_>~#!Fb!<%W+sF-BdB!x2gL8AayfsdY|A zF?9Jz1D1hH#^bk8DhuzqNYLYWUQyD;UaC1I065Yr+_4N!RTw6t)Z(O0*TFBqs|<+I zD`CaECunhXXkq91FWlMGEVP=4WIh9R?x0k=6N*=AM}qd1hx0qlFSmLf&KBw~QTQ7B z(5r?8pKKZQ!r9HO0zkWLYt;l@`q6s^uPLO-Duz?F*HFizv}y$F8lE)*eTYdu z-VQ4&AoT&!{$SLO@as0#d}k*xDWigf(1at9I==ig&FB<(I|fm24Jyi8$M&-`H#PD) zd7-Sw*Z%_z)65dhj9n!%mjgO$>1!6fSC%y>Q8+UWKw zLI6vp#YP6_EON!yb=^IJ6cuJOtc}370#Cz*^KBu{&@t?3)~^zE4B3}RLEj)Yqye|P z4yV$=LXe|QWK!{gR8T523_H)0h$Ua@W(vECLYQ67C-eH5&MN7EjB%GbI09{^JT*%bEjQ^F$C71fKIQfx|WE z8cTiJ3|qgl4=OSxp`v8v$yD@MP%q4VMTEcJsUuqh<8rom1z+iMrhAAzuQrLK5FozX zVEC}5@6&+Wf5%IPR#{}wgG3lZYEUml4lhy7u_vCI;4Zb2q+$YakxZPUvDcp9{6Rpx&o-FyI0D<;OAwl(ZFfzG~m~&geAecks!+pzQNw|N-MA3=@wzf=1 zG%0q1b^g+jS?wr}NWN9cssEA7@nAN1PbQ2}3c`lUHjc1lqSZmTr6Oc$E}XV}v#m?I z&n=-&`O)ji$3e#!#0PX}&dHr#^L zLv#!|cg+fN&w5r7bswL2t^>>f%Cn4O^9saD@MHQEdb-?oiU)51k6z-%VNdpTTm@g;dz845>DQysN}mMaXIBKsCRc*#^f{V-CuNK_OE~ zIaDBkpSeDtrOK)cA+Pe(fBE+$;l)@eYOoH)F%0F_`YjRlC-`)cyqg)m&J5bMu7VXg z>~%p-+&DW7?RJtbX(%x6N4=YBE&s$zuow#36V!C@^%FXsL&zqD;+ZlpC7muw2Cob* z6>3T$p-)VQ)r#X;SrSs||LBuX;Z@}a-k(vvy|cSE{eCw{i1#2??~zVJ*2?z_Ab_!U zr<;x~$Gcly|4KUFB<~e05x_uz!2%pE|HoJ^sE&*kV#XDwmNrFj9iWH*=zG#BN=H@p z5|9R4BpDADu4+>MN*o1`khu4*N~Kkx?I=1WhMN3*A7zTRSc#$@_Sv3#~4tNCj_xW?3o` z`qlG-8N56LU~l5pZJtg;@-?0QeD*{SKy@26MvJ|@|5knY45vl>WIC7j)zgRw@W6=p zB+;U|0;sce879Lx3C+S}&NsjV${va26{%Q{phsANnz(QuyO<@teeU!j+%QFj_oKOw z&c7rAlyv46+ZKk4bJ|XRXT^J_6vNG=Zu`ycu%*3A{=j`4X87$jxAQ}|A>q!(_H?(T z1%BVvRqHa!KmnBzWw76M^a=Xb(4>yt!(AdIDP+vBEgW|I6?ph%P}-zom%+u?Bl358F9kb>ccsWr3K zSJe=R%i;YmA^lj)=_FX9vBB$iF)B~q*(XUmQW_Yr248^)6}_?rzrx+x<)j=9sPUs_ zwW^zdp0eJhiU4lfGbk5^H14lV19M2NYFbk{x{ywUfYYL}BI&aoptDlZ9lV8yPjjW) zd;;KX!KyYhrKs!Y#NFtkQo@GRQcVB^HF+VWk-4|M?EEE)ed7CiZ8@q^da))GVcP;S zUtz>M8_i4ZzM)#tDrw28B9^LEHz$D;i4CO99ZmjJt0Y?TO93$44WtJuu$H6YiY?!^ z+{fx_7sL?n$?Wk=&GzQT#c5~i%eGSwwUes{>S1Y$YqSkf3#PSW%7}i|X0m`sie^|K zhBFCQR@wf#Bu*oEIJZUt-x4$6$Z}?u1vOI548tmR3Y?S$Pce8m%V&U`6V9LvHO|pp z8;ZOb9*Pa$C>yI#vXNdmgMef!{62iH!OR#HIJ;%~*va5&urNgVcbA(1K+mz|=A<_9 zb?8&cXKucXWL#+D>9*008$rl5f(4Kygvu)J7oaM(^Canrdm4M7eE(9#Mti!yl9`K1(mz(D|hVw+>rm z$O&8WJL+B{bG!%Y9`&cF^}ABC*Q>Ugvt|#>hA}C5@HtYe; zXqZ?z*qtd>2w9eE19s50eu=Q1g6c>STna>4?O0q0WHYs>TOFXFAMOy^$*)t9%vrS; zuUV0VdAKoHwm+0ai_{y+gHECjZ{IVDJgb0-(Fh`NF(mGR<6coT8=M-%6=$qq zn{#6p&HiYe$Iq#retC2OZCQnLu81)vz$)^FA)wJDOERS~FiG|I`}O!-V}lOF znPl^+gCshi3O$UO;G@mIz=m+8A^^4ch!CRB2sJXq#`!6N$QUJ6oYBEZDy)>FM)jsd zjH#G0#AUS($q$84J%lDk63<>c=)_e2#7acR@^-8*tJ$2`3A6xFRQJ)Z(EGDRXG5yc zA^U3M46?>~9MxTzr^Ifw%u2Q4VydufjjF!mJQz@AlzWpjez$#3@`Gg}x$*0+GPZ@y#{H&j<+?U3F9}FAuZrF=ncC z5#{ruL=yWuvY}1BLWnIfRHB5fB_V1D^a0^<&mWgOXuY#qwFcyck%bTyq{ZrN!#Q?O zI5R%2ZbbZyQM;e;3KMlOE?;gv!*JIjr8M|{R&4R7J(Dc|*bj9F3>szEh&Y;^YKMRX z^QsX@wz~1}eY-T26jsptI>YQRLTk~(WE1@g1bS)%OKXFERw6}RPYt5O+$Czii`c$4 znh;3FXnaRj_>QWU1-~zz$czK3tG%qBs35V4Om|cc#By?xIsH-$mc?Chr>N;6rw~bH zf~iLatL%Wt(%yW1t)=hC833CDm9*}Fo<(t8`>X0l6c}*LTz-P7P9ioII=?XKU-5s6 z$I~cUi6eI;Y*^ukt^G4Bx-+vfbI17r`+SEYP4-KV7qFU-Q@Rk3R`&cB-*S%XhIvRi#T;?*4c*Eoc=ZJh3ycw$Nbz z!EW)gptWj9sO`yAMTwbA+zv5P6ZP!gW}F2InxqBN!%mHC$x07X^dKS7w{s&BRHa^6HgB zZOVbyl%>y`X1HpY^a0K*Ep#DCou9Ep79IWSz^wTrGUw~q0`Y9#$+k#=d7v=gNgVMk zDiHCy#bdvvkPi_)1Y8l%HXBNfg?%~AqmZef6qPZ#ijHaejV#RTXTG~x3w#0qac3=S? zV-ki9KvRZIBCU?kaG7~k+~A}2Yu>F|<3LL{L}Kh!EQO)V;-E(m`^PF?Dv^1fgxRY?SF|BlA2kL-ruR(|r-ZOAv3H=$o0__;4{E2evocnzR9fc!@HXisl%u?2gTyj$QGTURvf zX_S$W;>};7VkcL4DLiPVE@5J1)(hBG5O3LG&!w{HuEm4YQNj%p`0UhY1i7lB6u_ts zQD^_6I@u<3han@KU;}mZ%V6v`GIqEg5)i`?#+@p_0RlX$lyc0oUF1BtK^naHKd8Xc zbfQ&&um-pt=1VRRb_OtumaE4aFQicpVUw?6Pq+e~fvUZKS_{r06x%JJC_yOc-xRkz zZVI2}=C6I=su($i=EcfQc}&29>}2g4W_GY+SA`KWuFRJG{QjVwnc64=n5B($4-Uw* zP1DF<6C3E{P_ra82Ho<&S<8 z*Mp0&seaZ#;kTNi2LR97y>SbYahOA;BFWhaZkK(nG(M3JhQK_r-B!-kN{9?bq*W^K zmCe$7`r`H9k(qG7%c{hjrT3iHYK*!>y6T!UisKLNu`FZJU88Eu3I?odB&DsW&2Map)xt2h z+s@2F@f8A?PklYL@Jiz0(%qq~?*)$VSDn9>77jA6S3SH_t*|_@STzUi*u`w*rwNmM z8zpUhs!_V6!OnDH4*voiH!JWbTpDEs0f1Pg=n#}|DX@N41iJm}5Ffa59KU4PI>#1e zuB0X76DsbrK7Pgxi=P!pq@%~(bpmm!Q6P)~V_a?|idkA_3ie9;gY8JpoXV|96i*(K zJ=e-`2l$>=6f{RWir7&+VX|j;5wVn4IL6Khql{D1P?tv&2Z4UDCdtnYNtkE2<&~!DYPmJwjm%R?`v+8tzprOC2F?& zq9z+sT;&b~#sC(`fU)|F41j$y;dw&QF>#}!NCantwWAeqnoo=HSL|&0umtI5(iK7V z_oz>T<3jJF^+YqW0p438gMVpac>u& zUVv~7H*JMgjz|fy8+)dI-VH~(HT9{*>PgmzYfO|K!xD1x^zqzQSur*_QS1`(77&pM z!{+slCxI;eq=ccL)s*X`E?Ji~`QyQ?8M3DD!tX}-f|>IEGeKBkSAsar?#qD5;rA|W z1aFV;Nm1?4-p``Sm<=r26yc~TpB9v_5y>m7%iSqS(&SN{Z8`ZepH#(CEza4(D@q6OqG#8koe`WF6 zI5@=ri`V>#I>)mTlEDCdp{=l>5Q(3gI+$9r*KVu`*)(>iE&sIxgNp+DXkTr@?5|pF z(g~<#X{c{+OKcy^!M+^hFzr<3rbNN(#2Q>Qb@GXtCfE`tlFT3E26_$hp7oRRV7Ycg zK)}tgeJ@wth3qPtmz1pYqYGSHvdYo zprKN8LwTXw&y73pmeB{VBvZ}oWr^3bl0h7{KBdo)N#{f%FFTs zm^L*nsH8m4h*7H%jJewVnpMz~ur|Nr zt~oCIExy1_(<^!`s%R0tn8ax=mJ2O(QYPSu|BJ}rhS{IoEabpN8D&7ja>q~#v0y70 zjqL1!uL!?-ofZZDc_jq;ivmGP0lynL^}71BQ7$>NWGq@d6dhgzp^zj-p^V&8$h0!Y zH|HlDO3{;dSEv42($E!9pD!r`oedb6zqtK1ZpS3woQC77RFDXLcpkgz_gWeaP(u`L zig^WBD-UaQ#I1*=w!}ES zwmN>Co+3TgT_z|I3LFO@G44H0{J?sg$?v+D67afvc$xX|66$<9Te=nM?h3dz{6zSd zIR=!U0C90+(yUnY3cv>PA^-jWRbW6&zS%RWdD)4ZJN{M3G&MH0GPeX~A47cs0R>Xa z5J3Dx*E#B z_O|90|KBQ;zye2Sw{MQN<{-#__kcUZz=8kK=mh5c?dP9;;(yfVKp;UZoz2bdft{E+ zc-a3JV-p1F-|T;D0-FQP{O^{3(@_7U&CP)dH~)0-Kl_CKH_P50IEjCH{f99JO#EZ# ze8=4f{QtKB;6>+{IBi5DTrRcK!P$57#Idd5QFIdCf5FQ-2aJ-zw05^=;298t;r=5qt}hz^8y*hUUEy0}&jXUnMjn&q{{>8W`Z)UAL-{x~$1s zqm9JN5wWE2SK)&(Gf?+=utD|P(D(D~DyNl;DcsO-v&;83!*FL)u>I-uawGrK+3o&n ztD|l^tj?h8<9dANN5@N@!{^7ZH6<>lJi#`<=cCJoj2U~zcook5!<@Q2!GQbsDXkfU zuC|x^2)_6UEv$iwGA4UMeSW|9m!*!+x1*hp_l}r7O!A)Rm$@O-ydj=RE+mT&mkD2% z&Lj@M#}7;R=j;20{D5{pca}{7zuSimtr>@awl1%alYRyp?FoF#fa?{e9_;W42M5E= z&8_avq@F)qEf4yyXODw;sIymj-929K!ykf>AKwjIRG=;x!!7Hs47&VXua&N^4@Rz8 zK0Xfb&vP;yi1a)C-r?f+9;Q-qI&v%>esVt_h48SPBh|5N^&Ub<`@#` z8~y(DyCv)Z-)nsFy+-=N3@&aEcp;=%vLNt$dOE`u@F!NTt*hg;$oS?D3!$Lb>&JBZ zzQ58&Vt!|Phu;SiKN4Ts$j$HlGqqbooFJdN-W?l=0Lr1+*5l3(hPTV}neE$wDy5y# zft+KZk9hryy`KHOKOu^Ow~f<61WNXa*9nZ0TujD)3frbcv>}mH@HQ_rg&E@@_r5s? zrgL)>-R!QcB|zFSwsSwB&hMJ&!Gz5b^H0GM_aNH4L6E@?(>DD?y>^ue8WdRGU$B}z za_Orie#-1+2+@@#L|6w2G8@gL^`YOS62fhIcFTe~Hrc;}u?%DQE6Br1)KJ!GlIHI; zaF(tTG-dj8VEi&H(qY+69VCGnb`T1QfhiasLDdc?^D^6#Fw#4#Gr^)KFabD>7)_}yzdU( zr!)@m9f%J86}Z~6Hf$SAJLb9r(lX9E-3R-?6Zpd?{0*vU>%6jJ<9C1}s9G zFgU1KNoa$gePS3WZD@`g+;4c>g}^xYxH^eB;S%9BqI{zk)NrT>L0OQua*#Gx5)euZ zO~Zmp+(4JIUv;;AY$R&oNFei(hl64Kuz2<0R+Esn$_s4hjNIhLa5h0_4j^VI6ErFp zuwksCP;^ZYBNF1dTA3B6n3?Dy-EUy<61QLuNvL4dpTpxIm+_9z?Jsl0wx~Mz zDJr*w$Q;fgoXD5};@^FY#_`-dVUFeKH>#sf#SN;l80&-c6t*;$**dvD!SLcR;R%1z zs8TPNh}lFaWj!V|b3QqbbviH`#A|DRsW+9PDPT|tlB51a%DHB7`<`&Nld>do63CBP zfSj-DPh#zeY1PyR133rJJ5D6AJ@+Mx!~%9t(wWqt(Cdi&yc|T_;Eso$;u)e^h_*f~ z4J1p`vD^h0q)3e6_w}gh5kwI>h!!NPP%5@LpV$DMaBY!~dM}L%yvTSF*lY~=ZUXtX zQ;>wJ5t^EQL2){@Fg`}$jSDy?bSUw$N>I(L3SA67b|FVRq)O<|WQ_}EsOkwTWW)`o zCbiCJVr6`U7llHz9SQ@aj2W2}YKxxHLrzZ{WKSYfYEPPvuZj`VQVryTYJ9}jYGLtZ zt6Sq3<0xr!1v}{D4+K(5?*=7-10OAg z5XjZvJV1eD5Q_zG{H2AuA2Pmp0W@9-c$H`qMYPQrBSUA0=vBYd?<}(gXX3PDhgQOx zzRFoExWq%)zo%CSR*N=CApOcJ5!3>iv}kEn@Tu`Rlr|zgL(KTKU|@)p9rq58*dV10 zo8yEF?-d1)up9Q?sv!K25qp@`4Z-`|jLXpGNOT7dSUa(6Ar36JcN8iqHFy_eJX>qY z^hSP3r;xS?AfR=;rOl6;CWLeD%z(bpG&K?<7ILp*lGN9&=U(9T@O8ryHTUdN&)~}) z8j}R$Oab|#yYCuX9q zjd+?%+~zBzB_XN9bi~c!%pzC9CS$k1JY|Yml7{Ugm%#E}APDZ(VMP$PH=5@69#{8u z;#X~h@vJw>adR$lYuu2n$x@N4iF_wmYd#{8sKkvq?UtS#S0Woi5{F$2LK7W=XF~>z zAE>aB+oJe2@(M^b;SgrjF4weUP(>WZ{7rs+@kW`<#QAE@`q}U^T$^E)e`U7s2A41R za1To1PxGntAakGflh`1(=M}INe2anp61Bk;T7n*HQb8kknVnz_H?$9JVAti!8uZ#; z#2HFpNw0uQY`7ORc2HAv|JRf~;ARuyTD?XYtKKEL90!&=S8Gd*9Ac}CJ%ak6Sdf;)cOvxY381@uYq#F&3BBziuVz>tkUz}g z6Y_S%XMX2)WFxiZ7_Pbnj3D1k$kI+0iK{*=5+}9e?0k38x|R00Rpn!MmJ=2wAzRK* z?_I>AKiRjGF;Zks=^)imFuKZ~?-U|&t7EFmn53hf+-KyU5q-=RUdO1Y^y#h|@DC8> z-M`^w3<~W>rh%59CT1m0v|Fzv>8}+Tc!&Ac>EeaZA%C5Xk_oqq!-N72>@qIHJ+8pp z-4$FqV}+)_)wq^Aiq;rC4MN*pqB6pDsL5v5EkG34e(waI3v4+i3Qt5n{23-xKdCa@ zMzTFb8E%`g?#n$2L2kW~%`^1J2|^pN2r@vj{orIBC-D4NJaRV^z==$NqOwZ+qM#D8 z*4>7H&l)HRF~!zJRXTE_Ok$SkP>*uZP{~qt*&r5=`>JPv)!r)6q)4n=zxkzvF?zeL z+8R25_Knbd@eU>}DP{o$oeZ*QJO=(djlyk(N9E8o<+y(3Lp>zG`Wt6w=$s=P`vEHp zyTFuWv)-6}kPVc;eW)-JYbJB10TT~RnDEp4_7nl*Np*<6>*I0}y;vuESz znH%z;_9Sp1tI!EE@Zw9(nU@VCoCMeKwrH6iI@*1%o1@O^vy_?SaNd=gvy(b*_}{&^ zS5?EOZso|?`V_scr%__%;UyKZx^&Xc;WcxtU7N>aID{v#`-!O*wb@BscX0+bb!T5KOj zVI{P@q7uj7gF4n|F739V>7o)8l%yt+nG*ZSv?hb&9~{>BtxEI6gJIGGSyd9yrDMbf zw&)h9nNN;u6crWJCd5;#Lu1_vrjFFLJRbNRL%O!e`-bNWEQ_?(fOz;SLW9oCz!;+d zq9jmN2?t>we@aRY2e&|r#aoprRMNC3u6sL_#Ns3jw(x_Rfq_{ zbpRQ#WgWTXZSH=ac)DhYM{2D6YqNS^x}DPJw9c4yB;Q5rynC(YxRh#W&N{=f3Kjvx zRpJ`(sin!1b=xb6US%ETveIu6@nuC)&%pAius=CmKADhpntf`JJ#I?3*~q)pQIHKN zDnyuhkViifNSc5$GxL38tNKG$(T$UraEkj0o!lev_)gFYE5(@oDxedyQoGw zR=w18m|OzeY}X=%)T%Ays{6|Csw;;>1b!f{2jva0MFqbqM0Dgp3LEiEn!|(Cs$8G@ zq`sza3pD$E4a*~s)|0D9mH*vMqFJ?brP+Kbi%uX$|2?xvMTW|C+D>D?)>W5ILQRQf zo6mX8^nHVy6; zl0@(F>~nLm+^ODXXDi*bbDvvhrY`3Ka#zwpEy^@PkacnQ*G%Wq8u-IcP}&!<^I=F% zCybUO`K%(B+Bx0NmrhKQOe4(#Eu%7V-j2yAmcVSH0Kj<&CT_J0d82EcuLJf?_H8Ui zqo8dYAsIyr$|5b*w2=O43KdTe$3(znRinfrlTC+vaz@-Me-krfIw${*!~8qN>;&bQ zG`Ek0MsvyFhraHlckonENLpX1iyE)aXL9I_tue$d@QSy7)NbQ(4!ly%D9XtgbBO_@ zE{r_M(vo%GYNa*seB3XOPyYnz3hf?puunTNBr}lL7iaah)2S|%_UZFM{8p0AfHdrI ze0O9J-Hl&;$P}-|)D2kjFV^2kQGQ&G%-3v8_dOwyQbN-L{Bhl#oYSNh0?w!A4tHb^=>VIR5amXBO)wwziDEk+sdVk6O82`p zLO$r`5|#`hBE0J?Cy448ED!McI%y5Q0uMXiE2Hp#wBwxoLy=j^WIF00mD6Fb9go^nh^b|YH7Iba^U zn`+4~Q!I*Mf6yQXY$H9T$v`P9$VaSVJ+(%sR;nY4kOT#3LY^cwcAh`xizr^`tCh9} z-n5cXF;$RvCgL~XiYHMf$(bD{ifj$*`%~TOb}r3)=d1JAjW9pJPy|JiIUi{VK#!AD z9jL_uNcE-u^g8FJOXTKoU;E*EFQV~VPt54@xy;nGZnLL@n`AZd*l~=);v-!DfW_w( zZx`!Ndg-ssfu*j}hHjgVwq(+A#r^=);65X#Vg{0VW|y#N_cJWKYUG5^)K`rdIxw~t zFP{wmY0*#DX|&u=%bW6UKU%{5F=clygHLFkh-jZaYbOmb-W3yZP3Ooet-i!a>gvLs zH-$3;u}YQM_BIL&n#y6XbWC?0UN_)Wp{k@S=M|NMsVu)cy&|y%8~k${vaTOL}0 zbV;PH%d9`f1SeS`*3mv|0i%dBEY_-wM8glwd<9FHw?m#VQou<0J&=jLk#~T#79Ak& zikMr;G=P1WcNf%YJuu33c=~@@yXv?o)~~-b(nv`uONW$nmrDr?BDHiQ(%m2>3L+t* zAV^4eN_R_lHz*APf`Gs~=)D)=a({ol4?D~*%=yka&w1vV`JDZp=lCq^)AyrfGvwQU zf%{mBkhZ$UD_JImM80*T_`D9@?g5+_*@;-EFuUV~VrC6ivV*&3R3R3_Mj7 zLN0imZ;P6u-$$#?sp&f8%r-Rq-H14JTm4Bh&Z8Eu7s5V+5zF;~2J8+)Joh*7-5U-* zBDQSDX+P*^Amx~NtI_w4JPR{p6+N4<_W+0AUmlf!j10BlWxRS;Fe;Q#^^`e4al()=CdLptoj9dg^$Ma8e!y4N^ANI}jJT4R z5{&h)i0|*PpLXaJcZBC1y;Hxz<9_ruv+$d>sT**}@449O5G(zQ>fqh%)}j5QpUB6t z$Pf;{*+awcj=d_H*lWSA8B(K(QqSIEoC?%EYvoaxuKlq&G&M6bUG>h()%IYgOV`WQ z{&;!5wba`CsAFiT(s`@Kt<>}T>UV54C+)5wZ|~hux*o48*Kd3E8y!5>@iiV!_7AuE z1$1f-S66n`W~My8uMY)h>DJUPcz#Xf? z5K_QaJ>{6zma|^;sqs9++xB)j*-N`)9j`6ttT0n`@?~guV$0h4gGdFNumw0rACt)Y zWH&x_Wo}}Eh{w5<)q0WjXNafgM9q=ET_dP_YT$q;Z)SPsd#?9(htq?AuI9bSmoZJ@Xpi0c81?VRBkCJnQZp(V zp|1KBo`*lbyp zZEtQZ`?0ujEZ~X1t2rL@b8%>DW7nHXB$6p~X{LE-E5|zpaq|RmUq@kEN@=oXpR94_ zQ?2Jov%8ne_hY)9?JtMewYWspKeozvJ!gn?UDdzFKRbT6cq&CyG&5kNwuMdfsXe(^ zzLM+pi{Vak-t`)VmI+JXD_JcEdlaln2&fzSfp_gwH#u(=mELfBtEFsT_r~rvgM524 z!zdfg`!D;h{Oo*G365XWvBN}8apU!I9e(KVhe>Xb&nFbp{ z2*D)PB>z;t<+L<Y~RmXA8@o;`}qeW#RV`IZQaxzrWkB7DiLYXAxIctNDKU*oy>2T96-(IFBdmK_ z#Rs;&pxyo~1`i(h+N^`qnf=)wnXiP?4;YRp!7e?3y#Kx|upA+ z1fBQF^qp3t^`b(2h89hRh$-cpl5Z*+W-D>HiIb~zBir^-^F%#%fQ@6?-h45M(MC2- z-n@h08HWH@Q!*^kiA%B0)-4PVO)-!HnHx%ahR|wLJi3~#s4{FB@=B>`Yn_|P;T-{Y z>MC&=>b~d`Fw-JESZhXXuun4Q2lmZ7CIMI)4C}Xcl)=)&**LlL;d(eOtovpL@Jm>> z#+g!buX{m@CIK#Qc1YD+Sw!o*(B>G4Qktbda1%w$_)rDW8jPXB8p4yy5u~U^Fq7dV z{WJq)yFp02@CwKtzQBrAt9;J0qXi^R#Abt{Mjz2sXJ?-%a?pcv=171MCRn%Naw`V~ ze`*LAdoH33bn>HW2)6G8Y%G`*G4{LyOP;XE$SHI#WIJ3->v{e#l zX2eVR5{*74z>u$;0XL90?TRPf2@8dbY|s*+5dWdUz1&r7%_fTZ)EEIN(6rdLIf~-A zNW9hLu@%{?Cm#u)*6}knWpT>qKXf4}q-lnMEr`6}zOdUF&$aS1Ij9q*OLDpksH5ee z6^U<0L!tg(8x1uN_Lh*nkEKT-4`Ul!)LN?_4nj7`%KH=j`kZP%BRIIn5F8QI&<}0l z^J8?~R?Gc>MzU-gV8dl6^h9Fb+u)49DJz8ZX_=WR(49m50?*-R6P%vE7cWD5jbXX; znOF9K4ER1$LNRDxz7dajbygpLUS*snX30pDCfg$ynVeU67D@Q6!cP{lBz{ELf-6Mg zkkB1|Oa&DeImhqoBZ)I<%%96Rc?NIdYI^$H>oK~~<}!=kP$$U4`@z6Ej(bGOl~NA{ zGDQPz<6e#R4Zf>OFieA3;7oqZ!g&+^)AY*tV{AIu zOA$+Zd!(hUb(Wlc6b6>|rMv$I>O>^s3wn_+s#0Tq|9%E?wWI2Cdcpg&BWl^u-6TE$ zS(b{K#IbFYr4#KNqtM;SxMdOyrvZNPz~y8vEj?`p0+V>)AY^?u)2A-0V#Q_RFO6Mg zef0gqXPY|FPSD!WsZ~GL?=>eanTHVE0QArF=d>#si-sE;Kjj&deT8C}Q9zJXgYGY? z0aj1VBrV3lJW|;@={jGQU=qF37)Y}@LWAcVw z*C2_=$3fzy$FRhY5@!9Q8`$$jwC<=KwCo*WUi`&u&QA-_Q^3z`(GC0s;*A3n3l%G} zo0=JH8!;PHZYQd5xLf@g>zSDnHayBKv~`saR|i#ONW2&SL_eRLw3|1ApuEaVN5BMM zp|}lA2mWTjCz_Iy_jZI0E!cGU{XR`yDR@CUEa=UvaLrXs4MsuHk2FoAsDpZA%Ov2J z9ag@JedwyJ1urP_D0)4R#FcT zw=sM1a24$VzglNbuA)Yq{!>^E3&^Cr>#h>VsDZ}a*FxKm;X-AlK3C@^tXGO8>KK<* zndta8CdfsXNhj28=$-V3+vO?IufT~{uYzQ4HHjp=Um!m5`|(Lx7C(*NV0a$V=i36R z_CjAt@h@5F#C2wVPLv&~L`bOET~ZXK6cnX~yzCe(0i|VAj1XEJ4>q#n1d&`e27t*Bj;^%z}9ej54 zNF7eQJ4tHRxNeS??byOT-6cKi`fZV_mGr5~ohIwZk@dQMpOT)#41EWl0~Nx}P*)(* z?;|a?X%bYOsZ0|~$l1-g?d_aIx%nSZkUk%5V`nnIPPrR>6-(ROP;C9oxqxUvVK|9?J{*!W{k?xoR{4N9JU9NT&uWy#^5XAF=c5N1sjm_%cnDCCJBzBwtSv zP-i9Ku^C`P7Ugr|#$0uNlX5tmB6P*MLv~7w=dfVhuN)Y?YmPU14XY4lmSOUU)pZ8E z>35Tr07=&ck7r;n)hJYvIcaCUS`fpSImt`Y(Tp!ZZ)SWE8~}T!QzE-*&Yx1Fje_}X z-y~0cc22u%!rTi~kB;bJG@y(RBWg5|53&)?_+rAD!Vp*ZuH>a-MNs$&*8^&kmtsH< zZQ0<2!?KJ$ZZM0;s}A4mGeeM^RNSR@kl+j-Iz+Uc>)%f_x4Tmon@!W0^kNTGeH+5Q zy~Fk{sq$eqL7IZrmNzYAld2YH4eWF@m;RpGx-#1W;ZM72P(s;zLv}xJVPa1td zH@H<+zLQ&w7Mgk$H~+}>bupZ`O&-~li^FjnP^(!Rx3X6Q-`KE~I{i2`-FoCT zGSU0ra%A_6KN^}ep*YUkfM5JP%&JM@=fq#6LV|*UB`eXM^HI@_RA1CwGZa_3N?S|M zn&iDYp1{jCzPS&il2$pb{Ti>Rq7t3BX+GTRXwiuEnVL`!t6%+n?eC}Eyp2;b?&5B~jFIY8HMf$SOCep()2M>_40W!4c^)U8gM`gND8uP?20r^*^8LQU=iy2+l}LLxh0-x5 zsi|r-EAWOyV$DtCs_FS{*+ui5napy-=hcgX$|bW+Z>3XKXpH9G4SH9S11pZ^o3ET; zPAH|xmG_yvRa*GD&9}3`x3k=7SaJoHdswKXsQX^IGs)OBDzH;3B|$aePGWxr+9bh% z{;Sub!IXZ_=rNI%=CDW%hW8s`w~re7@dh!(NZ)q~mb}@89AkCo+MeX^4Sw}NcF4&> zcd(oyRWNf6ifm_aGLV7P_5#CVp*-USK0EsGKTW5cU zw?v_?DX2_jaq^i-@B*lp%l~FE#Y>7|U``7}f*#*f#?RE|lUyiPPlj*1*ZZ0Qk8bHT z@V^OX$a^QMy>Vvoyj*$4Q@mv@_kP;h-rOg2O0wF;&&YH#A*_6{Z&K32fSJw`_CbJr z{LP3q`?%>gJnmb$)K7Pj7=aE-gcXPI;aC($-AWQM@%x~X!WE`r(@#cKqRg)`+&u;} zKW^avpga(Z=xfyntrYz_ZhGM9FIyR)+^+$nZ>GhS*xEjesl&jk^yrpmM1>> z_gh9_I=H0-)zm;uA$rwpBYK-TdOcvmr}BfKAW02o2_>!fLh^hTg`FCJ`bzGD`|bSamW1DSVqEhfCcf0cpd#tv zh{T)}DtS*{TfGw}l$}a)y2h{@H&zUA{cZAX=L8K`q|18*ql8y^sc(I^XfF$atjL>4 zi*;<0ix)egi4B|eC2=HCEfsK^ba38yCGk1rM+8Js40X={jhynEFfFR zn0@X3kM@N`CrR?^*G|vU$|HPMLY7XcAGx5Hs{@cPr`s3KZzr@n<=<0r4Qv1O&BP1+2sR8YkkyqOe6eYs( z>Gw`J6!*oKXEd&QaiJXIswDSJ-r~*$u+K-+8he4eLAV6x7ic; zfeS^3yEN3z7t{7A0;*RFG3t{=38qqCZ&%!$y+=4)-_2q;Y&%sX%Wd~0=dqOA`i{K` z!Z+|ha=s&`VO%b&h){T?# za_$RXc8=R5YehdD*PSnox2vB70Ue(0t(m1Chq%%EwNZw5zs6pciS$@=`ZaV78^ z>J84@JJ{Y-NH--ZVZ}HuRXCP)-b|@)Ps#%Voj{PsAsB&RbpP?&k;<2Mk$L!DMQ2ki z60_A$t?Yh1y`AXR5KcZs{o#!w+Y>xG7DoX-e}2S10JQ62G#`aU2_A~nT7QIIDj&2N z>>T=9R!7sZyxL=|0~1017$_7-Ea>8^?*#Bj8r6CT7sIu0*t^r@@CZt+w&Zldzqzp| zovl&81fLVS6SU^bHox9ta{^X$ zs;z{bXC!&XF>+hyWK#igHnr!h@aZH~t!PUlC-^Rwm%uwIK%-V|8 z3E-US8(A9|v$&X8{J)9U**d6_V;Ujc0M2^8o!4ttf=DQ+LX>o&3d#^&eS3Rj2cTXv za84x!br`e6BQC`UaPau&YbpN4ll@a3D4TwzT}8Pf{O8fXW({*ISkJ>_4A z{o0+Y{kxq@X#tx&L|Kek1}e$=zr=9=5&{8SS`Y{*RSi&74J^#;A3GRZ+F0m27~B6N z4v&iZixB)# z1FNeN{3#2X2JHSvWx(ijK=}O&;uifCh;w%Ibr96SqX}T(^oWwbeRp9Mqu>R^Im`Jv>B&~EkOP1pOb@vI z{Cc}+t`9Fu|HGNS4yOC=Sgjc_7I*==H|Yfi@GedDI+$M+=j(vr^L_dDfDVC^xat!b zoy$PR*V^-imp9}P7+1T%xVm*o5lg!Z`9C?~*J+{6%|ZeMh(TSzg>b(1??sDsyn^zJ zb$uPiH%c*HEx<4G(jb6L{%3ph{sQ9{$^1HT1BlxW96;FS1|0Jzml_13D7Yg2KRp9} zx#?vIct#NL4DkA+!9HD!^PjGfiD@+60bGLzxCYq$*=nvJSy^3Y64Ofu9yA0H=oFYO zF8hY6{{rAo(*JcRMm5xoesmzvV$fCJ7!F-Q`A^?aHql590XES8%M_B63yi<=4X#sS zsU+_J0q_nl;GN6kodOr`pG*Hrn!yqil4wdau4W` z%f8)*ToV4DgEcYvCtDq0%?vP7FAsY92iKtd=TMzH(3)rhOc@7ExqR(WJi3HqbgeNx zwHrj3z(6Giy5aJqh-dnT_^-r_zfv%+>k}(OMG8M)7OC|6{UmYW9JMD`Vg7TdUR{R# z0t7qk0^}m; + + + + + + + + + + + + + + diff --git a/buildnumber.txt b/buildnumber.txt index bf0b9f89..a08fb8e1 100644 --- a/buildnumber.txt +++ b/buildnumber.txt @@ -1 +1 @@ -2678 \ No newline at end of file +2687 \ No newline at end of file diff --git a/source/funkin/editors/charter/Charter.hx b/source/funkin/editors/charter/Charter.hx index 30a02c63..3cbbdbea 100644 --- a/source/funkin/editors/charter/Charter.hx +++ b/source/funkin/editors/charter/Charter.hx @@ -1,5 +1,6 @@ package funkin.editors.charter; +import flixel.math.FlxPoint; import funkin.editors.charter.CharterBackdrop.CharterBackdropDummy; import funkin.system.Conductor; import funkin.chart.*; @@ -45,6 +46,8 @@ class Charter extends UIState { public var charterCamera:FlxCamera; // camera for the ui public var uiCamera:FlxCamera; + // selection box for the ui + public var selectionBox:UISliceSprite; public var selection:Array = []; @@ -150,10 +153,16 @@ class Charter extends UIState { gridBackdrop = new CharterBackdrop(); - notesGroup.cameras = gridBackdrop.cameras = [charterCamera]; add(gridBackdropDummy = new CharterBackdropDummy(gridBackdrop)); + selectionBox = new UISliceSprite(0, 0, 2, 2, 'editors/ui/selection'); + selectionBox.visible = false; + selectionBox.scrollFactor.set(1, 1); + selectionBox.incorporeal = true; + + selectionBox.cameras = notesGroup.cameras = gridBackdrop.cameras = [charterCamera]; + topMenuSpr = new UITopMenu(topMenu); topMenuSpr.cameras = uiGroup.cameras = [uiCamera]; @@ -162,6 +171,7 @@ class Charter extends UIState { // adds grid and notes so that they're ALWAYS behind the UI add(gridBackdrop); add(notesGroup); + add(selectionBox); // add the ui group add(uiGroup); // add the top menu last OUT of the ui group so that it stays on top @@ -184,11 +194,17 @@ class Charter extends UIState { } } - public override function update(elapsed:Float) { - // TODO: do optimization like NoteGroup - notesGroup.forEach(function(n) { + /** + * NOTE AND CHARTER GRID LOGIC HERE + */ + #if REGION + var selectionBoxEnabled:Bool = false; + var dragStartPos:FlxPoint = new FlxPoint(); + + public function updateNoteLogic(elapsed:Float) { + notesGroup.forEach(function(n) { n.selected = false; - if (n.hovered) { + if (n.hovered && !selectionBoxEnabled) { if (FlxG.mouse.justReleased) { if (FlxG.keys.pressed.CONTROL) selection.push(n); @@ -205,8 +221,55 @@ class Charter extends UIState { for(n in selection) n.selected = true; - if (gridBackdropDummy.hovered && FlxG.mouse.justReleasedRight) - openContextMenu(topMenu[2].childs); + if (gridBackdropDummy.hovered || (selectionBoxEnabled && gridBackdropDummy.hoveredByChild)) { + var mousePos = FlxG.mouse.getWorldPosition(charterCamera); + if (FlxG.mouse.justPressed) { + selectionBoxEnabled = false; + FlxG.mouse.getWorldPosition(charterCamera, dragStartPos); + } + if (FlxG.mouse.pressed) { + if (Math.abs(mousePos.x - dragStartPos.x) > 20 || Math.abs(mousePos.y - dragStartPos.y) > 20) { + selectionBoxEnabled = true; + } + if (selectionBoxEnabled) { + selectionBox.x = Math.min(mousePos.x, dragStartPos.x); + selectionBox.y = Math.min(mousePos.y, dragStartPos.y); + selectionBox.bWidth = Std.int(Math.abs(mousePos.x - dragStartPos.x)); + selectionBox.bHeight = Std.int(Math.abs(mousePos.y - dragStartPos.y)); + } + } + if (FlxG.mouse.justReleased) { + if (selectionBoxEnabled) { + var minX = Std.int(Math.round(selectionBox.x / 40)); + var minY = Math.round(selectionBox.y / 40) - 1; + var maxX = Std.int(Math.round((selectionBox.x + selectionBox.bWidth) / 40)); + var maxY = Math.round((selectionBox.y + selectionBox.bHeight) / 40); + + selection = []; + notesGroup.forEach(function(n) { + if (n.id >= minX && n.id <= maxX && n.step >= minY && n.step <= maxY) + selection.push(n); + }); + + selectionBoxEnabled = false; + } else { + // place note + var note = new CharterNote(); + note.updatePos(FlxG.keys.pressed.SHIFT ? (mousePos.y / 40) : Std.int(mousePos.y / 40), Std.int(mousePos.x / 40), 0, 0); + notesGroup.add(note); + selection = [note]; + } + } + if (FlxG.mouse.justReleasedRight) + openContextMenu(topMenu[2].childs); + } + selectionBox.visible = selectionBoxEnabled; + } + #end + public override function update(elapsed:Float) { + // TODO: do optimization like NoteGroup + updateNoteLogic(elapsed); + super.update(elapsed); @@ -215,13 +278,13 @@ class Charter extends UIState { // TODO: canTypeText in case an ui input element is focused if (true) { if (controls.LEFT) - FlxG.camera.scroll.x -= 100 * elapsed; + FlxG.camera.scroll.x -= 250 * elapsed; if (controls.RIGHT) - FlxG.camera.scroll.x += 100 * elapsed; + FlxG.camera.scroll.x += 250 * elapsed; if (controls.UP) - FlxG.camera.scroll.y -= 100 * elapsed; + FlxG.camera.scroll.y -= 250 * elapsed; if (controls.DOWN) - FlxG.camera.scroll.y += 100 * elapsed; + FlxG.camera.scroll.y += 250 * elapsed; if (FlxG.keys.justPressed.DELETE) _edit_delete(); diff --git a/source/funkin/editors/charter/CharterBackdrop.hx b/source/funkin/editors/charter/CharterBackdrop.hx index d4e3df93..ee5326f9 100644 --- a/source/funkin/editors/charter/CharterBackdrop.hx +++ b/source/funkin/editors/charter/CharterBackdrop.hx @@ -36,6 +36,7 @@ class CharterBackdropDummy extends UISprite { super(); this.parent = parent; cameras = parent.cameras; + scrollFactor.set(1, 0); } public override function updateButton() { diff --git a/source/funkin/editors/charter/CharterNote.hx b/source/funkin/editors/charter/CharterNote.hx index f596b697..d0aaccef 100644 --- a/source/funkin/editors/charter/CharterNote.hx +++ b/source/funkin/editors/charter/CharterNote.hx @@ -22,7 +22,18 @@ class CharterNote extends UISprite { cursor = BUTTON; } + + public var step:Float; + public var id:Int; + public var susLength:Float; + public var type:Int; + public function updatePos(step:Float, id:Int, susLength:Float = 0, type:Int = 0) { + this.step = step; + this.id = id; + this.susLength = susLength; + this.type = type; + x = id * 40; y = step * 40; @@ -42,6 +53,7 @@ class CharterNote extends UISprite { public override function update(elapsed:Float) { super.update(elapsed); colorTransform.redMultiplier = colorTransform.greenMultiplier = colorTransform.blueMultiplier = selected ? 0.75 : 1; - colorTransform.redOffset = colorTransform.greenOffset = colorTransform.blueOffset = selected ? 96 : 0; + colorTransform.redOffset = colorTransform.greenOffset = selected ? 96 : 0; + colorTransform.blueOffset = selected ? 168 : 0; } } \ No newline at end of file diff --git a/source/funkin/editors/ui/UIContextMenu.hx b/source/funkin/editors/ui/UIContextMenu.hx index 0ff38131..449d9e40 100644 --- a/source/funkin/editors/ui/UIContextMenu.hx +++ b/source/funkin/editors/ui/UIContextMenu.hx @@ -67,6 +67,12 @@ class UIContextMenu extends MusicBeatSubstate { } bg.bWidth = maxW + 8; bg.bHeight = Std.int(lastY - bg.y + 4); + + if (bg.y + bg.bHeight > FlxG.height) { + bg.y -= bg.bHeight; + for(o in contextMenuOptions) + o.y -= bg.bHeight; + } } public function select(option:UIContextMenuOption) { @@ -123,7 +129,7 @@ class UIContextMenuOptionSpr extends UISliceSprite { public override function draw() { alpha = hovered ? 1 : 0; - label.follow(this, 20, 0); + label.follow(this, 20, 2); super.draw(); } diff --git a/source/funkin/editors/ui/UISliceSprite.hx b/source/funkin/editors/ui/UISliceSprite.hx index ec6afc27..eebdf1e9 100644 --- a/source/funkin/editors/ui/UISliceSprite.hx +++ b/source/funkin/editors/ui/UISliceSprite.hx @@ -7,6 +7,8 @@ class UISliceSprite extends UISprite { public var bHeight:Int = 20; public var framesOffset:Int = 0; + public var incorporeal:Bool = false; + public function new(x:Float, y:Float, w:Int, h:Int, path:String) { super(x, y); @@ -15,6 +17,7 @@ class UISliceSprite extends UISprite { } public override function updateButton() { + if (incorporeal) return; __rect.x = x; __rect.y = y; __rect.width = bWidth; @@ -41,7 +44,7 @@ class UISliceSprite extends UISprite { var bottom:FlxFrame = frames.frames[framesOffset + 7]; var bottomright:FlxFrame = frames.frames[framesOffset + 8]; - @:privateAccess { + @:privateAccess if (visible) { // TOP LEFT frame = topleft; setPosition(x, y); @@ -49,10 +52,12 @@ class UISliceSprite extends UISprite { super.drawSuper(); // TOP - frame = top; - setPosition(x + topleft.frame.width, y); - __setSize(bWidth - topleft.frame.width - topright.frame.width, top.frame.height); - super.drawSuper(); + if (bWidth > topleft.frame.width + topright.frame.width) { + frame = top; + setPosition(x + topleft.frame.width, y); + __setSize(bWidth - topleft.frame.width - topright.frame.width, top.frame.height); + super.drawSuper(); + } // TOP RIGHT frame = topright; @@ -61,22 +66,26 @@ class UISliceSprite extends UISprite { super.drawSuper(); // MIDDLE LEFT - frame = middleleft; - setPosition(x, y + top.frame.height); - __setSize(middleleft.frame.width, bHeight - topleft.frame.height - bottomleft.frame.height); - super.drawSuper(); - - // MIDDLE - frame = middle; - setPosition(x + topleft.frame.width, y + top.frame.height); - __setSize(bWidth - middleleft.frame.width - middleright.frame.width, bHeight - topleft.frame.height - bottomleft.frame.height); - super.drawSuper(); + if (bHeight > top.frame.height + bottom.frame.height) { + frame = middleleft; + setPosition(x, y + top.frame.height); + __setSize(middleleft.frame.width, bHeight - topleft.frame.height - bottomleft.frame.height); + super.drawSuper(); + + if (bWidth > middleleft.frame.width + middleright.frame.width) { + // MIDDLE + frame = middle; + setPosition(x + topleft.frame.width, y + top.frame.height); + __setSize(bWidth - middleleft.frame.width - middleright.frame.width, bHeight - topleft.frame.height - bottomleft.frame.height); + super.drawSuper(); + } - // MIDDLE RIGHT - frame = middleright; - setPosition(x + bWidth - topright.frame.width, y + top.frame.height); - __setSize(middleright.frame.width, bHeight - topleft.frame.height - bottomleft.frame.height); - super.drawSuper(); + // MIDDLE RIGHT + frame = middleright; + setPosition(x + bWidth - topright.frame.width, y + top.frame.height); + __setSize(middleright.frame.width, bHeight - topleft.frame.height - bottomleft.frame.height); + super.drawSuper(); + } // BOTTOM LEFT frame = bottomleft; @@ -84,11 +93,13 @@ class UISliceSprite extends UISprite { __setSize(bottomleft.frame.width, bottomleft.frame.height); super.drawSuper(); - // BOTTOM - frame = bottom; - setPosition(x + bottomleft.frame.width, y + bHeight - bottom.frame.height); - __setSize(bWidth - bottomleft.frame.width - bottomright.frame.width, bottom.frame.height); - super.drawSuper(); + if (bWidth > bottomleft.frame.width + bottomright.frame.width) { + // BOTTOM + frame = bottom; + setPosition(x + bottomleft.frame.width, y + bHeight - bottom.frame.height); + __setSize(bWidth - bottomleft.frame.width - bottomright.frame.width, bottom.frame.height); + super.drawSuper(); + } // BOTTOM RIGHT frame = bottomright; diff --git a/source/funkin/options/TreeMenu.hx b/source/funkin/options/TreeMenu.hx index 0d8a60b7..ec13e9f1 100644 --- a/source/funkin/options/TreeMenu.hx +++ b/source/funkin/options/TreeMenu.hx @@ -1,5 +1,6 @@ package funkin.options; +import flixel.FlxState; import funkin.ui.FunkinText; import flixel.tweens.FlxTween; import funkin.menus.MainMenuState; @@ -16,6 +17,8 @@ class TreeMenu extends MusicBeatState { public var pathDesc:FunkinText; public var pathBG:FlxSprite; + public var lastState:Class = Type.getClass(FlxG.state); + public function new() { super(); } @@ -76,7 +79,7 @@ class TreeMenu extends MusicBeatState { } public function exit() { - FlxG.switchState(new MainMenuState()); + FlxG.switchState((lastState != null) ? Type.createInstance(lastState, []) : new MainMenuState()); } public function onMenuClose(m:OptionsScreen) {