From d1aa95341ad72d0e16e9bd14cab6fad42a9f1c17 Mon Sep 17 00:00:00 2001 From: Raihan Surya Date: Thu, 26 Oct 2023 16:39:09 +0700 Subject: [PATCH] Menambahkan Kontroller setting dan update user --- .../Admin/AdminDashboardController.php | 19 +- .../Admin/AdminRefundController.php | 54 +- .../Admin/AdminSettingController.php | 55 +- .../Admin/AdminTransactionController.php | 45 +- .../Controllers/Admin/AdminUserController.php | 39 -- .../Controllers/Login/LoginController.php | 34 +- .../Controllers/Profile/ProfileController.php | 59 ++ .../User/UserContactController.php | 36 +- .../User/UserDashboardController.php | 10 +- .../Controllers/User/UserRefundController.php | 73 +- .../User/UserTransactionController.php | 340 ++++++--- app/Models/Refund.php | 6 +- app/Models/Setting.php | 1 - app/Models/TransactionDescription.php | 1 + app/Models/transaction.php | 4 +- database/factories/UserFactory.php | 2 +- .../2014_10_12_000000_create_users_table.php | 12 +- ...16_08_03_072729_create_provinces_table.php | 3 + .../2016_08_03_072750_create_cities_table.php | 3 + ...16_08_03_072804_create_districts_table.php | 15 +- ...016_08_03_072819_create_villages_table.php | 15 +- ...08_01_073859_create_transactions_table.php | 9 +- ...2023_08_16_044527_create_refunds_table.php | 9 +- ...023_08_27_074453_create_settings_table.php | 9 +- ...023_09_01_044300_create_contacts_table.php | 2 +- ..._create_transaction_descriptions_table.php | 6 +- ...23526_create_refund_descriptions_table.php | 2 +- database/seeders/DatabaseSeeder.php | 5 +- .../assets/audio/Renai Saiban_[Uwamono].mp3 | Bin 0 -> 8838709 bytes public/assets/css/style.css | 2 +- .../assets/img/metode_pembayaran/alfamart.png | Bin 0 -> 62162 bytes .../img/metode_pembayaran/bank_transfer.png | Bin 0 -> 4649 bytes public/assets/img/metode_pembayaran/bca.png | Bin 0 -> 105335 bytes public/assets/img/metode_pembayaran/bri.png | Bin 0 -> 33529 bytes .../assets/img/metode_pembayaran/bri_epay.png | Bin 0 -> 10931 bytes public/assets/img/metode_pembayaran/gopay.png | Bin 0 -> 71257 bytes .../img/metode_pembayaran/indomaret.png | Bin 0 -> 61009 bytes .../assets/img/metode_pembayaran/mandiri.png | Bin 0 -> 64577 bytes public/assets/img/metode_pembayaran/qris.png | Bin 0 -> 27819 bytes public/assets/js/page/modules-datatables.js | 6 + public/assets/js/progress_bar/progress_bar.js | 9 + public/assets/js/user/new-transaction.js | 287 ++++++++ resources/views/Admin/layout/header.blade.php | 36 +- resources/views/Admin/layout/main.blade.php | 51 +- .../views/Admin/layout/sidebar.blade.php | 1 + resources/views/Admin/profile/index.blade.php | 648 ++++++++++++------ .../Admin/refund/detail-refund.blade.php | 87 +-- resources/views/Admin/refund/index.blade.php | 27 +- resources/views/Admin/setting/index.blade.php | 88 ++- .../Admin/setting/modal-add-setting.blade.php | 36 +- .../transaction/detail-transaction.blade.php | 2 +- resources/views/Admin/users/index.blade.php | 8 +- resources/views/User/contact/index.blade.php | 3 +- resources/views/User/layout/main.blade.php | 101 +-- .../views/User/layout/progress-bar.blade.php | 15 + resources/views/User/layout/sidebar.blade.php | 6 - .../views/User/refund/new-refund.blade.php | 122 +++- .../Pembeli/detail-transaction.blade.php | 130 +--- .../User/transaction/Pembeli/index.blade.php | 152 +++- .../Pembeli/modal-keterangan-status.blade.php | 38 +- .../Pembeli/new-transaction.blade.php | 285 +------- resources/views/index.blade.php | 30 +- routes/api.php | 83 ++- routes/web.php | 85 ++- 64 files changed, 1883 insertions(+), 1323 deletions(-) create mode 100644 app/Http/Controllers/Profile/ProfileController.php create mode 100644 public/assets/audio/Renai Saiban_[Uwamono].mp3 create mode 100644 public/assets/img/metode_pembayaran/alfamart.png create mode 100644 public/assets/img/metode_pembayaran/bank_transfer.png create mode 100644 public/assets/img/metode_pembayaran/bca.png create mode 100644 public/assets/img/metode_pembayaran/bri.png create mode 100644 public/assets/img/metode_pembayaran/bri_epay.png create mode 100644 public/assets/img/metode_pembayaran/gopay.png create mode 100644 public/assets/img/metode_pembayaran/indomaret.png create mode 100644 public/assets/img/metode_pembayaran/mandiri.png create mode 100644 public/assets/img/metode_pembayaran/qris.png create mode 100644 public/assets/js/progress_bar/progress_bar.js create mode 100644 public/assets/js/user/new-transaction.js create mode 100644 resources/views/User/layout/progress-bar.blade.php diff --git a/app/Http/Controllers/Admin/AdminDashboardController.php b/app/Http/Controllers/Admin/AdminDashboardController.php index 5b56d105..4f5f150f 100644 --- a/app/Http/Controllers/Admin/AdminDashboardController.php +++ b/app/Http/Controllers/Admin/AdminDashboardController.php @@ -12,29 +12,28 @@ use Illuminate\Support\Facades\Auth; class AdminDashboardController extends Controller { - public function index(){ + public function index() + { $sumSettlement = 0; $sumCancelled = 0; $sumRefund = 0; $currentYear = Carbon::now()->year; $dataChartTransaction = []; $dataChartRefund = []; - for($bulan = 1; $bulan <= 12; $bulan++){ - $transaction = Transaction::whereMonth('created_at',$bulan)->whereYear('created_at', $currentYear)->sum('total_bayar'); + for ($bulan = 1; $bulan <= 12; $bulan++) { + $transaction = Transaction::whereMonth('created_at', $bulan) + ->whereYear('created_at', $currentYear) + ->sum('total_bayar'); // $transaction = Transaction::where('status','finished')->whereMonth('created_at',$bulan)->whereYear('created_at', $currentYear)->sum('total_bayar'); // $refund = Refund::whereMonth('created_at',$bulan)->whereYear('created_at', $currentYear)->sum('total'); // $refund = Refund::where('status','Partial Refund')->whereMonth('created_at',$bulan)->whereYear('created_at', $currentYear)->sum('total'); $dataChartTransaction[] = intval($transaction); // $dataChartRefund[] = intval($refund); } - return view('admin.index',[ - "transaction"=>Transactions::allTransactions(), - "dataChartTransaction" => $dataChartTransaction, + return view('admin.index', [ + 'transaction' => Transactions::allTransactions(), + 'dataChartTransaction' => $dataChartTransaction, // "dataChartRefund" => $dataChartRefund ]); } - - public function profile(){ - return view('admin.profile.index'); - } } diff --git a/app/Http/Controllers/Admin/AdminRefundController.php b/app/Http/Controllers/Admin/AdminRefundController.php index bb559fff..bf748c98 100644 --- a/app/Http/Controllers/Admin/AdminRefundController.php +++ b/app/Http/Controllers/Admin/AdminRefundController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Admin; use App\Models\Refund; use App\Models\Refunds; use App\Http\Controllers\Controller; +use App\Models\RefundDescription; use Illuminate\Http\Request; class AdminRefundController extends Controller @@ -14,60 +15,33 @@ class AdminRefundController extends Controller */ public function index() { - // $refundData = Refund::all(); - // return view('Admin.refund.history-refund', ['history_refund' => $refundData]); return view('admin.refund.index',[ - "refunds" => Refunds::HistoryRefund() + "refunds" => Refund::latest()->get() ]); } - /** - * Show the form for creating a new resource. - */ - public function create() - { - // - } - - /** - * Store a newly created resource in storage. - */ - public function store(Request $request) - { - // - } - /** * Display the specified resource. */ - public function show(Refund $refund) + public function show($id) { + $refund = Refund::find($id); + $refundDescription = RefundDescription::where($id)->get(); return view('admin.refund.detail-refund',[ - "detail_refund"=> Refunds::DetailRefund() + "refund"=> $refund, + 'descriptions' => $refundDescription ]); } - /** - * Show the form for editing the specified resource. - */ - public function edit(Refund $refund) - { - // + public function aprroveRefund($id){ + $query = Refund::where('id',$id)->update([ + + ]); } - /** - * Update the specified resource in storage. - */ - public function update(Request $request, Refund $refund) - { - // - } + public function denyRefund($id){ + $query = Refund::where('id',$id)->update([ - /** - * Remove the specified resource from storage. - */ - public function destroy(Refund $refund) - { - // + ]); } } diff --git a/app/Http/Controllers/Admin/AdminSettingController.php b/app/Http/Controllers/Admin/AdminSettingController.php index 4f47e2ad..7bafff36 100644 --- a/app/Http/Controllers/Admin/AdminSettingController.php +++ b/app/Http/Controllers/Admin/AdminSettingController.php @@ -5,6 +5,9 @@ namespace App\Http\Controllers\Admin; use App\Models\Setting; use Illuminate\Http\Request; use App\Http\Controllers\Controller; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; +use Throwable; class AdminSettingController extends Controller { @@ -24,39 +27,31 @@ class AdminSettingController extends Controller */ public function store(Request $request) { - // dd($request->persentase); - [$tahun, $bulan] = explode('-', $request->bulan_tahun); - Setting::create([ - 'bulan' => $bulan, - 'tahun' => $tahun, - 'persentase' => $request->persentase, - 'status' => 'Active', - ]); - return redirect()->route('admin-setting.index'); - } + try{ + DB::beginTransaction(); + Setting::updateOrCreate( + ['bulan' => $request->bulan, 'tahun' => $request->tahun], + ['persentase' => $request->persentase] + ); + DB::commit(); - /** - * Display the specified resource. - */ - public function show(Setting $setting) - { - // - } + return response()->json(['status' => true, 'message' => 'Berhasil menambah']); + + }catch(Throwable $e){ + DB::rollBack(); + + Log::error($e->getMessage()); + + return response()->json(['status' => false, 'message' => 'Terjadi Kesalahan pada sisi server']); + } - /** - * Show the form for editing the specified resource. - */ - public function edit(Setting $setting) - { - // } /** * Update the specified resource in storage. */ - public function update(Request $request, $id) + public function activeSetting($id) { - // dd($setting['status'] ); $setting = Setting::findOrFail($id); if ($setting->status == 'Active') { $setting->status = 'Nonactive'; @@ -87,15 +82,5 @@ class AdminSettingController extends Controller ]); } } - - // return response()->json($id); - } - - /** - * Remove the specified resource from storage. - */ - public function destroy(Setting $setting) - { - // } } diff --git a/app/Http/Controllers/Admin/AdminTransactionController.php b/app/Http/Controllers/Admin/AdminTransactionController.php index b97155f6..2be473da 100644 --- a/app/Http/Controllers/Admin/AdminTransactionController.php +++ b/app/Http/Controllers/Admin/AdminTransactionController.php @@ -3,7 +3,6 @@ namespace App\Http\Controllers\Admin; use App\Models\Transaction; -use App\Models\Transactions; use App\Http\Controllers\Controller; use Illuminate\Http\Request; @@ -19,53 +18,13 @@ class AdminTransactionController extends Controller ]); } - /** - * Show the form for creating a new resource. - */ - public function create() - { - // - } - - /** - * Store a newly created resource in storage. - */ - public function store(Request $request) - { - // - } - /** * Display the specified resource. */ - public function show(transaction $transaction) + public function show(Transaction $transaction) { return view('admin.transaction.detail-transaction',[ - 'detail_transaction' => Transactions::allDetailTransactions() + 'transaction' => $transaction ]); } - - /** - * Show the form for editing the specified resource. - */ - public function edit(transaction $transaction) - { - // - } - - /** - * Update the specified resource in storage. - */ - public function update(Request $request, transaction $transaction) - { - // - } - - /** - * Remove the specified resource from storage. - */ - public function destroy(transaction $transaction) - { - // - } } diff --git a/app/Http/Controllers/Admin/AdminUserController.php b/app/Http/Controllers/Admin/AdminUserController.php index 577c3edb..ed0f8bdb 100644 --- a/app/Http/Controllers/Admin/AdminUserController.php +++ b/app/Http/Controllers/Admin/AdminUserController.php @@ -13,10 +13,6 @@ class AdminUserController extends Controller */ public function index() { - // $users = User::where('role', 'User') - // ->orderByRaw("FIELD(status, 'Progress', 'Finished', 'Rejected') ASC") - // ->latest() - // ->get(); $users = User::where('role', 'User') ->orderByRaw("CASE WHEN status = 'Progress' THEN 1 WHEN status = 'Finished' THEN 2 WHEN status = 'Rejected' THEN 3 ELSE 4 END ASC") ->latest() @@ -24,22 +20,6 @@ class AdminUserController extends Controller return view('admin.users.index', ['users' => $users]); } - /** - * Show the form for creating a new resource. - */ - public function create() - { - // - } - - /** - * Store a newly created resource in storage. - */ - public function store(Request $request) - { - // - } - /** * Display the specified resource. */ @@ -49,25 +29,6 @@ class AdminUserController extends Controller return view('admin.users.detail-user', ['user' => $user]); } - /** - * Show the form for editing the specified resource. - */ - public function edit(User $user) - { - // - } - - /** - * Update the specified resource in storage. - */ - public function update(Request $request, $id) - { - return response()->json([ - 'user' => $request, - 'id' => $id, - ]); - } - /** * Remove the specified resource from storage. */ diff --git a/app/Http/Controllers/Login/LoginController.php b/app/Http/Controllers/Login/LoginController.php index 4a58e06a..59f3b265 100644 --- a/app/Http/Controllers/Login/LoginController.php +++ b/app/Http/Controllers/Login/LoginController.php @@ -22,16 +22,6 @@ use Ramsey\Uuid\Uuid; class LoginController extends Controller { - // /** - // * Create a new AuthController instance. - // * - // * @return void - // */ - // public function __construct() - // { - // $this->middleware('auth:api', ['except' => ['login', 'authenticate', 'register', 'hai']]); - // } - public function login() { return view('index'); @@ -44,7 +34,6 @@ class LoginController extends Controller */ public function authenticate(Request $request) { - // dd($request); $credentials = $request->validate( [ 'email' => ['required', 'email'], @@ -62,7 +51,6 @@ class LoginController extends Controller if (Auth::user()->status == 'Finished') { $request->session()->regenerate(); if (ucwords(Auth::user()->role) == 'Admin') { - // return redirect()->route('admin.index'); return redirect()->intended('admin'); } else { return redirect()->intended('user'); @@ -74,16 +62,12 @@ class LoginController extends Controller Session::flash('message', 'Akun tidak ditemukan atau sedang dalam pengajuan'); return redirect()->back(); } - } - - // $error = $credentials->errors(); - // ->withInput($request->except('key')) - // ->withErrors($validator) - - return redirect() + }else{ + return redirect() ->back() ->withErrors($credentials) ->onlyInput('email'); + } } /** @@ -221,7 +205,7 @@ class LoginController extends Controller } } - public function statusAkun($email) + public function accountStatus($email) { $result = User::where('email', $email)->get(); if ($result->isNotEmpty()) { @@ -237,14 +221,14 @@ class LoginController extends Controller } } - public function cariProvinsi() + public function searchProvince() { $data = Province::where('name', 'LIKE', '%' . strtoupper(request('q')) . '%')->paginate(10); return response()->json($data); } - public function cariKota($code) + public function searchCity($code) { $data = City::where('province_code', $code) ->where('name', 'LIKE', '%' . strtoupper(request('q')) . '%') @@ -253,7 +237,7 @@ class LoginController extends Controller return response()->json($data); } - public function cariKecamatan($code) + public function searchDistrict($code) { $data = District::where('city_code', $code) ->where('name', 'LIKE', '%' . strtoupper(request('q')) . '%') @@ -262,7 +246,7 @@ class LoginController extends Controller return response()->json($data); } - public function cariKelurahan($code) + public function searchVillage($code) { $data = Village::where('district_code', $code) ->where('name', 'LIKE', '%' . strtoupper(request('q')) . '%') @@ -271,7 +255,7 @@ class LoginController extends Controller return response()->json($data); } - public function kirimKodeVerifikasi(Request $request) + public function sendVerificationCode(Request $request) { $email = $request->get('email'); $code = $request->get('code'); diff --git a/app/Http/Controllers/Profile/ProfileController.php b/app/Http/Controllers/Profile/ProfileController.php new file mode 100644 index 00000000..f609f4f0 --- /dev/null +++ b/app/Http/Controllers/Profile/ProfileController.php @@ -0,0 +1,59 @@ + Auth::user()]); + } + + public function update(Request $request){ + $nama_depan = $request->nama_depan; + $nama_belakang = $request->nama_belakang; + $nohp = $request->nohp; + $kode_kelurahan = $request->kelurahan; + $alamat = $request->alamat; + $nama_bank = $request->nama_bank; + $no_rek = $request->no_rek; + $foto_profile = ''; + if($request->hasFile('foto_profile')){ + $file = $request->file('foto_profile'); + $extension = $file->getClientOriginalExtension(); + $foto_profile = 'Foto-Profil-'.$nama_depan.' '.$nama_belakang.'.'.$extension; + $file->storeAs('storage/foto-profile/'.$foto_profile); + } + + try{ + DB::beginTransaction(); + + User::where('id', Auth::user()->id)->update([ + 'nama_depan' => $nama_depan, + 'nama_belakang' => $nama_belakang, + 'nohp' => $nohp, + 'kode_kelurahan' => $kode_kelurahan, + 'alamat' => $alamat, + 'nama_bank' => $nama_bank, + 'no_rek' => $no_rek, + 'foto_profile' => $foto_profile, + ]); + + DB::commit(); + }catch(Throwable $e){ + DB::rollBack(); + + Log::error($e->getMessage()); + + return response()->json(['status' => false, 'message' => 'Terjadi Kesalahan pada sisi server']); + } + } +} diff --git a/app/Http/Controllers/User/UserContactController.php b/app/Http/Controllers/User/UserContactController.php index 7470fd90..907c871e 100644 --- a/app/Http/Controllers/User/UserContactController.php +++ b/app/Http/Controllers/User/UserContactController.php @@ -18,7 +18,6 @@ class UserContactController extends Controller { $contacts = Contact::where('pemilik_kontak', Auth::user()->email)->get(); return view('user.contact.index', ['contacts' => $contacts]); - // dd($contacts); } public function getContact() @@ -31,14 +30,6 @@ class UserContactController extends Controller return response()->json($data); } - /** - * Show the form for creating a new resource. - */ - public function create() - { - // - } - /** * Store a newly created resource in storage. */ @@ -70,33 +61,10 @@ class UserContactController extends Controller } } - /** - * Display the specified resource. - */ - public function show(Contact $contact) - { - } - - /** - * Show the form for editing the specified resource. - */ - public function edit(Contact $contact) - { - // - } - - /** - * Update the specified resource in storage. - */ - public function update(Request $request, Contact $contact) - { - // - } - /** * Remove the specified resource from storage. */ - public function destroy(Contact $contact, $id) + public function destroy($id) { try { $result = Contact::destroy($id); @@ -121,7 +89,7 @@ class UserContactController extends Controller public function cekEmail($email) { - $result = User::where('email', $email)->get(); + $result = User::where('email', $email)->first(); if ($result->isNotEmpty() && $result[0]->role == 'User' && $result[0]->status != 'Rejected') { if ($result[0]->status == 'Finished') { return response()->json([ diff --git a/app/Http/Controllers/User/UserDashboardController.php b/app/Http/Controllers/User/UserDashboardController.php index 90704e85..c36c55d0 100644 --- a/app/Http/Controllers/User/UserDashboardController.php +++ b/app/Http/Controllers/User/UserDashboardController.php @@ -5,16 +5,16 @@ namespace App\Http\Controllers\User; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Models\RefundUser; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; +use Throwable; class UserDashboardController extends Controller { public function index(){ return view('user.index',[ - "refundUserss"=>RefundUser::HistoryRefundUser() + "refundUserss"=>RefundUser::HistoryRefundUser(), ]); } - - public function profile(){ - return view('user.profile.index'); - } } diff --git a/app/Http/Controllers/User/UserRefundController.php b/app/Http/Controllers/User/UserRefundController.php index 4a1e7942..9b849f49 100644 --- a/app/Http/Controllers/User/UserRefundController.php +++ b/app/Http/Controllers/User/UserRefundController.php @@ -5,26 +5,83 @@ namespace App\Http\Controllers\User; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use App\Models\RefundUser; +use App\Models\Refund; +use App\Models\RefundDescription; +use App\Models\Transaction; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; +use Throwable; class UserRefundController extends Controller { public function index() { return view('user.refund.index', [ - 'name' => 'npannisa', - 'refundUserss' => RefundUser::HistoryRefundUser(), + 'refunds' => Refund::where() ]); } - public function create(Request $request) + public function create($id) { - return view('user.refund.new-refund'); + return view('user.refund.new-refund',['id' => $id]); } - public function historyRefund($id){ - return view('user.transaction.pembeli.history-refund',[ - 'name'=>'npannisa', - "refundUserss"=>RefundUser::HistoryRefundUser() + public function store(Request $request, $id){ + try{ + DB::beginTransaction(); + + $transaction = Transaction::where('id',$id)->first(); + + $refund = Refund::create([ + 'transaction_id' => $id, + 'total' => $transaction->harga, + 'due_date' => $transaction, + 'complain' => $request->complain + ]); + + if ($request->hasFile('files')) { + $files = $request->file('files'); + foreach ($files as $file) { + $filename = $file->getClientOriginalName(); + $mime = $file->getClientMimeType(); + if (strpos($mime, 'image') !== false) { + $type = 'Image'; + $file->storeAs('public/refund-image/', $filename); + } elseif (strpos($mime, 'video') !== false) { + $type = 'Video'; + $file->storeAs('public/refund-video/', $filename); + } else { + $type = 'Other'; + } + + RefundDescription::create([ + 'refund_id' => $refund->id, + 'filename' => $filename, + 'type' => $type + ]); + } + } + + DB::commit(); + }catch(Throwable $e){ + DB::rollback(); + + Log::error($e->getMessage()); + + return response()->json(['success' => false, 'message' => 'Terjadi Kesalahan pada sisi server']); + } + } + + public function show($id){ + $refund = Refund::find($id); + $refundDescription = RefundDescription::where($id)->get(); + return view('admin.refund.detail-refund',[ + "refund"=> $refund, + 'descriptions' => $refundDescription + ]); + return view('user.refund.history-refund',[ + 'refund' => $refund, + 'descriptions' => $refundDescription ]); } } diff --git a/app/Http/Controllers/User/UserTransactionController.php b/app/Http/Controllers/User/UserTransactionController.php index bd6fd7c5..13245094 100644 --- a/app/Http/Controllers/User/UserTransactionController.php +++ b/app/Http/Controllers/User/UserTransactionController.php @@ -5,6 +5,9 @@ namespace App\Http\Controllers\User; use App\Models\Transaction; use App\Models\TransactionDescription; use App\Http\Controllers\Controller; +use App\Models\Contact; +use App\Models\Refund; +use App\Models\RefundDescription; use App\Models\Setting; use Illuminate\Http\Request; use App\Models\TransactionUser; @@ -57,24 +60,20 @@ class UserTransactionController extends Controller ]); } - public function detailTransaction($id) + public function show($id) { return view('user.transaction.pembeli.detail-transaction', [ 'transaction' => Transaction::findOrFail($id), - 'trackings' => TransactionDescription::where('order_id', $id)->get(), + 'trackings' => TransactionDescription::where('order_id', $id) + ->latest() + ->get(), ]); - - // $transaction = Transaction::findOrFail($id); - - // var_dump($transaction->metode_pembayaran == 'qris'); - - // dd(Transaction::findOrFail($id)); } /** * Show the form for creating a new resource. */ - public function createTransaction() + public function create() { $now = Carbon::now(); $bulan = $now->format('F'); @@ -99,12 +98,11 @@ class UserTransactionController extends Controller public function invoiceTransaction($id) { return view('user.transaction.pembeli.invoice-transaction', [ - 'name' => 'npannisa', 'TransactionUser' => TransactionUser::HistoryTransaction(), ]); } - public function storeTransaction(Request $request) + public function store(Request $request) { $pembeli = Auth::user()->email; $penjual = $request->get('email_penjual'); @@ -131,7 +129,7 @@ class UserTransactionController extends Controller $batas_pembayaran = $now->addDays(1)->toDateTimeString(); $batas_pengiriman_barang_awal = $now->addDays(2)->toDateTimeString(); - $batas_pengiriman_barang_akhir = $now->addDays(5)->toDateTimeString(); + $batas_pengiriman_barang_akhir = $now->addDays(4)->toDateTimeString(); $params = [ 'transaction_details' => [ @@ -168,18 +166,21 @@ class UserTransactionController extends Controller ], ], 'callbacks' => [ - 'finish' => 'http://127.0.0.1:8000/user/user-transaction-pembeli/', + 'finish' => route('user-transaction.index.pembeli'), + ], + 'enabled_payments' => [ + 'credit_card', 'gopay', 'shopeepay' ], 'expiry' => [ 'start_time' => $now->format('Y-m-d H:i:s P'), - 'unit' => 'hours', - 'duration' => 24, + 'unit' => 'days', + 'duration' => 1, ], ]; $snap_token = Snap::getSnapToken($params); $token = $snap_token; - $status = 'pending'; + $status = 'created'; $query = Transaction::create([ 'id' => $id, 'pembeli' => $pembeli, @@ -201,8 +202,18 @@ class UserTransactionController extends Controller ]); if ($query) { + $contact = Contact::where('pemilik_kontak', $pembeli) + ->where('relasi_kontak', $penjual) + ->count(); + if ($contact == 0) { + Contact::create([ + 'pemilik_kontak' => $pembeli, + 'relasi_kontak' => $penjual, + ]); + } + TransactionDescription::create([ - 'order_id' => $id, + 'transaction_id' => $id, 'status' => $status, 'user' => $pembeli, 'judul' => 'fa fa-plus', @@ -221,106 +232,115 @@ class UserTransactionController extends Controller } } - public function updateStatusTransaction(Request $request) + public function acceptTransaction($id) { - } - - public function acceptTransaction(Request $request) - { - } - - public function paymentTransaction($id) - { - // Membuat objek Google Translate - $translator = new GoogleTranslate(); - - // Mengatur bahasa sumber (Inggris) dan bahasa target (Indonesia) - $translator->setSource('en'); - $translator->setTarget('id'); - - // Config::$serverKey = 'SB-Mid-server-8rydZAwKoWuoQ6g_3ot0-K7p'; - // Config::$isProduction = false; - // // Set sanitization on (default) - // Config::$isSanitized = true; - // // Set 3DS transaction for credit card to true - // Config::$is3ds = true; - - $payment = Trans::status($id); - $result = json_decode(json_encode($payment), true); - return response()->json([ - 'status' => true, - 'message' => $result, - ]); $query = Transaction::where('id', $id)->update([ - 'currency' => $result['currency'], - 'merchant_id' => $result['merchant_id'], - 'metode_pembayaran' => $result['payment_type'], - 'tanggal_transaksi' => $result['transaction_time'], - 'signature_key' => $result['signature_key'], - 'status' => $result['transaction_status'], - 'status_code' => $result['status_code'], - 'status_message' => $result['status_message'], - 'fraud_status' => $result['fraud_status'], + 'status' => 'process', ]); if ($query) { TransactionDescription::create([ - 'order_id' => $id, - 'status' => $result['transaction_status'], + 'transaction_id' => $id, + 'status' => 'process', + 'background' => 'bg-seller', 'user' => Auth::user()->email, - 'judul' => 'fa fa-plus', - 'background' => 'bg-buyer', - 'deskripsi' => Auth::user()->nama_depan . ' telah membayar menggunakan ' . $result['payment_type'] . ' ' . $result['acquirer'].'. '.$translator->translate($result['status_message']), + 'judul' => 'fas fa-handshake', + 'deskripsi' => 'Transaksi telah diterima oleh ' . Auth::user()->nama_depan, ]); + return response()->json([ 'status' => true, - 'message' => 'Pembayaran sukses. Proses akan dilanjutkan ke penjual', + 'message' => 'Transaksi telah diterima. Siapkan pesanan untuk dikirim ke penjual.', ]); } else { return response()->json([ 'status' => false, - 'message' => 'Pembayaran gagal', + 'message' => 'Gagal update status karena kesalahan server.', ]); } } - /** - * Display the specified resource. - */ - public function show(Transaction $transaction) + public function sendingOrder($id) { - // + $query = Transaction::where('id', $id)->update([ + 'status' => 'sending', + ]); + if ($query) { + TransactionDescription::create([ + 'transaction_id' => $id, + 'status' => 'sending', + 'background' => 'bg-seller', + 'user' => Auth::user()->email, + 'judul' => 'fas fa-truck-moving', + 'deskripsi' => 'Pesanan telah dikirim oleh ' . Auth::user()->nama_depan . ' dan sedang dalam perjalanan menuju pembeli.', + ]); + + return response()->json([ + 'status' => true, + 'message' => 'Pesanan sedang dikirim dan menuju pembeli.', + ]); + } else { + return response()->json([ + 'status' => false, + 'message' => 'Gagal update status karena kesalahan server.', + ]); + } } - /** - * Show the form for editing the specified resource. - */ - public function edit(Transaction $transaction) + public function sentOrder($id) { - // + $query = Transaction::where('id', $id)->update([ + 'status' => 'sended', + ]); + if ($query) { + TransactionDescription::create([ + 'transaction_id' => $id, + 'status' => 'sended', + 'background' => 'bg-seller', + 'user' => Auth::user()->email, + 'judul' => 'fas fa-check', + 'deskripsi' => 'Pesanan telah sampai di tempat pembeli.', + ]); + + return response()->json([ + 'status' => true, + 'message' => 'Pesanan telah sampai di tempat pembeli.', + ]); + } else { + return response()->json([ + 'status' => false, + 'message' => 'Gagal update status karena kesalahan server.', + ]); + } } - /** - * Update the specified resource in storage. - */ - public function update(Request $request, Transaction $transaction) + public function finishTransaction($id) { - // + $query = Transaction::where('id', $id)->update([ + 'status' => 'finished', + ]); + if ($query) { + TransactionDescription::create([ + 'transaction_id' => $id, + 'status' => 'sended', + 'background' => 'bg-buyer', + 'user' => Auth::user()->email, + 'judul' => 'fas fa-check', + 'deskripsi' => 'Pesanan telah sampai di tempat pembeli.', + ]); + + return response()->json([ + 'status' => true, + 'message' => 'Pesanan telah sampai di tempat pembeli.', + ]); + } else { + return response()->json([ + 'status' => false, + 'message' => 'Gagal update status karena kesalahan server.', + ]); + } } - /** - * Remove the specified resource from storage. - */ - public function destroy(Transaction $transaction) - { - // - } - - public function cancelTransaction(){ - $cancel = \Midtrans\Transaction::cancel('005d662f-eaf2-45aa-8789-b5da82a8948d'); - var_dump($cancel); // Hasilnya 200 atau kode - } - - public function translate() + public function payTransaction($id) { // Membuat objek Google Translate $translator = new GoogleTranslate(); @@ -329,10 +349,140 @@ class UserTransactionController extends Controller $translator->setSource('en'); $translator->setTarget('id'); - // Menerjemahkan teks - $translatedText = $translator->translate('Hello, world!'); + $payment = Trans::status($id); + $result = json_decode(json_encode($payment), true); + if (in_array($result['status_code'], ['200', '201', '202'])) { + $query = Transaction::where('id', $id)->update([ + 'currency' => $result['currency'], + 'merchant_id' => $result['merchant_id'], + 'metode_pembayaran' => $result['payment_type'], + 'tanggal_transaksi' => $result['transaction_time'], + 'signature_key' => $result['signature_key'], + 'status' => $result['transaction_status'], + 'fraud_status' => $result['fraud_status'], + ]); + if ($query) { + if ($result['transaction_status'] == 'pending') { + TransactionDescription::create([ + 'transaction_id' => $id, + 'status' => $result['transaction_status'], + 'user' => Auth::user()->email, + 'judul' => 'fas fa-clock', + 'status_code' => $result['status_code'], + 'background' => 'bg-buyer', + 'deskripsi' => 'Pembayaran ditunda.', + ]); + return response()->json([ + 'status' => true, + 'message' => 'Transaksi ditunda. Silahkan bayar nanti selama dalam waktu batas pembayaran.', + ]); + } else { + TransactionDescription::create([ + 'transaction_id' => $id, + 'status' => $result['transaction_status'], + 'user' => Auth::user()->email, + 'judul' => 'fas fa-plus', + 'status_code' => $result['status_code'], + 'background' => 'bg-buyer', + 'deskripsi' => Auth::user()->nama_depan . ' telah sukses melakukan pembayaran. Transaksi diteruskan ke penjual.', + ]); + return response()->json([ + 'status' => true, + 'message' => 'Pembayaran sukses.', + ]); + } + } else { + return response()->json([ + 'status' => false, + 'message' => 'Transaksi pembayaran gagal.', + ]); + } + } elseif (in_array($result['status_code'], ['400', '401', '402', '403', '404', '405', '406', '407', '408', '409', '410', '411', '412', '413'])) { + return response()->json([ + 'status' => false, + 'message' => 'Terjadi kesalahan di server.', + ]); + } else { + return response()->json([ + 'status' => false, + 'message' => 'Transaksi pembayaran gagal', + ]); + } + } - // Output hasil terjemahan - echo $translatedText; + public function cancelTransaction($id) + { + // Membuat objek Google Translate + $translator = new GoogleTranslate(); + + // Mengatur bahasa sumber (Inggris) dan bahasa target (Indonesia) + $translator->setSource('en'); + $translator->setTarget('id'); + + $transaction = Transaction::where('id', $id)->first(); + + if ($transaction->status == 'created') { + $query = Transaction::where('id', $id)->update([ + 'status' => 'cancel', + ]); + if ($query) { + TransactionDescription::create([ + 'transcation_id' => $id, + 'status' => 'cancel', + 'user' => Auth::user()->email, + 'judul' => 'fas fa-exclamation', + 'background' => 'bg-buyer', + 'deskripsi' => 'Transaksi dibatalkan', + ]); + + return response()->json([ + 'status' => true, + 'message' => 'Transaksi berhasil dibatal', + ]); + } else { + return response()->json([ + 'status' => false, + 'message' => 'Transaksi gagal dibatalkan', + ]); + } + } else { + $cancel = json_decode(json_encode(Trans::cancel($id)), true); + if ($cancel['status_code'] == '200') { + $query = Transaction::where('id', $id)->update([ + 'status' => $cancel['transaction_status'], + ]); + if ($query) { + TransactionDescription::create([ + 'transaction_id' => $id, + 'status' => $cancel['transaction_status'], + 'user' => Auth::user()->email, + 'judul' => 'fas fa-exclamation', + 'status_code' => $cancel['status_code'], + 'background' => 'bg-buyer', + 'deskripsi' => $translator->translate($cancel['status_message']), + ]); + + return response()->json([ + 'status' => true, + 'message' => $translator->translate($cancel['status_message']), + ]); + } else { + return response()->json([ + 'status' => false, + 'message' => $translator->translate($cancel['status_message']), + ]); + } + } elseif ($cancel['status_code'] == '412') { + return response()->json([ + 'status' => false, + 'message' => $translator->translate($cancel['status_message']), + ]); + } + } + } + + public function complainTransaction($id) + { + return view('user.refund.new-refund', compact('id')); } } diff --git a/app/Models/Refund.php b/app/Models/Refund.php index 568b2961..4604bef0 100644 --- a/app/Models/Refund.php +++ b/app/Models/Refund.php @@ -15,15 +15,15 @@ class Refund extends Model * @var array */ protected $fillable = [ - 'order_id', + 'transaction_id', 'total', 'due_date', 'status', ]; //Relasi - public function orders(){ - return $this->belongsTo(Transaction::class, 'id', 'order_id'); + public function transaction(){ + return $this->belongsTo(Transaction::class, 'id', 'transaction_id'); } //Relasi } diff --git a/app/Models/Setting.php b/app/Models/Setting.php index 99d25256..b7e200c6 100644 --- a/app/Models/Setting.php +++ b/app/Models/Setting.php @@ -18,6 +18,5 @@ class Setting extends Model 'bulan', 'tahun', 'persentase', - 'status', ]; } diff --git a/app/Models/TransactionDescription.php b/app/Models/TransactionDescription.php index 6810c6ba..66aebddd 100644 --- a/app/Models/TransactionDescription.php +++ b/app/Models/TransactionDescription.php @@ -19,6 +19,7 @@ class TransactionDescription extends Model 'user', 'judul', 'status', + 'status_code', 'background', 'deskripsi' ]; diff --git a/app/Models/transaction.php b/app/Models/transaction.php index 1bcbfa43..4120d1b8 100644 --- a/app/Models/transaction.php +++ b/app/Models/transaction.php @@ -55,11 +55,11 @@ class Transaction extends Model } public function refunds(){ - return $this->hasMany(Refund::class, 'order_id', 'id'); + return $this->hasMany(Refund::class, 'transaction_id', 'id'); } public function transactionDescription(){ - return $this->hasMany(TransactionDescription::class, 'order_id', 'id'); + return $this->hasMany(TransactionDescription::class, 'transaction_id', 'id'); } //Relasi } diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index ee19fe14..bdad536e 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -30,7 +30,7 @@ class UserFactory extends Factory 'nik' => $this->faker->nik($this->faker->randomElement(['male', 'female']),$this->faker->dateTimeBetween('-65 years', '-18 years')), 'alamat'=> $this->faker->address, 'nohp'=> $this->faker->phoneNumber(), - 'persentase_kemiripan' => random_int(0, 100).'%', + 'persentase_kemiripan' => random_int(0, 100), 'status'=> $this->faker->randomElement(['Progress', 'Finished', 'Rejected']), 'gender' => $this->faker->randomElement(['Laki-laki', 'Perempuan']), 'kode_kelurahan' => '1101012002', diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index fc18ea30..588e80c6 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -3,6 +3,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; +use Illuminate\Support\Facades\DB; return new class extends Migration { @@ -12,7 +13,7 @@ return new class extends Migration public function up(): void { Schema::create('users', function (Blueprint $table) { - $table->uuid('id')->primary; + $table->uuid('id')->default(DB::raw('uuid_generate_v4()'))->primary(); $table->string('nama_depan',255); $table->string('nama_belakang',255); $table->date('tanggal_lahir'); @@ -21,19 +22,22 @@ return new class extends Migration $table->string('password'); $table->enum('role',['Admin','User'])->default('User'); $table->string('nohp',20); - $table->string('nik',20); + $table->string('nik',20)->unique(); $table->string('alamat',255); $table->string('foto_ktp')->nullable(); $table->string('foto_wajah')->nullable(); $table->string('foto_profil')->nullable(); - $table->string('persentase_kemiripan')->nullable(); + $table->integer('persentase_kemiripan')->nullable(); $table->enum('status',['Finished','Progress','Rejected'])->default('Progress'); $table->string('gender',15); $table->char('kode_kelurahan',10); + $table->string('no_rek')->nullable(); + $table->string('nama_bank')->nullable(); $table->rememberToken(); $table->timestamps(); - // $table->foreign('kode_kelurahan')->on('villages')->references('code'); + $table->index('status'); + $table->index('kode_kelurahan'); }); } diff --git a/database/migrations/2016_08_03_072729_create_provinces_table.php b/database/migrations/2016_08_03_072729_create_provinces_table.php index 2379b086..3b8e7eca 100644 --- a/database/migrations/2016_08_03_072729_create_provinces_table.php +++ b/database/migrations/2016_08_03_072729_create_provinces_table.php @@ -19,6 +19,9 @@ class CreateProvincesTable extends Migration $table->string('name', 255); $table->text('meta')->nullable(); $table->timestamps(); + + $table->index('code'); + $table->index('id'); }); } diff --git a/database/migrations/2016_08_03_072750_create_cities_table.php b/database/migrations/2016_08_03_072750_create_cities_table.php index 6a917a5d..72cb727f 100644 --- a/database/migrations/2016_08_03_072750_create_cities_table.php +++ b/database/migrations/2016_08_03_072750_create_cities_table.php @@ -25,6 +25,9 @@ class CreateCitiesTable extends Migration ->references('code') ->on(config('laravolt.indonesia.table_prefix').'provinces') ->onUpdate('cascade')->onDelete('restrict'); + $table->index('id'); + $table->index('code'); + $table->index('province_code'); }); } diff --git a/database/migrations/2016_08_03_072804_create_districts_table.php b/database/migrations/2016_08_03_072804_create_districts_table.php index f5b466ed..08e938da 100644 --- a/database/migrations/2016_08_03_072804_create_districts_table.php +++ b/database/migrations/2016_08_03_072804_create_districts_table.php @@ -13,7 +13,7 @@ class CreateDistrictsTable extends Migration */ public function up() { - Schema::create(config('laravolt.indonesia.table_prefix').'districts', function (Blueprint $table) { + Schema::create(config('laravolt.indonesia.table_prefix') . 'districts', function (Blueprint $table) { $table->bigIncrements('id'); $table->char('code', 7)->unique(); $table->char('city_code', 4); @@ -21,10 +21,15 @@ class CreateDistrictsTable extends Migration $table->text('meta')->nullable(); $table->timestamps(); - $table->foreign('city_code') + $table + ->foreign('city_code') ->references('code') - ->on(config('laravolt.indonesia.table_prefix').'cities') - ->onUpdate('cascade')->onDelete('restrict'); + ->on(config('laravolt.indonesia.table_prefix') . 'cities') + ->onUpdate('cascade') + ->onDelete('restrict'); + $table->index('id'); + $table->index('code'); + $table->index('city_code'); }); } @@ -35,6 +40,6 @@ class CreateDistrictsTable extends Migration */ public function down() { - Schema::drop(config('laravolt.indonesia.table_prefix').'districts'); + Schema::drop(config('laravolt.indonesia.table_prefix') . 'districts'); } } diff --git a/database/migrations/2016_08_03_072819_create_villages_table.php b/database/migrations/2016_08_03_072819_create_villages_table.php index 9501bca9..0efb62d1 100644 --- a/database/migrations/2016_08_03_072819_create_villages_table.php +++ b/database/migrations/2016_08_03_072819_create_villages_table.php @@ -13,7 +13,7 @@ class CreateVillagesTable extends Migration */ public function up() { - Schema::create(config('laravolt.indonesia.table_prefix').'villages', function (Blueprint $table) { + Schema::create(config('laravolt.indonesia.table_prefix') . 'villages', function (Blueprint $table) { $table->bigIncrements('id'); $table->char('code', 10)->unique(); $table->char('district_code', 7); @@ -21,10 +21,15 @@ class CreateVillagesTable extends Migration $table->text('meta')->nullable(); $table->timestamps(); - $table->foreign('district_code') + $table + ->foreign('district_code') ->references('code') - ->on(config('laravolt.indonesia.table_prefix').'districts') - ->onUpdate('cascade')->onDelete('restrict'); + ->on(config('laravolt.indonesia.table_prefix') . 'districts') + ->onUpdate('cascade') + ->onDelete('restrict'); + $table->index('id'); + $table->index('code'); + $table->index('district_code'); }); } @@ -35,6 +40,6 @@ class CreateVillagesTable extends Migration */ public function down() { - Schema::drop(config('laravolt.indonesia.table_prefix').'villages'); + Schema::drop(config('laravolt.indonesia.table_prefix') . 'villages'); } } diff --git a/database/migrations/2023_08_01_073859_create_transactions_table.php b/database/migrations/2023_08_01_073859_create_transactions_table.php index c32cebb1..7f5046e9 100644 --- a/database/migrations/2023_08_01_073859_create_transactions_table.php +++ b/database/migrations/2023_08_01_073859_create_transactions_table.php @@ -30,16 +30,19 @@ return new class extends Migration $table->char('currency',3)->nullable(); $table->string('fraud_status')->nullable(); $table->string('merchant_id')->nullable(); - $table->string('status_code')->nullable(); - $table->string('status_message')->nullable(); - $table->enum('status',['settlement','capture','pending','cancel','refund','expire','failure','progress','failed','sending','sended','finished'])->default('pending'); // transaction_status + $table->enum('status',['settlement','capture','pending','cancel','refund', 'expire','failure','process','sending','sended','finished','created'])->default('created'); // transaction_status $table->timestamp('batas_pembayaran'); $table->timestamp('batas_pengiriman_barang_awal'); $table->timestamp('batas_pengiriman_barang_akhir'); $table->timestamp('tanggal_transaksi')->nullable(); + $table->string('nama_bank_penjual'); + $table->string('no_rek_penjual'); $table->timestamps(); + $table->foreign('pembeli')->on('users')->references('email'); $table->foreign('penjual')->on('users')->references('email'); + + $table->index('id'); }); } diff --git a/database/migrations/2023_08_16_044527_create_refunds_table.php b/database/migrations/2023_08_16_044527_create_refunds_table.php index 25e60e5e..d332d54b 100644 --- a/database/migrations/2023_08_16_044527_create_refunds_table.php +++ b/database/migrations/2023_08_16_044527_create_refunds_table.php @@ -12,13 +12,14 @@ return new class extends Migration public function up(): void { Schema::create('refunds', function (Blueprint $table) { - $table->id(); - $table->foreignUuid('order_id'); + $table->uuid('id')->primary(); + $table->foreignUuid('transaction_id'); $table->double('total',10); $table->timestamp('due_date'); - $table->enum('status',['partial refund','deny','pending'])->default('Pending'); + $table->enum('status',['partial refund','deny','pending'])->default('pending'); + $table->text('complaint'); $table->timestamps(); - $table->foreign('order_id')->on('transactions')->references('id'); + $table->foreign('transaction_id')->on('transactions')->references('id'); }); } diff --git a/database/migrations/2023_08_27_074453_create_settings_table.php b/database/migrations/2023_08_27_074453_create_settings_table.php index ce097fd2..7e00fa20 100644 --- a/database/migrations/2023_08_27_074453_create_settings_table.php +++ b/database/migrations/2023_08_27_074453_create_settings_table.php @@ -12,11 +12,12 @@ return new class extends Migration public function up(): void { Schema::create('settings', function (Blueprint $table) { - $table->id(); - $table->string('bulan',20); + $table->uuid('id')->primary(); + $table->string('bulan',5); $table->string('tahun',5); - $table->integer('persentase'); - $table->enum('status',['Active', 'Nonactive']); + $table->float('persentase'); + $table->enum('status',['Active', 'Nonactive'])->default('Active'); + $table->unique(['bulan','tahun']); $table->timestamps(); }); } diff --git a/database/migrations/2023_09_01_044300_create_contacts_table.php b/database/migrations/2023_09_01_044300_create_contacts_table.php index 94371bdd..5a245248 100644 --- a/database/migrations/2023_09_01_044300_create_contacts_table.php +++ b/database/migrations/2023_09_01_044300_create_contacts_table.php @@ -12,7 +12,7 @@ return new class extends Migration public function up(): void { Schema::create('contacts', function (Blueprint $table) { - $table->id(); + $table->uuid('id')->primary(); $table->string('pemilik_kontak'); $table->string('relasi_kontak'); $table->foreign('pemilik_kontak')->on('users')->references('email'); diff --git a/database/migrations/2023_09_04_022513_create_transaction_descriptions_table.php b/database/migrations/2023_09_04_022513_create_transaction_descriptions_table.php index 43098c4d..e409f3ce 100644 --- a/database/migrations/2023_09_04_022513_create_transaction_descriptions_table.php +++ b/database/migrations/2023_09_04_022513_create_transaction_descriptions_table.php @@ -13,15 +13,17 @@ return new class extends Migration { Schema::create('transaction_descriptions', function (Blueprint $table) { $table->id(); - $table->foreignUuid('order_id'); + $table->foreignUuid('transaction_id'); $table->string('status',15); $table->string('user'); $table->string('background'); $table->string('judul'); $table->string('deskripsi'); + $table->string('status_code')->nullable(); + $table->string('bukti_foto')->nullable(); $table->timestamps(); - $table->foreign('order_id')->on('transactions')->references('id'); + $table->foreign('transaction_id')->on('transactions')->references('id'); $table->foreign('user')->on('users')->references('email'); }); } diff --git a/database/migrations/2023_09_04_023526_create_refund_descriptions_table.php b/database/migrations/2023_09_04_023526_create_refund_descriptions_table.php index 6481bc8a..6e2ef9fa 100644 --- a/database/migrations/2023_09_04_023526_create_refund_descriptions_table.php +++ b/database/migrations/2023_09_04_023526_create_refund_descriptions_table.php @@ -13,7 +13,7 @@ return new class extends Migration { Schema::create('refund_descriptions', function (Blueprint $table) { $table->id(); - $table->foreignId('refund_id'); + $table->foreignUuid('refund_id'); $table->string('filename'); $table->string('type'); $table->timestamps(); diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 87bef331..e4eb484b 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -39,16 +39,17 @@ class DatabaseSeeder extends Seeder 'alamat' => $faker->address, 'nohp' => $faker->phoneNumber(), 'status' => 'Finished', - 'persentase_kemiripan' => '100%', + 'persentase_kemiripan' => 100, 'gender' => $faker->randomElement(['Laki-laki', 'Perempuan']), 'kode_kelurahan' => '1101012002', ]); User::factory(20)->create(); $now = Carbon::now()->tz('Asia/Jakarta'); - $bulan = $now->format('F'); + $bulan = $now->format('n'); $tahun = $now->year; Setting::create([ + 'id' => Str::uuid(), 'bulan' => $bulan, 'tahun' => $tahun, 'persentase' => 5, diff --git a/public/assets/audio/Renai Saiban_[Uwamono].mp3 b/public/assets/audio/Renai Saiban_[Uwamono].mp3 new file mode 100644 index 0000000000000000000000000000000000000000..8d9c03dfcd334e9ba28ccae9bb1b011d14641c64 GIT binary patch literal 8838709 zcmeFXcT`i)yYC-*fY3WqLg+p8-aCZet054YfT4(hi1glTDAGZ?bO8}5q4y3dN*6?w zWL^(R$Li&RdNLP1n1<1#z&mmxUX9b9*gg#UsrG|8K*ADhYng$z~IR)Qx zl5vJ8DH6#C$_9F&ypaBm;6N`=Z$H^U1&E{bZ3I&GI{({cVF>tl6aQNZ5S8C z7g-Z^%|9Ev{-*$O^Y=%|3Jc%8dspbLn9yxsS78wu8JXWI5fv4@wh;6S^7eNO6!i9E z|E-EY>QG1eIr+My{M~PRgMX{j5pnyDzXAkueINW+PrOk2`hQpN?I-kmzl5A_dkF_R zqJ%|+pu%2W!v9#p&tD_px{^N~`lluQ%z{uzVH2d^?K{3sNR0rbw?F$oR&fpUe_g@< z$5{P8^3dxK57mRb9lhM0^pVc)*F*7J@2*?W*O%4t_Vai2c0%f?D?qNV2)VmE%WA4h zimOVhNQtY6h-;{dh^VSdtEh-dTwm2t*N~FZ_=n=^x1H{IUHkr5ap&KP%lxN{8~VCm zhnS=1|DS4P^{=DL+0oxo-O(SZ01<_XLIp*jf})~kB9gM=P+4(teyEfz6#AFfvii53 z-CctIBWtmLYpt#?>v+f6{kEy27s?Z9@_Q5F($N1|-M=;XZB!K?YPY>mzDPemr1M{m z{$-`+=IHH>^!&rj)F0`Ky#0GDg601h4sCZo|J%MnzlG^{37s+!2e?euD-Qhm?a9DY^fknUWTe4ZQ@^<=L<#_iUvUsDBm=ONfAa$rCJ6cM#;^2?!2hcRe%CMA zF#zCxO#pa(XafcSu&#d<*MG0G;$Z*)?q51G|CN3b_(kCVI)VR{{(jRh>HkK*|JNP< z)!;7zzX<$I;Fo^?M)522i@?7efnWOlmm9KQ4*w$XH-TUJ{Ts!v%r64}as+Gy9GzcRlF{L2yerQd(KA^YXb4mL&w6cQJrdKhq>pvoN0denNtD!#Mm zf?7~1@8{V!%hV~QC_n=9Rse2~-If(7D1=rnZfa@ke)H%2o(wZpHS&HJy3y6`UFrnR zRoSrU!6Zs~YvsMs0>(byS^DnRno-5<1Egt7+EoHkWa{d-)FYgdd92wr8G%jF85)RA zlKRTQ_k{Ee(G#Zl0eeCm`RY*wrEF>|nSvfi75N;mtW6HgbkJz`(T?nPy=)KHs+b8(GN;K4i3P7%5HhGk0MsO<0jcj?iNCtTZ26XRuBLrJjZ^kdD66WM< zf0KtG$nYrA7JD@E2(;}v?hE}jVA2qi)2(AJ69ijKvEyO+QQ#vn4f`q(aX+6|ms z5vVH~ z<>`K!%aEfTt8byJ)g6q}oyTvUuYV|3-Kj&AyyZ-)6@?4XlqxCWynVZ`mCacT4ZQ+{ zS%ojis(&Z%fyX3GlYVB(iY4A0!j`6SCkXMp)s5};|c0dM#Ovs zItj=@^DK3Bbzu}(Ky|j%qfD;&F@&`O;T(jEGV;zXh@6efvrUL_)nX3G+yaQ&`#BbP zmYcl`ONl4YQm~N4eb@3~<_aOUYML9&xS@`TkduOGvw#v;1493yaOymU=BrUeCoMfa zr-)b#P6GY2&xA+PF9)y^q{wc_QBL&DYEzOiLap{nshH%%$;S?lG$+CkKzMx6+U&j_ zHeSYB*j@yf*N(m4{BUw|B`=q2Y5dyI?29Z7v2_)iw;_#i62Gc5v z!Nzi;^}BVT`Gy5o(*da?UqeOVl#$k?r^rP&;=5U)_1?#5E|i;sIXNTn*zLJczyod< z*Q-ak;Q)0m)zfegK13{e4Bn4Ppv%Qo-`zZ(azq49`GjxwNpZ*D3NLjGON-;+hLKRa z?XmZ{bRIVvDyee$^oxLskE*~`WqG+wg?zRDaSBxiv{8pgh{3o}eMT7+x(RI)1?7>E zPo1im3a|C6P71(p36iBafcq|{N?9tz@7P!FT|Meq861!=KED(#(PJJ@w;b?QK4pzW z;V}21V=CTH;)IJ-0|=wT03v+Cl(f=)+MszsCAZ^r!ofKjGJ;`g7i|3GjQ&nmvz^yjjxO9v<=83;5?gXwrtQw{Z{L!tJ$f6`+>In<;9QcC zpJJ!^=|f^S9GI3jOGuEUUO0J#xQd$0aaol9cIlaOp*`pLW54KQ+tyEM-P>uIE8ni9 zA0NE@?2~Lw<)&laVJOX|8nC3+N0gif08BE}UhECK-xN4~-n-eM^?DG9}q*x$PqmJ`$I&xXa#djPVYItGCdi+cKCw8)`Ec*Kj?o<+(xZGU~cF-jeU0%kv zt!%T56EioTmWHjOKXJ7z8AdaAltLSnL!$L6VEU=}TDmLt zvzqhDrda`e_tl3UVi;+DfI3ASzY|JD#X`ET7uH7=QBNX?5J2S(+cX%!30`n)Tjkkk z)9@YlNDrynHL1#zcTPFK?-9)%ugE5=uvGAMRb!vW)^Oh$$9?w@HYOu4K%nNgG{6?k z4r#7M`XRz81G%R}e*6lGNjLqD`sB``LEazVq%)&XBTcb$EAu{ai(!oNvk?ZL|VVfVTo3wEkAxI zFET^Oz)CvLn0!Z3I9{`V3^j@`lyn(l@^H&TTLp_^iZ^l0iSoYm#$`t!x=ELV9;~V- zCB%__HbYfhNQf6Rx8z@nM-W3$dhs&4#XfuMQw)Lo%(T<(oil;4_3iQ$<5W4X+9$4u zf+mL>K9l9lP2=D1f8!F0#WnL=chsJBll_*8GcO zZzE=+)Dk`!mUu2HRh#<+wR{W%&R=sjIq&9Vj4+NV^N|vJ<|J}75AT|mXQgE@C5*g% zpE6t2wzfq%6xAv@X_8mr!{*JYS(iwW&*2b0HY%;$$inslGl6H>l!KnkT5c^*WCDqn z_F3Ln&rl~PAipKnvDVqOXO0yLj@`0*s=;Y!WFuD{8R+v^K#|G0^NpxBBTG5gLcsz1 zY}zJClue_RK8}Wh>_M`0r|eYp;>?QnUBgEb6k~`8%9Ho#i@e9^)S5UgNdcyZaVxO# zSqZGX7e3RI^u63dL}OOZcsaQW@DWd|yAhK^rJ zE@bp_v^QXb9I6CO8sCW^s&qETSBX#Gl#JctL)4%Luw@9dPZldIeA#h^3guFfZ%JwM zlG8OGV%H|T3ntZV@Y`z?uR%nyhVxv+?qctMtszQBb%HW-x4+1X3z3Z?7-OwqZH&O$ z%L6;Lxs&a;^`*JwBW<+fLx>kA6^4AnigcEROzP$tue2JfZqq7#pQJ;i6;4*~{_@$|lOKP&OsiMK*4oGt!o3==x-lRv^BfX;GFgF>THg zRGr#5X5=fSFMaA%X~H6x1b3teN+#nZZ^jh&NpDgBl^WBfZ*3{=v_XgHsR<)S9M%_- z^eVLck^H+4Q8KK=sl~PT&`c?1+zo@>SlI!hEGhOUt4HmzcqV~IkW6#eYJIjG+ISC- z>cZ27Li-BcY)}Bs6pQE0v$Mz%5KEVOkJ76~ID8Jt>lk4wz`$d@m(mv<=n|;i92M^ zI+;zAFGW?T?b|J~N3nizAGP1p?U}@LKWL*;0BKH;*1$Bd3}X{Tq8GD9@wHqfO(g}S zhZ4(6U_QHIcvUCN{I!wVd5X7hMDbSKhc!XuTO=2rwu#(xL)0fIBqc$JjIFW?e%&rbI z<~1WppoKHy?xTF@B&-8(<0`}4Nz@G!frUq_&i!^jdaWr)b}#Mx52qO-9>Hh?(u%B% zZ`6^4He`V%mobp%n4ZRFg!AEuxQs$Fo+`4Tl!8t?ux$zxo#Vz`T%;MWyW;VQXtvyF z)99RUHF4as<>pfj7++D3B-4h=3R|TOdJ|;Pk87anf8Jy->wNivYQXqFW-wfSC~@xe zl@Zh`q|x_+{Hf(yq>!B{!{?kynw)r7mbIl+GM>)KuP1ujuM4GJ+Sb|n(o*>hY+y@&O!0+<_%@k>^CXHT+;CcgtJn>6OF9s%}GSoiFn{iI%=nj}IxC6pD9iR*jZ=$4CTz%B+@{ z_YFjE?d*K;F)*5VwB+bGdz{wt&ed4e*91BDzKn>MB`5w|7bT76r{OhwRw%5DvX~z` zjEbVyFL3bZR}V3@7iJZ-8a;25k#!_43JE%sXf*3`qT0@R=XVOwNarn;C zxy5_nOOm;jp_20tUy9SEqZ`}Qaw*)88BV{z6=AKLcUG4jlYOe2i3y+L(5oEKy!c#` z-ZagrlFpDc$N`!~l#1XTpDlQ1$IyKfP%Y?oXIDz=3a+Fvoz zbym*)pEI7YSoxt4&rjN8EC z`jThdY6ABjHj5^t5tdKYKgQ!7Y-?6lcT-wkvQEno!p*L3SIuMN$R>0^;Fnoh1H3e4 zvV2sE4$eyWhD$B5KG3y08JjUcmOf`UC6dn&@-@!h!G9oq7JV^4pEs|TX>wYg{m_bP z6|;JIA>}6(+7PVT+@CIkh?+%Xo+j)~7*H?>JCAOj;T3-CRf45?>c1wgQiff$=>P@b zW17rm1z@*3oN0Y3gl$sI(pN0-OfOT{?EDQhIuI}enVoC{jq9kQtkpa-ra-i;;l`Wz z7EIDj=qjQ}@xv(5{!X*Pre^Cj2ZOLETP~k(^gB&@y+yf$WiNcUD#S`pZXM=3ICR;y zaFE&M<%O%|R?em^FbO%TV&%^|#udggr28AdWN~)pR!fk> zHKYuJSs4r%7fWl9S}EHg9r>COXx}dIwCXMUWa>%%X|oVdexYrRu3=thQ`Jp}8mX2V zr^A_1p^CHUU3T_`W>TEGHa!_pkuOu!#!dtGLbU1C1klsJ_jc;lCN7za$x3a(Jfz+6a~x~0mS>eKXY;9#zG zBu89U5bLx#{0D5-tif!r|2@AVBK9^RS>`Lw249+KD+4PHsBj%>7g#Z8cDlPW#%4r~ z29u586TIVdDII>uG-5^~tybrm8rZqKlhhqG05s4YxNhTwa5VPSaNHyYf!Y&^w*P$EakO3Y3Vl>_JQeWZ*8gAi|DUdUZkHRR7&RW*4!`(n0SrfLemG( zk4R9a9og!)V=SYjcixDwBp)Md`%S+j00QCQ=W6(H@}tL6`^Y4KP4X^56?ARFLcRp` znd3t7RjsX}sM#F&o#dL251z83buiATW|J@OSV|Pt+4gd-kR(HH(j;jdtWzdM-g^#o zIjgT2gvvsn=p{I}*WT=kAR17$mb|&ux?Jwrf9?XY!F7(^xtgY9Vy)Lvt=V>at*$=N zTfG*(P7&n$x!`6D#8`f#*MFXIF1GaN5mSUJ+RY=m07jK#p!8-PL>2}81xdk^gOBC zQp4Z_bt+5PCma|8v-6G1^T{?60+S$dgnz$P4mUOMt=ddhMwD9kT>qHS5f=O-gLsvO zX1~BuJ~p--j_(|e^m3>~riG9}XsY`73IAS!k4x2lnnr)Yc|tROzQXpckR=otD*|GwF&Y(ghyf)dwU9tO zj

|hkQv|THJ<$lx%jq`~|8SCC*76p(+!uN5tMg)>)5;w>K-I5me2|B+cW(xIG{| z9mIMc;jzBR6Qp6VC0ys4mXeaN`{`yw6@{^~_r4^Vw@paOInv5FDr&hWSoo2x1^8?i zC2?sAVZm%C6|{8eQM_dBO7@W*t*V_d(`@RGM<*pbdWN-@fw$(|eDK;X$hSZ*O9Cq+ z_?gPys(&$^E8_@&?-Vpsi)EjB+{`bL#quWC+&S;b^m@ydn6K z84Wo$o+7Pqq)BiPFiMUo_2|*9Lr^Gr&}`vdRY>M8dxDQ$nEW1^>=$~PG_Oq zfuC&|XTZgeoVRB4x3fw1&^FA`^k-%p*gT9eOITEpX9eHZI&0nSs!5D|?MM-OpV z4%qG<#sOzbeC|wZ@Aze|PFXTnhjLH_k{XcA5OWD_Z0JW|t;+=L#OSYxHg(S_uls3e z12tX2N$nh;!vNm`W%!3vvBU0|SD zzkkkMZQbk^AR84`(UO5EUbkb;xf;Je zn~*}azHoX2JIG~!y2v(O$!tlUzf|c?+3s@Hs*PyO`!eT)Ax2MBa;jNV7qd44u|;W8 zI@S!nr+|8`mrAI+Bpi1JOJ^NBT(Tz~q2oP^_TMwE7L@Js&82&X;gIkaP*Ap-J0Kr_ zTSb%?5+q^pzA22=*$XzAqs?W>52R{WOpqt#*uJqlP_dWvSZ40+cQGO^nX^=PXsrvO zysZ*vq|xe;-;9p>rYik0>#JI&dJ`SblT+n-ZSDqUoyd2a->94hvlDfKnx*s&D~e<| zPv*0EY0@WQsq1EU>hzbDl?n+2c=#HO+C$=IYvlN?2NMe%hVf^LXpGKyk`B)|2LjUi zF_HVT9Ybk(Y#icUlp=!V?f`V1B}G7_c3QRW>CWi;JeeFkZA%8lJ00W@XJy)h8|AG= znwrlUX~`0>A*CXG7WU~GT0n-?zHBR@lg9mQYh|+S%Aw6~KBAtDu1Z-Xo6Gs02IVBw zjES-)^3utR7d|FHy<%R`d3`>Nxg{q;Bo4^u)1PC`}eyi*E4K`HdrpB;|6a$*S z^@|G#PzE3&+wvjBqZJ->4~9iYl;B2(M+-iYc?Ejb_%#jqw!2kCMlV zX(9ew6#MmsFWF_~6y3ER!`vsvxQ^|H@T3>~Z;4M<>zF9k=^9Yy)0opW>ts0YKUWbb zL>O|WrlZ|jJ}^I`Dhm;n4|2k&_8)xLs$19A!C%$TMRk$lIc4(T7S4Js ztbP{JrI^mEX;QU3TvnjrXYUs^cZ9*xF=7&~I z5u0W)h=-tFK2%zDeT4sD#R&xSmSB;x?qflVu40OADzh9E8xJe24=s>Y?gdEz^nYF6 z*cZuVzb&veg6ogi_OmD#l%JV`l@jSQJDd&{ZP0vf5Ze4EH@wJ@0CLvgm_dui?tTBKr=8LYdn?mkt8V3Tk2+UoGad zGnO@fefvpZ^{6*Ar0#O!=2MIMcYCap&q+d?-`u(Cb)A%oPI>wL?)R&!>7Qp4pf3%f z)}f5A9~3KnJhSO~8S)WYZ)aq+k?;lgK}~;0c;5h3DeH-fh#Qj~U-$-*CmD(5?UD0& z9VX9c?jyR=%{T&wrNpqEg} zSUz&K%v?TzRz4G`Rbi&(qg;uRcvb*uJ`|&8<5O{@(rirWekOPwH_}KeIG!=II_NKlR-D z>%BA4KRHHH1_IIu0Va5Wd9No|Kc1ywoZ>L$(7uSKq0>Llj|d#>M}OW`2E46X6P`f< z7)8Qa?)Lz2%$nF!pM(MWkF~A5Wq{wH$8cJpJrvpj0vMXLr%)13I*|-Vwh~9P<0*&B zJcYNKO1kswj!Jx?dHnq2q`C;ONn>*A=Aj8AVbzCu6X}8Y*qimcpV^itWDJ3M zx~l>8-4!%kVP&7HJ@q&!_}kjr7MmIHg4Vr16=Wpnbl)=4;ygDy&-AUKxz*Cy0P4l8 z+*-;qeU+tE-jdLk&GYEUHED_@zSq>iME8r~!){VXq4umq|CbY%K3C85Z21dHMr@jG z1(ZmBekpc;9`e?=F1qPWMITRip8ysBjMMJ?^hf)=8a5ydDg-D2sM0e=@rK2b(36JE zRg?(Q7h_+9xe)>T)U9ZCT}Z>wh*g?B{1N~R&jlDJ3nv9=I>Z+ojWLz`-)K(8;DmwQ zY7|O>Ojo@3fy1$ske#QSubv8fnN>*|5vI&vpPy&VUo^h_ioGy`7?w6PIej~>)cGY> z&eyzgbB*bX(%rg%4~I+bqzjs!pBGbeUEQ1WSAxC>T0A!?V0N@@C!+LNPtvm^Vjx@rS zm|hX9&m~aIZnWujqZ32aoqbfR$a~?CJt6?1ggBBrhXLxi%J3~P&l@C_XXS8OG$r;Gn zcRyI=+zGAmiMSc-!ATrjtLuui9((wXP(g@xw{5+hvOLmb`o*}GltNa=bW5_UVEed@ zy{Ylr!<#bw(B!!C21&&bP94g3jg1`0zmixiH z8Dzp)KDZ}tBcVLPO7^=cuU zJGV3rkR5h9xH_dPW|^oP>346O`9Yqb#oQ{gYEK>eVk~9C9Hd|}ggi;qJ|}jY))5l! z1;SeqwJ@_Dok0=80cvDNqkp!vZVaCrrn5nvdm=Z;TBWkkN`Z1BTCG8BC^7dLzvaoo z2}{abc^x6ymvv;6!e$17JVRtuG~9}UY}vZi#B{M76^4a5W~FMz0#z?p@1%;J-*fP( zk)kTkGMc4&dP{Y}?^~z74v)wh>WC{7juri|4=!_W5TI+bjZPz_VuD6j^UKGdL{8&p zsN!ZJ-noz{GJrVf$gdW9XQwP*n|vD&V%&owT|Q?Ry`1lC>3(DI6G|VNF~s%e$sxbk zhEl#{b1l|^Tgy@rH|={DUykO$>h%f!36ahPi2X9ZU0ND*LHxeI!}|`HmTByUa|S|7 zzp|J&E26!jqwo_$Va{ea(I?R}+FO>%@5067PE!Omb$S-?rqQc_<`!MP1M!mfl#+mE7Ylo&P zuG5qUVq5<(%1Br#PGjV^_jwr`i?ID*ZtWEU%cd1TZLuZNaL(4w{n#+RSW!)gTI!I# zKJQws*JA;*GH@9Es80OY=q1O2p6S4gCwnM|i1)7K2=;B!JrZMBViKg~li}6AX=NvY zM2x=IZZ?VMYAO%WGsMDM?-*qFTc#%&j2D-STf!e?(K1O;bRp@=WLxw$zxshw5flr$NhDy0aTOtvGM8yMojOOf(OLJ7b`iN_+{{^$Z+7 zel@kW&q=rJy_InY_0$g7eBuSZ&W0={8*TjjBHTOXbx56WU~jRVT5us4O`Hd{^Z(NE zjcP0+Mh~CUJk}M(Qk7D1VPA2NGDp?-hm|NFb==R4o6^!2jzlx6?u@%hlD^}U(7;pb zq}9DPD{HG*3!=pGR^m#xw+hcvxD719=!pCT7du~{zaNbMlNoT=)z>~O=MC|Y5nRwL z^~RtGsC7>|Vi*rlEBd>BK_kj=tsC7=$JFSEBTw&_(S(N8r^ZUajbz!L335Ue`|0t*5Z( zz6xgdK6ToR1))KXS!Aq6t}gN{^QTC%Q%IM)S*@Gy?nFY05I@z3v<^|OX36>Sdv&LE zCC)mfO)(q3<>aED%*7mnXx@;Gqw%+QZh9ov9G1dbEsZ(wLsEIa$bAlQ$I`ORBG-_= z6zDUia_tAD+!PJ$9N!2-X{Jx#FHO&2Q`z8A5jocG&vQc4gt4n9iG!P|a+4v=!e;SF zkE2t_S3`o;=fYSHo-{jYbCL`LA2@k`BX7I|6>I@_aMFdN>(rv^iEM%Ry=Avs(T7sv zT#_?HVXZv){Jb%!2Mv&>y-tT^X z?;ps7A5VqdBOpqW4-x$;_;|$GaL&K9x&eLG4xKe$sEhanOIM{DklT1A%GZz*tCtls zZk|h~qqcBY2Chmmr>ZMxlsV!;RNcO%Q^RvUI{B$a9<=XPz1BK3Tdh*N)g>^rv>%tk zmU0@e-kZ$$g{z5l1W6)X!lkR1*}m7%GB#K62xj+#k};eGFR6HJoz4d`ZttDSGHz1C{j3iBm4T3RQeJX#EjaZe&<=)r(NuIh zGx`sK0|>n9!;0h!20B}{GjLz=qxt$5B;tf-P9=Pa++PZwYu#S)62wg zkI@^Mu9gaQ(s|WFuTBM}2S98&M^PIK!uJ|sQ7qV=a|k9*aR{;br;K}Bs;EqkMslFu7% zMnRPt%O)dO<|uw6&S_0SS$lw?%{A_o&Dh1s;MfFr%`CcX@whiCs(so@Su~`{Qp9R5 zvM|6Z9uGA=@mj3A)l%q@TQA)2<5Wm!(q+}bL~ZKhpG)w@ke30)=|9EV^MbADpLk|Y z6){mDog@4X-R3mV)xk8Dxs}qGcw$RE~$tE2a8(J<6QfysKopz zDn!ipJ1?vf>OS-G^mxRX+MCpwCgFp<2|-M7CFuNf*c$ZonHoZ0XU_4Yj-;*`w~CgT zHGbk7)k6CYwe|uF1AkJ+_t?gklY_&FOrr~%PvrExnpvy!IV{NrADRh099^_rb5uiv z8?rpcTWarK@rK5F1yy+?52?I5Zb++LnfD$LR)y`9tkn>76{`@|I?5E_o}?oV;s-X% z2b9w~-jBP2Yc*m=msq>U>wsl)zY6d zDt|U5I+Qg9&$_=J)lK0@fjXziw4_LjDsgU5ajVrAiNN+CF8iqw3_ zL7!=o{k3~gbNm_T0ztIork$QAG1zcK_n=%CJsrQ+jn1e?~FIa?Met5HBYw_pm zjQaP_(SWY2;{n8=?BkReIwcrjJ$50#4Aw^?N+s>K_lJImmmM?<9y;~CtV0j_yhk$| z-=p;)cfPQc04ZbC#U%FdmTy3bSRCBqa%V(?eY>t~ z85RgvrIkPFl|CiUnzoe-E86UOW|p~T*UpoL>N4?*a!CXa)aX}yX4;bD;*-8(eX~&B z0d>OD(;Sq|B&Mn&tMrWuc)X6-l*d$Ar+&_Tq5SNkVs|sv%W&0(kno=0(#y#Qoq)&R z#R%d-2F_A1s;@e50ED1D1(A)cmvznT`DJ({=#v;NZhlhw9U%{hPxnVv*!IVx6#8O* zmjuGeT17W?6{rsFn&~Z%lRG|)BvV_OI8Na7`ofk@sxJTVaD4ARA>mb?Vwm}Pk|m)Y zgx?Ee$2y%;7lWS@??t*js;eaAdxOiTl^QR?$ENW5FlbKLZ9f}B&3Ry1@qk9yE4xGB zk=gZbZt{(Mjm^7R7Vc(-a1(s;63Fnpgdk>M#D_S$u-xj^ky7tP=vBg(ZwBIIxa9pd z&jiXFTl95Bl>v=iXf!W9Rql<;M|pd*`R_I8U9h8JPS}yBVD%_6Bj-6NIWZJXN69=% zMF7(G1vzj}B24v@iLk@Nhuc^JR4>Jyh&b=(-e+4Zf#P6g${$|#CNsP>Y?G>rdGW%p zebuh3F9A9PxS34dOT2Ja=@vZ-BiLFs!r_X4uNTbP^1Tm6jtfY(=?AwW?(MlH>9`(# z^(>{**dIUL5|w@X*x4j*z@_`}eNLIaQ!V&lTY4Cehs8oGzv4gtP-^BP8R z$9ym4?O!LBK5hI|bJ}8?*DgA}$^?|%D7OZ0+JCeWVyvSD@VV#34wS}z39r{A%;Uaj zA5Jsl6q#igVfw%V#0pyjbMX<;YpbCddFi!X^5j|bf;IEOLii__aW5zhKbzFzad0lht6e`Ob?o3#ON;b@Mm%h-}9GDPI1X?9Bdzd^3*kcUSfzd ztt@J*rdc0s@bs@2(0qR>89?yly(TLIYYy7El+lI^4FoZeveSzLuyxWfe?C9+n~dD( zc2-`|bvwK38OJnsi_!Zi9p_=gw*GYUJ_(qfhz*Ecj-z&l7nMmk;6xJdN8fJ>&>2)T z&2$~kOfoA+@#sV|O(bbw?=g(`+hCncP+VEE2!@E4!rFc5rBjlM+l?IiS(2K9KA&$v z-NZNv_%S|xfRrhn5^09;CAKk@IgSdaM~`y(N%zXIq4mCm1DTlv@%`hb1L@Mw4#4-@ z8|$r5A%{!W{t0$(z2lB`lC5=DSc?|6$}*fVBSzCDp`6Hp@|n&M3nf;9ZAQU6zETV1 zDWH`qaWGEvv?B5`$<=qIA7R*6>lxAb9Ahr5%rTCURiN-;QeX)Ho>dH0C)PTd^~eLN z^f!lxJ4QKmMHxv00U|znV&YZeBJwiiXY_&)A(8N706n1s@4h91Fk`h}O{Kp&e}V<$ zZgbGoS0MN7PJHE!Z{OAnQRdMpl7JF6-;9#%5m#<@fV_WH+o!|T&&xM`zIuyi!3L@L zSi1w?wE~mJxSZ$5Cfi~YZLn>cu_m<8L3 zCc{K@NtUe}mKOwk$Y9ixrL4fI82dSG0RMA1TlMVN@z`eAvLtkLc4PQB1eAeRm!JpT zpbx~SYg6T*4-=!&mKOU$nHF z2sbrp+!_5+Q#-~NohVd4w0!<(+bPxos1Y~#g_btmIZM+*CQ}c0p_#^UET3Da@uk=k z(}#kx%(E7$sq`70ZG*S6#4X@G0io?H3Q0DVru@?mA(?f|cFddl*atsEmyj(lXL{D9 z(LGgMjcT&S-aHSBSRzec3`!>AIb&k@&5IWg@}}4Fa-GO2QSi<6+qpkiZY=_+Zm&wW zc^dXtw;>Wef9EUTH?CTXSMgYd#tl)>654XjWsnKk-*p=QdCzihP5Xc+`P}Y(V*}N)VanPvQ z%aXH6&8MMDePY%`1+A&M$4oSBSuSg}pvA+hlf%cHO2*2RSQPKRIbixpzVJsUU)M(t z$>8RD>CAOir0)_m+K1-*DP=ext1@{Qnr92t*(jHK$Wmo1p=EyJ*~z5 zTz`*EH4D0&mFE()xBXx-OrLa^yf-t|dWFhK*16oQbfHj2D4G%Vjzp=w9LTA(%6$AFnP$Msojth& zJd>S6*uN;R9xuTMsB@~;CEEjiBE7qnnouk9X&)a=pen7=>FXuHswn-0rSYp+q zvMKr?e8B1hrrdQE=j9rRjZ8fMV+PN!_>?P&`3wXamF|>IckqXY=H6$k?I5EPw+tR8 z)VurSZG79tGo9%vQ(4Go91{$2>qx+dc!5% zs4xZaii{;Hkt!FqRNs<5j@Mms;{>-i*sbfvCvE{LHKX9cBbLHK7FKYEHmB}zQo>ft z*1Jv*YiX%u!2abac57u$!pQaKo(n@<;=8$m7(0U|12gd_1;D70<_EXW!-(@2;o9>^ z%(82kxJ!!}oSw;1a} z5XRIY-x_}u96*1jXj0WQ`0xuYak|7cxLBHK9p@=(%l94#A`jj?pRu8T^JWWxcXfU(w zaAnZ42u=hImcj4(B^`e1pjD7+0DV2Nx_!O=GFO_@dY>c?2J<@UPe0oL07-Z;h}rG@ zJaH)HF_^9YBJC_((zuOp}+wje?&+45#TQ{V6$@$sVVk3Q4N&n#2|4j;Dp-b zc-*3QNFz3|==;LxoxviLN}_Jw3Qa)s?YarYiu!&27*P9fh z3`zaaLw%s^5!i_po1~I0B}44*@x<}QKms2p)J0#z6l;%jf-2oo(|7h~_Po*#LuFtl z1Zq-00t|eH+{#P~ymP;7%sk?Bw_Y}`8S91Ut0Im_Qj%z&)utE=8GBAAM8isXyIbCi zMu!9cPeVdNF=?7xQilOT12T{FxmzDgHC%;WJd@ndxjOoMK2;kFq6nO#CY@x{B5`A# zv^JUKBbp4mWe`J_WW$RW&5j)Z z(9w6&yK0O@1IXVsbID1lIAb{L3jOp_`RoXs2RaK3hht=mEE|XZW5s8%*$Tn537$2?yh6DTi7HGmE zaoLREgab%;X=a*E`=^8aJ~w&~u~k_;Gb*$ZJKBsNM>$8e)ke?Wo+vr#v=tRepB@=T z8KfCM}AvMidlEmb0Ti>8KNC*J-f=uFlhB|`O&#o z*yx1i=cmE(E#@%pJY>6b`8`|N&0$hf^Y&%&;Gy|mcrc>~--+P&Ulf3%y>_7ej8bJ8qs5ly^MQTsq4|GzQi%&$b zvnA=iRcAr3{<;2^nP?RhIJfNbSzYTlhiTKA(fdxiS`Pp9^K*+;lDjfi0tWbwo>O?0 zLzIIU4{Nf~MTDetdNX<%golkDc1~l4cP8yiQv$`WjE^|FgGq&YCi9`NG(Uu*19_tb@Ra9XAT_p(z{9b>AI_vAAl zhMfoL`omE#6E=1ZU%C@G2-3l*^*%cUe-!_*A_HQoxVXzARE7Cjuek6{p?2C3RLqt^ zZds5`Tc_aC(9BF??ZEj&Pd+yakW7Koc7p(i*yYW(clnP#K;v2tW};5acYZi*Z_%7l z8stV%Qvq?67e~VbsBzHs2uJ1BY5)%>4pnsY;J`Ky9gKiaJeY?E7wxT2|J4LN#=%f@ z6OC4U><3hZ`ZypqSRzU`+L zBO7%8fF>0Cd3coI06Bcf*WsJU3I_U8{}NFbvB`u?nE$820i`#WEAX8n1cJx? z6n?2kwMXJ4Ii>TU%Y^qs_F>f0wy%J5=GYCc9NsI3m4hs*-+wH&s@ebg-1BHD;@REz z*8*ySzMt&=^JeY8S93$G+)2Frr)nwB-R~%>7Av+!!tKDQ031>j5)p_#1F!c zLL0)lNm%C>YxjZRu|ehpgQ(KJ1t5q(z$z?H4fOjXY-c=LzB(H8xWiz4EGM3pS_L@| z8PY}!BZ1NMaR99pE!87GQVD`WzqnFqm01peLc!WqFVX|8IDo0+>%k8M|8yLTIcR7a zUh+!JQxG}os4g+Z$`&^S2V}jB6Zf24lgm|-;VJg|r7W+h@lC35Z(LWRw3unsi{t9d z^dxoKSkxn#KZ||QF?@)oT2P#2ny;>|-f5_G_eEMx;gHiWx%5&+bz=hrljFNj<5N2| z-Vepg&raX{?=>s{o#vPXEH^wXU)m6fV@5t=%=3gGrHHv!(#Zev?c+={E zW$~NZSWFw+ajL^SjCaV4MeJUkK*Qct+hvh$ytMmux0H!l!zKyc##4o3>bQTO23>4A zI(_zAVE)ABc!3X=^6lBx7Xo4B!*_=mUIbRN8DXvj=Y2~}&nmQ&u;>!CGGDFsL;~`G zaVXZ`<=m$XcWwgI&Ze}%atReH571hN^UfK3Ab7LC0t(w#*1`au%Dw=KS&|BV%t8lG zrNgEM^=Sz)NIduEgf&I8YLhM5srOfE>D-bufY?LopiVhG7)B@9&uuJyi`41BX}_3} z($gA{({t+hg-Waa-h>Q@sj!f}$dc%%dzo#tDc}4pVI?#@2oB zTIH9C501&-IoWctoxeSdnT=schvvnF|~VI{rpkK zLHH%rdm?Fjr_UF9uh~78vj4+Teh_@>pyoN;GLyIG8$l}kd-nKGDQf-thls9k0QR%f zIIJ^#>UN7d13XkjK2>$VBg2O?I-dfS$cOm31fWSMqw1(l7kc25uD*u6VaMbem@hfW zs1j=nx3US+q6MO+G@-g$skZWhZ~_tlr=ex(BowL^f~Kxvic}=CT98V6e$P)7UzJ*= z(K-F7EUmnU{(kT==TV3|=Es)@3Ow1)pXU}7zD0@R-(74xNU`LPys5dEk$KEG)kpGe z(Tc9*ujdI_!|5vNKH1mMG`bBY((>Jwaj*gyjCMpVQ9u zt4=rE>%_5*TQ#}oG6Tx*Xm{{|xKQ%6d`S>9fX&@5)wQ3h%K2#C9O??d!ar?!&B#iaCH||$HT%y(ZFg=Lfg8DsP%MuK5xsV@8lTOtqd2aZWeC*Kzmh54g@W*U4FEb4QAsSe@0<`q;+vxz?n_!a>o@H@%(r+Q)T!csGtoPD}9< z0K@xjEKm;b|1ryj9mdFdlg1qGfRp?2{S7sP89tpr2jyrI{Hj%LLs|u>@{%e1BS6uN z>bfLTHu)38f%D;{+)zIb?=OLE1!FUruq#-(R34&o*^!2f_s83)lY;}h(+sPk`js@6 z?h;B%O{`t`(jedaAx1v-1RW^>ZD6!TYB^*A5t$~*-lWKtzhl9T!FWB_rooE2xXVW! z>I>^dTP;`A!PEI;cz^-1oP-%MhhlvHT$580%sg?g-pvu z+W-cFX(;ryr1k#VDT)CL_tJJ4B%t`~2rDZRE9|-+kQJxfUyh7IEfb;F=vFf!NPt0) zkqCCS2^LNbdZ3jc6@~RJq|KzwXwZ$}9ug>BZO$KK{}THJ!@Bm2gM%#xc-mL*tYQ4R zves(t7e~~m;%@iQpE{z?a=u;_K!Y2$5)4b*0}S06=DDvsy=>|@nI91@>VY} z7GL}A(AIjk-41oSmDJQX?I1C^IuAa-J*1VVMzyDQZ}+eKV+%0pwE#xTJ=w$9(sCnZ zJODqE4D?&$v=Z+y)X>RR|(Wl$-$rlAsX!OF-hEWYdZ@Xw&`?(4OG^%K-vlYU=o*BqLg@W1p5zP7)&%BB9TpWmMI zZ;@-?i#^qin}iBJpz%5XW=H#omrqY)N~kG<0rG~66Ke~g*o+E&ngDv8z7qd5#z?_Z za`bd*S&|124Vfl}9glRSLpq4%Vfc}r@LT|_s@X_zk3%WbBP_LN%Jpby$L)){#O9+*@26QYWCO@uW?T$u{)_%#`iPGONfI29<4wg7}#nCc8FgM}X zuzmbH%YgVUG}F}fi7p6P@pm}q50EB)yM2`8y76yetIz zyGaeFLVE8$O|1ehv>92sxzU!8!)R#vYXc%FD5g+)3en$1j<#{phXZ1y9R)^{``VgG z(IeWLyf0upQvCUyh6Nc}|1cYSZY4~A_vwR}`4ZpHVX#gwlr2HR00*?-Kodv)M|I-C z#SAZi@y6p)oa#vl^+H!*U7!QBo!D-&I72H8OU10;mpnp9riDD6$SsH&JI$znI1jY7wTV z;vCSOmN_kuPjDT&Rpx}?#cDXg0*HQAM&)fwt@${u#VT&DgbXJ+sp7N0ng9Qs z#{UA`f4=|#dk<0torc7}*wNa6s5I^h0u)eEq4P!h#{c?9OsBgRqXl_xC2x&vk8k-n z^8PXA_48E%$BMi3PgN~DVS&2i2IU}TMrSvNNFW;kG$o~`)rh9{qurvhM5!U|7A7h@ z#X+6{G16BGb?Da{&;!vR``Uax0m3*0oxw|_tZMcR>+msq?TP3sb(6;8A?pO`(5F`} zGU>?B-MQAww@J0K-?VQI@7Xrt)fPSvU48v{sr@SWB{t^J*?n^Jh4=ce$ExSf?@7xm z!_dM9%o4Xg>5Z$KT_{I(kB!qW(F-_4Iv&p$txYR^NO+`pm`w}MQeSh9;hDPTRf8+Ck*0nPGp7F#Q~al<3kb-gU#=l8XM{} z=z~__oSnC$(nszIGZ`pnfXrR|u1WtWV=AyJ{rxnBH+R)Obg+7a9n7j=YxDK3&!fS< zeQQSye?khVZQSp9!Ou} zCq93{T_kmfsnFY|BX!zv&vNhs@1@w-_$$@EJpRKC)?R-YdF=y$E4O>!eXO4_0zVY> zl+#UYG2H{4nS^kXTw+NSU_Xs4Gy8mM6AFdOhWT7o16g61x8vnU`<$q z4a0?6=oFEN_2-a#w{x#Z%e)Q-`>xda=a%coGWC6V@pJh* z56puWaX2m+f;mE2(&`no#L-B#uB88nyK8v7Rng<@&ue}mCK`g9uM#j9;x6Y;Hbgjs zoRaADFUuqQs@&zpvnf@)axuUpG#CM#ts%j&|6teXe@a9rltfERBndYu#cz&Qq*fzQ z@$&HyfC3~gnGuI2QTzLaAW9_!t(fssR8r%F;fsAgIk)*vdw5uY>$g{TJ{u}zyh%^) zW7>HA_fn7r)l})nqiXsG`l4<{)**Yhl^6Y@aYQlrRBCD_VeFNb1`}J95g*B|e8B_H zaH-stk}TgZjGsuSWHQTO9BFi$tP2ewa|(K#hAbt%k&#5>7I>a;xAe7%>f@V9RlL`X`Tcxl z2Wx6vlBb(zP2+s{4kNU;iLNgFBNB?SN2LG~R$SFm8ZZ!9?R+CJk`62|_>fMR=pv|Z zkGzEN5vHk;_XT+BIOVhHjb#c_$$-NwtdX+w9Oi04P+VN4>k?%LU`w0EAcz#cs7`VX zuiT7%(i)bA07fkjrjwM#vmxcpV_!7si4S5%NUq*+z+r(!I=66#sk+bbt<6QzjJCjx zUraxd2@K{R_9MPn#TpfLO3r+x?F?bKnC&Mfm8~q~{9s;PxK|BXG_p(v^nQbbfTlzr zNeQQo5(_Y#S@nvgj;eCF&W&8T=U8X@2lNnzY%m-G$DY93bR}va+uO`y?z>UnHB;DQSjC%5}stvlBPY55rPPf*#h3nL(AI^jCPl` zWAUFg6z)Up3blA5*5FPX;3TKTD`SlZCu=Z;!_&!B_Gb$p#EbdNn{JOcWWTHszc^jp zRF}f5b*1OxXLPCe&ZCI<>Xm@&?FNu`u^+B&Mc>}G8cRHQ{OY-L)%TJQHQ(ZamQEaW z1CdTj*Ux4F3}>&+b61USDu+=sbSD*nv`ItxD#qP|S}pMNe;1z`J#=u;MKhCNgk{N` z>XYFF(9_V2Q1Fbo+)AuzE_EARc(|xAFBT2f#meUla)oKW7%Zd_lt+;Brj9a!;AFj6 zs$LxVYH2L3nB;rwo=BJEK(X}@J7khhiu_amE#|#y0UoUAA*Nn|N|8zZ!fY}yfEEa?O2u=zA%kj3#pW@>Q)2y^u}Eg`ev#&ida^@F zV=k8Cv8D`vQE^$sw#0=R0hu0;EZLZcOgFOC+#qAf@~aFOcSeGZ=+TdLk$rSbxBoq7 z=_FfEJYQyU-~P$PprdH~n=OVy?&1rI;XPXx6^Gj#0kVn#E%)U|9>~kQ{C0NoKXvr~ zm)`*Yv*+kU++iK?I0U2;aC8iXDR;Yyuqd&4*nj)q4`!AIJOu>*k9Ft$ua6)1oH5$Z zH*ru^T$r)@A=J{SC`k~gRE8UHN@H;yg|L)}RRemq*%_i~h~{^@R&g0n1wkIOa&8}$ zontwqyhn!n6EQdwpRlzO&+NtkO$JIq0a1hRGiuMGKCA=ZFd4r3K8~hxOo(GWm^)Uu z%}<8Y%gjs|=hB z54moi{ke<<(E1hz4Umr5hlX4%d1FTDtHgBq3Y(oRoTAsaGlKx+Dv}-#T2P)x&Z&i8 zn&@8w#lpw*l3a1@?EBqS1g69dTzMJB4&v)sr7W*&?tq<1u(>*JmYwz9>ZpDbkR9IURNr%g?pystc?my!t}M(Yf5W>6c<{5Szidv3ogYfQ3 zu3{Lcfj9(|1Xv@xmQ@`V`iRlSQ2ZNc(cBCcQN-*vK@PaVgOCejOf%EsS(3hz%3-9H~)NGZsZ28Bo$X7Pg6&0UGv4Lr@sFvEFtU{dJECu^UevqfOSs`zN0rJU6L2|j@`>I}Ylw^QBRUB<94 zi^WqwQe>qbp`e6kLSpboPp+%<2ad+<7q@jZjb{GeCy)M{zyi=*{`iUxZZr`mlLg42 z1wz2-l$_3jBmj*H_ka0!RM7H2{%^@{t>^JA_yAwL**X8F4Mx?JPq#m$E?fCv*NCD1 zv(&?>=Y|T5lq7pA+1;>lGC7s?CDu-LSWt(BTv>mp3fI0M2auAH0L8-F%;Y<$gKL#t zAXTJ>jZ?xLh2l&`tOEMrx*$TZFDGX?&!b7y{D~2l!r{S!);~$r(+kvSQ(;eJAZ7c0 zR@3Ij?!CawsL>nx&pdKI&AyU}ccJRfvvejVjlQ;*;kVKaHSuJ3C0+=Ek}~ne)m}r@ zZ^%XZ&M~j$Oq+4S!nw+6>lM`fr-@oy>9(@~b;UPJJ3q<5=fC`_;D9_R#>ag?wo9L@zxpilN<@(V{;TBkuNG1d_x#%#5>yOtR=tuXl>E2ti zR!jnLU{$f>1M=QfQcPd@26uguurc=T=A6(GK-C{Wg!<4}@??Vso{ZW3Jn)qG$uY9@ z+V9w0Y%4`(i>4HjUp-yAq@T9Lg~P4R?+Y}9exbG1X+U+o83}E^KVqaI$Tq4~@y8H7 z^eK*4*U4C#BZ2Cc@#NGt#4I54aCP^pXd=^^j!~X2p{P{<94Mp!?I4BR^^)oUf;n4% zIcA`E9zb*RjhRu45+%g|r}V`i>kOjFD^2&4J4)@Z!a#Z0pSe_MRVGrTS@UL3cxkbC z>IlgN%>^`!Ik54Ek`NkWgVTiWu}FrWj;>Y=QMuJxsi|37=GKHbwLy@cXi{h2t5Jpy zUKnq^r*oyVr`S$Ij7?7IZcb7OlhYm980&lkOh^yk@X)(4&&{`w!*v`Jyd$piSac+f zY-r?fxBvQm^J5aZw#MSl(YSZD(J9+_mqNwqMJ6T(;q*EEv?0lKl8(3lvFn#>`Ae8_ z#xsh4QFVcD6@63f<*Pf!X0wm!^{5_@mhD6(vp=tIlYs>xjeGAro#LJX+-72(XfeDV zmqz(HxmjInDK(mIA4cBok>Wh)R-I^t9uL1J2yOw$1@-Jha9zDBRUf$rV#pn|ntvEM zbQ2CKrI_Kd%_NkN5pLo1fL$HCJsZ!?2o+B1|2Ra#k`$}q@{r0V)!*q#j8{^69-=O& zRg9DdhD_(mdcn{ITrr>%4p##}af8YtY;RLr&H)lo#1pcg1q8^m;!1E?pS6 zgSOEEm6KJ8O(e^fF*-IiAM%ErW)8?>I^b?^-@Mr%`Bn zT3*${Bcp?g3qJIUfnu%}-i+MF@!#y%9U5_vhauz;Hc%;H*ErG~7{+53g&;a1RDJrj z2;!atI`YvxCt{b+rw z$RIGDW^Qa+N9JT}{Z%KLk)1Wki6o0r9F!zXq;-6rYq;dtR4ku+J@^!r_`tvaYkM8u zykT)x=}J4x$lqbbj}!ME^i=uUPTA~#fPW8*9vz6cT^CohIeTMpRu5o*|75~}h);V$ z^DXFwFaMBD3&xD*!t6_$UUJ8;LNa_uykQyy8Vj4 z|8${blrt<t|sy=%PIB{5tn+C$%U|HhX!1m>iCHL79p%5{ORPrK z@tu3Zw?4(Frc6|BXIV6Unzl>EYwH_3>))6hx~Q^9s90(u7RM^E)MyxG@7ajln0hVo z=-&L7lEZGl0F**U_1Z^n#hwdp8CgCCSC$6b}9VGUxUSe?LHLh;)S1 zQ$o9YZSV7_`gD{UfB2YkBl+{aV84MFm%#ZA76C!!D-F@4fMUzhyEgtwaAycPFf$lVHO#~&FT`8B z3m`E+*xQ&i-PLK?A=&5FN53&QK@YndA`IF1Irx&uoUO&CZysM;PHAb6P(dV5>$EnH z&Kn(=nGDX^`mHE;I)t3HX6D?k`<-O>*ce};Dkph?lW8b+q~Y8`tcCrp(r6-QXzy`< z6HUH!zu5MbVB+iZ(Qp&KyliwtO5-n>qnD$!`a+^et>=v?-_sYb=X)|Z)RUk4SqT5z z2q*lPero}MzlYTbrzm|0!1Z`r+npEWcndI~)aT*}r2B9EJZfk&#&g$Ybsc7Vo}WzM zb#gnepVJ1jq=Xr#<<;)znfiCq*H)K%Rha>E;jX;TOUk)xQ^*K8|K{)H1AOb9xa;TIZ&+#S3WM<*qO4?qhmD9xQ5BnUm4}VCi8e0QkDdQf(+L-}*gg zg<^Lpsqd>xfdQe+yVd%>9h>(Ir+OYwT1cU^u^-+r%0Bjn7zRF4RL!YDo$>g{tKyGk zk*6;a<1W5<_6-2A*i?mK`?Pf6m-0Iw@6#_X-2Y)84=PEV4nd2;{SEE>ADzl)j2#~)Z zEa+C5H(Ro$J!2z=2umYjIysU6ZtOQLW@JkG^*?Ff7%EP!=wxlr&M7&49x+?xs-i5p zUhVhQXYx2{QY?Iq(davuMSmqH&`2VegBg7VemL>R^;!qm6A8?CcDUoxUug!HlUEKxni z4-2a7hn4)#mCAQQCiYuWy) zIU`R_C$t?^ukKxM5&=D8PMwondWaE)-u!kaG4I(y^VblLWKP={$j$Q~5m@})8U`lU zoS!t$J*6on&jHG--@M@tEI{^WtFSA|GtfLuG46vIJn*SyqwU_8oM|f`^npOGXwvPOzw!*CJuRl?j zFMZn^B@V1g0_%hf|7Rx_0CaX3BsSa+FH(d%I8V9a1O_pV_#5>gI-%x&@yq8h#uM&J z+DY^R-y$UOzBT6c?a=_|)@?FAy42at8Y}lbzysjQT`I(aO}NMh#WVDMx*s)caWL9o ztoI^Db|K&{swPXncaB@D=!s^08CLX;Q=UDo#q@mY#iPkwayfuwMa9!XS|LfV5S zi$6XQ|2(X@eDzx7!G$wh0DW&1mWUK~X4$0-P_&uoX|#X}%=83T2kc?y${GR@l%;)> z*q5~F{hB^ghxQf@nXB!_zSgMy&`?Xxf3Wjf=dvNL*GZiKz1An<0NTl%ar7WIwb)CvO@A@-8(2xU+I4O`!z+F4ecqy!PZ$nsDd`+AV?R4FdFr3cN5W4{mrw0j zHFS0&UA%IWqTHBn#|+pdhY0`CnJUlxWju4ZGr9Ntx9!yX`(evJbdqAoSOAs2qDj>4 zP^+R?K8hH*7~x@JL??|$=e}8@X8G^VAz0FsK0w;CVg%$6zh4Ij?<Oon0Tu?;c6X8eRJN)zJ%v|PQS9K1h6@e&bY8j!PVY$`%LQRon+qY9 zHb4xnkK_*+=o^&1fDC^~45gjB^OCUteMzrLvpne^$#m)CnZ*yvljE?l5UcqoI<*wu*PLw6K%=Lpd3Y8YNp9HT|-7r>nB_(Ze zj29s6U#(e)T)&oWb+;~YJOACctConb=#$=j-Z2dNoPWO^A^HdOv5rjK3hP1~z^tUg zl$bm(!*3wefAKr=>gu`v>^i&upZ?e9E^5md?Ypa>6D01EJk{(u?#a0@aab% z!837i{JPzt4k$J{ujidGr_lAgU3^L|N~EtpyU`BYHP6}SXEc+BdoN$4{@F4tSG4bJ z6LOBbXYdXmng>8J2A;)INz0HQFW%+EogNks<36^_XXYaH zNsgr<8r6)*uk}vxq`tEB0}~p->wG#>k+@MHm0Yii!s`?5dcaHcXcJ{FWD_8M9ged31y>N~o@)3Rjk^U_-Ax`gFajv$+0n3bPvn6LrK z`+Oo%(x;pt>?}erry)G9TrM?Y)om+c0rBpOV5~kd5lBzJOq<_ooJ%y9#9m^)LtE5) zwg>=Brddfifzkrt`f9Y11gZ><9?d%e0MsDfi&}`3R`gY&FF-CO^B@%tI|fe6VbCeq zePzMTrKpo)IU3UWYPS)pnz_oRRJ56m6Dt@8$1;y~n=S8ueCkGUPbbqLo8C~TBjs;_`1?Cbkt;;tw0^UC4>owubW8|6vmXt5dZrS)y^rqqUA* zOPq_7j^4;8H{#XM2O)Ox+DBiV2mUP1y-X9d1kB!b^>+at&AUv$NHHmTWMskr0% z2qU!|u*h~ib&t_oul@Y764(-!_aisBVehxd=s#{zWa6Go?y6xjHE+SLH|{?b8ZWmQYE)TG%y02)gofP~8;GHc!pz@5vUpv? zQ4;<239qKrBo;0SS?AH$ZW$`8nOi|qg#@LRU#KbG=K~;4@v)w!3XO!TeLJ$=C`m=o z+jBWo;E-MM<=QPIQKzH{y(QHbnwFJ%A8%8E=xIj*=f*p=OBj2qP)Xm|u=>}U%~{~1 z$-7bPnJt`Os)r^7Miu9E6zog{aoZ29C#mtV^4B8dhv_1N8VnOrXD8Dq0!$!sy_Bj1 zjt2utppB0N`qRhg(!Q0+i;eN9AnIVp1v4ZP=<~@)wLXUJUj5wjM2jAA0douG4S}&R zMMhnS0z{EtuIlp(!KI$)REjn$WdYO(7eiQu(}(fs zMSpjLB}}y18`sLAhd5W9DP=*#h(lSf#&Ck%F)N?>-Z#FOce!W zYY^!qD2z0ANTPm+0*o~f9NY(@$gbPD9hRsB8l(*iGDwrcLD3f-xy&rc&Hf@xc=!l z{`T6JnEcuV#YzvuUHWyaJhcUVmI+7E``)(WJB6ZMKq$Av zAeY|`?#r4kZzP=iHc1_Uq(g{HGaAMO0Z_p3OL|gz2GXM;`FBRzHx+cq+JazKIwqR( zMD4OinZCEoaDDwmHm{yG#U&BOTrrj?KJNP6JQ^@LwKJkYq>+{p0aczhr_?LbU%V>L zt6^f%B6(<>{jJS?Sv&l5*97ZgMP!AMXFJy5t20EABC?@(Q0ov9PanIeZNT_8MQQT% zMbQT@ILm8Ww>_V`>v}0f?bbwf|GrM}P2~IKh6^E2&Z0`a+<^cKScPFi6gH;FXam?M zL>D!vGz^x69R^sr=OPF~jG&mv@vPMnMMHV}Fge|eYV2jWV=X3BJ3pOjnm?A@2)gq+ ze73OaalK07Ih!MN*#xgXRl5?9%}v)YbwY#=k0#fL4v%qhT)f4^fTfA%vp~a03?M9% zR-YiPDGelRzsoMza<yy@ZZO4N%N#HW*N4^<5xjYjNQO54<2&Z-Ys=yH1RHht!C z`&;Gzb_nS|{7Y0+RqP*{J8*3TO-Y=(0QFs^j3AH;D*xhl#}dyIX43r5=>P41uMQiY z`$uxoUNypuQ&pu_8=94uMx*I?u(NDXJZdNnu9_zHaF7TGU^BU^9_WgF8X*JJ4lh zf{?Xb(Lon;TN}M}aI5G6@&+9l93w!zB@{A#ymyuTqj6sN zcgrualOQ4Lg43rO>`~7pKl*yge&pwS0^f_2ibo>j_#WmJ<=tn@k$o`ohCa#`FCuCi zR57FC@;YZ~?~1x^(-vLc&KXyOP36_JTEhfleaCv@#DxD3Z`a2XPeT%vy=PQ>EQ&uD zBYSn#jzf&@|G*Oj>2cmFvDzaS3{Wfy{IHp&nqa36S z{TLgWRrH(Uu&m4-p#>0GBX2N&F{2urdXCL#&(2Zn8OFNd2u`u%!M2C8^UJ^e(E5+^ zjB%lzm|L$F zR1GG@;4Fabou4Bj%Z89Wyk8amK%Q3Nq)+79Q(3hTNz&h}gE$NBSFEB`Q0eyHhCg2a z#KX!F%_{I-&wcfk!@t)xXjY{IMsUKla?KzIevTke+$u2UDC}o+8Oz!8V#j;fTFRQR$a415) z9?sPaBbf`Edve{v4HR7dNd{a#Mv%v%H>23YnZQs6%!ROmOH~L7M3fQDwxC4p%k8i@ zZg?MTF*i5dc{MK|iZQxPJ{_@^=aC6_`qC)25=W6H=iwOTN$d3ap$mOwgx&3tdARLt zgG8=D1jrI!yS%pk3FR84T@*$#Q5;JY!B`tMb8_HKSb+c&l`>@;1|AVN z4X3>F$epT1KF&wEt)UWxz*G+QYM2imtJVJJ=HDT((9j-j`RAi#FzOmv?Qk%jCzYL7 z!hs}#d1ot7$j7G4wg5o@DEaLyS&T?ay#2{4h4J0pSKU}+Mj`U*NWza-`Ju~MY~V=Y z{CpT%!2l?L&`#AG@^_nvRp(4^dgA3Wj(e6+G8_53$g(082_36cDT<@9vg#P2H?1$9 z?+oS)xft)uasNKw_5sI8#2c>RJ;)O=LEG8)D`b)TG+&@!>G5ISJd0HpxYNDc@hpzDS;gM9jicY&$mS@Lz}iPRR19eW zv^IE!63|UrXMgDbRhVJ_8b$wyHvmxOKnf(63K&6GQ7YGn=JDspA_PLC-0JS6|BK&~ z^ZawZN#k21JMe9<{A&Vk=-?hQLm^f;rM(d_)CX25g(W%XUj!~g+_hTm6!*slRvX1P zw-pD`&)`%jlWtzMg*!S8$_|$W&?HxfF(gd@;0;w#x;*kD!sc~M!3$aOE=E4=fOe!e zTb{7ROtP**eO~V;xQ2;rF$=jG z1zMcg1PV%=_rIcx3U0 zENcob;~A`I$UkR(sQ|XWa{vemsSXw@5V)>?F`HHk1$dZBL}<5xNJJ^u)Nn?XDIXhx zIsYVq2Fi%SnE1k`{D3nK>`7d_u^PP#u^yW!IQkehfBwYh8ijtaX1qFr_czVaGB;ruCZo3$~ zjFQ-Sc)d^fZ8s3c&*qN51{}lK?XzJI?R86C{ew4P$|zq%X1aMW^gIRYziof}AyPQ2 zJXoQktUu^Ly@6O_=rSxpu6 z^?BIU#txvgHb7CH+&8{j7T*JxM#oJ2Yi(^8L`Zi6Rzm*0Oxhf1t6`s5!N4Ql;cU zFgmYW7H4kXmSc7G-r}Rboo5mGaw=w*OeQ&Q5{!5E7fzq6$R-&Jv0W&-^F*Md`|G{s zEs@UG`0YDOZ6T7?Hl|e_n54V0T34DM1TU>;N;l=yW^^B~o zpp#&cqi3InF^zwWv7IXcPgeH7{>#hj{{v?LyZj~or1th#mFpuKPj!wpEeG1Qm6!$gn!MvLa?JkoJi-HXH4t>%1s_1*Z38NBu#GjP|LlZ#OY-6Bx2E zjnT$awQ z@nfiJxcKv6i8>!-ZddH{Wpo}H<@P5xPTH!ZB5UeJ?~2biO{;=-*(c8Fw@?xh-)ygD z8PyZtw+m%EJ>V#RBBbP1Ze44>p+tCpc3OV+eXIu!p#w+ut(rOA7YuN6YImM(US!c; zR0_R3v^yQz(ln@thb62Ll~5{6{x7Z*vYv|fy0cLR7q?!veKfVSxK@#JyQP`$ z=9}m#rv4rTNDnl_1m&xu?{jMl49uWgC0*7*Ce!vhP%a-6tg%x&wG?ZB`QafH&K_e! zkO-rbF~P^%-DyX~Ed>8i&?b~a$FJT=7WuH|=$I`##)+ujHEuDh#`qP(PTItG-BAln z$sH^mk41hzY%gkeZXK3PGp1`1O*i4U49PGHd>7Ova_{4fOFhQt4zLR2f|0aQ@f{Tx z)(?Sf2JA&esn)-cR_zKsSCbUl!~ReTJ>0n>ijJ-^=+U&Y z_VV1VX{oAeM^>ikd%5LoSbqYX56WKtt-=i<1L$du^|FLhuG}g4fy7D5pb{TDNzXOjPBQ8PAh3MIa?tKikAGbm&HX3~6PQ07A80QdW+mbHQ6uEl-CGjRdv<-{l>Jh~!{;H@;#)sn_1+5X z7%PFs+9_ICcRw4Z!mg?q`+2JXR`MUqq`l5Gx%$|WZ^I*KdFe^!C8?3~G=SLy>l$a` zl~-wt1#$irTS|7X+?XTM?Q}$HTs}`c<*lkS{HLd~?E63JxqIF@*V?TzB>?9aqv-!b z*;_`n8Li!-Az1L>PH~q2!KK07f@=xx4h0Hrg1fuBLve@VPK#?x@j?qN-cl-;{q4Q) zIOp8&oPF-E^^TGJc}K>~oav!UBoC(T5Rw3nAnLs)(fAXXl?7jftn8FJs8H-XrR8SDD)!-XtJsQJc2>b9 z?0w4y%x+_I^^C}^l0a%xmo02mIzD#`+1|p<*3~4GGtSGAh@rCUe37#H?Og%RjHDGF z7q;m?RR*#N`_FhC>QWUKmM!R#jotEJ5o;Gcr!G{^(tg@D?jlkvho$&#_qj;ynx~ZfO#=R^P-{?=$$@jzlBu{9%DesF~lfz1-Zg;b6k-Zi%HCx zossc!SVzjjc!c<;kOdZUF_0iOkh*S|1lSG?C(fkS9Kx(D@u5{Hp>5U+13qT{kr?mk zi7&uj7hz)=D{wZ++qLCXhBJ-VUH4FOeLEnqLO|gU7tk?}@-}!tRI%h;)wvZpT~zRz zKX(I6RUB;MJ8ldyZB21Vtzt7Lchqz&Po3@wKtA)d34YPUP-o~yB0A#niaavkwVhj9 z#4(wL{N(sbQ_-V+EjLs8_r4%aSG&fgxR?A2NPXnHwLXN!$Z#3j|E5%BBL)DdIF8|{ z3CIk=17Mczx7JVLC3X37GGugm0!xD<35l3tYc6s3Th9_J{lk^nI%pAIJS||pIk_&k zYZ3DURn!}H1&b41j)hfkU#>*I?ciD_sj3x)mFcbL+$$&YdBWU+l3P1d0lc5lxvO|7 z*p5v^`2$tzm1h$6%h8q+lhMoxa(0AGg>FOoo2ZTjg{_qbV*z%aUWo)|#e>=gB51s4>Xmon6AKk=0WBj-YXuq{8D86Po{s8yFGp9` z<+?Q+4)}kYdG$YTg8>*vziJq-KzRuePGw2&Ps&UEgffsJ7Iq@x;s4@a{7;tvn3Wntm-j^Wo2j|j;B13n+Ke$J z%_q612H2u!XCkl$x_ zXXZS%lEHOm7N?3;2K=2sq)CjHlshxe!#?nBexS6ikcy2%BP9C9_gaUDWz0rXa01WII9mp*(?(70d$?FHECn6HSUGZbx z{RKAhys+`^lkPgrz-8&4lzp4bs-*Zhaby_@a~OKLob?Dz@2Dn%^dR9Q2!SiVxF7NY zwL)Oy@%;Yn?&9W3WV9O86}>|A#-CwWGY?euvt1P@tqFfVo+cEC5xmFPC(rNmR7{J4 z<^H`2N1B2q+wvmYSyrBE9Z}?u)aD5m$#R=dYZxsw_Q-J>^QIYB&)L3d+bdo(*y^R# z+tnwoM7B!$xw@bKun-`IpOP%C)!(29!U7&%of&+Lkv$xGOzI=Yh3b($A?Ig85)`1k zxu}w2N4>NE(UOG*@6AWS)8!F+Kw6PjnK&126%IxiLtv zO5+D4i}y=8=(H{pD(u6_A#Xv*~nO)p$ z`PMHE=$K|1D%b43(|n*}Peo)bR5UY1Ff)k({rE;D|ExRYtT()oAk6I5`}Cks>}oyJ9o5qtINY zv1r&Au;|HBM&)?7Hsk6c52It`v^B9K?EC^97bc}TnfEVm4L`SK`Vc}xa2RS1>d0Jv zwB*FLK3m3VG?HF2ZISPm2<(!wQb;(7VaJ5OaBh!X#VNep+J0rXxU2@Rqgs!!X&FXZ zv~=r!5RncU2hLASADJDMsgFcyeko=ZdsggP@{{7jxFLm4-wRjX-4chdhN}=W%izs@ zZs`BVZ}e~7{O=V2wEW$a+ryNBH|Rj;=M~2u<7LNaH-;tZ!rA#>_$B1Pu-3{Cw)5IJ zlSFqVilZ5S#P43lC||QvVRpFp#7LN3R2(cTMzt0@0Yv8%0%mpv$S9zFVD!eSA|i{$ zVxL+x;@8ru(`YM_hyU`?q*Ic^pwPTPn~X#j#oi+U!sQ@zb>CBMNEDp#Ttm76!*L+EK~ZTwpIAe{B6*r zRSVhvd&Rj1vt|IGnslYvX@Zmlt34bq7k0vM0KMqBANz=#p=!(<2+ZY*izX@r9qeb~ z4ke;#FeI}e2)GO^!H@TbR^%@uHmQNl@MUmLKbhz(S&q3z6`|FJctguKUk4>DUNe7iY8d%Y5 z)d<0j0vc|-j+4uk5l9TTx`dRG@K(LuqVB1&_HGvicl8^ZjQ*Rc&O{0Agl0Q+p5hUA zQtaMZt(Wo1=1Kcfs!rT-|!;n=xdok^T1YF*(AT1 zFrO|4q%?FqxG(MlSO>LK!NavfrK&d$Re*|FI7{cg3Hc*!baOQ8hvtWT$vbKqxU)4b z9XvR*LZ*sZJUHT`GJCrw6;L)vl$5jc-L%D}x`RVTNpWlI4YYsM@YD3E=wQ;P`xTKN zg1aV$JdIhBO8rwo2b8j^roMFl@qWht$hH67GXOx=O@eeiITkH40ti*vo=5S#q!dBJ zqP{TA`6qsl|5|C$2EABXnd7>C#4kM?3gY3MI%?U>G2b97Sf7HKh6EJs!HiMvSPgQf z{i?gsQ*~o7^Ix@z$0`0x7~1}w;+#Q=-d(QCV-q~48G701+CHG14j&-7gpPV{h>Ot_ zSE)ZMX-`CV<~JMu0}5@m!?@ycbv`JWt3ztEn{z#)tsck_@|QNXC~N%d^;Q^3ty*VI}z7NjwlIwu~`85*9*ax@viI zhkAd`Z{UE|qg>$Arz1uLSBj(GwPl;0c^o@3Ad)y0MDnpVy$PNv#W!P*HIMbMB_M@wL? zD4b(ibhO8CB?u_@@mB^B8=06eI$4Vh$A(pr>kE)kWOxh@FxKY;8WJxv;)@drCC$3m zE>n>uGsUZ-(Mg91VHr*CcET~4>Gaf}<)oXP3>lX_BQ11M^>WmahV$v!t5|OMf2zx0 zu>CG9`qjes$yCEra6v(JnZ-k5RTA6sX>@_qCp&+fWd0Mv|c^bDKZt-HB| zaA(m3&52zWc^W&Wh!yWNwD8`=ToxFUFy8gKvBf{QJzXP9a#_u-Xf=(^i$a`zqQ8=$ z>K*3jD190$vN5Gkw|?P#s3ZSV7XKM7Q49Ty_~)Xnhzy_kRN9ztSghi&li_R9-I0AZ z@;FB;+W&q905m^n5te{}erAiKwpv=ko#psMfUsO=u8z!q z>gVIjXIlB54rT9oaSl8M;>^)P#oY%aG*HbPS`C9GL;whcQL4(?m32dK6pu-ecvn|K zvAny^HJDj-OEU<^gRglP<+auy`XwO-wra?Lj~|-ZDhN`sT@oCYv^#=NmAAhpZBg}} zix^W$ttas7Rb9yf;v5EKxM5R>P4e7TUos47jIgKizuP2s{*e0PWl)f*273_V6CwU* z9iNf1p49v1izA}x_*s{1DPK%SjnrbfAw6N`^3Bv$V}|yS%5jc(Qpn=z&$g(f1ZsW# z=Q>YR&6rp2sb!`(qe7J~9^8-suJ=*cU@VXfCl~BO=u&Sl2cpY)nve*KPk9%$QUPM1 zBA`tjw6johd0P8&R=1=>-n?Z+&}T^!Pm3Klb?O&5o)WJ$Vrv1XSyE5*xj`)+u?JIF zi9DZn@stWnWeHZpq2Y@ha8Jt+#^yx`quVAS@p}!k)*KEV@OHt?#vQA_hq-qB2T6VH zUAh5mr!`{#`I2(ruf4#E z-n?4ZuDGGi^9fG#lN$h}y%>N3OB2rtxS-?SF5dH-Sma;XxRZSTFI&uEh|zt26?sqT?y? zJji8i+5@&x6!jJoC&`sSQdvBuB!s%&O@)Y3QaUk;Z< zl4XLJnBhSof@v&y4`ZA(=^ng(1{{K)Y?UyT&W(AMH#|q|YsL86kt7Jy!vI0z=voHR zLi;5oefmg9pZyD3abMS$F4t(hDq@DQdFVVp2yh)tcrJ}Hj)POJ7wZLObsKsOpHq2A z*m(2VC0!3sNPXG}?yV}(Bd6F1Gg@C1+G}t(#~IFxf;v+hww%Wu=zq8jHrQ&he#hhN z`Pb$@?tA~u#Q=cDd%KXs1^mDmh>4<+=lBq(-X5bj#K)Q~=wJBFe#CE(z0e1IoMl&m zDsy*#QTKtI*|=u*`TkaML>552qcuUjf+jKw2cVinMkmQt&2E-Zg-YxqBZBS@1I{P4 z&{}DQdn8(rfC*Ik9l&&uygkvdR-M@X!y$A@P3t^>^8T;sq9B#4_vS z#LHVMHLH#hydSIet`uLMvpXfspU-NRuK4Cd2u^go@dRzz3O?=V*9~?N4W|k2U1QPK zJZARCth{zl^~p%+F``uJZf-*K8P{u%vIlIc=TD@a_!n<}arDXkh2=y$deTD9($VQO zSM0TC17PF104tuw;MG=U5Dp8BpoW-z8PLGhua!fvbd0Wnu23(Lc58HYd_rYH zggkgy7n47~C!#Ft{sCM@aR?*91!XC-t)+xo)OK6nL-45a9#t2BJrb=|JQ7ce1a5EB z$;8W7@8PRA9&wmU4yDd9z{lm(PGPwpY=O^d74!^b6FRLcD$PgQ0IPSU81x!rPTML> zIzm)4A=A){AiD+vZCyg`l771^9qTr=Xao6cC`;Jo(2v01gxYi>G7+k!7DqN2A4OkM zY{U}$O6;l7x7RyIu%bPW1w`!RAW~B>u?Zqr00P98+;dbF?}m(OcA1dnF~|tHp)xjJ z#0ip@lMu0`Ru)E{FaZjkH1X3r+T_GXjZm8fl&bN%yss?BnJiv@!E9}~QiM=8)(A_S zT4ZtalKG;G)A>_EdM;IJN1a*&Pq{OZt0cUZQDrkYozvW_s6%W0UL79S$#w1m-+# zvS+EJJP%JQpyQ)=LOk}g0CMxBqKyzULu_6U-%8M)}{@z-95m^X>%2bqer25wcQh!UqT-7E1Ltc14qJ& zF95mFTrg-Xwkoi~mx$AltlS0WNksssOiZP3xv&x!diIzKKVYIBH*Sy0TCzw;irX4= zWiPUnfh?Q~S0-N8!VDJ6==?4oRQ64RV?I4oRFQs`%&S`3tQVTWF6A^`HiD2o=eGT> z>*np}dVSU@BsUfJbI2dRTXJ$RQBMuYf`fviwql=w*K^H>$FSk?C;E?e6x;W9qt zh)-t7Ulo-PTm!O%9))ktbsvYc7d+_ehcg}VsPtG8sf$tOlAv&koNt1!7r`@U-NujKx>oG3CDq{iP#k8?cMUsWV8fjM(mi!$=LZhCl9kSlj z+A~?Ig>{B-dsBbEbb<3THaK)gyOvhh9h(JLucI}_?IG;BtouY&tPB;|1(hD*d7!Ho zVza_k=Pt(QW+|vHK_F+VSWwpOMJIOhDM3z;1K-v!@#RM+4zhx@xg4LdgdUShdeGK@ zsR-9Wf({ck9Peu%4nu;yps_iBa?*!CM6pe$MCD-hJQ{7oWVtd()I!xCEB6{ zAP*5v?Uj!iK2RE31r3Tvt72oWj;DE>{AAZO2Z$R|V`>d`2Mb!?UOA5O>r-7;)4xot zWILIOpHoO6(h~MaYkZ+myC5QGq4HJKtC*-Esz;w>WR9z&o;_p0x$o}!fHeBfdcCk+ zu+e$YyGy(?xuUxJlxw*QK!Oi_tUoBKN~OV7FxqwE%8n2*{6WOX34r+QBb8jVOUe&5 zM7~%!GglNHk^DZG^OWhA$-&T=o8y?c!=S6ujjNQ@FQ+nx`lxAJzKv;|;G}iHo!@e- z9&hvUtQ35{One_d*zksuOeA17Cu?mZ{eRAj{a`0TDPazfv3E5 z8S$GL`P8reh2P$1TC~A7R~zxCqmTNTb{YkB@84E%f6YPAFUtjx7j&A!xDdtB%PED~ zG0L;!FU=VFnR`?vZ*cluph|E{Ls3&pwGH}j*zP>ePpIK@x|g7@AEQW^*f#;q8ziud zAbM%_8clkWlTZAa>cVNXn6O`ii+;bCetc~uIbExfp-Il7H0G92JUMYi^QsY3U~INx zV^I7)=bAFEiywmt*W@nZtK}^m3@E%y*_y;4^^bBJWRB;KS;*5OhbHVa)Ce$f!GvX; zPd3e!RwjQxtqc0Lb@Zp<;W2rOT#S!1e=n>er=(S>S})d^@?IkhT{FW{Q;{huEI1jK ziriCO_GXPB8G;>8?Mc<%{lyJ)l*+A6Z>5BFbtoSBGFqrh?^ zSRJD${C!$s@_|hvMk88_$M$jWNW#O=_F?1&$9!#xB0h#F`f*@aQu@pN!kqP%!2&Yof% z>bUE8N;G=@y=hFK=>#*rII9h?d@XJ48C)x2HcK%DUNgExB4aWhU*@*-Bq;&aU8{J(6twu^=gNmyq!@+B1)pOyP9+b2^qv`Jj! zxv7~DFY3+P9C}tH-ORWNFA!8vt4Z-ex`U%7NNrcS`wUwv0^W~R820KtXM35IQ_N(v zEL0m*U+)hU8c^&ueWpK49zEutUH6wI9jYehUjx5jAR+_l*lxyx^j|WuLJdjjq=86w z@eAtaj8ukF(@1n`69si}L~icx6evZI7_Y7wpj;B@WW#duV@FA@`)OokHobioGa8st z7o6b6$4FNJs7pV^KyQB5{R^1v0-1Y8&h_l(!eCv@i(ge%`&>pzST-Ust*gg!yxJrF zeeMuPR_Xs!p{Id+^+DUDtg6L-$bKF~#$s4%e=wC0H_HdJos7bBEFY z>+1ctI{wcq0OR<#U=pjzkTC`jmXdBsA;{(hr$UlVOyj%%3%}kLkNVkm|NR_J+arGI z-R*fjoUie$n%QIfTkGtL%j^1VfQ=~JWF};ev@Kex;WGnEZH^!5d!^>U`lu9(F0KP- z{4IlfDSH%Jn5ADh>3Oe+sBX0Lr3<`XaFuGOs(iz$Xh57fU4?jF;v|hA)-|)9jIcuF ziD@iorsuX!+60JiN31ic(CXEIlz;PoK0Z z6Gd5BPR{qw156Ll2EF;Xq*uLhQdWy2`ohwB3@TXxv`%d%NC4p<7HqLqbO|PiFVhf3 zl5=M1#OEd(mf?hD-iU3q2^2o7UrZH$SJ-J(43H0RB22Zy(S^5*{Tu) zQ6u^61hIvOwZ5V{DpWhL-xojUfJtyGO+u7a`?T&zc2I5F7B)Jx3bXg!Ig*ffH(kv zvIOGbfVj*xt)d{I0t-MG*bqd zHynta&y~!Zefu&})}Cxne#qhqauWxuxHz3co0oPQB=+lBoD)qpG*27k+JuUP*p77t zm!_}e?`V0}DKUh_J>XX8X#N_)hz^AN!7bU3JYK4MYZr#Md|GM_l}GIlq94bE3|!cP zd+FMg(o7o8{8stCJWJ33RX!zxnT7rj@ATHz$|a^<1NhF5xa_3b-0KVef9hw9o!?^k3s7<}n2eJZp;($` zZL?5A97RRL$^9?<20iNMKs)QzGn_W(vlY4^6vTZXA3g0gyViireco&2eip7ZBeQNz zJ2^3i5fwOhJFUiFIwz2jIdqJk?4zej+C(Otc0RP*bxh*h1iDg-mQag{bUtniXpHQ5 zrGpsdETHe(%2@>GUgF9#lyPBuQjJx)HubK*z4e$VPJOhjGhW55zvP@~u61%1(rU&) zZ^u$&MWq~!9dUh-x$m=L-*ezc(=Kp1N{vU%9)On}dnM3q9Qv*OY6M2a@O!BF_y z&_JEo_v+Veg-@(fkO2Na+^~1mPHU7p_5csgv_Q0U$HA!{aFe| zf{EzxT8mQ&SGog~tr7P%M(ljGRC6WteM}Keg@|XV%OYQ=NXV>!E7^xWM<^7L9rVn8+s=vXl zojpZ@rHv22^mfloRf>fE)G7f0GJkYWT(P?fOt7j}%keoRy5R5-a)=-lT%JI{LLX>U zUCkh3KCYB0Q;`Yp0#!G5F$}PUP)uOPustF@8b67W$A~B1L?Mz{a%UxPM&j}s_d4|O zQ(F&kNd@$S`Xf=rf=i#4$41HTwblzur9}m9+GHZf5#OZ-rJP;lfNBgT#oAz z#y#BIcuQZ=xmH?m3e{(EY;cdfUejn`oAL=IRO3qs6}G*}!r;~EiCb~pS1;w?kXQek^PA2sT7a03$5_sRM;BQim>3~u- z>B!clMhTZKMx!+8{J-E4P|4RlS{yg!EyENYlxycjZ#-y@2E`m-WY$9>SCtl>ZF*)&$LJy^6S}yW7lDT# zqg*#ttR}5=noz9Cc#=i%TGdRFOtW@E{<7-uUKSxmSQYVEOYx=lah$tjq;!G+wtvR^ zKMJpT4jZ#94ptXOfzYRz!?C91BhM#YMxwn4D_*QszxA~4HY_GCZ&p~b{Q4T<;O4;b z_G!O!)gpBI-^m*PnS1~74FJ~huV%mL6ufU_U>n>V%n9KuOMp^NhjOORhkxO>`*D7y z<1n(HfK%=%@RIfv#qWM}jqU|u*XnPr!9_t1$fTpWg4K{jEP}Cst0akFe|%VetNj!a zMXw}=syGG)-QtS#T@`m&L{1xL!o3W?QTsa-T5)tLHj8Obrozv`E7oT%!s27sHCbvT z&_B;crJbLNiq@@Ol-{J3YQB$m6K9}xL|4}v-{y%`kvB?+yM5M5@s-1{F+)YStuB!g zgp(m5Yhv;BtCT-Ehq-wKXDkNBu^aF0yWr7I0h#XUA{omE-e>%)`pJZ7Elp#w?r+H+ zpgXqN0D$2yUAuPx{B!731e#i98WbOfVpLV-tc@CF24Clr;KgQuqUoQ?1JH_487i4m zab9}%GhEocS+*Ut4!Bqr92=Zy9_Fhri?I}7!ylB7J;qAD>lv(PIFrA_OKf?|`B`@H z)5-&~UN|c~d*|}N!?ZjRK3-c~AAf<4i;**TlGzcQk4vV%9%IfEA0~jW!rD?Kd(zM) zjiPVStTaw7A0E&L{P8m8&P>kiLY6xSiMjERU2G;rZ8)6ej}oh`#_8`Reb*JW>U_`f zHUHSrHl`|gw+)wUHDv4e7XsIYqlXIspidL5c#cM}l`=65q#|_k+g6`L@~UdCKMPxM zri-%O;>5tvNu}lX@|i}N(@*vES1`Bn^H5r&(c<;CT?2QLI@cO;2qFITJCQ14tNv31Q!!uOq34o^ZhJb+CrF2@q0SR zfz281^VvsnJD;#OsuM408V8~AH6DbI^*_N}KMrluR`WX9w2DHu_e2uUSEvN%V)U*P z;lcsMA6}aWm#y#}o7)SpANKp-L>PZQN#70~{Y0|lxEYc3t(~$>ToBggV1P{-mI*gG zQYWCY4h$SuB4G6%gUI=|Dg)7|1m)zV60A$gB+{Ef@*)*x8@xaOC_!zi2N^?fj4TtA zuc%rW8bgm$zs!f^e}0OeamA(Es*Gf8Tr8V2U@POQsUxF`D8uz=t#%iAFX3?vwSoy6Qfzh<>$nH)nIn6?X;cY?kTeZk zeRKA3n_t+M<`~SiFK!w7Y8l#AsYXKBu)liSRt`Ekwsn_`a4pGpCXs+V{9(6f{J%6H z0kA568F)=E80{k&k;)CRaaCyu-61tOr8x=uf8sZa$3mM{$5Ch-@3h*JsLFiU8{&R? zFYhCH*%#B z{DbLfVMobeU{~tAjXfuc;j~5;o6vpUopD+}qKbd=Iip;1kXsJBQgY~PF?EGl)3v5Z zmqZmu#v5mH`pdbahpj54mcbWW9|uHBR~W%eqgmJCLxSYolU{6BqX zU;nuL&ivXqG1#!VUnS4!;%lyfg2fuv!wZdgvekCO{ULxtHevkmq9p^Rq=Yl{?!<>U3&pOf1fEp$QNkkD(6e=@AUGM^!yshxC3FkC z3|egI5r+-oC?jy$%?FQ~9W3S1ES|=Q(`m$G46C!Iz5Vf*UGJE=y7sw~Lu-dcuAVEQ zmR{OomZdSlY-Pp@z2RBp>aY+PFWAd##ymEaU_ryU|}-488)$I zx(`QX$|dkpS40Bh@W+@zKBio}dMNi35BbzrlxT6g1-fB3h zyWcdZ-(`=SW4+@dAKyfOYNb)5DJB0s$VPm$Rm-?S=7bs|EKnZ>ucKV**q~x$kF~iY zA#|1}mKf;6vwkYYUy$dXM8WgFwdnsJi5LL1c;Cw2kF-sRvjW3`fkNr%6kyz#oIn%Y z)PM1BgS8f|r^C>u8&0~XKn&e#D6jkJCAz;r70%qiK2|R7vsMRgXoVsTVq966&}NAJ zEk^SglQKD;Kd%nxrdf(he zYTP;_s>JU&S$Y=$m@;{YEOhE1!KB;>W>j)gP@sFgO!Zk4n<_2SQYO*$DuW_&KZ6G@<=8}Mx{4#=S~3qz4;ItEWW_^ zA?LH+KA8qu1k-=59jeM)KR(8W04PrJhTB#1f8iuB=IW*b)r`-ERB>XoSz+966!=)! zNX2wAup2RN?Yw6DsMN?zb)IcGcC?P1U;=lAMvbRL?(wl2*csNmN6q$)7&n@o*_{fh z#1d|<7-#G%aSi z6y;;k&gdu!ou~Jd{V@nZ4N&G)JtbC@FeXgpG5*?8=cote+W)inGPNPX07gqFNd;BM zWzJF@BX5RSjKWa+o6$f8SS2nsOC~A`H9A8n9>%COoWUCG-HcIVV*97fGSXh!ks?CR z=M3~rZ|IQ9X_zxdwjYx23bM_UB8h|UYNLVr3Y3Cjasc{wSP}%ZiyLFpnV-*&$Y|kJ zms(vV<;8QD9|Y7p{51Mr7=B^CWOEiG%sd(+`)swi;cmzyDP)3=OYS$eN;fGj()E+; zn})g2xa8@{PuiWl*;>T<3*W>XU6GJ>$LDLT4m{;Yv3Kc-QxnfGO$EtoXBy8^57YFD zK6d17NNRXEyz;rFqi&}xp}69zcsIc;k^ z0ay8-^b!8|o_XQjm{_Tlm%X4`Stae*#jF3lbi6Zy>#FOdzH>)KH*7ME(l=o?J0g;&1 zKwV(Lv2fs?&xQHlegN?K%>+rhkX{=Ziy*9=5hThb$8n7Xq9A^>ph4tb46%kY$_p+W zVyy7xAgL?ZGv^{RDVZ#C686XOW)R`IrBMJmNM_A+3hcw7APbp0b7^#U-&;&!3p{%J zZ!csV)1>Xfl|S}{7`kkZ(Z98r#45M-Z#{l~l*y*^aLSS2C0rxM{ky133p8!Q$=2Mz zi>rcqs7}0MBAVFz)j8okAVGQ-FLBD+D#hPBZD-t7-=gzMs?c@w3bj6RE7Nx;=0g|i zcJ%Ua%;68U{-=Z{9r$=591fTF>U&jiNd3zH{=@ssH2^C!+-RDqPLm3Tc>LSqq|k+| ztjo=T#5bmp0Cv>`7r7{9Njv6aPDTt|2ylUzsTj&SwJ=CPW(zA=z>==*1iCAWT=@W+ zt>I`ifLXW_QeFS{6eMn5jhu@1P9Dzs+Cegoq?cc-bP{(Ww!rMk^ zh@VBzzg&yW%mzfe_8U3gGbDRZI(}2(a@g-|7|NuKp6WzixdyZ?mM^ zj1KSQUj4&&RRM@~E^B`^%m|_gO;}NJf*7L(@J0u~f(39T!rJvIe+FHEWh} zIe&TYzFkjxxK*ca2VK7he#}-pW%Kp!%V_WZRO|PF>_c5j-Al9AQdWYrwVqrd>@RRU z44My>f89>7dhB!U1K1^tGoDO zvgc4ie2aDKKBc=z=_nDTi}fgmFtJgbV)}Dc!Vlnz&6e{-G)I81$3dcM~uye zcJ{bo>kKEOiO}~m%v<6C(*1G$t8To>USXUnZo{gEsLu#hq>g#L+~$S@QN_p4=^&!} z;MKaDW$)}>^!m(rBI9>E`Hj!g`h^esIGYO3>`mrYN+vM6JbVei-p2P$?1Tm~FVT9x z2#LP-EG0VZ)i2~#ZXeXh#AH1W_CO+GAQULgAX&&TSpm=?RA()b(-sigrZFG`4KjnN z)Tg~u9RYJJ*E3XRp0@jV?fSk-53Q7)>X2M!77R5x+`3R8PIQJr3jwV6W2SP!GlD#2sM|O)`r8CFce^?5A zWw7C7VJ2;+>tfI<5+8u=WKA zv-otuF&c&Pn#c$@nJ8_)oAg{vgJXDb?E_wbNiw=N#cL_1%as-pJklJDM2pr}MW0+a zH>f7@oX39uRFba?88J5^v`nOmH;5->L8FG#@1{Ne(@pOyVC4IL6slux32y#{v&1i$4`GEj*q4E&$u!elg0>IPhS;rWV zZd8<34ku!%ExXWFl>%cx=_$8_hLGYXw`NUvDsiqpH8V~_FTO}qsQu8TW;aBgqeL>n zZbE!?Yoiu#V}w$dBi!rQ2vXQ*<7Q`%v_#rc2x>&_ylkDMG||MjeQfHhUAXPKDEMfZ zQ2lX|KZ@s+?{c(gHgD`Az^1X zA$V%b&vbch9g7NoPMP;gSd5oTn}X^^;|}=bMOfo=3WrIy9M_D`BoDf-y_HO673#AJ zu=v_5bJBku`I7%1mGeJ81OPIA={ZM?x!F*avGa0E(gwmtm|2jkqetkG|HZ$A)zE*; zuN)ye_*-I#AH8&qD5!`1Ww<8Pi6A>$Jcl`~T35RwzC@9iOw)I`8frt(><8heM&Ytj zBJ{8C&e@=$MU(28bO|-X*=A0z&Kkgrn+N(EDlqx}I<# zCam30G6peW!ffwD86l`VPo6OHaw{fS9rOK!otXu%k;=C;rG(j+54todRqQ4^J!#M% zE8lEjIy?p20c%HH<8T3!Acybb_ZvxhlMBuL&U`o+nd3fi>g^~s%{0o%>zG;0d{|Of znTv&ovbZ#2oqtB7kH6m00LbApHF1*&#Oe_ zBBJunv_;?6F-6#*Yb%tH8~$|j>H--tPcNM5bvF`>-zVM){wVaK1<6I#^Txyn)-rY1 zcSSnSRkhD{D#`W8*wD{fkxjdNF~6()N7L@MV z6*|40qDM*z@$$qzmg2ue2dR8^GHQs0wc37N!KYrY#Yo84Ya-Bf^z}wB$h&iMox%xakLPS_^%w)VS=85m4)l`r&2RX+0_##Tt7T~g zUq{TkevsEMF?FklxAT;%r}cmI8FvZjOG*xh1}@T7!27-IeOH(8+STV&mqq%&E;qlJ z`mzNwGI>s6OOiBHj$F*4E-wXf7I*<6Jineul4cR~$l&alu3~9N@`q;ox}l-P&r_k( zGp8We8KQPoNeLa6lrt{IcGEuS<}yv5n%I+M%9j$jg8(s$-S-SB-nik5-ZE=)!BLrw zcvb$w)KVX7pZoOfTW6v2lwXPHaLlk0|L)P7Z{B^|=_3XUju_ZEy9-(55oy7GCGX?( z*WTmRLu?MtbKX5R`krg=>ts_tT0bfF*LBrk+cpiMtay#wT4L$qWy|F82F3oM)z=PZ z=uZb&Kvw_ZI0=Bs_k)B1%IP+vjB3Q#Mzl=?mOF~yX3I0u;xZl0rB5DP|;5k;6aG^ife?(9f0 zzq$5&GXl3DV49-#mtPff^h3McJa{C6-eeDg*u+Y90E7IX4|!gGRXW@RXuM%pvMIcYOS9FnAuy;Vl2Tz(ZK5 z_`$>GwW^D(=M$0c>I355UfF?$mhR6u`y(F4u5L&7JN`It|7IV>e-(;bF=#ER2jVgr zdJ@NV&#v4FvP|MDC&vAH;C}Vz=3{;27Tc>605;tU(#jzXl{LnMN*V3}LnfHZ2>}xs z${ZK8XE9Wm{EruIurN8P!;lqn2LSM#&jo=v{V-p%ZrLA=YhXf9L5p~TD#>xQq^i>U zW#?%?i!fox9+z{&)r$1*dC@N|3W|uO;hUGtdId)$>%Q`W%rkV@aoCAGB&?%x?|(2~ z+(c;~%~m$@Gf7ai(P5$oHGPOKJmq5}6EVGL7_+dTNEve*`OIP1J9x?>Df5ECI*8>{ zTfk(sRNUme=UYEX#9yP6+8Tk-O^M2*h)<@mRWi;|rcQm)H^+QwpUl!KkUs32sf;%0 z*-qkK*XZ0ZItllfSo zIhpt&l9f}}0*?kpo42r=o%lPdgv>O>pwc65(Xy+S`<8SCpbrEYVbO@c0KCa)OX=g@03})zk>U0?=mW|OfjiYtl^0}I-OHtJ{+8TG! z9!#4$J2&-Ta`BpoZHm&4WK|@cqE$EaiDXh6xVVjzzpd*N5%9IJW8T7}fb|S=NMijb z2k@hGzF-7EVVHs@_Pjq}(o}dkj8X|G2c9V9f8{?_>K0<&67&!J z#=mIhBuEtO8I3B8C><^lhX|^&y22Kqx@dOCBv{ITf?>kiE`H>dT-=x$Q*=!Q0vXAU zoR5?b%VN4>hZ1XO>U6D>I%% zh#)qqGSp`%6yBbP9P`Lt-&U=iVR*h`-wf0%wM%sgl&XnjWPm@H0;d=_KVS+z~z0@VG zxq&K?Ft1z^P*=W%b&DM%S-yz0(_jEcv-_lDyFc?2Suent!wy>0(p%l)d|&KNQmWpt z!?(TSvE1D79|>99{L(s443xZnQ4?w4_mshTgv9ALpF&45UG=KU*?&{qGZly8AD&-# z#5gm(46-ph`qj6{6^fOVNTJ54frf@fiV+q$K}U=pY0cJ>CldV>i&J&TT9L(d6iAHZ zhUByhF=kUuCHZIz`II;YX({23;$T^q=J}}0Y6YMNurqU4>>^2Xacch3^I;t`f8J)c zQkJ&BWJ{F+_xQ^g(nL*@4t}>Z8I^4~S1wVxq@S76DB?0)&L$x4-fVh3#Zq)p_ zZEoJ%i;w&rO5gFO)AY{2aUiFX{rmcEqd0)9VEVnkcnV-B8>f4f`Q3yjSSGGrnq6@r zN!9)m4X0Ja%Qu%gsCY4z=X9C4NNE34d2?JEHgWw>3==pp-QRBr_gkZl>fbgaXTYkT zjc>P>f3IvogwfJ6~YmJgqGMp#=Dyc@&8857)n1##Eg%Nx)PQB~k5V;ijWcH3=wb>w>x z=1?TAAOfom@+*^JhR4qKOT%dkoi2@9En;GGcW`>k z&18M`Yf@!*4VL#t#RWt*J74NlC;i_RH_GT*Nuz7eI}{j2i#~9_`wg!PZltZ;w0cHl zKcnR{7tjP&(8Ea8DNW62Hs3IGtDUgN&BN!s+Y*&L=Mnm)>fV9+e>i)~xHcPpO)vz9 z0KtR1TX3hr-Q9yb#kEk}-L<&8LveR^E$&i*3bo}q?|b&QGdnZq?B+|7`}=kO?UMY> z!FY*_6aWIv)DPRJ@`x!8a%@@{W|ByW&>m)#0jCZykLP?rg+)l~yE2PHG=+675%ar} zR7RdpvHgqWp|vgi=OWTL-QlN~3!WUI6XsK2Xt3P~zfU?@6d&a0T#Foc6pek%Vhw{nWSy%+`?VNnMDGtjU~}vHcVM)py*IDsmc9 z(EU1y)a@0`%;|8H)-AjwJfSmxI;yIwmHmiNHeyZ`eTN@Ar25Sbh5&)kKqIFcXAZ`b zquY#_&fpDPQaJ3Ra^+h`0`9`P7B&+MQ^mnr{!god5O&?_xGEOwi5I`0EA`~L`2{C z5$bIXxAr)Eab6oPzMJb!Hq9^vFg_y*SE@X0^0&S>2q$DTgo$glL1@3RxKG9` z-EK3+4Jn#=j3_bcz($FVl}Qc=v&!!xGuZkRMOv6IFP0f-#jEJkSU_Gnt4x(#%q_#| zG1*k;)Y-FHUYA$zab(L*@HA6@GPTzVRmQEzB^S=B_`1AO(u?K%@8)+SRqjQ|P*db2 zjKN{8xXcDAV_k6S<&Y1N-bDYtAN9ZBH^+KuBLM@^;r2Z_&40|l(&o)fSY2%fN#@e1 zh`YD|83TP3G~`MIa#9t5SX%UkjM!KR5}h(Xx1scgfkS#vfgD4!)guqT#}eZ*{y}AP zEvxPPUCTBIix*KZzj1*g27MuIy$#&LSx}k+=1j(Z5XyQu4kg<5E489EM9AyZh{mO0 z1-xrl#hyN=QoxM7#EHqN%IVqKpeiBP z+@OsuFlPg?bs3^7oAUTeNBstIH1rg`H!&D`;f`K@1!_TpqfUSFnOCeWqmMDOVcwQz4D&pe@_EOu{X~Skg}zW%D^sTGXQ4R-jZ)ZK zn#t!-0>RvjZk>{5LqqxT@f>C$_u*UukJk{M;Hm6%Lz6e}@ZPV~uF^JV6y_DQkjmQV zt!61Is%Mq+FkvnwXA*~!s~KA7dHv)FWJg!ntPrOoAqhdyyU(7mLxk|HK*2>ahl(`9 zk}x_Fet@-mije^de%=maGAKHPIusxj=9t19is}_HZP`x5XWq~Z9V!h8)erad03(X@ z72*O)ikM$kE;q^~N9|4*xLg4l_%R_%cGh2WE+T`*6z^%im16JXWQ;u&99j+n@_+y zWlwd8n;Z-sHpdPflZ^#&@f40i-0nC-%X$_F9o`X;95> zVGavoOK&+cI#e_JFl+=6S;pft#)g`8mIJzl+a1|Ngjh)8sS}2ti$q? zV_kWe^8Np>1Mmx}p?&Zrxt2u1&tjQYf+aRunVA8qK%S}N)BG>|PHdUa<>$U>-bo-C zb-3Lk6ApT*zjvdrU-X0Z{oRL`kv}*`ovDFH7&*exLzO@-V9C(g>`au)F)s3yM#q5b z5|Z~BWd}A?BP32iyVQ(Y`@X!|(76z@h0QRzRf3z+$?Vv3N($G?5v_V$ozAr^MZWRJ z2~}MIefp_|a7GQ=x6r(`vQZipRSq=C%kq`Mz>m*IzPo&%sB!)l1+lw@Mp599oG)5l z$U`YMHXTWmgTF;49Qm$trod^MiknWEDCjIUTkoJufQ1kfpLXxyx+5`0D6xFr{37F? z6adg^@2fI!H;j144CIdp$MnXdBt&sh#75HPWsQjdequ)X#&nb)Blb)htcM%aY_W_d zgv9;}z>>u&)X)wdQlIo1Z-CrGp(qggd})C5R8&UcYk@+U1}DR z+NJBRU9(y!SkGM`>%Cj}VzB5gr|mMVZRsbR%tAdGa&Brqtk+}9i-=K)X>ep)1!7sRWcvDR05}$>C8NODIkz%!csP>z>3BFwn6}R3nN?=Q1OmfPRKS)$?KlFX zy9|vT$^_qdo(<3XP!xvQv^F7M9?zW{jZE<tC%Z5~6jnr6kbP%&rran z8&D{eXystzY!NQ&b0RdiX#-#{dWHe21X+o=6=7;QsUZaDv@Rqh;MjVb7vf4yDRX{^ zLuD&cRItYRz6v}x(u3GLgTVD>Ct{5K7QsLon9ZLGCQ!J-2n>b3BIU9YPFf;68q1q` z%u-qwHy3Yla?@D(vP2#?(vyTE6_3j+$?~q(GMdE8idJW4?G4+Avy)cu`b+DbcEmlF zYdcP2WTJRpTt_Ur;PJ&D&t(=lbCBmj&w%!&2l?swRF&QsIlm`y!p|PX(&$RsP=n-| zerfixq+j${{d2&_-Ps@MPF!Z>v2S1I-%rx1O=t6c154a9l%P2p zT@-eQq@!fX@NE@%a9(#QNb_whn1BmaeB&|;my4fgVS z%LVhhq-G_rF6MvlL!{*>H)ze=!SgApO>Jnb93#pYA7t}`0yCP#=Ds?_lgHoMkGw(N z;zTenvE?kA-e&=qNSa!KM=}!YT3lLPrJRbQl3p-#&BR9K2R?YRzbW?cfzRXBth2#A zG-ICG$$#rmC<&#!?Sgs3wygkH+(5H8`$3~*IHiAbpzIn&$DnQLt=SKr((}3Gz2qqT zl38B!g^6|Cu!;t6*|Ft4%kbRTnccAjFO{PfUxs{ z`L!5XWFw=ChqzP25ri!OF~cQ@q{s&dlEbi;0KC{a1qk0^&L&E*By}8!8ZeTMDw33A zMJF#48ciB_9O~AldG?h!hE*=LCtJxp{S}zj(;RpcPZ27xY#vY0xb&r~Li~sbBG9cf zUEvnn!RvAnb3@ubU1@Zl-@##seVJ3%4+{mR_yfyy&=T6r8a*{=*wtQhiM2Lqy%Ich zSm30*0=XJ6M<%-y%#pacO;lUtq>ayRt?*0u68UPG5kS%g43kAKQY=OyNmHm@aeE=x ztexL!F0bNY9E3#VH;<&uPijWEqJZ&nse2n%Jgy)g zFdZEL01i2CP#`izHxa@lr4!~)phFC4us3}9)DsYXYX6V#^{lZb+QmYm+-?`7wOE(G zmyjflR!%qe@ns|}#pzI@kngT`;~aMI@>i58n?k3fy@O4S*V#W^MNKekq|qZk&Qaaq zsmfUpMP2p2wlpV6L;t}+Gt}@n9#}3*GpNPJ;;WgHd2aEwF*WjA!a5#-5AezEW4fM0 ztLhCdjnoI(;IgcH&HFV|NF=%&o6y7a>i=0jSPKB|_6P{UL~@oc1^`{0(8WJ?J|zVl?$BS;+}< z1d(v+Vf@LXin1~*w>({={mZON)bi`b<6OI~ZC>)cAC-HZ;}3!SJl zH}WGsOzc&$8fSd;^8Z$lWn+|`Yn3V9wIcg^Ed&4%ct8U1kL?RiEkcA4=37tX&|vHU zg{u9I(;95Lz8P8*2)j#YS$=sQ=8ur#!nQuk zQ1P@*6r1)I8XTqiXet5tOISA1h}y`Pp53jf)+`H%Wy|i@yNl1g>%~{vTK)THpKqOQ z4A0!}cgr*NlXtS$2WDvujM`Wx)_>isY3}?uX!CtA8P$qryfezZ5KeT=zGfk3*Xzpu zUGN9w=<_*yZ^QRz78ofW!&I+JT5C^>JcRz+)!kN|ZBqHV-GRB&<|6umeEyGG7>3@2!->*#X_N$)3f#)`!ET$Hv^pQg;xMdFEO83rcL6^o=*nqC2ICx~@U`sJfd*yM6 zk;%!K=$;qgCu?@3 zXNr0<^?2GVXpuE$)2u2MMz)sJE_81rbJqFgli=^omPFp#o1vB+Cr`3+JAy{zeYV^V zUPwVz;L&q}xX6co<zhJN_xv>o5E( zdY2y8EqCrR2p}~i2~rcXWKYVsss>`;D)={k4b2wcz3{Id*c`21{GUm^Lq&pK_*b-0 zmb!Nz0rU$>s`KuH6SN`l8ajeyT`D&f6%?Ywr*GSY95)v7#nl6^J$T_3dC`<1oMgY{fv9CGaM?g~x3-VUC;LSM$*Q6OJR~1h!;zd$@0Ik&>8;zIedm8O~2Abs2ru>1tLa)qA;SV zfiM{hIiUe}TfhlJIW}8FTFiS)9dd{qoG~VC(|c1NI{H3?Rg0Q&jjswya6>zYwa2L; z#O@Oow{M3=?&?8^v{~4t=hJg_CkRD`6q-}Y(@i9= zoj1}O2d>)8YBg0>-XFdjYcOqcHMZ)}3*+wC-|Lt^QgvABFx~(-!T@RI^P#vb12x#g z_Co2>NC+Y6_%y`MDnmX~q9LEJu2Wk01st`$yE9)$4_drMiJE5Ad?iRFB+riRGT|U3 zNkquKSIH%Z&_0jQ$S$Dg{hq76M^{>P-H`5Td(XgBZ5Mgs+cWAr?b& z^8>QCiwAFe}Il7e%vN%=DMJZJ$niF7!yfsYj>JTcw-rT(}a)P z*tAX9j>=-mu;dbGYKiDHcZoMzHgBu?5EFUl1nPdS`ELa<0Du{NIzpD8{Dh6*%~NO! zwUrcX5Ht)SWbQKhfA!C{t8kV4oHwxTdh`oB6<2cI7yi}Rr_mSv@5}v{`SdUy31G^N zM&b|$QV3J}H8j!!t{2`)zokLPwRRy-#g{^n3i;5q&Z+oKXUuPm7$FWeEqniW_WIQ^ zZcg>jwpc8JB5u_h-NQwslblU=*6~~qmx8^HV(k8t|@%%6PWBL1s ze(V07W=Xq1_|b~ZRFr(w}z$ZrK}v@VvkN%!zGr9`@{O4hG1>1 zH01gm>8VsZr3IZqaV8bwuEoah^|Z|Jd3q`YDM~SJbeRQugDcFPqEk=v1@R>BxGa6e zi;HD-_2g`&J*_!|0Ti7gV&?XvbRAt|-xD)ATkic_4R_hj0|3=`&zgK~CgFE6KqRkR z;hc4bfCh||hZWh@HW;EN_J+NfvNX%dkjGM&v?T+(s@rBx54@uCdM-#hl* z)@TGV>MkK@nOs7fxO4&v<6@<}r*VuXqRW*?iMxAd z;2UORvtsimRBcc^HNs^lp~#vXCe3nZsmGUxDTrRcNJtV{O_C$7Rab#9b-fts|!3SI*Fu%NBcYDMasRDId;NJgtr$f zQ!YT8L}3(#P+xIJ42MI8j*ka9xin+eJ2Dxm;@OmrB`_vjxv$ZT*+&wT0x0M9r2+g6VL%5kO~7N9=6una9}Fz`&vpSsLJ8We7Pk ztxaF1jJ>L?UklLmA2yrBow-$TC({}$OXsr1qXxdz{;1$+p2`!+@n0j)Bn0E;0D7bBMc+Sb zIz(t^7|`PM8~q3%L6ZJ-V#H&X1Yd(ugTC&s_n{CZQOroy0!4KE>{uEw?iLSD{^gB;ao6zp#$z`)GzuZ73fw5Tb zY*jo=s+ds`Yr3fnWvO8@ogGgNE+Qz}6DJAiG@`N+;>ya-BBm-P7bV?laopIXhu>I4 zlm~Li-WYm6$?I+f^%X>UkWomyH5z{Gyfu~=(B98{VN%+&ia%Lehk8;B zC&+=(hzSXvywE#V88{+QBnW^E1RzLK4}qy!ZBkR%#ULZK%wEh&E%DllEOT=y<#BH3 z%rJl3-Yp%=Ifc-4E+F+>d$$F%HEA)^-L$nU|}$ z21(ZGu2j5I=Aq@~=AY^cE7PUFe3Gbblafe$ZFSe&>P^2yEfG*FrlM}Yeiwhos^aQu0BkP&pUL^492aoPO~2+ZS|2g(rc*g zfYazX)xx%)-Q>f1kZ;jG;avW_uaOM#rk{(DChOv8{2XuNyi*uPAmDyz?`I%VQh>+K z3X8Q^3S~jtrh+BOe^Yv=Ok$Y28wbhk$V}2`sj$!tzvZ zUdVlp)jB>(uAHe>^R$i^1JB4y5i#_*e*N@PN6N=fh^cYBd{hePWWQ=Hr+qr!qm8X< zWDo7<>SJW|d>sf$1hVn5e+Xz9FJOPwXZ|sjYS}d-9IH=~PMr?F`GXJIS< zLWG96eo&+KYe-8_tt`-i!E8qbK`E*BhGc& zW;JnmvqjWL9eSZYe!)8^bEJCaYC4;SwyuBwXygOP7+60OxP7Jbm^NK)c_v{xOZwb4 z+vT*q`0;~#OQXTB=9b1kZ}qi#ss)7Ad9{+}7k&rn5B}_amG=Mx3Y$X+`Dqb}Sfpc9 z5^{}bdeBf97`cl_YvP!5&kO9ZHK45+{p^vEYg-$4UHg>Jk<6l4QN$rO)eu% z5QQH;-)k-Q%VFZcY(Mz4O^+c=(7k?!lzlH({v_*Rf2Qt!+~Q&dsfIAWzN_ezEXe%X zzPxp`!IzxDwL%Hyvt`wFUt?tFEXD&;esV-!UM0ySlQ{|d>-TM<5C?qXik!u>iNQx< zoeX7YsuIg9@!xa)&j)`oa`Y3FSp?0@$-0=|9zBcmOt{@E7CkLBB!T=Jx&-fjMnUqq zd~dX*2{Lj=@iXH7?^_cRFnHJHF$K(O3lH@<#=|ESK?%!!#vOp-D5L#*{?#^HpnMGn zoXy73z0AK9nt>Ak;O?h8~H?){7+dfV3Tn4Al{Zz!Q;vBDep3&sBFr5Ke`v`dI2~ z-Rwg6V&v8t#8j0m+-vDwq3!mY072>o243?-y*Bz_oUoCgY_UbG<6Wm_R^nfCLZZGr zUj1YV{X28Cy?y=h?wWFOv+mLFNK#aMs(m1U7;*H8b;kAlPcPqk^_AxaiB&SE(v8Kz z+uf?JB;NK57+see|l>}fJlg;Lx;4_(s3mURbc@XLy%BW=qE4QEf4lsEIZ_o z%CHpM@yVmqhIYJ7T*8JflofxdzRZ9v+S~lE5zovRzkCjIB-X+J#f2`V7^Q!tDrt$2 z1&(qF9?>4<9p$OzS}<~xW*phyFdt3l#6yD_2-dPVEsQvrAGUW$nsU&O(AY4fOg!$1 z*saX=S}UHNxUakgsnhP6MmEfgyvlZ#*2K9LZp_&1=^cbX117eBU23Y zmlo#^M4w$-3vBGmoylmM!m@9VVtf$pcRRYkeTZULwzH%6$}idH)U)HcyB7Jb=khSx z%$LNA$ZFe5x)=8LWt;Jb5RPkx5whYDv{38Hoi zlU}h{(irssj#Nix?Sf|=4M$f?7d=%8f?o)YWi!EmXYhHXb3IvuhpOBf4HO^c#`<(t+)cpIi@ajK*y?h%G14tV7?ZcuFiL&eYe8BK3tp05`d%GX5&;5!2(1KJpVgfjbZxJ0oT zus^U1bC`NL^*c7Y4=1HLqz~L}{N*Rr=5Czv`EoJ)N%&2N+PgRBCE3@)!Z^KOca#_F zn~c4hM(CDCCl;#qr-Lv%cEO7W89TR?sT)OQ`Y8nFg3s!%h$9REOr+7K`dX&YEf?jh z3Svf&gs&3>0t`7jDHjF5Txk>uGq%dZZJ=+mxXD8*7M*b&&yXq&kw&$8#j{p6qg-}s zI78}GKD@Q@YS5J$&un?L%v z1eykAHAR!Nj%MA~YAhcbxVgJZOBiruo`3u#M9THXX1lnlBtqMM0DZrh>@8#N8`?HpZ~Zbn_) zV^qgKS7p3P2akm@ZWG`cbNzD5>5cThqbXyn(`&JRtJ~n(WOPc}SE-`Wm!Ql`Sp#Ao zxA=J$)4D9RtniM_3|^ix;w^ulTvrv7^sT5&l%uw_~u!JF&hbE>j9*~ zuZqE#qs*9xu@nx2ww9EbH_rez9dmvKoW;0^ ztae%yJ;TyL-$gv)M_*V4bgnVEzEd)0Oq&_rBP{Wh&t0aD(Qr*1dx@=(F;-~QLFm9l z_vFOpY0c7*ktTS*B)tKZrnRW4Z1_)WJB_(y=Z;d718n*!b4pG>_Kng<+QvwpVEkRR; zx^8V$sM;l*bhv~@fI9c{>ebKkLJQ=aMk)97RCNvG1u9kuGnQRB4n|hl^3cdL_H(7Z zkk032DP*^9zv(mk=_{<0Onp@$aW7;or&0`thaExUZHJ9b<2$aB>3x?}igM{r&i=qA z6+>)n)OMY6pVM*AomV=@AFDgqS2FkBpZi)?a{aDf~8DCN*sT$NC zU%q!5VDdf|zg+I94XQAkd+l^B1gk`vuW`L|5Pz(G(Lc8;Lqx_HlOvWqf7Y_bFeBS= z0iPVEgt~u(yb&jr8#eV*cE`q-u99mXVSC*y(J@cwAk$Q)82QF0LX%2#-4olyibMSf zr&95=$8b0nCi>Z{>O7e}6jx#uk>YSimv?#qbp&Zs{FGpdVF5HV^wzKM4c zRW39|NHgwyo)@4iT@>43Ak6e9IJ>Q|070C=7+7K4Ifr2@Rxm!z)w~>G;fP$un%)Em znlitd#YrjHib@0luhEl+4%$u~P5@=+3L7wYL+D=ml$bVfVvD5~FroVSa7w_6D zlz`gT3?3b$`7T5wDMt)kJY#yFatkZ(@ybkA?fT@p>#998n}cc z#3LI`J+N~;6tEC}L0=Z@j=ohv3&hCnFEk2yEoJ<(cP7?RU#-?mr?)r4fKc061Hh>K z%Ws^wCC{D#4a03G2IyW(a3&4G{DCmI{Aq25M1C_U5RYhXQ(LlHI{C;KYsJL=UDGn{ zi{$}5_+n&Wq=yQR7{AA8H?r*GHbV(fXd=sX6kR$Btv|MDff`h!9Q|_GJ9v{OrY@wB z1Wnl}SIw+o-BFmfPBlD^9dexPZAz~C`aaic$BhB6wIE!?SGz`nq|&-FJVMZzjlJ1i z)t4}HlH0R>8J(>648jr&T1erxWd2iTR93>`zQZs;TFTr z4#(_;Kly^+%<#9(%&IT^E1(!q7V!;oq>iBgI-yDot^~;5#UMf2dYiU86;4WfMY3f; z5(mJQ-PCzW|6O9|0D&80B{Rb`9Uu|Z1kg`w-mY=&Udn+W&4hME+26LSW4Z{OadPIL zi~Y$@lY$b3{2XPqJV|0DgpGE^?*+V{KK|LVb#W-qxSm1&;>;*ra6rL>_Q{>2eiw^p z1cd%&)2u_-m)T0Mw!0To@!gJH-%A#U$8){4M{K}bda`%)rc6~%D)VJy$y`=W$Z#+K znC^2c1@1voL1>Z0%VV5^03L~-L)oNHI~kUyz-7b1DI(M&axx`ud)OJ8l}`BZT60CR zOhLP6a`%hFGrqFd=p_&*bg@0Nom)=sKRO5~ms$-e_r|Fv1;&AtHanC}Nrl(MsfFHIQ9eXbnWmSfkMl2MxDEd9ks(Dq>BHF-@YbD83?~ zlh2-o2~8j)-{R(0Y|lp!>-)V{x6CLndtx|)Aw9~A|5-)48=q~x!aYe5Y12=Y!GuuK z?hunHhvuaP5PA1>L{9OoAfa3idZyyZCb%Iu?tV1zlu7BObNLJjH^2vOlKG9EUOfpdf3C znH{o*QNdV|uqL;UtB4@|cWt?r4?cSqUOZTzMeCb;$ol<%Snm}CJduYw2+PM0O6z0F zmrFM2 zaySXzGx0*f2%ldED7(1?5{d@X`m8NKCgn6x3Jm3Hw&$ju&pYbF{N;`MA+=P};0uW? z564cvf$wf6&p|O@93(Hm_nvnao+XnuE0*+RvrW zr-rnT8|E1co`R4^ef#m`sEhSTgq$SZlLw=Q+vRdOi>~Z*g=*6YVALCYB3&81I^N-t zl3m))hAX3*Ndmi$!qBWGqKZI@_P(e3K4tx9f&Wj7tAB5|UI>KUFao>MD6md%BHAfy zjHaWCn$>PG2l5-9f8qCh`z3$S&t_<44ujX}1-~UP{?A9k(ivPA^L_o@de#WGX2m>s zV7?H1MsDnK=n_qZMyRJLrzD9~Z9bZwd=aqNMiZYCmz{JHU;Lcf2+7^Dci!S{h7C{I z2_fb{qO^>Z-f#~8lw+cyR-LL|JzsfXzxy-18kBVumBopVWVw~`#0u@Y*!xV~4(y>(t$dyEbOa3ACq2oEeFalJh=rSkVtk z1|DDTXQOAa80WSgh?C7p`uO*di(+y5-T3amJ=i&ta1FH{nXr&bNNPxas_t=-ANi@M zTCH7bsJkcyjU_qF^!c4xvrMhj<9upACrY#M7oUBfL5aU!a0+V}%9>+4^V4*Q5VH9%F#DeoQjv^VPr;#Zz zt0;%0FnX=1XM9v(aa@pMu#}jW2diX4s9Lqf1(<7z9AC-kQFi1gc7|bYJ+j((+16k} zK9x42+lTGxXyUDeeh|G$#J6kDBECOLEO$d$Y+^Y4NUYjs=UP((f(~?F@awYp{%UOx zT9)5ECsV{Z?nb|!JKmYcKyu79m9>odq2!tsidO8=q*!0=!MAU?!?W`_QcHdC?D+i# z(5o3lWC$HWI2$#jKtzBv11Te4;x~m9NVC}SWFX--a27hUp>@z>s*E34zuq2XbcMOm zSPZVm+CqYxcBY*ZTG?}X@y+Okiy`2s4M$J4fRtCRge^ZR;R*rqvCd90O_!B(oj78W z@L-K^{Ci51xmSgE##+B3RnjxRXRAZ{>s-_++gIID_xVLAK%QT#MnrnhFJ&pALUE&} z4zn|?pJpGLFfgW;bdK!Cy&X676;O{R-@)ifHaV?#;(n()N9)N~dvk^sP_4oVigBK) z*zMFve@Eu@=Iv;#&Gc11!%n5%e553(5+hxL?^B{WQjq1E@xSza41t^egAjq&$Kj7M=93widM+=hzx0% zwc{B4A6r(NkMssCFHWX0K?opFC^t9X*=igOf*^vghu)Z#LQ2C*)DSZ=w164xzco)$ z?G|EUfb4Z7wSQgm$_Kk3us@g!r<|XRgulBJT_Lq+EKb$@Dg{_>uzO>P4mUZ zseU>F+V%_5b~JkmzH-b$sc`S7=-q#=RqW&72H)*Plb&yu``)N#Ma^ktmwSQOX0HM` zwOWI&9h>&s+S`@80RT?RVrjWczab3tPKC~qA>1ka@5-d3;g%%C=xdZNDephXMuS_&O}#RfV&YFeUWVvyGOL z$yFFAlyUEQ)g7Dc$77SXjUTY^3o5YY$-4Yh5P1sANZZwwt#lX={W1E}$!{&DBX{YR zDKvr-qA$NGT}%v6C(i7n5n9GnP>m_yNUsxw7i4ub`j0G;EaR6zsmQc|6TzGV6YK=(1tkDheask9Bwms zm2T^;M`R8&_1z^cwV8Qk4tx>m4=V!OYkS{B7PPz&zR0nk;iPDZ_K|9)Ehy*Od;UAD zl;f`GRM-`gr3|!ia6*Fnx6Dg>YieShkA_;^Nu$Hkq_H^&y!W%&uDSw)RYfE@9Yn?j zuQLj{w1W_ESk)UX7E$6>x;B#Lq7wN6Un$EW{#@4R1i2D}0OkTfFHW8Hjp(y+8 z7$30rX3=EW_pjb?V8-XjNRu}}XERrNV33Q50=HsN#SENVQI1b5nY5gjI|Nch*tDi%CIplWDI++*ZOE|ekwIQ--D)XcoG!@$f#KnAxoR2B;HXK)-)VJiE@P01vin) zM{1^?3km%I~pjyMG_uS#M0Tim?68Y`<=Tz_3Mk{>XVO}+Aa}fJ=_uV zjlOe#e{)o`Q6i?9R5^qGS8%*quXTZsOU*>@0ol1>i1QT zSMAq>)AW0Of={P^w*Cf=Nggz3j)&2~HTe&l-G?JM;xKajsFz|RdZH5T z!P!~RN=+XX%+@?)P}L)^0cyOS1BJ2?JV@CZ*-^giV7$&$W@~!*ix}VKCVYJy;klL0 zyl?wXX&IbT%s$YbmS?o(y3>;x(Bb17%HCQYA<49BMAozzg`B5oa{rn3G{lFL%lVy{ zVEYfoWZDebrfOr6IQp7@3=+M9W=Ykjgf?qIr3-nL^U@&>)Kl!1Lqd717 z!A9#TDG00>cMOn(7>mY)`B8i*d`71}YA=8qlhh|@+*#5e{k@P4CwI85T0S?FO#xh3 zGPBmNTbTe6p(XY^rmgfQ!sU`gEVTJRP3@7g(~E}6$wAhnWU9=ve(#xyK_*;xT-h0= z?tl|O*%bWAK(8|6N};gDY9qO9l)(vXSJd;Py2%!m3Eshyzk0RxYxZxln9KOMg0<;& z&huuW-{k%`PH)7&2n%U}zhped&l11+y&ZX4y(;#H0|0ds(g`jwuoe;~PX-XYijMCf zX#|ZuWkzaaJsP43l{~Bo3BfHtn;yuL-dib4zau3WJ|`LZ~dOPOAF&FJ@;aB zGOn`GHY~$U1$);UYS2c{By_Z$RQ3LdN;UD=-8XWyoJl7J9jRqJ zWwP+;t)S=DVF=KD-wIB27hhnT;7MCP6dH4*gD&09;%mMNdw$ov7kPq9Fo`kC2h?O` zhsl0rr`Hnng8?a^d64N4I^C4v(nkYI%p3zDSwdEX$WV3n#^HtL&q1t6g{UGZIqb|z ze58z8!Xidm*11VcI&EBzHQ-BF6dxpl^(zItS-1wfn3 zz6bj##ZtzqAOX=da~kWl>fuNQ^P5TShU=am^Bw_h?`Jr?7F`A{f*I?-7$rQ${Z#NA zx`?N2JLWH%bTq{mA1r_Wj$x0o65Z+ARqP!R`5%QkJFm6vA2VP2R<;s3=#&uxR<#1& z7HG|O_k13NaX$KpBrW9P!kIiA5tL62h}aMzK*SJ61aX8d1V^3Ol`T2N8KqQT`7Q~i zq)1>Ef)HB2a0Cj$0Wt^HaEJ&zRlTJmcAYYG%T4&ZzZGJ}J7z^V{A(bg&b5DUC37BM zeF?5sz})e&liTf`?D%FyHT}UcSun?L6!RakeLLr$C$h%E^H!`$3N^f$)w1TXiVuUU z`J?v}4xYAhxX`YZ8QX(jCw@21e^{Sg!~T8^dpF-N!nWJ1-NXO7IAWt~Qmx{)b#VXQ z^R#udR$FqmF#^YEG;GhN1yaV};(OKd{EhuWt*PR_x61+m;xpvT96-PtyQ{m=0In*mz5!lv+eg@-ZU`-iVXo1D) zeLHizZNQ&&pm|H;U8bJLu= z%jo3S&11%MJNr<-U3n~O{y0a!+_%-L=K&c20L7PmLm4T43?O%GO2OR%V+Qd4+6%>N z=7ftYkWUa2(9#<*@_db*7lW1XSn$za2X&lG9QAI}1cy&hQfsX2!-{Qy?AEn)@#RI5 zQ~X}Dq-JoxsKaB4W>Lk$067%YUIPJz`jS*=a1ITBB6;*fF6Zb3`{1Gi=gQ zr>V-7?fXp<9m=QhC;_x~;o$k$D))n%H83M~Pa$gwL83nIQXQqn?dxIT*3@Lv@)M}= z+oD|eO*GLD8XWd(cS!xEMTUbBl`cbEhtl;N_lX+iF_h-NU%z$#MQ>1H`}{nA-T+$H zbLxM6qtj}+@u#)3rPr5XUm5f5s_~QUs~Z&8tn-5RHqva>djJguD~oe54?MfrX9PZq z#e&_zO+%A{M>k2nK&1+hG(-pGN>(Z%*Vd{<)5^7%OZk1CP>2G=Z<7Kz!IX~@phk_A z(P;0KL%l++Z>^6xno3C$P^Cu7dx421RrK;)>1OQdO*BOQqg!L}6mxb9Yd8xzxn3mvbUEtb}CKhRU#hFn#qFv9Z} zQ1pRgn(p!JR1o>M{*wzI#c{*%9M$ppJzsWG&=R>W6{V`*efYcb|DwA7Z;I~!<1ql~ z=~s$jD4z&|LY}4uWSyapWzGIDwUyYu)a^g;3pzV6UnEnPdkHnYT7AvsN?{YkuKMW< zVk;LT*4#j|6kHEkIFv7Baog$Z94rA{=GBtFWrz&1Ux*Y#sB$BQ5H#a^wy^gVXBDI@ ziKVh<4Jo%^$yc>Y5pNf-hFbqRrzSYlmVsPZFn!3|^BabIKv-Z!I%MA6dDU1vk78LD z5ocdMWQ3%)`}N^s&EftmZPf!=`t!+@*{8pM1EXb`FE`^GKFr%!Ix)J}2VLhLTBN1< z=UR<3GkE3=JY<2L0SK(0i-o)Lkz-*)wvBi+q^)2T%dm2%m?(II^)y2$u9kb1&J;p1 zCDD>@1PudC7|s7h+FM4o)plK@NeB=^puq_RiWeuimIikS?j^Xp6lkHr-Cc{jyS2q# zTdY{|7TO|3DzxQrfA90W;~V2UXS~lj=hwc*-uv$yYpr>$IVT4(UJ0)A(3duU4~8Q% z2G-}5fLHppl1bKo)9)R5B(q!<$xyu=`4DBfCQXUsklL+6nkMRLheCE7ctm~qqDRrG zDeK)kBCusiwt9ZuZC?h{;QUgh>c&vn=B(p3@hSa7MY~dIxnAwj?M?9OCz`osX`ks` zHPX*+f46vj2!EH~$mt%x_verIa=q?5Cw(%>JNIu!VFl|CjTPJ*;Hy6jpeGCu1){y- z5Qwp)^#!k#Sd%wBf`6_#AdHQZd`e)xbxVw&g|W<<1rD*0J|95OH!EW?o80P*^Zw*0 z5Rw8i%y_4PP4|Zz2qaheQ~-f=yL1G{JE`w)r*=_>I&|@&(Aui ze54HF*7h_vBaa6?0zYN^ghN9^bZtmcC1_>tw~9s09{tSL2;6D;ZxV2Gj5;m>vdU+& zq`yYKhY_QlRDfL=hk&{9AiUJ<(v>nEag+j|q((7gnAZb)q(+j|Lk!xe6kHQ`3z0Wm z0+WIh@zlSfbl%1f$PT1H!}zb#f9ZvS7t0yoD2dBg60KNo_S=EBlC>2 zyWRsoN9MD)-&T0iG={a8hkLwU$b{t#~6~P!P!Q=1g{~sq{0N~^= zEx!&H!^D&%15tq_MuhguhAn}C33rO56PH|(X} zRMmwFTk*oKC64o(;E$2iCX*M!{P~JAg2ehhD|gKM7J={rASAhpF*7@Q6d%|>go^8@ zh)cCn+nw3hEMfMv^rN-rmHDcal_L)f6BKfBJ9OtJ*;IIo2`R2qWLS(XC#ux}2C~x% z$(LKO9#>Ezw)O7qUjoNd6Xg6HC+|Q1vT9$tlf_*VD@tOYcQCVj!Fl|+B_eOBd5cdg zI-IsG@{?D_%_h?o`1$9FcqfnJ{K@p5f!V17=ZFryVb*1q(UUO^xPWn9;b+m_K#4y+ zf0Hc_b2t77bguU)E6P#wr#&`onQ?yHR)8h=%-SPH%F2~Z%T5ayO7`ftyAzT`U?ag+ z2sEj66EFm4)D%BE{u2>30SumLS;G+nRyaU12r*D96qpZ;k<$yXMXr~#?=lu2nm9CF zH*EuS3Uqke*2ucnC?_;Rx0M>%QPBBMw*5^yHO(VL%8rkqFaW654!(#!7E$#vC6~iE zO~{q-7XT#@%PW&73*FW$=)**}X2r{>-}q?pM|Q13b9?eRncij8OYePbhEmt#!E%sh zLG_=G7XHrJT4rZ2h`zx~^6A87Gxn@l7cX@->2^1mVhC*$)k+`J=8E>%)Dh34ntK+ih>oRk!QU!1bb)+6;5Wq z)7H=m>)>8+N^N3|jbrRog=n$8c(#1>XCroc+Lc|~_Bpb3IMEKt$;U!1@ufn|E2?== z%ZHNT@vM<70ki<^oQ$r%5y|0Z`X5EXr)W|&|5mxow$u(m;%gWD`>Wg^x9ekQTIC-u z*ln$|)*YBH$X$hJJ&J?RdvACpj*RTe28~%_`hIDWcTJgQUiW&v$-s9pG2av4%HlHc zj-kGM5nz@*vqalrI8$eL-ZX5nboq}wFei&P|9{wm1_0LjubS+uMnU zRO7M?jBs-K|C)cV=P??2E-#R)bp%7+cl_1So&Ko#Zzv`aSG#ODnD z+3(;=eln=-MafLldX8&{QbVHRl4$MGU3&Q@D{K}I!jsJn(&sEMVt`T8Bc||98Y~YLtFHAErAYph207C{G zqlyP%!>;PeLir$K`A~Iw8$BfeX#=P~lIAY;6vPDI2KJL0FO=Kui=jGUdhH@KwPGwl zh+X(VjH`jk(2){gJQCI4Z?#_)K&3V#=?94rUns9hPUtfz|8aRE8^2t0`&g%z$Ixv= zeqJOa0#%Frc3AywvY0xE=b`Gi=MJ89V15;GFYO~)5X&hFKUvE&$5d!trMN%=VJM3|4k`7k`2y-s5QFFyVAkWs{XfaU8SUD);!Kh&q zg?0*CDCjtEMbu1wvC8IWO0c`b&tX!J(3~d(Y+5X0hH(kMboV&Gi(YFjn%7qnfwD2U zdi6fjZ_F1`llscWjq(;R`ZE!}cIL_sD(X#d4uwcX)Y zOJsij^HHliU!ZxxU4F{Jb(k|>g~s%&BcE+HY5|KBI1Y}HI>-pl17m;) z+Fkdv#}=l)g-#2}QC2q2BpMMkn}+Vqyk#u>^Gd2_VtP*)^8PrFInsWLP+Qmkk?$f; zc;M@P0N_J<70bqK7z~V@Pd7=_3AD8R2{X)~$8-IV z;g6F?@WGQp9)`U6J!fRajk%$@cU{11OMKs|ABSAlu2Juv-fU$4d_u>4EYiwhwmT@} zae_$wwNN|}Ra34ux<<=kBfRi|LIbjivB@}kVK!1rQ>tzKc*{AuiPe1T-0Eb}HD_gI zedbU$Mx2cObE0hj2!PEJjZAmMvOz)C#rU!?hpg)_OtRV}+Lj;;^3c(;>&qxErWH;8;knMq!Mv@F4ezSN^S zS>U?he-LjN-|+mJss3BJbdPo0^O}7*w>rZD=y$4?c2{!^_SLaG=Sbbj%%caW#8~@F zuTnk3%a=SJ5BR4_Yc8tv|9tfQO!<5)PW z6Q~yxgADcSf>OanYzA;xL>MIEJG5s`Aw<3ro-`#D%0B=s4KdfQ4vD}|14o8>G|m1D z8`l$MeCtmqa1Bs;LGsDj$QBztlPPi@p6D+*q(kD|bv8GqA4!K!sw?{Vevt{Okum*% zL03+|B4Czxa=D@oQ686z^0ac+ zV0-taE*|oWM^5f*ZucwK#NLK4SL>NVzl0p-)_7ZKQqH!15hnUxu;m{7yOaJ8(0hkp zoQA)v(A05y0A)#j=)7(+=u(hhwmG?&NaNRk&A*4^clb4Zp1ertSnACeYZl?l>$>wp z&br}l{uOApT-fWM2tkC(P@AH=6@;Wh2SOKIU85OCqwiPiks$#$u6IH#bW~BDPu}^| zpa=f8M=hYAVOTXXun89_PWsC%F%ssEU&6keps^GBT|D4mcJ(+cfi0YBcS&_P#=|{| zIc46WtwxtuP|sV)XClbiV4;Eg+i+;F>;&_(rO#jYsm6UiroJ?cetTS_Kg@=^Ix1T{ z1C^>#g47*b&jc<;;pSZW8Q66t9-8S)Ogk-zyxM)<>GK2tOzhTyU)O;< zTCRhG*nRG)HnQufGQayyLWcS|Ftv8^>#X+vXmiD=`J^O-CZ`Z&f_Lw``a@moz|fhv zxhG?>^%)oR9|ZOO))82w*&|jy48$&$MVYCY?>%c^|Fi#4TbSmX>`dcJ762fB;hmTz zc|AWy&^Q#?AQ3!({0#y$-E1#j)>|H{74f*}WwbGYG*Q9rU3L8^j=CE5sreKU5 zzfIhGKD~H8(F|Iv;cl||v>$xhun_ZAw4-?qX6h|o-JvXGjInihf3C`!d&jadwsr@MBaU6yLL}*B<7#e`46-UPYo&csXB?BtwJy>%Q z#$ApKt0-z100@i6!{rRozU&zsJ_uJxf6LTm6%q}oPc2yXCsWr;3^(eu^Ip}fHy$$Q z-ZC2G;x*>-Bz@*c6Y2PoSL^l2%&YVFv-4d%O4~nkgPw2QCd2+nYefkx^|j70nm)T% z6Uv%(-mAv7^ks8GUbwItzsP2qFyb2f6*LiuDB~)4WBoVs4B0Ipn7tN$89c*VDEM3Z z;6tMDZT1yaA*$GQ%RIm>In*Kj)&DE#{x5vr-TyY((B?~tfsx4v_jR7vjgzYjn%K%j z5*twcSN;76zw>_%2tuxWc1-iu3cT-nr~f@Vm3vxen=m8Iu4EKNY9)*24mZ7^ikN?ow>AD)A%1i*M*|Na-^2 z=#n>ebF0?|1fE8tx84~pet2dZP-QUNZe(=;V<)|x-&`VQ%nN1QVIWIGa>FCJvoVMe z!8j-C)pNZvQc_zeh*^PU33mE?J6dbr0ZoeY;8ix;vojQmJc52)m556OnDs3BH?=mF zztP3gvr$YHu&fejng<3VXu(}()Na1{Ay{-!-^1+=CD{l9pS9{~;fmd*4kg6Y*NMEu z!ZM76tmsSQe2fxuQRJOzL7`}qB-Z$Krjf{1E@1}{6yT65pC#BKIw|$u?^^Ouxf%I0 zI`4JuxO4ZDPWc?BlGk5ZEC>U7eg{pE`SyaRzb0??_gyvwdvlliyGO+3{51_lzx0i5Dtrf#Z*8;YlQ(hh+kVW0JFF7{@}!bA*zG@@t!^!cu6$$ zE@A`;{^M!{R`5(t3VeXkVcUCAHkTSsg}Qsxqfsy4}HGW`HC5`^Bm64a!a%-Pcp7WU?F;3XW z-P;%6|Gi4d`M*)k|F_4x{&|^JBn94e)>J(Y%7Dp{;=~O_fn-ryMgNsw20PreQ2&R& zddqnf=FJyv!hfefdXy)Z`@j6_l9Bw{*=!k_VPQZJo9{PQph~EOh-H689@yv@=Ww4R-6EuKid%K~Sh{jG0EbFocpAP(D71J|i)6*B71h zZ*rD2CJqB?$XTy8V{zTwp)k%JZE4L^?18Jmh$ndO9=M+Y1*e8Ppb-(#czAF;WDYO|R1rtq z%jk(t2_e%gMJD6+!cuyKN<0TYMuVWqyI}*Qxuu`x^BCL7c*75V1cOTRMa`n@o+fk|2*wWGQ|M{ zbIsBV^Z?|YS52(_7~~mF4>u>b13Ly~!+6S=uxjKb7>c5S7z56kSc+Qf$+0!cbj(NT z4QzuWWU+WIV7X~B%1T%#i#o4wuSV-h<;yBqGW&caeF`LpqOjGmNcnAC1(`n+Ny>(J z(X(>K27?UAIQ^-Z&-?(d#IKx#qpwuuR^nJ1-c2{rqlOh`SM`Q1T*@%|uhhmR_PUJ0`1ZtN5da-OpmVt~#^HqgtGgVK*aCtLv%@@sVBr;{mavX=5s% zxy3=QU$TD0IP|Q*tT+S%FtI%`lNt!jAfR4hyaa`1gkF!%vN(*{0U>xV36l{MjQgns zxVQt68Tbj>MXzipL6zb116=Y6rSK5}JBM7`c=#BmZOXy6hsm)b#~pW!9IgU~Sgi@w zOrfLVi^!=s_QC;8e`_tL!55swUXO-9ve>no+~0VWEvO%OP`{M;^@Hn51lX@Ui(l!; zyhE9UX1;@Ml7rUWWk7?j_(6gSlY+-uqV42%zPy>;l}8lwbxFARo)#~?-+?;b())_( zW4iC${!PzD6dmJ7b7C%5<30YqmTr%~7Q1Em*S4hRf7CYr_fP-aAJstU;%xw)Y1m|R zF1Ac;w4XE$&Y_PV@~{3m@SpkDZhkJFAoWhapEvM=)Ai^=&cCsIX6Dh4ka<1<8{8&B z1A3-)2tg&{ep{z16$XG3f7U7_