From 8c31342360ef03da0d0d8156eff2f94da6a13916 Mon Sep 17 00:00:00 2001 From: thelostmonk Date: Mon, 26 Jun 2017 14:33:12 +0530 Subject: [PATCH] reddit clone first commit --- redditclone/.gitignore | 1 + redditclone/README.md | 1 + redditclone/db.sqlite3 | Bin 0 -> 155648 bytes redditclone/manage.py | 22 ++++ redditclone/reddit/__init__.py | 0 redditclone/reddit/db.sqlite3 | Bin 0 -> 131072 bytes redditclone/reddit/settings.py | 122 ++++++++++++++++++ redditclone/reddit/urls.py | 7 + redditclone/reddit/wsgi.py | 16 +++ redditclone/redditapp/__init__.py | 0 redditclone/redditapp/admin.py | 14 ++ redditclone/redditapp/apps.py | 8 ++ .../redditapp/migrations/0001_initial.py | 34 +++++ .../migrations/0002_category_slug.py | 20 +++ redditclone/redditapp/migrations/__init__.py | 0 redditclone/redditapp/models.py | 28 ++++ redditclone/redditapp/tests.py | 6 + redditclone/redditapp/urls.py | 8 ++ redditclone/redditapp/views.py | 29 +++++ redditclone/static/css/style.css | 0 redditclone/static/images/askreddit.png | Bin 0 -> 33594 bytes redditclone/templates/reddit/base.html | 45 +++++++ redditclone/templates/reddit/category.html | 15 +++ redditclone/templates/reddit/index.html | 4 + 24 files changed, 380 insertions(+) create mode 100644 redditclone/.gitignore create mode 100644 redditclone/README.md create mode 100644 redditclone/db.sqlite3 create mode 100755 redditclone/manage.py create mode 100644 redditclone/reddit/__init__.py create mode 100644 redditclone/reddit/db.sqlite3 create mode 100644 redditclone/reddit/settings.py create mode 100644 redditclone/reddit/urls.py create mode 100644 redditclone/reddit/wsgi.py create mode 100644 redditclone/redditapp/__init__.py create mode 100644 redditclone/redditapp/admin.py create mode 100644 redditclone/redditapp/apps.py create mode 100644 redditclone/redditapp/migrations/0001_initial.py create mode 100644 redditclone/redditapp/migrations/0002_category_slug.py create mode 100644 redditclone/redditapp/migrations/__init__.py create mode 100644 redditclone/redditapp/models.py create mode 100644 redditclone/redditapp/tests.py create mode 100644 redditclone/redditapp/urls.py create mode 100644 redditclone/redditapp/views.py create mode 100644 redditclone/static/css/style.css create mode 100644 redditclone/static/images/askreddit.png create mode 100644 redditclone/templates/reddit/base.html create mode 100644 redditclone/templates/reddit/category.html create mode 100644 redditclone/templates/reddit/index.html diff --git a/redditclone/.gitignore b/redditclone/.gitignore new file mode 100644 index 0000000..0d20b64 --- /dev/null +++ b/redditclone/.gitignore @@ -0,0 +1 @@ +*.pyc diff --git a/redditclone/README.md b/redditclone/README.md new file mode 100644 index 0000000..96bd3af --- /dev/null +++ b/redditclone/README.md @@ -0,0 +1 @@ +# A Reddit clone built with Django 1.11 diff --git a/redditclone/db.sqlite3 b/redditclone/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..314667585cf938b9de8c4b53c469e97581077272 GIT binary patch literal 155648 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 literal 0 HcmV?d00001 diff --git a/redditclone/manage.py b/redditclone/manage.py new file mode 100755 index 0000000..b4dc30a --- /dev/null +++ b/redditclone/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +import os +import sys + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "reddit.settings") + try: + from django.core.management import execute_from_command_line + except ImportError: + # The above import may fail for some other reason. Ensure that the + # issue is really that Django is missing to avoid masking other + # exceptions on Python 2. + try: + import django + except ImportError: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) + raise + execute_from_command_line(sys.argv) diff --git a/redditclone/reddit/__init__.py b/redditclone/reddit/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/redditclone/reddit/db.sqlite3 b/redditclone/reddit/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..12b61f05ecbcd136f6887c6d92ff6d9ae9d5eeba GIT binary patch literal 131072 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 literal 0 HcmV?d00001 diff --git a/redditclone/reddit/settings.py b/redditclone/reddit/settings.py new file mode 100644 index 0000000..095c8b9 --- /dev/null +++ b/redditclone/reddit/settings.py @@ -0,0 +1,122 @@ +""" +Django settings for reddit project. + +Generated by 'django-admin startproject' using Django 1.11.2. + +For more information on this file, see +https://docs.djangoproject.com/en/1.11/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/1.11/ref/settings/ +""" + +import os + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +STATIC_DIR = os.path.join(BASE_DIR, 'static') +TEMPLATE_DIR = os.path.join(BASE_DIR, 'templates') +MEDIA_DIR = os.path.join(BASE_DIR, 'media') +LOGIN_URL = '/' + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 't7zodh+vpak@@wgt4$kn&&*rt@2k$$dtvb!fn0049^v(l!mjtd' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.admindocs', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'redditapp', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'reddit.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [TEMPLATE_DIR, ], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'reddit.wsgi.application' + +# Database +# https://docs.djangoproject.com/en/1.11/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), + } +} + +# Password validation +# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + +# Internationalization +# https://docs.djangoproject.com/en/1.11/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/1.11/howto/static-files/ +STATICFILES_DIRS = [STATIC_DIR, ] +STATIC_URL = '/static/' +MEDIA_ROOT = MEDIA_DIR +MEDIA_URL = '/media/' diff --git a/redditclone/reddit/urls.py b/redditclone/reddit/urls.py new file mode 100644 index 0000000..60f1fd7 --- /dev/null +++ b/redditclone/reddit/urls.py @@ -0,0 +1,7 @@ +from django.conf.urls import url, include +from django.contrib import admin + +urlpatterns = [ + url(r'^', include('redditapp.urls')), + url(r'^admin/', admin.site.urls), +] diff --git a/redditclone/reddit/wsgi.py b/redditclone/reddit/wsgi.py new file mode 100644 index 0000000..08115b1 --- /dev/null +++ b/redditclone/reddit/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for reddit project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "reddit.settings") + +application = get_wsgi_application() diff --git a/redditclone/redditapp/__init__.py b/redditclone/redditapp/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/redditclone/redditapp/admin.py b/redditclone/redditapp/admin.py new file mode 100644 index 0000000..d1ff898 --- /dev/null +++ b/redditclone/redditapp/admin.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals +from .models import * + +from django.contrib import admin + + +# Register your models here. +class CategoryAdmin(admin.ModelAdmin): + prepopulated_fields = {'slug': ('name',)} + + +admin.site.register(Category, CategoryAdmin) +admin.site.register(Post) diff --git a/redditclone/redditapp/apps.py b/redditclone/redditapp/apps.py new file mode 100644 index 0000000..b972a0a --- /dev/null +++ b/redditclone/redditapp/apps.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.apps import AppConfig + + +class RedditappConfig(AppConfig): + name = 'redditapp' diff --git a/redditclone/redditapp/migrations/0001_initial.py b/redditclone/redditapp/migrations/0001_initial.py new file mode 100644 index 0000000..1e9b467 --- /dev/null +++ b/redditclone/redditapp/migrations/0001_initial.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.1 on 2017-06-20 11:12 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Category', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, unique=True)), + ], + ), + migrations.CreateModel( + name='Post', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=500)), + ('url', models.URLField()), + ('views', models.IntegerField(default=0)), + ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='redditapp.Category')), + ], + ), + ] diff --git a/redditclone/redditapp/migrations/0002_category_slug.py b/redditclone/redditapp/migrations/0002_category_slug.py new file mode 100644 index 0000000..cbf126e --- /dev/null +++ b/redditclone/redditapp/migrations/0002_category_slug.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.1 on 2017-06-20 11:57 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('redditapp', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='category', + name='slug', + field=models.SlugField(blank=True), + ), + ] diff --git a/redditclone/redditapp/migrations/__init__.py b/redditclone/redditapp/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/redditclone/redditapp/models.py b/redditclone/redditapp/models.py new file mode 100644 index 0000000..0e48139 --- /dev/null +++ b/redditclone/redditapp/models.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals +from django.template.defaultfilters import slugify +from django.db import models + + +# Create your models here. + +class Category(models.Model): + name = models.CharField(max_length=255, unique=True) + slug = models.SlugField(blank=True) + + def save(self, *args, **kwargs): + self.slug = slugify(self.name) + super(Category, self).save(*args, **kwargs) + + def __str__(self): + return self.name + + +class Post(models.Model): + category = models.ForeignKey(Category) + title = models.CharField(max_length=500) + url = models.URLField() + views = models.IntegerField(default=0) + + def __str__(self): + return self.title diff --git a/redditclone/redditapp/tests.py b/redditclone/redditapp/tests.py new file mode 100644 index 0000000..5982e6b --- /dev/null +++ b/redditclone/redditapp/tests.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.test import TestCase + +# Create your tests here. diff --git a/redditclone/redditapp/urls.py b/redditclone/redditapp/urls.py new file mode 100644 index 0000000..8d570ff --- /dev/null +++ b/redditclone/redditapp/urls.py @@ -0,0 +1,8 @@ +from django.conf.urls import url +from . import views + +urlpatterns = [ + url(r'^$', views.index, name='index'), + url(r'^category/(?P[\w\-]+)/$', + views.show_category, name='show_category'), +] diff --git a/redditclone/redditapp/views.py b/redditclone/redditapp/views.py new file mode 100644 index 0000000..54896a2 --- /dev/null +++ b/redditclone/redditapp/views.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals +from .models import * +from django.shortcuts import render + + +# Create your views here. + +def index(request): + category_list = Category.objects.all() + context_dict = {'title': "Reddit-JNTU", 'categories': category_list} + return render(request, 'reddit/index.html', context_dict) + + +def show_category(request, category_name_slug): + context_dict = {} + + try: + category_list = Category.objects.all() + category = Category.objects.get(slug=category_name_slug) + posts = Post.objects.filter(category=category) + context_dict['posts'] = posts + context_dict['category'] = category + context_dict['categories'] = category_list + except Category.DoesNotExist: + context_dict['category'] = None + context_dict['posts'] = None + + return render(request, 'reddit/category.html', context_dict) diff --git a/redditclone/static/css/style.css b/redditclone/static/css/style.css new file mode 100644 index 0000000..e69de29 diff --git a/redditclone/static/images/askreddit.png b/redditclone/static/images/askreddit.png new file mode 100644 index 0000000000000000000000000000000000000000..3e2e6fec5f195d6b8589eab475df36e1e504aa94 GIT binary patch literal 33594 zcmYiN1yoeu+dd8t-QCgx(jh6Gf&$Vd4H61ScMeDiNJuw|fOJVo4Iv;%N_Tg6^WWp= z`~2Q_Ek;}{IA@=|@3`VVAJtS8a4;WXLLd;FmoMZrAP^)v2m}EO9Toh9K6v>D_=e&5 z;WxjvL`1TDLNV&MWW7u z9f3KCwo3ms`a^DbMDNX#Pp<8F)5UuKea(c#M#)KL^&lDy9Xsg-pSl1PyHJLPVDUqD zXV=mymsB7oqay?#z1o7_<&FUXa_KK7#{L+F)&fEB{ELMSfxSwH@lb_5;BCvK8X`c0 z5n!%y&y>)i#1JX(XqkM7lsp17Gv$dUBnKH{+V{qM1)|0YF=Y-|{|kX;UZ(mWKnxP- zNf2`4Aaq2Q;c}3-qL7k7orvcUJst?Ll~SiLWRerY^HSI91*D=50vo``s)C?nLwMA~ zLs%imJ`mF$1_n<^a4LjY{#aM+h`kJdgAMFdYL!?6qww=U19VO&G+kXT8kT{VWbDL( zW{75KQe5p`sT90{{CJBee;|;YI1=!*CwHC$xMc$ag3-0OCY;-?s1J|L%~$T%28$h~ zAdn?j|KWQM?&?QSQB>&r`>#y<$Zw6Ya@;N=t*Y>(Y9KjV)4C^)@V$BdCAMK|YHf9O zQn6FUz^qr-@7}uI1g3jucjYg3dvUhdvdkFBYZRz}e7V^E=Tte5YVb2gu=(tIjKXal z*269J-^ZOV%^URCh*#7JoucK^qE2}89)Fbi%=(LIVIzUy6UX`8 z=nc}j5;MM@D{T1!0y%DUXd7igM}ofnur%oLa3Fc7ki!IlTD|=21c4aKF>-13R!erH zLm+ZFfov7hl&5Xv957U>Hk8>mtXosTU>U~Fb{TvbObaNLvngvykPJ&`e+4z0Dfg%p zH9t)KZD_nBE?2vDJ+8PT-nAKeRvSxGAO^B@4?2+<{d72jd4wKAG&)&o$R&N-3uMAb zM!MhO#OjZg;sjni)riod(|$pHEbfdb9A+s0GfuPz!W(oO+NAI_A+Snad=$Gzw&A@V868y3;RQwiiIz~dan+LW@j>gw%$HUdtAyfH`10()T zU*+Qx?BcFR6*?tIjUUh63|4v|69ztqVF)67$k3V5NWaii)>D~$@tux}k)L21LkI&Y zSiPP3ar}3sA5VS~Ty>J0^F9sJd%?jlP8dVPjqejK+bP6I_)(UZxgi$uW#u=m5yBDq z5qk}WEsnx;{uhrJ;(t$D*jAwlCvecQ_k^rwu6C^Qtx~Si9~)q1noBu-yVP7}(de~N zq*%jW<6lFyOyQN*&P~&p`~F3XKp;k6ru0j#M!9;}cOrhbG~xaaq%W27O1~!lee{;> z?ZvzDP1m0UbBQ!6$wRs$eOn5f$(u;09@sdcBp5{zg)C zYw-v@-AUO<#Y=V2)?=$>^CgMv#Y|L8e3D4X#;sLYlwUMogr$9=-KP~(Xsqd1Ca=w> zxl)KRnpCV^l&Q9(NvUaFDEd9D$ojj3mgG18*LNRLUw0^XsLFm*$7Y3icGdP7m| z$w6<6Qyl6RDA4(&vVY3govktDj=C{Yyr}Stuq>YoyL;wHUDl{WN;c0d(JXl>IIdw>EO$))lRRG3 zyDq~O#+CP7@4IrJpgy60qV#I})qa}BtA>2md{Jdl@q;I58 zq%YK&>U-*Q)PAq6w|rT(s-ORQzqZLfL|^!Io}RY8QMG(&W+~HnV`*anK|zB`yh?G_ zxOGRxQSI;A!a9nIwMo>OvfB5xerDF@WY%@R$~yMro8$d{`hB_+N5cu5!Y!uOr}lUG z;Y=)|BQl>hkg+f6_v5%~kG1n%re^wI1#2?v2A2;f;gKJeg8I0U zCAiWlyXJbDR~22)oQ#&dN6s?StJB-}zR#5J3+}($51Y;Y!=KHX^_tIRsG~=AQGIP# z5-U5A$9AE_UsYB$(7I-Wf%^@2oNnnvMO~gp(S_LonZ&t-bM}hFikQ$m@BC|%KSHp& zp1MBO4u>q0kOkQQh6jrW?}uSX0h9^B8tG%8bf5v^&84?5eQUI&$c*KA)zqGJR8E65 ziF8a*Y0z3*DgE1?-Plt4i;a|lxPf=LA!`1c<3ng>>t>N1{@BbRVIjJqlF^RgdXI*m zCJT5B&&s+i$X&}N$<3!*KUEbj=TsD6lPKb{5t|nJ$^TQbi_7ZupE12my_a@MRKi?r zWrFs0Eep4MCt=H(%UCNuWGUP|Mvh)z2HHk$EI1rKDQn0^qjLO$?UncE-MA(JFUDVdc^qpE!OVrRP0BdRbLk>k zq-pMS?|H>VnxB6792e^(Q$+tNzSer%dfm#suf#H>>i(B~WF0q6BHC};>ev#L*PNKO zGWnZY`YaP{XjRshx>l|IAA5z9inG}J_x@D(&cq639ArQ25w;U9eXh+5Rnq08)?05b zu@SBkbMl(OTp>YW57j{}5vz}=WqUuSTD+&5T;|{W#QT+PpmAGoP+JXx?GBbU=30o~ z&g{gVk*Xf|>xCM#>(ER}36hTyWyCXN$s_@jEVG_#lwl6Nt*NsKKMIRG8!QH`My$5h z=Q*8(+ONi}#w>4M-c(;mmVGSRx=gxx zZ&a%C-f6EJX$0vGjRCiIqG5E5dPH1HBW9d^M*+8+w&gzaz=IP<5J&q{M%OZfqny|3 z)&<7G1r3hKw0o3K$r9RMT6bz|YHk~uwBt1Sbj`FI19O9)s(&Pg$G7LbZxv=}@iO?u zUVAB?X#IXSy%qE~-uiejDl;+D&!6jR)^z4;tdO~c`zGb z1M|o^8J<w3jMoKxkeZ$8&1Mnu@n-?0dAP{dR2n6~80=aqs-?tzT zHy#LN+Y|y3Nr6Df96p=;0(jKZ@}-=#mgn?trk5x2uko-2m39!L=YEgo*T2s>G`V(K)ahMzKiji2V%FBIQBi-TfU$>>HYu zN2^Ft@au&`2#_5<+%Ybq=3uFje8=ugzllb;3FKc4fRQN{8kyI$s{J9RNQBx*apvS- z9k59WYx-soQ9r*ek?ba>Vh$vNNt?zr?D5Q4<2k}+1LV`>@R6nQF(*@0S|FHQWYkBn z4j9t9)D*2hLKgz25K_$`bU|q>x`=ENW;v{y_N*?Hj75 zw3q#2EhmU5iO>f<+e{@Sp!>IDh;reM!|I4BNI&EQu5{L6+$4I~-`Mg-3>`Cn1>yzn z;)V7|4heQ%)YI|_-A*Ase$R*N8+G840DY4}(QEC*Q{IUL_?nW2lA zR@|3(?hWQ=m#-F?@ks7i6R(Lb3EvWa)AYqS)mF?5M?@e*GsJa86v<82)s`1cP(TVB zs-|CnoD3^%gNK5z3mu;jdnsEC)L4@d=Z3zko8XM{q6?D4LJ2%&UniVMY|)W}mL8ORdvyT7}+T1z%b5%u7rprFuE z71dxplR-w0eZ0w}gNHPMKUYnyBOGF!bcX9~)j4jL)b#Lwn@5E(LgpzMTrm49n~$*& z=IvnSh|{r&@#kFo-QWCIUiViUTjQna-GKq_?t+>HDr>3MS!NIScP&MKP#>}6`MXp? z3X#OnXFsW6lWXYL*gTIUnLUllyj11qJ0gl!_4wpr^xa> zeraxQ&XIYz`a6EsZNlhJDqpwmFkXU&pAm~xL{2VLJk;2pgg8yeLB-jbx7466Uonv_ zfn7Jcvr~?ckPyDI=aJWBa_pj_>3{wxt7JTD`yJ1Gb$78aRc(#em(0y9AdskCtb?+n zQ%GM-dFIi^Fhv~i&D7Ou-YuC(IUZQ=t z3|nAUS9E%~yEqv)aPVSJLgUv}EOm;56b2gGpLyg&X(sBF=*7{9d&g#ED1#-EudO9>)02|`K+<6Cedx=oJIZ; zbvx{OdS{}1aJt6!V`L=O_pG@_56wDzBb984y}}-@Jgt5ntk`F#QQeY(`hi+n4bGPP z^()bmataO3YmdK{+t1W~8XeV=|Mciri{A}mDHoX@L@aWkj0^E!bpjbkk55|(JCJ&f z_neeHPei|@SZwHCOx?Lb_$}_EY`=4gX74lSZ)FO!ehIq9UcU_Dk`xOQ%?Rl%p#(6b zN$gUCGDG3(vz?2uO%{_D-_G-yjxfB3r|ie)GY&4do>Fn{bqKk`Wzthz9u|!sNOf1qP#b(9Yb~e^Cd^CP=iXs_u1l9j7y10YgX4MN*{J!LskJUY{YM& z!czNKo!35&YrTo7JZ6Z$fBy!*&a{2)sIUKMA>ct=RqO~k43Dw&8j>p0LpEQ9!bst0TtvtJhmbt(C7>b2v z^rUod(Bz@tD0g2iet%ZZ5=-SW`YCs67p8r_H`9H4bwUA_sSr(7srj5sL~*4W|Su&ZExlvEqi6Xi?1IOURz`LTf;PPPuV^Fb2`C76I05Ocq8VTRH0g zMJDKc$+^iFp5`hQ<l~H)R zy*?<-q?oV>63=?%+sn}+?P96(9hdWgY z3DHrqZwc2%tY?K9HYplKOpbpvr%FmVx(5$(2maFY%Dyrsbj*}QJKLK{9xK-UTjyZ1 zH6;ZvWjm#HWEiAsXI?dJ@X+w-9LzV*9K~Ou@BQRPzA!*( z-tFZ+dg{8VHXrcdXERa8*?j%j7$jTE?XePA@%q6RA;gtGoA&>j8fe>yZ9GwZPM(}eset#jpp!T$N(xDjhXlr=zOebk4)kB7LKZ z8cimX@vWyY|9k4BK2FViY=@>JR3@b)i$5t(lWIh!pZb-Xk*_3ZOdW5-_da-$!OSza zQXS_F>(F?|{s$?`JgqFOvJ-F9vVuDX`KZMZGGoV8LuyfXi=*XVS?(LDg2HcCXnaXN zK1FLNhdeJGooe!OA?47MO69ebnW1}~T5)P{X(48(T3Lv^Ej6f+V@u0Ilr{FsWn;i{ zC`WpCs=9ldehWsIH_Ci`{(qSgcW z`@aRM;42&Y*nDrY@`KNQLwA8Z#t7#)B+I?#a`GolsN08+9>VMr5Q%$c>=!`-?BEu? z39KC>c}j)qxuIjSX%Gf*z^vu?|4X9Fu)0lMX6S*TdowqLreMkcYK_dkVU1KJQ^Zoq z*L7#SUw3`CV-tHyg$NBBK}4U`uvA~5v(nO+EO{T#Wl^S80( z5NH@q$9HZAqW?XK-io&i{@O=juIBv*q$bQ<0o(DRB5ij2#y!E7>uvUdj4Ruts3>fS zt5qTq_uZaXLUVH7-apGv?9rZ}E%~!SI)=Y^`0<)|h7ZX%rt!*i$6yN3J`lCsh^-d* z?Kf_7yJi=!bDA`^>y^s=AcrQ!Ymp@E z@}PHo*C~BuJ&<8Gm?dsERTYwvK~=16fk2(0!H(3le|s;6Oui$FjmYDB>1YhLeu%=m zAG4W}Eu*Otm&=y;_%H4w{_uy}4N08{8pM4yMb6l|i2v0OF}&c&G$dx#mt!p&if%4f z;!!9xIKx}um;5$i0w%WwN`a|TSSH=`0In!!ONhIo4)l(yEUAd5-}EtME=oqq_)mjg z6`zpM+2WVMosOihgGj^;SDyPqeLmxPuVA<=k|`7Ov|}7C1*Svu zTQEtujWevXyq^3RH@bd*`3voB!3EE=ykvIW0osDoVkqu^6a`W4FdT%J7mUol6#?X~ z#y0LEMUz|?CRBM*CvP-T`e(>=KIEw3)CL5Nq4RI1F9L@`2aN@l4?;{F1`s{-)VHdR+&>cEAB|qws1?-h7$W;2d&QKwJ9f9y zUU6C~;s*hDaT@kx){J*M$^2u1@eDGsux`raPuHqf7BLxp;#Wj-%Wr_o4 zjEG|4152KBkZ%J{U~LPgHo)bptLUjw*As~K?_)1`lLdl~PI6w;KI}YP?NrQ7YwH?4 zAO8Bhw28Ly693{~*SP%1(H0RZ&mTp-SzdEhslz(PAF*E}BGTw7;8Glc`?QH{66qTP zR-y(4{m(2Hq%pJ2p+@7@q=4h!%%@v_nNLG!ei~bgUnuzgXqfiCYJSI)Q~NL>AnALM z&79>Klx*z%Tep${)~{H2u=a`pzI_99xJhx6bPns!eWj4OT8~3DY=k6u3&H{kr9@4Z zb7ev>m(uSJnGd=;4z8FbAVuRr_6)Zd7*px_F*ry7>*yfApvY-9BbN*|C4B|oBuwNg zWcK5unp>ON6qZe`Zkf$F1SC|oLXEsbqcu)$J@&sVDn4f>HVh4>>xC7m48p>x09zQa zPCsH{nlpr70f4_2lox3lHi_T@qewP-6o;XS>Gueh+n!{!7f}@^0av{QV{h}6lGhtH zvZ^(HRI>7-{I8@{JjGto$oZK3*riiZnwfMDYCLK1<&l6*un9DQ6|dYky|v?Vff?nA z1O#_4roO9s@`*O|=g1iR&)Xs;FTqy1Io*;4^y0F-)`rt_i)b&Q z#g>whIPB-Enr9dZn#{M7`Fb*X{pyYG@Ad2K`y)u$n@HG^`T4OKbXXJFjsAs<9F*9i ziL+G%nS+1`CG#^ZuLZM#>vX@tmqw-PZN9iPvDN4Jcs~sMp}yS+#DZ^qSl~!xOnV4R z(0}nnMR*R19_9I#;$Y-Kva{A+zI-|SKIA|mY>)Mx`i)Sa89s72icPw?=KsZJ5~bgd zY_NEoyi#msrKG6k${mIHrC(Y1v=hhrx`zJoPhOP}v&YD_6T+*cLM)SBTx1==!b{V@ z6c)w=G+z;3Mn*=tg-q@T-26}H0qZMNx~}fO-Y2kGzSK=XB+P4suPz8Z7V#sHHV__abK4bV^e4 z%s0OU|BLi+$Vbno>g0Q}YQJXLvM&yJ*B1rvzdj_j`Akk&g_?07t01KUDmo0L=KV4yej#?PGl`F(yK1{nhqqy!NzO3QbVWk9CXP5kXrXN4W{SEZwOmGM3 zeVMx|Qdbwe1txJBZI|jrHF5uoF63~7kWjOTNQ<1rtAkJ}jO5w?ZI>P2VLvLKUp*qG z6tP7K)9jqLWWED*YirLJ8UK!-wGq%-Zo^_L%YKf{&KjC5uNaE<*?sx1Q8a7~XIUa{7^_J&CKy$8sb+RLM6YhrO!^w>{#_5NA*?yjBE zuUM-82`7wEUvs%cFcxd1Y&k9wG*Nw>dL~(N}mmtDzWZ=gajjR^XDM~bNeD#I(U%x@eSC9)s zFtm(_HufB>B)|vKM!s>gH^0qjIH0rY#X6itT7}Mmi|C|^thm%7r(twcbq=%!b@rBb z*JmXLb+05BNw;lcN{A!u%IzG_A*Ohl7{tGoIN~GK%7aYu@(8;diFR zvL9x9)+8ezA6MbgO8oiEq~vSk;aZkq2R~Qoa2f=2a(RKAM*&s{Wk-}T##R{Y5 z!G6PaD14Zy!PeIWbLHV7Mss%4D%DSf3um_F%}F3i6!PMol$Ejj(*$x~S6hjl4#`4x z0hs?4Nyg`~ZwSY##p=Og!`LY(c0AZC!lwBeY!mVUKmY712<5~}T`NlZckx6W^tYVm zX|UmI*APrPVA7O-Fe0EMV3qPms*S9H?_e7}HU4&tcc>X7q(hlNO%Ph7f^YzN&{3qW zavbO$#yCTCuKI4$Dk1K3{!O>s7;G8lo`i;@FyM_?q#UN_yHmbLzsRUWTv>+L>JSH6 z@+2xIv%MjMi2X><3J^&Va}zZB?sf+uYtSv2+kEf%cl8f|_Qt2AY~F|79s8wtCZ8Rj zFgQ4y0&dI5#1xmc&*#@~0K?BqxP<--Z=}v(HP23p(5Lv5s8P6Tz7WP7Yd(KI?3I_A z7ONif2GCb9P4{040782LF>tEhi2-n=RlxWbBiPGW4wsQ~Uc@~%47fW}PUQ``ySa$} z{JFgYPf~enByUg0i-MfQ4HqS0@rs4H zR*hYVE6PU{9L~@<#llL`>+^;HV+`LY_a7H8I{ySw2_x6Nc8$5dVXS|zCU-W-pb#Ak zpm~5H4|Vw5m{t533+Tq`c2u3lfyTu7)fZJ+Ubr@KwvE55~3G@Tg~zB1U0YeQuydX z%}!;RbJ%y?WnH&NKdR@-59cY7ZIMVnW@nGw`dh$f^@n_9#O~9U3es~~-zg=ian@}V zmwu=aGI@;g$XZe*1iR9gm1%onyn|mrCXDgxu>D{aq;mTJ_pU+K=B={eLoZA zT{bzX$EIB*XK&AihDXE5J*Y#xksXM8b%kKaDD~)TvYEiK_ELthOZ`z7B|~moZCO|X z_Y#!#QDkzc;Dl6qF+Hge|;&2|URIyO}coY+kE&5Qxx5S!=S*-GWK_%K6 zD<%{7KFt9&n#`9%!t0oErq027zR3%S#bLAox5IIEbD%P={ASMn_9|U)1gjmsBwD{y zfdqDr%cq;eAHbq?%wWrnFB2Q^!Ky|&QlS7CujAn}|I7p1f3h^R^So>!**i=QZs z-eDZ-&-^&l)1y1%RhCL;Kn-IL03@mA=lQg4V&e75OqzggJ}I|x3Gzj3dV2A^@5w7| zpmWab>E|m`2-wd)b6fvI(YMjx)1wAt7`3CLBb~t$J&C(JbNw6_`OA`nkIY%IU3gF7 z%(b-kOg|_3?}5UUMf@v4_&+Gmp}wm--OV6>xA*E6biBO0YEcPNQ&ZW5g{R69Y^JI# z$AHeRZEs%|)o$1u$Dl9@61&9w&6_*YM9{Ws{N{lOTpUd;sxPdIJJb^f5hlxHAMC9O z02OQGkluWMwn67c3s>Yg?e;~_lXSbP-%kwi1r?G_DME({sgHVBj^jbk;_*4R1FEw1 z4i!*M^TBmFOzb&L4DIYVkkD`~z%i(&7K%N3-RREw0S(Uz@Ta603jVkFM9eCTf`a4Y z!qwH)UW7BzFS%6p4+N_zp_U^S>M;rGQC_C93+sCpO3 ze2PaV!+~h-5o`a7v{wdh$IWMJ=^wMuXy)H{AAB6^*C(BYB2BSufq8LukwPTSW4!Qta2ywC;HEiaA~b9ufV z$ETz$Zn?j(h6yJqVX}r)&DQk6BQ@vzOJ&P>XpEonKW| zSC5V9n(Xa}^)-WC=x)ehN-FbNgaz)~LB&NA9!``5efaGi0VyW5@(;}!gaF#;sF^Tk=cIg< z$^Rr2#BPtJT)A~+V`Y6xP=@&_fVZ(^VNDmN859?a*KIJOJOp8p! z(#w9=D*RmcSe#QUKJpwT)$*(_H$-sb?PwK6$i!)txT{9fpno8KCUJL}ncr+cbn z9G=&#i43a$s)<}E6;%)}Cqo>Ul5*Ky zlEOV+W~6knKlffZpNvyKAxpg3CQ2vNOsiIH?CIib)4VYk)l}YJ<9sV6kk_WoyXVBs zhJ7digM`mGv}Ot|`2NlAaEAaag4;{<1m1$;7^KoXr$K6B73r4m>spF>?0>VJD5DZy z_G5JicpV_Zc1?iC|B_df#aH(V|QUeM~G83jyJv5=1)+f2eY6xttN7t&@u-`&z`LiH($o^>?iqlH{xH;&SKJ9)fa{P5{dL zLEZCO`6R?Kw$)K!+S;$A4I^G;Jakyp2*8~OzA-=>rk&vgr#lldz&d;8@aNK;=N8Aa zqVmGI|5_?WRCc5#UGV+#oX3JCFj(A+FL9{jcE!EU{)s=AJP8_sy5{6QhZQvUQ`XsQ zg#}s1-nVaJ#Mk)@j=rnsUS705?14c$QS661W{&$&pC37w%R~8SvnP)e%4xis-yCtI zTs^ik!kE8)S=#0JSFQe>)~t0EDBL2ho3P`xzUCx@3R47K6Tcdd#2jMa(4QrRts85; zKyDv{xk%ZHqLHy_g_9Y329_B$0yBdQ4x4vC|+%HwyCQ&$4idXoC|{@2MxYMLaDq6G{ok`&5;bazT%= zu(0st`1|9XrvKfUE~sTqxW0ba+vRBM!j8XjhE3LQkPoqWomXF!HSUW{1JX@JU$v!s zcVNzx<0Z5)LYBul`GnI5^+i_!5pv&k8?{Leli(U%AAhm z3`7c?gs!eywB`fZeg1rrFKBEFK|Q(xj4CS_osHht+i5lc&4 zw?<~cdH|n~2a^is=3m)OWNyy)7yx$%%q(9udjRm8jPK_LrzPEw9YTPH3s1{c%vj8I zD96GX$NQODOF#hwu9h6eib&XX%TDzU#4lz$Kwwb&vwv!)Y{}d=^n33BwU+eIRh_IM zKotnH3;X)HtFyhhFUPpJVopOxhZKM{ySblZZ&Cy9PqM`xZchTPZrVez{FsJ)HCf$S z%NfH3-$Ao*8jx7FhAlqUec1)kD~*3 z5;RQEUP7S*rGMv$AHP4uw;V9(O=Rx|{Xiv|%ZLR`jr2^@Gcc^+wZ(w|0OCuA#B;7g zB$3u`p-s6D5(NJRz!&DOwx1GbwJw*3OJs~{>0(}06TR|Ly8qhQ}=AK!Rl4U}vhDnOem4u>Jv<10V;@x_?R5sA@k|u`gQv*!V$Xz;G^nU8 zyK-$dXB+t7Ea=_4ccaC+gDVr=Ku@c*>?7@aiT$CA60c*U9IgDm_#l|MJ>&CYkAHnN z>1qa!%H7jS9!n&xV#->B+pU7^w{t&hy6<%gRH$q1rh?4KISlJ#K`8=4`ATUobAkqU z>YapE-7qFO^qj!S4rlDhVnRqN#5OkF(KHc%_O+CHFtu#CThZM=P`&fe9c-sBj(s&ZVC*>AbAXVWd)Jqrr}_8%W7nl8>Y}RG;Jx2Kh z@%Xx7l?4VcWN0o-;HXl+rdRQ6V=H@Je%8cBhm&XslpV~sO(1+iDn0DuZvEzSv0ocw z(%{Tw;&(=(DtYHhCoJk)iExRTf^-``a73^fMs!8;kAL73ZCF?;7TR_2(8w`cpKO{e zzx0I;nBlu0AymA1|8^k0ma7Sok@zCDmTR|vs>RRek)T}<06E8V4=XWAzNVx|2R|1Z z`cac0eSz;b?Y8HJ2exa!T7glMaQD6GtG$#gaAbhzd#)ww2Dz0}z%UnWO%WCsgA2Ek0Ua(`by78R9qv(IL$*k#-Flp%RLP zVr1g24V$k6Kf;V)?>E=Xc8>TYe*^OV;?=7fLw_I*VN*Se1==jKtZ#Rtya-wztwIg#0GA2!!sVg+t*zK+Y1;*B-U3yP7vPuZVqBqEA`@c0NI zKD@eHgDIxu9y8onOUx*(6B?b=3)lZ9Xyl-Jt2C}ZvIcbUHfQR}eK_LvB=|R2)t~rY zq^MyoV}{5F2cJm1>IG~EP?|n66W^slGi#`5qDC>pYN`Z|9ZD?%EkqXqDUj>3hl$sA zoP);qPt^_1TGBZkf| z#lpX^1xR1vA5pjMRhqtp(no1031!4BKK$l6%4>_+1&+fNgZ`7dZ_uFZi5f1C52tis zPCq)%sbQ`rNH<`(&vE@vHW4lm@|FSJqXUp`zS&2VNuo-5_$f*~Wj%r?@+GZEN!kDQ z+&M@XDM*8jvVM>!ss`rSw>!zdZY> zVe?h^^7pA$zEPw566U)!$>bXJ`&}ttr~2Ep!+Gm;nl?#=#;me;;~-ULb)!@5T-T3q z)gMa?RN`fJbg}~_7XCcIRRGW9o@;G#A9#-8gCvgh_&;${4vL&<3GKf8Iq%FLjM4$c zZT=w1gJ(@B1FaR3GQ{top?o@YWHrHW`$Z-MUhV20vnm!ABxt0npO+XsI+VOz{E#8y z*8B0~y{y8xMQA&TM7 zBHm(MQlRlB{&NNC5E=1%pJzZ2UbJ9{%x&9caz3C2+%)>^KNZBK$t;pR76~Ch>Ubz- zFnyi`VI>P0^rFp?lxRPkrW+)FBs(mu&_$ox`%k)ejDs9qTQ(R9lf~T7cvBOyKhxBe zVI@DWz1ctdoIiB&a$~#k9SgtBLGSwM@Ps082^b@?j%=aUj_&WKC|viW!vc*r(G42o z@PGb0@p@&b=k2Z?IVvy=+{?i`MIT1!l58}SL25PAEC2gsj=&S;`-+-hH?%xZdNWTaekiVn@oOTyGNG3d)5X1Nu;E!Z zAm?v;uzX(WdU6pFgkZJwP&2tg!!oU3U_uEoN zVZ#_W5B8Wbg`13@{w)-}jFc`+d{0f$>GUnK+$KNvrhwd_Ie#s=V7-bGyk>0A-k}_>CJGen@;41-6}v{v zMqpm8`R859&~=6!8iqCRi}_B@`O|G^R?|lrl<I^ioO{T(i~5gPWA zC^9DfGQv-4Pm3WWiCRq7u4>Zp|Idt0Y;&IL>WZZM?ARJV`vL}|+Xh`tOtIBCp&}zt z2dHWwljlo1Hux?DEm|Qs_spnZndHqWgghE@aZI>~mC-l-vH3`#ZZ)@@I%3h_2JKMH zRLH#D0mfk}Sb^H}S@+*O9(o*y6s|%hgy5?>lqwo#5P`6dlGTxgbZ4dM=^KTc%YG&L zFO<=@VN6;Ui%gO*z~S=*f@2qR%b!nUzo2rIJPgWSmiCx_!i!XVhyK454c^43 zQ)ET)q`Jz>&sVfXmu3bdz;Nu#UPT{dUx0r|=e^!xL$$*Pb6!+;#f=%>q=>cKqW*VK z!9n%-*$%8jj0@CC$zK!NV-HJZ@Zs~;J-x@<(-n+Co!xY&*z#XPj+p~Z0%M?qfz2b7 z|E&}4%K*}{Q`$;T977eh61s>|(&Z?b62odo+lS35EE7K3Zs--v6pYO>643s4FCRLh zk)!OoOjcG_e!EFE{paY9z<=l69n=+{2jTT(!djt(#=TT1{!*ez0kW$bg8vLydPSZe zw({tzZ^>_NDUb)}j=dP&RYbO_(FpEXO z9}Ycs|66l7WY~B4{YC<-<~Qx&oW)#+Oq7;z=*%Q;3Gz9@%+Nh`F8Fi=hQOTOz5iE; zW)+_$nUbKML)K1aOn@>2H{(E;&T~WV*830D%t!puQk=8Ol?=PqS%%uYeTd=Pd>x%D zRraImp@)zIeid}_FYYo5tZw5xQSV@HuJ%+_RX5-|W5C1xh)B>IWdL+_Gk4kn2$2ZTq6Bn?AMOV|}Nc3~GoN|_AKzKiQ- zuar};t4O#_#(_!Lae1_|=En4_9Y_^^;=vB=uOk_VmAi6Vo6fskWcsXNT0a8RzosbT z+YK*J{TV;j$R|1^8Tt;HE_iZS3Pu~f&)*UrzJP2r{G|$L!7%(3-Rpg%SC6jNO&n#C z8-G!oz_nZP7;mD!k0&a9SQzs-PwpcjTp|bh{R?)C+EhMkT;LEM>#Xvt0b*7m_2`9_ z6eh1`zjU0W1*E3`A(S>1f#C56@69G<9W?$0gt`8Of*>jNMcGr15|ZfDWwSimjc|p* zGBLZ8M==n*)Cr2GV9e|O&+)hyd`KV2AgeV@lTUz`)lC~Pt6O=5qT`E>l3MUS9B+t^ z4(pe1&>~sPHN6B6+Qb}Itl#t{y#z!tRj}q7eF+HxPIj$S%WOVDF$;$t} z1=Pz7Y}|-q5GP!r0|G}g$rZJyGzSwgj}5{gvZF7bCJfZF^k-ts(P#3Jh!(kBf-$UC zmAfu)v+dKLy0H9W9{`LB zE}H6AGAC*}$Y)A{W-Ebp zN3n`B;rIyV$InDC3|pwgy%R+D>p#pIUgQfub6!OUxH8}SY+I{X=M%kbXaxY*-?td2 zrl!R1PXEF^Krn0i7f7=H*IUdJ#tvXQ9VmI_<>t0fk5v*nVkvJCH3iN^#ix06m*2=m z9O7HG*i0Yyn?x8qmH0} zb}PE3&+|Srrp5izQ|&%#bc-UGRWI zaN>GtoI_Hv&>u>|?7AR^QgWfQ2n6H}pvJjnBIuUtpTWalcs$c%{5OJBpxGc*8L+t$I2K3L%yXu3z8$`$Ef=oQgTOOd{ z_UrmWK-G=~_WckTc~;fddM-MM1)5rd#_P>sp455NWcad7e2+qku{U?Tm)t6LdS;+j@bu~arp&|jL~F`3r?2Ja1yF-T4HTx@pKydkEZ4i#rrrcJQ@9zT!32b@e4zBx zgh}HX*%B-woT81a!LVJk@`+7}M2>ZE23dTTfrt@Zx8n7!-@j27hh z`z;WhJG;1C4F=rH0wEa8X{;pb8pGc{vab*ZQ{T(L9mzBQ6*23*QwnPDuaQdb=F`vY z)22Yg6ubM82a~{K$rJ4Jc@4+DU(?vKy6S=QRcrXt(2(lWBQIrT-~c+gvYO%^qI!q^ zJiIDU805!8NkYs7a6UN@Ize!Fw9*YUETxtfvL#dCQ)rdE^-Hol+a43U-pti1H_n7> zc)(k6yuCb%jfe)@#$(=zZZlr;5@^?8)E%=sn!4Jsd+3WSn2y11-0O~^9hAirx5(Sn z${Tg{V*aQ9j>a#(i%O4;UDSP^bt|V_iNE>Go8PfC#92G=x7_gOl4o^Bu^QXKX5>bJ zO!;jmOrWFNmNkTe+YW)(1uBePz{K_?Xg8Z+_rMQoeGP$|4HsqLpHMTkTzMQY59!)A zo+FLaN}F^N(gm~?y;lD_lo^1Xgx$6iN=4qhc|#%TF9w3xvHk`FOe0%^C(?-s2(jQM z0ecr5)P5kvh3|8O8{pEn2YBS)vNuvHkcmlB&!L!OoFR#lm`Di5{GxLKs|+cUrC4HL zZ|_&tY>6gdV~YW9W7fP5JlJYrz+Ip3^#L!{-d3vFWkUt%WWSrdPVO%o&Bzm2)PsPp zZc@R-$mqB``4q5qIk3|oKYm;S9yFO9*t-qzUO@ER8=%ak2)jI)F!C_cd+!GfaPZoX zwE*UXMox?do56fH9L1=aBEN9=M_dIuo7JL}?E)hn)w9L-zaQoy<&{kLgE_8pH&Gb` z2!vt;Rp6Zsdzi;&;Sb;6eSIrm!f4EaG1he0j%D^~Co47<25t&W8xfER&%oG%YdbEL zr2p&=VJQeD)Vq05)A~W{1rDgU-pzA)c~qf!&)hL7WZS@f#X@B-vVTV$NKc*Vco`At z@dwzHKs{CJ>tTMC);Zry<0fwdotPZ$dg?Yr(DK+A+F5_K3`Ww2e!uhe?}FRta8r!o z!@U#__J_uUmUK>oS{~0sQ((a}{QLkUx0tJw4L;lPl8VR}xaSJ2YdsQLQD`e`UUaXI z9z5js3@4WNix<>M%)2ek+rnptLVMXlBM^B9z zAo#piybI3d?eq^;lYl$7$?`@pe%ExpT?|*Xx@ml(;A0#r1>qmR0F$rj;r<3porQuI zlY-B@LA`{J3B6lr5eId@&bh~7Q+ea&A4L5^cT5p`a2!`-J26tI$t(c^0}Ju+|Lf_j z!=mciw>>bx(4EpHpfpN%3yOpi(hVvd(%p?9-H2e(64KIALwDDxARrP$4Br}`_xE|= zKXAaz?7j9{cUyU*xE8)x`C&DdVF0gxEMW8!c&_LIe&; zXOShfXx)qfW_HT!+}t5_xg3P1K#I{Y#z4PbreySq^A7Cvl4_K*MKN?;*8&?A{KYIvOWA<*oU(19 z*POqR1#?AyckWOf^q?F;6&py}_EtLzL3hvf{Ls>Tx1A}AW-V~6SF^#JWUDyS`E%o2 zeG}=v|L0MPS^v+mQZ*!lV1#gCO$?F<6PV+t3}^gtm2|$ zayX+v?3Jj~LeINLxmWLx13f(-0lg`yp5c{UT#AG|%zS$m=>kb9h{*K=(FUEgk098I|Lj&9gsP?M`u;KeR~&%sVO?O{bZg49%NgQGN0{MrQc?n= zl@#_UOHYOJ_Z`ayNT81e2TKo#l#rmmH4=EXy!!#;)!=K+=8d?!O&f6p(EFey5|>CX zRtxIMKx5MPUauTA2Tmagw+$???l^(k6R7sJ0RaohPShOe;HWApVgh)x44gP1An86C zB1&SC`9AqrZshHQw1JV4FMfvnf+jpCAEZbBr8*|caXgAEeVWf<1XqMhk)t=Pl=skY zQ>2p-2$FHkFg5}i(+Ubkixk3rKwl>toOgF?ef-&3Swl1Uj3>Ywt2l@Nsu{HM4O|~1 zqgTGNQgF@6jKR|XlvyxYrCprth?{j6DnTeMp}NhZ=$P28cms_`s$A|hc|id{(&>qS zhk|XYV0$Q2lLVI?u(F^>7!I~(5!W^O;NE`1qU`@FW~98;Scr&G4rk6-3x3J$BO*jL z2^ljR*qB-ALuNX$t_;&a;3B=y-~?LcrdP4m9OCle*a6UPSFzO5cD{xbM z_Gnaz^7OCxO;mH62S=dMzm3)(048m!%DfQtN4r*)?_(!{g$u$mTCnh+et1%B-Vp?- z-G$H2LU2W%lN4PIh7R&OVhD zm3Nq(Vl|$nf2r zm|i`@Qs0V6(d(RyvP@9wcVmhhvAGB0Vk@vf0X`fB5J>lKA~87F%mK)yjwXA0=p8ou z64Cj>aIRRgOUHG_CtkITht7}!sNJ11cQUrfXY!BNRM#}*l7=AE7==&|Oa{b#kulSs zB?{Lc1ab2{P7yX{dL@PZg%tMj4{I9KzZwp3<4HqIpeE0W8;But7%uB-O|Q~E*vTQB zPRC#G$nR20=Go&*-Wr=BU9o<&M(%ljK`hVcL25L$gr6H;BC_L6-Nqk8C&};}yg~SjiTa4exr~KV&^@=lO(LOs+jvZ%cICRxC)+JVfxmSU+H~V=A#wCgpD1N5!d4v(d?kv8x6L$i5hD)bg!N> z(}et};rqylE!Y=$&04dVgU&-iyZ~aMtu3Dabkf*0B2l@O4R(j*BMPUa9u`#GbnkF| zsc-Bc7tqJK;X#kzW()k1P^h;m@#T9ZWs`grvCu-i+&$STLTtLoR^)+;?OYd+wR~st z_JOc@+5G#fR=PbcAnI@@QAx%Wz!2EDByf4K7Uc19zjW`wu5B~Sp<7p8V2#=nv*82A z)ElBt7$|#UIGdZPJKwQy+jmMP6{ndrYvOu2sBEW)S*+%GvFXr-(GAGaX!p`AWIY;l z#*|pDZSOA7oH0)77hH+UVLR9A+-xHbo4p+fTJi23>FxyYc%(U&q6|F`^VA*|GvjMz zHv|#OSV!kZKUGy=I;M-#8Qx9Xxbn ztUGe)vkl`>&ZB1PYUuB^vcZ)6Zmyb6kn*h4$AiVDm%lr!>fJmgi`Vd3>YKy;WDEiS z`BgF>qOqZUX(96bSDg=T<%SO|jwn=5+F+PtPL71;EIQ&53hwJHtbZjb)`L8h7pRF> z#?YO)iV^PIlhS(q;xrX7-H>iRd482Kgb@;QE$b?P8uM%;TB3N@-i{-a=C6(wa~T<9 z8AQ}fb6r;9T0Q!-$<-1B(Q2iti4Id0WM7_7mjI~$36PqCU`!hj2t~`~x^W z#R-!c5*cH)lqU4S&DBhF5?pLOn{G<}ZnwA;Z6-_k(7U8Vwu4at^Q|D9h8AOr=udNP z$ooz`6U1YR=NQ5`KHrl61dCNI-nqW!WhT50CHd-W8;hILfnvF@WZ(CaEa{jA=!`+r z+?+){j+*bM+YkuTL9`S+56};Bpz#IyBz9m?@~~H^(RQr(dwLZ}_76+E@|gQC=;WPt?hcg<3nnD(1fGjf zo!|EJokq4s6fojN6pm|#VHTJ3VC6&=%Q3-j7iYe=T_bje6_AWarycu}wEf+w9>P|K z9xJI~eO6c;*!+o<K)QEzYCM%Vc?nr2>h{6$F=7~D53}2`XaR;Ya#IZH#DX_B-yxCO zkL%hKAbT|_hr@nbYJA6j1wyd=)Q4=R_6?&|r5%6^*6n``DjL2Tgu#{eH;qtG`wD-4 z|7Ap?7)-_*J`~$cl~coUao11nFU_XwsCyakE6Qp)VfsPyk>Th3;p(tzbVN>Z~m1O$A=PyfV?r0h~TesOB(HEI$<2NTwaCn`UcdeT@#rD=pOT+H0@lA#tB(+x9sn^i0|+4QIOzir5gZ$b z{Qw(lBRDnpp0~Za__)2D6$v+Yb`d7rynRHJ8u}^n7k)qFK3N+fpOE6hZxgdOVcfFS z<67Q%EOjA4ogEAfYLY0vOos%sT(iZpefsFr#6hSTUKf&IsBjvGzfOrK(?pGTK?rG< zIbVKnRE^W)BHJK{p%I@kp_8bN#Mn&;TQ>wWOXHw>GcPW?iUvR06>Q zIv~^5s0q6E)78^Mm&HNpK?Wonxcc0SMWE?kCZ`B%bXr79p@3HV=cH&5Zi>e}Y+b@` z#HaLyIF=3e^Ki4^ERFNbVr2I@E*VP~DRVJ{;PqYHj=~l}>oemuVUKE4Da^h5)cJ3n ztptN>Ly}FoWtVz9_$isk)g>iyyKW+plKLg41j-@G;pYR7L$>tfKw9w*q>DfkRT!!Z z3a7oGh9EHKy*H=e=jS&^-rLjLt5aj8@^j|%rJCWIhcPJTFf=C8e87xi$|E3D{xy<2M|H9}84^i&A8=*9N-@hyb9CRf;$z~;E6 zi!qDOM$i?3)LpDT0)(xtLFA9CW;_2O@=p$A%%Oy}FQzIKfZ(j@_g8|I>_)V0Bms@e@&L;a`CaGq_5G=ib5Hl2MY-OYM`Ba>ECO5e^E|p*AQ&rCSb{H?XE#y9{2r zkjIkT_a@+UwVBY4+|vQ!gEkJoAI31x_KaFGcn5y=^$?F-x~Jz#A~PI?&GnF;N_bz7 z?0UO{F;zr~hW9j=Z42u8X98#E*t0$Bb5s(}j=*B5$Q9iQKh0c}nfLwfr2{|w2(+xW z_URGG=!n45p!$U2{bX}U7L;DLb_)Z8u0FhsOBs5jd)fOz!Ja#{ahRKukc>h(?|h(h zS#xaEo<~yRm(&hq6yFIqz|^-vg5?5}@y@J94<*zgqQJH(w(~V-gZw3%^cMWw_LIaR zQTk1>ea4P8AGwj&8nI`4vMT>?`&XsMW?0`P^*Dkp@I_o&W0Rb{!W|2LQ@-5Erhj)X z$bVrmF*0`X2ae|@X7X2ob;JE5Rk~vxPkWCVC~bm_=j^8gA7)QKF1rv|2Qq43_CRg$ zp#75H%}v(Jg|luX!eU}tUD>{mn*S|b>JJ9flwMdTB)GOHIx7v49c2%<9B3)Zx1>o2xiTiilJu|b`{(^0Ssp7HG@a2A z$G>6+dPa2w08iC4oB1sP5Cfnzy#-{Q8*@TqBHf^}n%>_(OFtH$2*PDmP`o?`DaPlR z6lc3dye@0$+P`1)*KeHrJg2g1(jQuwWv?lB0 z9p+2S*f!wPXOc(Ioh#2hC0+XsjFL2#feUTCxeYU*XC?;ODhzTblhy>~@RYqd4Y z;8`8O#**>{lzFnm>6(;SS{FBo#%5n;)&xnjU@ZvAV+SY?H1*k?k zH*0b{N$Wf!&uMJ_0-Wt!TwMLeUYms7hDGTMtQlTem8yJsL!ZfCyQ4$C< z>`yym0>>lpA!ub!zGi-2>$`gvA&xMYUHUMTVm=~dq`bK&s(64&E(G~JC;mbU{}A^u zKHN(-!CU_%^E0AMs|(*L2ver+55H?&;-*?jW+d{`tBu;#7&3cJ=b9W2qJhOnQUOF$ zB)f;OCV`O6v)mH*N2HZb5y%!)(G?cKcq`TmTEB%cc2MS@z}|o!<_K!r$p>tXsM0Jp zpv%pFCp6nX?8RJH1uF(&1)o}{BBA;VR|j>7EuZ*dr?B~VBjd4Cx0?neV~L4#CWrk^ zwn~@o=)Ij1y~(BSlqlr9(yUfwl@$&#R3D=RLym-DW``9ERK{Otv3{LRZcJ0wG-r6^*2)cDTB5 zvK+<10KEvLCV^)G*+-Ma>*~g;(r)JHu=kw?mWcQ=xU8J_Tv#$mBXKSLIoE0a4K^9e zZ@`cGcxK5ZCooE7X!1ArOhAwUHaIDz+NuP6f5u=se7J!Mv(%mxCx(ug7$3G) z2{!hH-dKz?v%u02r4p;Gem2|mqYZ1hi_L*~mZ|05J_{+5Ybq%&!iKDn z8xeV-PPr>?7ct=tCQrq7?bL9slq|*#QG{(f$=;!Kv1vOJV-%(a94jK;v>XZB29DgH z6?D)>UG(JMzy=6os9NU-asy$&KI{Ih$>!&u?skj#p=1f9bx;N-N}Qjtb?WC5yms%h zp@iK_&s%!*i^-Yu-3($Z;l&nbSjA@0wkhtJvCSaXfM35FOBq}Dary3!X;1{5d-<(D z!W=TSihd)yZ<(n$_iEIfD1hARax2Hm2o%APv{9C8o0@At>n!~{jV`6LMg;1f1o|v1 z1}ELaqSSk&dD{jau0efl;fDfT?qTn-iwq(a10H(3Kc7oTf>05D$CzCZ|9xNaX8Jl{ zMWO2GEV>q<{Hom{T4pt>6j9x>zUEbb@PNA_CU|Im)Ls&``_3)w219NzxehnQp$N7n zWQqixxd)&UtQ^wxBm~WUgPMiUUESH2)?G|8;oA1q87N*hX%vei@r+j)k0N<#z1%c@ z>N)M2;t_@*XH58zKH`cQb{|+YHjLylam_u;}|4 zRqgpmVD@l4RKScUsZMao}V z=JOoRKb(J@o7QmvslIu_`J&;=nw%C%SU4Z)1nwB`KnV-s6iv?Jn+YO5A(n@jQ+MPj zTC0BIA+}XfwG8_aOwN1a)aID?PHQ`EOLjzd0KKYWL|PT@h%j#p-CPGjU7%>zSQ=2@ zmB0*`uAxyR%t-=g7%o~9!k3mr=H7p{5zG`IcQ00Id;W;7XI}m?c*?!HPa>iZDZ!u> z7a#WI;LSVS`OpHo2kA*abif)w-ml~oPpujy>J#|lW)i3QvJS%^g_Y?)KYMH6W?x`& zm@n_8+9d&Yng*gL3H90@f7Z25+svO$o-O;M^nOfoayf`lW$zxIdYN6xeIi2;;>v># zEx?^CJ~vQHPYkbL$dZhERk8imDOe$Lzy1PmXO#*$A|~ioza2g>h+W4yaNWHsVAec$ z+=h$OVJ)!nL`mRsVZJpZGD2>)hbQa+rb|-cyxDYb&$i}O4)gX27beFYY<18z4 z329Of0VXDJ;NC&TGP+TJ)1OCbc9}=IcqegfBrNYSo8S~BTOH4wh(BGEKvxmhpD^jU z#x#cman~NsQwck>8!H4myYY46ua6c}SOxQ7Nd6z8vlMV18T19*K%)a2n1W+H&2+#9I6CvGsWZj$JMRipV?PimEtKgEFa%v-ngF@u17J z;0yj4C+%NV(XJ7mRGZDL>#OVlIPNBnAMy=j`Nkc@!xfq|NP2_Ls*Xje=EX2|m=uNH z^p0D{*B)8euq-bn%SOqTtRze@>pC2mAd#^sP_wMO+_TU1!jYwnH-4Ah4eiq=(N-E^ z^R(M7W|ei}`}^n9(GJqQH=orZpAGtI=loEWziT8L-qR;^KjdJ%PGo)f&D-J6p^4T* zIf|QxvY0)iB(9Rb&%cuR>EEa4W_Wv{xhU&nzy7EwuS##3bc5XU%vcQra?|Fy?cmmSO29ZIIm3;qc<-~*xU%<LS`s%PeBB-Lqgx!Get^ z7LyVmsXoSCfBXbl!GhUCNgs@yuXapR;{V!cF`6?^#bU%?m&(CTi9v2eE7=^~-{nxI zF%$TvEik|Fr?e^j$d>D)2nz&A5C1l_v>F=Y*5Dd#k+VuHE|HfGj}oYG>!n_0vQl9Y zvUF_Ydn;*w{qZZvj1*g)_cTC0NNsGm2^;zSE+)r@dQZH7Ci2fr|9fHRMkjqw7ab|H zQ>F#2YOA62OX#1lJBkHvgC~EL$D&N=R7ABBbS<|@_+pt>9|lXPqKYH-FT|P#-%F5) zGrs+*`TAx!RbT?oO!$#ho+>y{EYnFWNd4Di^zGy^`v&P!fXWMN>Qqr17Ki=D{t@fz zo!8!m>Iil(>@+*Xwjnmv(~yH}2y*P%9Ai19$9P*W_EDRo*iR#!KZS1iG-X@mPqEZP zsaRIpM+-qx3-;(ALbAB)gfYNy*Mt}Id8xgUu!*b8X6Z}#%4BPK*g!GnmC5xtbEU(u z(Ot41&;>=rwpZ60)~TJa#zy75=-@sl=G!%VQgicNTRMFUOb%c)d+zf~q*oZq)|3a{ zpKurU?1UU4o6S>F>^W^V0pSb^2A-m^35+!!0qCAO4a?D-xyDXB0}%Lyw%EzvVFTVo zg3^*jG(5UJRajx|?W04&ysJKSsdB*G0w_y*dVKavsCqVnh^X^R^l2+QvNiW}LPsri z=(Bb($tL7_&Q>I1PH1`t4Aop`zg}rqGt=U}Jg#1?bdi5Rvuy1fMzj1d6@7`x;UXf= z#k{~$3AcOmYXxW}rPsEs!2%D!MUMGGu3$`EN0x z=N_sY>Sn1 zUe&w`38SQqQONm)qJU;K@0G4kO=^b-3pLh&LQRt`^}5Nx%w45`{d_j~3cANJ!;rPg zsMvBMHkM2M?UK;~ztB#1DqTjB!hp=E|(sCJ_*N?XL_Ln2sxs4e{z_W*qpP= z1L|H8#2eDT<$SdDK{}e7sPX2{0W_Zk<8^U5IhW_hVS{*v${M+1H$rCe$j_;vz^&DZ zc#Z~po#6{^^6}}NuwTKtq-@ro8<55;+;L8|gF9}fCa(LL*_c9Ed;Ke~w{YYcX%dtc zhmz~Tj>vfCw@~w9mj5Q`%L`xBh?b^i8q+4!Mf8u|;?-QEOW|ixnpR?B_6H0c=cu}Rlq&n%eA=JOU3Q}H6-D9+kO{QGahmQ8&oaezodj7#CvL_; z4Wj2|PeO0~IR>eS?)-tHnubOkZVG8F5FzwqsRK8r#^sG0OPA_j97^HRqye|iqF24* z@Wc<4$h3B^EwSwFcJl=D8G8fSiTsC-E0uS>V^l?<^e-6qDXICV!b_bx;i_#5^ z1X$1908v2}*Pr?ml*@o|6xgLPf%WG%pn_l|V*zz|UgL&gyQY4*X)>r(D_i}&1U#jqhfI2!DH9bU9SH|}BQ+nz|i87qNjh7Z;<1n0|Bc}USw@{m>QClb>p_(e2@OZXOO5h3sA zvSIeLLy#!{stY#Q<>Uxa?WnWVvT4>mLX;JuvlpD@ z4`KX#cWUXe=T<2N{s)MTM!vk%`+2(Ii~H&sMx_1?JWoGR0*zP3uZ!O;2d(?4!IvIg z!LlTZ`LPH(OfKc_C*OYgtPHo(e9ZsS!K0r?$@Zn>)7T^SCaoWOKc3%<7tYP^GPCOP zS-Uauk^3Ba7UG34Y9Hy8_N2W1aSwxfPC8hi$T#KyN#@DclR^|3@)(X{LFo=svKDW- zuMs03P-Bo2`8=TmcxwG?JT6s;lLCCmhP`g z>}BJ!f;&d9TI9xCRzQV-U(3N>;T8r-RM*OC7TXx{S;XNo1vKHdUz$BWoBTZ>0Ret3 zH#JWl0H3qi5y zPZ2}v7E~{NYz!xYBC79|&7xyj2^% z39s4b&U(^kLc#6YuAzMX7D|C323t%WWpfsce?ztV$7lg1;KFL_|Y9MTeiiDVD0;={iPwROa!zC16eh_~uuDOLl(G z9~)sy!sQ;)dilHMZFxDc?p}QPqKkilE>JNB=R{^C^!lZTU^|@QiA;El@Ut_L5?U!P z{&eK3hqw5Ri&mlBNF*j!*g-mzQ)@?F z=~h5gjq#<%BHKQ;(m^wn{KMP8k#mpR+*z0}lj5CZi0tii`ETd2S=$1?1K!;JSp`@D z?&(CSuER|gw)`vl{>wBxDQH{IF#pInv+^wopPSy$*>K*f)}N+lYu+> zdI2%3(WHUk;+%+>%?vv))T131;vjgKS`lm4z#szcQ~@|NJ9>gp@~=iI>a0TFfA22i zl6H1cKG-ZB;JKz*ON1l|SjV+Xh!;{;h4DxS-GjAFJI!pm1YFW}#z87uWEL=1Vy|fS zLy!^uKb9yi$2Gh5bQktSs>quJG>t4uVn|p&V8_JH3T!3IoYEQ@88yI$fYkfX7v&21 zS}{P_NU@fgqgmIdJ8e`hS%*J=!V0(uZ1zBpB`a* zUoK1WtpTK@h0+h_K!s(x-eVbZ;8I$+T^GtVu1UMEOSb>`Pqt&ORS<(QEo0k@I3C%B zuhnC%c%O)?#|Tw}rvkAmHg=DmhH}9rTA0516=4*IkS5|;?3Bz#&kVWj0*ef^HfOWn zALRs`ObTWx&_0UJ%N!xyNFXLyIyP>%QUQl8YTX)G#=KnF^D;WHt8>EMg@ty+(P3T` zd(&5`4tUvRU5^#E-bKOFK#_OnqXTKC+W64S3Q2WA$&SUPs)d+j$r^tBs(g-bfgZww zxeRVzHI!v+>roU)pCQwmW%VhOCrVBza)sYRDq-}q?zg?t zlX0VIshr$g*mOBO^?C=%Q_24>yZM^poHpOXsnM}eW;b>M%X6#aorBs<<(#HC4~TFd zrt5weOmKU5F?KVHoHqCY*zkPG?T)<`&?i_LHpF0B?DR3`m{k{ zQg$EDU1I65j!(ic(J@L_sbN;h_ACKKf&7@aC^3kAH;Fm7Vu}6x_2_r5P4mSUAE2*t zjhS4r+9-d5xh8RMusjZ*0gG_^Ym!qBgDYlNY`+Iji}L6l3h7%5DXb&m&6*pJSg9Yp zEjo5;U6VK6J{K{vY;Y{J-o;yFLzEduZrMMr{(ve?{n05az!nJ@Ob=jEeD&1Ggn{o_ zef9l0{+K-3z#O3a^Ickf_lQ3E5&+i^KnWrc8#ZU(@Sc<*tc_{a3HtX+J-#}$g)2&B z?fw{E2}CQdq&*i#*b~G=Xl@t}wLNmzzss(M-Z>9aoVTP1;lL6my9Z1RfiitRWnr}}oF$4W?_aRXCw zG2c%H5=kJ7DLc#Z$t8=6jV*rq@d{c+NH3ZIo;2hKlv5pFJU^I_wX1s~aZjLRI?kX_%p6kPZoxgL0kQig~}S{XuV4I4-Cz0XM+Abp4tg zvj@z(N!uaG`C|})hFpN&4D4UpAzNZ;HaY>^79sOdie1#K&|!rJie^4t-njGy<-S>; z;GTYDzxeoLYV7qO{rRRsFt-CQ_oTp0VX;b4YF_Po^0Muh1K!?gMzefI zmRrKjg*#hIFEb>ys&YDrL%bk8Gdi&+O|#sRe-;yJrVpx4n9Az-)ZcWqvIIjzp)j)) z_MSyvki(9kl{Rhujs4fVi-G`90zZ33#tf;-apH!LndWJSs7H=@L@J+WLkUPo-~#Lyz6K3h-E_-MbGC6*z00P{C=rN(VfA@`eY8WEX0wK!A6<*Mao zmZzr=I&t`>&TI215a1r_8X8tW-4OChE(NF$J;2BSe988RISKlAZ{Na!$;yh~FTT6e zm4b^8ac>}ECbDF7G_lDZ!34^bBQCcS^jCsEXuGD2o^;af2#T@rdW76Oqr8 zBK?mtoe)(G&gxuK5oyaD!PEgT^_I(^9>^tbq$1w=MCAUK|4j6 z?2mBQB@Bu)LmwTp;OftRn*CiQF+!>IrJGk-_@T~RUT0=BQJs;RDz3_p5XiohE%i3n zF>IN+{nd}U3%rY=n-1I?nhBS25s|>*SAOE+&;*Di*@fWd=7_(XYk|xa6>c%Y-W+of zF`uHuT0iz!UJPY|e@cK7h`yqh5m^`L*zCAjphwK#Do2j@$?&?*!$`?ksFerYjw73f z6^(9dI9BlQ$852_x!UasT8#PeXo~^_^+D5R-9m*-&I(yjAIvWh4gN+$={I&X@fzh+nJ@d z7M7It0n|~J>GD-XPBadtfG^?$#nY#ujBg6SPAzQv-DFLS0wM>Qji2<5`SJX2mMUMp zh~wkD!MYSn;!ox$$NdM67ThU_vf(>nxehgSellK9o1wr?ZBXTW0XddRvj` z#r_AC%F)jr)pN`8BKv5g+)yD0g+9srbu`ycrCzs7zflz!`I&UurS92;D&4U-G_Hr9 zkK$H8@c%ne+JTYCKq(;-%HxB2Z9co#O%ynFg6B%JZY-%kN%?X)eIW7uttaVV52aHRJe3B{1Dm2mk0j>|va6Jt)Y~$Esa4}x5LasDC z>NIjBs!>ZAZt&ry=LKht(>o+jp5cDZc35B;ymH}_!&+cFerAw+V@4IVqCM35+rwMh z&a9s;^Y4tZ-nk!nzGG+Iu)*ZjIiL7Va0|3_+^93Y;OxwL2eSSktd3ZkL(bps(kuye zu|%4`-I}MO^E%u+NG1$rg(5i2m!Mrxu~FUTfz~SqC$uu;AGP9Ze~%`Wi5>k|v&xV) zDztC0y=f%zHxsoup4~l``r>po6J9rLZ)#DfXeajrQjc*9@@6E6Vt2c#&W;($C^K}_ z%(L)WSvDTyw_xEHNs}gx-6Ebp1-oNqPNDAf3&9`gwD(#&3KcI8344Pg_=CA^gCKOS zIvt($i=KaLWjm@=uwwjG1`PF_7MUUg&)1`uyceCYC!&DKETH$G_!Xsaz4qigWgMYT zZ17XAaB6lNa%lD!9Z>`C$mZ$#_X+cIeQ5>DAAkWIi2Pp$AG4~isGVr=NJFsdRy5(} zx6evCq$}ferDh->a-c>p0RMW8?U8+DwHbK(md-w0#>Bs(^n7_k>l*$%cHd9_o9 zpo`1zvoT@Rsf8$2G&#h@%9+ZMcu-p_niL28(1i{@mon^ z3^r+1c|0o`Q1Zr)w}B|N7nqLlm^8VDR%>c#;G^AmtE}E5NK2SC&HmY~kYcSffSNUS z*_2S(l(EKpZ^U5&(j72gz@SgtV$aI5uRLD&L%8nqxc~bMz!zL*<(sDdY#4y(d3r$? zqKyhj^`EgUtNh>FCZFr{Cz0HI(H;Qsqph7C)iy?8RM`boRIOCVCw}p0IuU$f_Rz^5 z*Q2p`;LfAkhG937W4oyO???ZBD%TpcTzJn>_sMDiNKL@lpksZTT;1o1p8riZLC>3m z0(mJ^nz&l-=E|eNdHL3tvl~#mK)c|6ju{U6?`1%c#$cCI&IsU;1ZFweXT6zK{(7L1 z`o9-iBO8QnRCN)SVpYSqvsY1o8V5=v6(FA~`Pu$|+k=Y=dZ0)e(?1KaFcu#rJNYY+ z>S8j!7BdIZ*OCdEEzop5GE(;YX9oySWrA#s8tZ%A6~r%L8-Etfixsf}VfO$S0+wzB z1%r7q&*~l4KMy=Fdm{3K?tkw@V50|%Nkx^Dg|3OR!gWQTTs+Dw>gnAMYZ4~u0knND z7{o+R)le;XnF<7vV(*-ULzFrdjysG)0K&-nS&QY5^W$@cVcC86M$r;_JtE%aVpR|JgQ%kzP{{(1905 z;e3KJ;b#CxtMFYSQeE zMl8`9LW^9$1kE=`*mi!|p!whG!sHcAmun;%jxD;Fj)p} z9(s142SC{B0FRZt4TSh;(IgM(l6~C&0_^2M?Mw|6r}~9~llc~y5?Bn<4l~9*;LeK# zxHT|xTL)Hkn*eqDv#Xl{H5hdNXX1c1xJkV&zk-4K{Sj^X3(Pw0Kzvv4vbu6`jCNxO zDNR~-_K%ujw8@vIK-<*PQeiME8+e}?Ec^oI z9y>MtOviU7g07C#z!muuG77B5G(cX71cpNaR8Qq;%BEiZsrdi!P|G=YBJmgFUgKs^ zc1p&hxJ}B;>~n7gbi2^k6Bw@ks(Fa^$$#{y%+vAJ_L^~ffP{gm*PGeu7EqG41;A}m z-T?qY&_48lJ|8g{H z(C%VOu23+L$~&M%!rB&>4DOMT-(QFR(QLr6fj%YMbP|-GYA5I_Z5Ez$<_YNC0+R;_pZi zVPOY&QRtZTt#BM7D}ZWS)=i>0Yv3AgQ0@WOsRC1|80&uxeE-e{ESJDd^1C|&roGAe z+Wd11B4x{UFb$htT^xP2;>+c*0rfmR2Fz{uFJ0ac@E{y7d5lH&%7aRK8Gz7bd(qPG2G5tZNPi`c1$iY>&HBQt-UHhIp3BOTaVr0xrvJYP*q=g@=TTrvRY8jB z0Qyz|ge@S09N9`-4E+DU zMt{F;ADC=7sSDTv$KR!Z;}NqV@E{5TFc93WhtAH<@XBpK$CU#{4UOT-4uR4~Ht-#b zp3(>Y!h{u0|6MY$_$$f5rUh8=MEEW7f9?xo-`8?tDY)E$t;3~zUqkN=>P!xJnDhdu zF(4!G;zxNiuxLq7wLEjl5m-XCQ0>-~=oSeP7NKg&|GYJL&=%@u?TJ!|T_xXg~oticcCI9zUAD)l}(XY{b!ICF~E5%)8ccQUE;I1|NBTlXGBmoCA$`L&uOaWF%Red zf6hbTe19{L>F)Tyhh70oeZa>cNA%~p;luv|08*rKK80jRakt4eghP`;4Vymnw#IuC zq5p>YD%w!I5n<8z_@O0KEVO%Km~6;-&8R5;e_==jV(kV7sYs40NYyGYfq;JxRJ4>U I6)nR4AK5YyjQ{`u literal 0 HcmV?d00001 diff --git a/redditclone/templates/reddit/base.html b/redditclone/templates/reddit/base.html new file mode 100644 index 0000000..ac514d9 --- /dev/null +++ b/redditclone/templates/reddit/base.html @@ -0,0 +1,45 @@ + +{% load staticfiles %} + + + + + + + + + + + + + + {% block body %} + {% endblock %} + + + + + + + \ No newline at end of file diff --git a/redditclone/templates/reddit/category.html b/redditclone/templates/reddit/category.html new file mode 100644 index 0000000..0e1512d --- /dev/null +++ b/redditclone/templates/reddit/category.html @@ -0,0 +1,15 @@ +{% extends "reddit/base.html" %} +{% block body %} +
+
+
+

{{ category.name }}

+
    +{% for post in posts %} +
  1. {{ post.title }}
  2. +{% endfor %} +
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/redditclone/templates/reddit/index.html b/redditclone/templates/reddit/index.html new file mode 100644 index 0000000..44f058e --- /dev/null +++ b/redditclone/templates/reddit/index.html @@ -0,0 +1,4 @@ +{% extends "reddit/base.html" %} +{% block body %} + +{% endblock %} \ No newline at end of file