diff --git a/.gitignore b/.gitignore index a81c8ee..10604b4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,8 @@ + +# Created by https://www.toptal.com/developers/gitignore/api/python,visualstudio,qt,qtcreator,qml +# Edit at https://www.toptal.com/developers/gitignore?templates=python,visualstudio,qt,qtcreator,qml + +### Python ### # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] @@ -20,6 +25,7 @@ parts/ sdist/ var/ wheels/ +pip-wheel-metadata/ share/python-wheels/ *.egg-info/ .installed.cfg @@ -49,7 +55,7 @@ coverage.xml *.py,cover .hypothesis/ .pytest_cache/ -cover/ +pytestdebug.log # Translations *.mo @@ -70,9 +76,9 @@ instance/ # Sphinx documentation docs/_build/ +doc/_build/ # PyBuilder -.pybuilder/ target/ # Jupyter Notebook @@ -83,9 +89,7 @@ profile_default/ ipython_config.py # pyenv -# For a library or package, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# .python-version +.python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. @@ -134,5 +138,476 @@ dmypy.json # pytype static type analyzer .pytype/ -# Cython debug symbols -cython_debug/ +### QML ### +# Cached binary representations of QML and JS files +*.qmlc +*.jsc + +### Qt ### +# C++ objects and libs +*.slo +*.lo +*.o +*.a +*.la +*.lai +*.so.* +*.dll +*.dylib + +# Qt-es +object_script.*.Release +object_script.*.Debug +*_plugin_import.cpp +/.qmake.cache +/.qmake.stash +*.pro.user +*.pro.user.* +*.qbs.user +*.qbs.user.* +*.moc +moc_*.cpp +moc_*.h +qrc_*.cpp +ui_*.h +Makefile* +*build-* +*.qm +*.prl + +# Qt unit tests +target_wrapper.* + +# QtCreator +*.autosave + +# QtCreator Qml +*.qmlproject.user +*.qmlproject.user.* + +# QtCreator CMake +CMakeLists.txt.user* + +# QtCreator 4.8< compilation database +compile_commands.json + +# QtCreator local machine specific files for imported projects +*creator.user* + +### QtCreator ### +# gitignore for Qt Creator like IDE for pure C/C++ project without Qt +# +# Reference: http://doc.qt.io/qtcreator/creator-project-generic.html + + + +# Qt Creator autogenerated files + + +# A listing of all the files included in the project +*.files + +# Include directories +*.includes + +# Project configuration settings like predefined Macros +*.config + +# Qt Creator settings +*.creator + +# User project settings +*.creator.user* + +# Qt Creator backups + +# Flags for Clang Code Model +*.cxxflags +*.cflags + + +### VisualStudio ### +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*[.json, .xml, .info] + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# End of https://www.toptal.com/developers/gitignore/api/python,visualstudio,qt,qtcreator,qml + + +# Giddi Specific ignores +settings.json +.vscode +.vscode/launch.json +.vscode/settings.json +.vscode/tags +.vscode/.ropeproject/config.py +dev_ressources/ +archive/ +temp/ +logs/ +.google-cookie +profile_config.ini +icons/ +shebang.txt +.env_tools +.env_main +.env +*.json +private_quick_scripts/ +create_venv_logs/ +_project_meta.env +misc/ +# Project Specific ignores + +*.db + +/arma_class_parser/project_meta_data.env +/arma_class_parser/config_data_holder.pkl \ No newline at end of file diff --git a/.isort.cfg b/.isort.cfg new file mode 100644 index 0000000..4e07e57 --- /dev/null +++ b/.isort.cfg @@ -0,0 +1,16 @@ +[settings] +line_length=150 +sections=USER_DATA,FUTURE,STDLIB,THIRDPARTY,PYQT,GID,FIRSTPARTY,LOCALFOLDER +known_pyqt=PyQt5 +known_gid=gidtools,gidlogger,gidqtutils,gidviewmodels +known_user_data=gidprojectcreator.init_userdata.user_data_setup +import_heading_stdlib=* Standard Library Imports --> +import_heading_thirdparty=* Third Party Imports --> +import_heading_firstparty=* Local Imports --> +import_heading_pyqt=* PyQt5 Imports --> +import_heading_gid=* Gid Imports --> +import_heading_user_data=*USER_DATA --> +ensure_newline_before_comments=True +balanced_wrapping=True +lines_after_imports=1 +length_sort=True \ No newline at end of file diff --git a/.pydeps b/.pydeps new file mode 100644 index 0000000..c5de06e --- /dev/null +++ b/.pydeps @@ -0,0 +1,8 @@ +[pydeps] +max_bacon = 4 +cluster=True +max_cluster_size=10 +min_cluster_size=2 +verbose = 0 +pylib=False +keep_target_cluster=False diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..045e74d --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2020 Giddius + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..8153bb2 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,7 @@ +graft arma_class_parser +prune arma_class_parser/logs +prune temp +prune misc +prune arma_class_parser/reports +exclude .env +exclude .db \ No newline at end of file diff --git a/README.md b/README.md index 5ad5a45..70d9d56 100644 --- a/README.md +++ b/README.md @@ -1,51 +1,2 @@ -
-
-
c!JX>N37a&BR4FKuCIZZ2?nZIDk(!$1(l@B1
+l+dTF617eOuPrT7muir7ObC2W&PGLY;pGZQ7>-fc=1q01hY$G$gjeii!;0)-?er^wE>Nw3sOqC+5819
+ic(!t45doi88nme2XeD$Aa-2V>Q`?ga?~JvHVLQB1<6d9-)anyQ7
+ao^O{f%;hP>}NH(fBKLkm8j))>kmW7c$FOv{x%Bm+!5W3L1zrM*;wYysQ~00iTsm)kkJ&${Vx1tFI@g
+09=73L6)P2}KM>gQSxhBmZhwkY-KaNaD|9eLk;er1N6-jdmQzOCm#FjC5S3R>QeS*IcW@po9FL{e}IJ
+J^v10fBuvEns><)*GHO1mij#Ie?E*n5SU{hA)lzkpb|{Ici@d0J1o)wNlVc;EehAdIuMSpPe>Zcr*h>
+~sh~FYq+A>X#x9lWJ{xXyHt}Un>ien_4(-5f_M!{<5c+e1FnDB2XYO9ecM=mPPmcSZ=3eBfK4eF(?nS
+Y2*iAiHKdPAajt1wh1kqdrYw(F6&mD{r*VE|@)8^#m(%cqvz2>L(H25aj4a9O-up^#MX2Mm~p*THZmF
+^mC6NkW)9*Z5li62k6DK^Gt@;vp|_-QLB0|70v@c8I8P3b3#Uv}`G#;em5p9nme67=cdf4nry<|c`yr
+9JLXB86ti@koPeiXyy6@Ni#f qL38IfCeC4xM(i;j{Eh-OmNw$AbPi+-J%}`!u6!`Wjvp7n@28u>
+1WysCTf}Ei_=nAeHGVynbFvvd$JhA~C#x}dMrDnryD0*?!%YX-(LG|CR+jpHS&1*Y1w~FAV(5mt
+WE-SvJs|+=MKN6Jd{hrDvYKwJuo4}$iHA4Ju&n;#Q8WUWB4Z!5&c&_oy148Va!0o_~qm5JFY8M&
s(idCByWaT?~45*GoavciVSV&w7#S|a^8_I0NC{7ZiG@q{o8SDYHraIwc%HnCfC +SL;K_Af?}pYiB!8y91V1@uz9)7BG%^=_WIL3Z@4)ok&z9tnsZ5iO+=n9h08=Ho7Nsx(BO~5(g`FB@Th +w3^zdhbCfZKOCZ7zh{T_XdKZTArTby?Zp6N=8|IvHGt8e;lKdnM<&5SgJ1Rj2gtL{=GpXjZlfqtAGpH +FStkF!OBF+3EKOPya*8^}~E9!ZXN%Z=;!=Z1SB;au%@qYnOO9KQH000080GebdQHz>445teK09GUb03 +iSX0B~t=FJEbHbY*gGVQepBY-ulIVRL0)V{dJ3VQyqDaCyyIZEqvD5&o`ULC7d1rPBKDj39+kwK%^dQ +FA8?wtQ)DI4r1LO4{CPxgmEgt3m#IpCOm~rj>JPfuP3WERn;R;c(`e8PffJ|B7qDuH|mWlaK{5*Luw8 +qY^RC1b)jrixQ#x{eG{vR&vLDf1PK!628x(T`E<^_)5z-&xCKkk6EgsBm-FzWRXmIy@D>5n@yB#T3@| +DChMpim1&l8rA7H&yH6=JT1&Na-}RxK$`lX8iU*$y9n&cFeCQxl!ecLpBd2Px3n2hX=@W#|#@ND#R+) +It+`_^{*LL)M^gK&WaWLvDw{X~F__;QFyfdN~W`1nOAJdS-zMC7d=6Rgy??s$`i#_rzBa+c689L)xuA +yWobW_sp{r%m&Wxlw-{V= i)QFIz{kfD>k7SGw0$1fTtsXIo$H6QNG8Eu7yiyi)SBNFK5f;r7l +>S+$uKS)TeXbWZZyMLKZIHX`#=B{yT1kSoQ}zlG81^lEG&^~0#;w3}G2c vsonHAAsVwKQNS@qkl_xmejh`o>P<}NJlv#JMzBJkz{!K03LG +3ZK5y|5*Tjpsj#_Vl!s8%>Ea%(>DI2XEC5q!BV>1T- AY-iu=NNjB7XPhRmW-ujl)4V?gbce +H;|AH2Bo(kv{-qrX`5t%-@-@q3 {#B2B=G=eMVkPla35%L9v*3|GQbf6!{YzWa~X8t3-BR2V +)(XAxZd5Wz%q+ujw Jxtg +9;}tmtxQi_{FyA@U28$dO&FwFW_mE8GId%M$LVo(4ceF;Neijvy8qY{==G$#!acC`bOSD@oXyq>BuHL +cAF?EFz&=urH!}apGDzCzF|CUI6#fE;A^RxZc^8 cb|KI}qU*15#j +H#bb-}j*;i06ab|(>0+{Rfj|ZOF3uL!kNH!{>pm~ZWAKk7rA}nZG&vDR!gr3gI*=9= ^%+-A*BS{iw-7sF+;MWi3nNn*&6-GH_jLb6O=JpBv~a5Ruf1|q~exqK#>|2E5|?==^ +K`V+UX$UHjRi5L2X_z<=7 MWHs+`6WSQK3?C$D`zTDOWcE!0NIQY5OSKTEWEEbsob} +ld7$xZ @19n7KqMV`N$+j)t=k +{A8Nd8ADAm!hwlw=lb5ap;{jFp(JB@cXohRFGXWCBf+q~#-{jR2>NR1gBgvR?@ 38u-q*i% +UJoJ#kP-%UIP&X@Z2P;8iv)J?IeAnsL~#e3T40l)c3}5kh>`#Cq|ey$?&j{2Eg=gj3vDvl6Xu{Yo$g( +z^e8T3ObRoF^WSUh?GF`01TM&T*dr|jH>r`}o+5>9;oDZmp=ItJEjNWa+Gff4dX0>#%NCcd==M;X+ih +em+ZlQdSFL$kl%#pqbf-#*kAuZ*;m_~<*?jT19DJfi@%5mSm3T(&pnYzxG+*X-`_I|K^1*+5y`0_6Em +Jn|{v}bMb#fbZ3T)ic&|WEoOjhi;#%U^qq6WPfGb>@mf-tN)jw0D3Ua01A5Z^{x5_syCuB)iEcUfMbP +(lVg?#9=_by*Lh$VFN~Ou-6I=45NPghQwG$QvAk+|dZZ5saD*yRN>w4IB_y&;?)XG~3g3Y0|iU9UhS! +B`Mlo`wqEd*-0A~fOsNBEfIIF&OETepY(tME(q#S_aVe >OjTNL#3Pp$&mzbTln|KOZYvMvm=GFRdti +H>bfKx?N0bB2Cf~Dl%r{ -+|2IJm$&a1=lIMD7^S7`iK~d5Xnab;q +BT2E3R+Q)wH`5 uN%jRPGmy3&w=3Em~29)JulrsZL)y^Msdc49G{I%fp(yEX9 +`4{oBKbbfdlY+(631W>xqo^cAXdivM3UwEo#qpHZ!daBesr;E#5+Gaf_Nh1Bzr 2wV +$-9 p )uWoRls +zoOtryaOx#UTJYA~1eh*yJ_tcwidk4egXV%VV(W3|3`cM0D^~59X=>Nhpoo1*%KYx*ylogG*KUB?A&% +f>Z?CL<(G^56%cmbrarSvQC=>QqjI#8x7N_g|!p)(X=s>NyrY$iO_MraKa=zz7?pf-Qcfo+rOmuwNGq +F_ra_k<8ee;B}AnNV c!JX>N37a&BR4FJo+JFJo DNyKScg=rOsl +@!%lZU(C)n} -i-QZbitx`Ov%WdJ?K)mnrRemU{OJeTRh7g3nP|DxCmfLh7HTvm@#rXmlE +QkH?p<6M0fE1Ak7Obop0F^&M|w30=N &M$r*ni4Ak?i)SoK(v3e}RTz`KIixki-8R7!wTU +T*X2KZA$1stkuo@EI)TGnY)!M9Ss2cp9otG9qDErNb|{qyDJ)%o@H?Ctqamt*mPCZd18K?dV~8Zq5(A +s0Y4HB(sHV5XNZh>|$Si)>ZMvYgFfFx}_J)2rFdUoX$E`+CWbkyI =1~#i^Wf9Ht0`|ejJ`kI1A%U99tk{Ir3^=MPGDFwD(9<)1xTklVF62ku>2iB{v8Qb +n7Kl~8t=7QLs?QBQyrgG+eR;{(VY!xOuGcqLAKt&2y*<5t+fPsKRBdzQa@FbGUoZbU1M-~x*X-)&_wO +&>zX29p_B@^r1pMQLcOaamusP3QyM^-vWXWq_e$6alG8Q*ANT8-~o7uSGB|a*~;+HU~W!bdu;Ua3;@I +$(cS2m2nU;rXc6k%M-8SlZFM0OeGYK% e+wmAyyG{$3(3B(+kB{3kaPWl&;zanLK68ty +`1ILVj6SrfVl~!#JXnGV9s0r#egoMzgqJ~?Cvi0#jkvipPXfXVu?g?ZI*@W2($BH#&|U%Lo?9UJ7}@G +>+_S*66t*mKRz!kyO&c0f3z5x#lTk$tXmBAW69M|8-hfQ6NOLS;T-ITJ8g8Ud+QwJ?s2sEp!Yc(z{z8?~bVmi=mkbw2Nw>vAEML<3bO@#X?b7t>RFvNx{^x8>>}`)-t-E5d$U3Y+ +lF7V#b !t-mT4MzvTyao!#;}E>Sp$$F-EGgq9+g#iRuE@*v-WiD2n!Flhw5Q9ES{# +0oe1<&-qFvrUY>kcm29pe oJ@YC0MEYQbaZi+jQ}Q>zOQ!m28U&QN0kTbY)On&S{S{H@1Jty+0w;qj{5Pc&EPM|XO +zVY(e|LfF8J^O(VoEX=jGG!t#9(RRZCtd|hYuGu_J!y=aDaAewOJ14*oL-QE_`OHu#Uy*fc*n-(obJw +DlxVR_?)r-l5rmaje;k&S&!+WNJZh%h|71X1^M>P;e_lbOv$;mfk17hUtD740AVC0Yq*lb9%n^@PgNw +{k_q1o2iL4QFD4sk;Xv5=q;H*rcz7>2IP3Uy@?R!DAVClPh!;tO|E&mLmTr{dSO1j<6of;NrbMTo~_! +i{hnu!jKjU$|SQO`sWUbzm1{t=rCKW0Pq1AVIByZtA{QGw!|#=W+KT*bIq8%brX`eh+e&eiQ#~XIYwT +0UgK88v=^M(O7))r$EiA|Cw2|q^T? ruaGkD9M{Ff7FNYFN>2a?sGyh=0h7VJ?5itCt +nE|^V~(Tlv1J*G((E=py8AeO=+cqul(E;I=EIe>#ykjktsB1!Fw7#u?5QsR?Inae0%#*x}&;9ixu!?w +g^089Z{)xa`ft{J_G203_dI93iwf)WU{IO$~ta`JXkwvjYs-#PApD 7nSTJyuU@+q{&KZz`r$!;~*jSJOfBmx |ozB}J2( +%S?2kvW`0l&z_3?1x!Si#QLZ9NMo&jH{$$a$b@K_FK}Eln4)7FnlTST}6#UDYXtx?=K7G<1Q`!TLlIP +hMmC5EofWp{EBhhHz#qfstD*-u5DLit2)-jM}@SV<=O|f7CIc4+B+on81kp$n#7f;-sHo*TY7Nft;ae +I)kkeV$6x`=Rhs=L=7@&+VRqx=k&y40fSZZLbF0cZGS(totV`TlmJma&&s{r;ZGFes;z^w`%I%7Wp!G +$FnwWj@|*ZU!n%Xb%<3wytHAj3u+ob~T)}&ebYkdqP8KYze~zO2m8fE{w*&u(>7^N18VN|tz4JrWLCu +`0>Ap{03hx>mDGc-p0)qi+nyYsVhbk4jAManxx?tP(x>(P4;%> `(I*TK{()^`7Nx*0snrL%?0iEG! eJ{8Xb3COCY>=MjDCYg=+o1O$udr){sv|_zqIs +T^L-<$5OmOqGBO(C+7EcQU%~? 9xyb^dvb!QgC)r5ds~p%55H +WH>97^7_9iDM!VG-Ww4mR|?P2!*xNY;bdBO}0req6M-**JA;?7X;i27g(E#_M^9;SF&_PF@ZJ9;0$lL +vg5701m3OjwM~9GHn})l%*DGoDS{5p>_$lX(|@j5qa0r1fTwafYSP!^<#Qqqmky4uz=mxv;7vERSvcd +wOS?jm5$a9Gzo!7Pigyb0hi@+=`{V8m4*ZY$LyvkwX`^8PjD6ZhM $T#p!kJmQZz{s{d$8$Ofv)_T@Dw{BjT1?(WAB!nV3zvgL&JrggdZQs-zmZQhGiq>N>j7J +paflrU4ILF`fQ5fChDakM#&1svCb=+qV$)dxWEx`}u#a0f>Sr3?qh-I5kt!FLip3oUw1+M$4nAhndk; +m<&D2c(LnH`BVHSWQ^0kUffdRZ}OdhDdGuYVE@S|DhQD8LNC;1L)G0>O_8lVa5&2U~IT* P3y +`&Hxy|*BtAig|*Cph+Z9KGn|cvct5e(4jl*rC=FXw6^qZ65PCi+BcNd$E7M`l&@cJgE*!ieh00n`S?T +pxL1Z3S^unA5Du(;L~s=#RVOBcO=m$aOib|xfe=oa}EU=4u#CKG6uEGal#}HQ*{`3d44Ireeueb?IZ# +TNxSFi<;95NLmYDio2&pmfp3y9CLhFsqI6^#ZsZrOj}n$u5zY)@pDHd%3IZg189Q>&8L8}(P0c#)m1T +W`kJt7b2f@WH$+lHXN`p#1Su2T`*}H&M?*tMll%gjQh-+SAlX0WyT+|fN=)~!q&X%Mj0}lD>pchNcy2 +fAg@QaN<|AJ()OARrkXh@P}_jLADi3u3h>0*+^>3zu*#DF6R{x8wJ2x3Mcp3X^2mH-Vl9ad^ac`COUj +&nJcndo9ELKYAOD?r@ZsaRK=gyiTL`9P(9ksZx6>tUs^h}Pi4f~2Uy-~)D{0|7C_m~ycCZ`$Q_3;~ZG +*U5;$mq7;(VZ_3K5Q1*la{Bx^;fd*MKCojWDaN7$gK)<6CX@|kN_to_1~3Gc=pylxp5-rR*Jz$&CIT~ +xIys?pXHfBSVY5E61#oGJQOI=$uIm#S1Gbg|GeIz3izz&NjMD4yg~xp1b$P&h`{DZL{pq`N?-&X5E-d +aj^9~2XmB8Oqm5UY^bezPfjD>uVNZzbotwmgQD7wgC0g!O(@Ihig9;JIh=LBzWZZ5CeWVFtAp1!>z-d ++u?&i1l~`Q7^q*|fdE{4+g(4q55rD&)jfj6}1KvJggKopt-9eANlJ9U0mH8k8lf!;3cYRBRT5(!Yaxg +%bfrU>)+=1N|}dQ%9vLh0V~+9{4K}O@f+4S^so`NhX*E)HMs#i{DQwl#I`N PyYSWgd3hZo?v +1VApz ;ZnB~;o8!_>XR90}cbPh>Kq7mSa+&w&7hv;%(>ZW}jH=`3bI!D`;P}V-1)4JD +6CNp^!1PGH?)LC6PFY&iNsKX|u%C=GIZVxJFLuHBJ;^;F%z#OnW?DIe)UTi*qw?9unzqG%zzHv+)%x9 +&R2b{a6jphh98+JHq#iU{N=V1QmNUHjJVl9SkFugX)&?JSR(QP ha=WHO}Es>^Sn2BNG@7wA +e@;P= >kewKoKqxqSHl2W|_BV4$Ko=_N| I{ +>!-aE!fNpUkR `v~Qbq~VQ2dZ@*fI})Jimy=oAV{Mvj6mP6dOcyvj*0!Y WFdfE&J1$-UE}uBAGTgib7=x*n%U ypF?^W#WxdfFjRnNak +|XLT%9w+BAPKS7O?r>&7;2qdzr<7T{FRT=Is21$d`47lm9j0PD&N`kmKIO?!w0?)F7fjG=~M&I9aUx>>J!=C{-UIx1WA_T?0 +qjs3P_+w`&d0jsc(ONPKhG>;MO3;cvQ^URc0iqe>i=qR;z2MI~G+mtg|!kC_zR&pf^O+Vey tWYsJOnj$A&3dRU|ueY +FY}DtC@$uHh-gsH_f4^T|J;@u1?98=4=Axv3JG6#d5+unFF=rjY0lxIZ^^fnyqCUO|y_ijFsmmXsMJf +b7O-?K=|oiDpIM^ 7yvfx}~)kG`Yg@FbezZ63m;6Vn+Kb+00;6?CaOo~lE_zoX5$_`wDQ_$h +RWyNF@r&(cdGeRXyN=lRCfGcSwrC7A}1=uv>+T)DO<~`1;a4Rql@T1$ M)M S7Ti-fp+4?mja*yh{Wzr6&4@1wW_LzCa8IKr*Ml||||d +^-l9=ycv@HTx*3s< 3B+ss2;v%A!ULqf-TMXq{{`s*Bh$aG7C_C32=;G30w4rL$vfmz{dTCer +>kf9+v!0Ch-h11)I(<(|mvZ}B!aCt=tI*w smfz2)PnC5WKHZ{ew9w#~50BF@6wQe|Z1fSP5?;H!M)L|rr@_QmYQ3t;P!EZ!Lz4u?rU2Amqiv~2EKAX8z%s52b>U>w`f{wsWni>TudiK)+G+X2Yt%R_TwQqHZJTkG +akV8HPvvDU id5tl|{5)aS|L~z9Gqk>DA{Xl8(6nQhFfdMJrg5L|QIM%c^ +C@FK$juu!D(YY_;6_|d23+b^rW-}@%eN|~=j(l8RT+ZHqXn5}gca$mb<)M3hB;|K=Di8%0*c#+6pvJI +>+|ZGHmkF84c-Uc}I1V%ZGnXFO9vlAa_{C_0!o!}*)T13H7;Fe2My3+`1JE#5S5=j=qHtB4Ldv%1X;J +{)pgc0mPd+HC^A}>sF{UL7C5}g=nKyzJr3hmqR7@QTuFpcj0^1&=vM^E#>qu_^V75Xdj1u(9kRz=L=F +k^l$HT(Z ATFm9mz*pla@mNgSMMXl}@8!nYs@J!&=dJKz2*>Z#UW--u; pXRDEqHnj4i)|A*t-t*+n~Q7ZC#Z$bIvbd(l + tmB!V!rmImY89_Ai3n&xQu~qCy@+apI=^`pPk;EzaH7=D{gj4ogyPN78p +m{!I2@D@YOz~w4qRZGe&Burr?nRTUB7YmuOW-oaZdCq9`l)KuC=nIDk;!>&xco9Hi3$E0&bvRY!Ixen +GWr -T>!WF}t^LLjh6@QJ>MfQkdG6yl17kE))(!%XmR<3AUjMX%4q;%eCl*lk8DQIHec ++^!FN7fjtU9R%y%Eo8e8*-seIuo!|erKQbXu& bcOx<&z(oH7rqTMGS#asrcgMe>8^!s-j5=W9b| +k`=n+&r}tlwZ`G(a=s3$|{_V@}{waJ2Kxe|}Jl% )Kfe{31}`k?~U>v>opJFbW0bZG +NRyAw}$B(%wg?!*p90_h_^hE&YsDRUV-+8OX3U`if^cZ^HH$1Xt2Q`HI&Kh-3cS 5i?dQyMQyvmgF@>X8vRK +S;Gl=soT*o3#+Txy`k-t)0@C+Rnp$a=01Wk-ts $4P-VCaT-kE`2j +XRr%2-Q%YsLn42oKA7WP$DsC3E$mFiKF+cg6*E}ktBF?Mw o}HDorEr_}~%Ut& +oYVVjmVD63I>0(2sTrw3>ZvgB*7vE{409Z-$ekGB7qX;esk>ZvcWrnkrWWA43^2N=P*p3&h07tHTu1C +>H<(QO|uI6Oe9n{ug*Pt7NaH;(qg$tFMI(jIK~J6&oXs?NI}!jX4d9Jo9QWAsl(@gk*6Xgn_fUjZ;Bj +fuu8Rg %c_;ITtjotF>IOmioEPX8T0#DSKrr%MEqT*mPfMpI;xVT||$Vc^?KtFw|#xYDM{<9PM +Q*Rwpi<`?L&K9w{dy&w^+HU>>0DO5Uoph416XM~8Ik0ym$dd0Z0~_}NTtgz?(z;|4#K?v>2g!`46!!@ ++nT;$~a)vjW|FNkK~&AIA+=d=_?Gzsio0F!P?; +$WC1s=iO3n*sMv(C{J#&G=R)2Z`1_=*}_*pfl8l9rD`U-i-q0u^}%b#`Fl!{W2As`1*k7Ew)!-a;%xf +8WPy<$hb9KHmEB2u9^x*%~yO!vVt?4A^Xl|0 $~EQ?AJ%De?X`fViq>>65IYwM5Mo*fH@AKU;+);fX^Rnw;g-m8M~NzZNuk-8`>#Ucs}3 +DnxtAUGlJWT43DlbEEov(6D7DinX%*orL}IX~ZTlpJ%w@ L~O#9F%3y*8;i^JbyvLTgpgB3 +{sjX|6rr<4BECmhK`wTs-Mq07H3%&4W&?y4Nh! KV6k< *lN*ch%({ +ZZ679UHE?3{B@I+CaPci`j39-Pu_9Yz|74(=>km`0D6*X8b<7vxe)A%Dbp$;y +H*>o5$U&nwxj(qD|+4o6Sd8%r;+>%qker*J3&`@Q+)2Xu5B) +d7v&DY#unb^I7ez%Ve6Tcp;kgt+~q0dg$gdC@kq|^JJ&5>~_LChn*+=dZ2027L?W-SN^y!x*LSw-wi% +D{O0~SBYnHu4jyvvQagf^%(Y c!JX>N37a&BR4FJo+JFJo_QZDDR?Ut@1>bY*ySE^v8;Q_*UJFcf{yR|NJ@1?R&a3mt>fZD +mx(<_4vdkm|L|788lFtAD@5Hnuux?}HCF=N`^E_nIl0<3tJ#d(GJfv%HW>yG~98-GV|Wv#^2{A=!aQr +3z0YcW!33XZl^! dGv%3%LdwGgiST9U52?~r&_82 +PY;3?2gL!7>jFNhk!~kRj3=(+jYvESjKdvOj0!!8RRummDB-j$4Nq=dr;d*8=fablZ%DL%P?180iSfl +WAzleQJN9keSa~qUo{w+uaU=z_Pi0kr@&?!g+>nGVr+=C;4>m%QQ}a1SZk#+)UP2GmgS5*qbPe*Mw^C +>2eD1Oxm-Wi}TDKq*8kkK8sfYEVt9I-HT98)tNr0_iroRR}c0smk20U%M88cVMdt8?TZ8HITw4G1__e +YRI$sJ2U4aL;G!4-+uO>iXchjk?=1-epVz;xJE_D>V~15ir?1QY-O00;n@WGGS6rU`h_1ONay3IG5Z0 +001RX>c!JX>N37a&BR4FJo+JFKuCIZZ2?neO6&l XaRYo48k0m601%d68w=iTKqDW +5b~UrV*nj!6X+8(I}iG=>1RPtB=9LVM{14WF6F&^d2yc^0ghE?5GjzJs n?LNY17YVesc?XDo +tYKgd$qGcspBrg#RfUDb`Mp|g{bDPF;D#r0k7K_@5CIk_nT^re?Lt*yrmA4O`=fVW$?GE1nePjU@x=X +*QqM(nJ65-rFzBwef%h~omg$xb>FHN1f0j%wmnQUb4j&_X2clid-RT#6luCu4UBttQ9io&xL?Vj(H~- +$@fosLa+r5i<;oBgdt Jeu#G@fiq{~08&d +&=h+EX{KModrR%on--jHA`I70ufw1Y9qKBLxC({U9;(xWV&8VrE?0JXV?IN$LI5Mkz5%F(rpj57Snph +=zR*B|W^s>dYnmb|%ZnZ+nauPwz7j8HVLzm*C=T=M|D7ZKHRRe0xeuj*iil|fb0)(BHDUC_6?7t>1r} +BOzCTMUxW@-Z04Yf&)OvA;kHMB?r@r0)#or_`~fDb$mAAE3+j|;K-1vnuZVyLn&r^@chn}2cl;z0bvh +x5m5g1)q-RUIxyffBr&?vS-(exjt1wdckRy|ZK2i!^|J#CYLTDg%9MT}{4KvMUxT+RF=Y-h h|qQ`WEUzevs^I;2bNaB~UidFu$qr}Y6X=gOT^h?rm9-+#V87vKNMON@<;3 KtQTlk``v|09Fgv_4wdKYue#2O!1=GosYw~3cym5ohPVrNsY6wsCU%sYjo H _b{futx$#9%Ff)g5gnNp5Zfl=_+-!H{c6bc_~d<$I^`D!&k c!JX>N37a&BR4FJo+JFKuCIZeMU=a&u*JE^v8`R&9&i +HW2>qUokio+o{*Ig;H30fwE1SqscXt%ZIQvMrY6Z)RQeE$+=rD_uo5`Ex+t-LJh}Bnpe&9%xJ?f{0%g +3Yk|-SRw5jvf>O5HsJ=8L0M=H351q7HU~Ul_##`u^(x`$k41<6-om2*-_A7nVL2yvAfsS`s!CQl>Wg; +sDhf$?$D%lxMfxe=c4H3M48~}Yg*&cZPmoxm} 6h6|<&FFNN2A4(i9;vMYk9QEBot1n-orziw`hoyB8x@ +cz?>PsQ%->)oHl-yg58F0cL|R1Rm3x2{~y>)OM0-w90N9oHrZf}&tT6a`$sJ}eb7gM~%C7%&M_2;IsT +Cd|pE!UH_ljgukd3mXr&5GSyCbp}VLL~PnQ58AO#q3IRX^@MbeqEwSe!|vUsHw@fj&?xTiDfLHpV!x= +@tj1^y(Le2XwyyB&nE5N%k2K7qbk=88RooJXia|)0Z yl8&68(9r9>04j$Ap~e;!6W}}7O6km2Nt +6BD(^ vDrKF|H$btkD7I4?fd%bkzXmbJAs>hjwyl$mJ?`hzyZ ++{Tf0k$tJ$tu*P;w}%Tyx7~;h@u?6hy4uVqs4do(=Si(IJ%?iA7rL`+Nk4Glntp8W ~=XCZ!5RKFsz<0HF$a|DFn{gJnJ-sL=&iwG$PAsOUKhvh7th0MXRE^hDC +VAF{Up16E6TC%@U9wWb2X1B_(Y%5$U)(=83y7JWBDmf79=n9{Zlzh=o6w7=-TsFhE~sCuLF7Oe*v{g_ +3V%%I8~T!+Mme9KCEbEkw!xi*#$jPMguybCz$ZM(ZRV#lU{0p)QR{JZpZ;2jy^k>&`!%|DldEs-sGQt +F`1lk~(`mBHCp!zh4K+s|y=AQHkOoH7u;UHFQTEUvYt7oDvrQIxD8>ng I!6uH-mgxeP_Z&79ivJhXjrs#ypL<2-u;*9vEG>$L?!g4vV +zDS|sucMwnbyZ&SlxaQa!)nTO1;MOk4*(W!K!FETQ3NFz>D6H7Ef~~U)2m~-7 DK*Hg>QO>m>i!A_; +*CIos~miT3|r*{QXEj-oa3Uv0v>&ZrLv;f3Q2nqOR_MJ_(9eAa8W^H1VG`oC#MNY|I`$JEwIDbYlg9f +dZ3mfHybz L}ru63gQ3~9DK`Ggyq{cNt4qJv +UYlEg-fzAJtxrGU+MJhxS6>f_=nq_6cD|0BI7pjj?1foeeUJV3&Ss}Sq%#Fr*hi1kg?L~Uhu1Ijv9*m +LSp^aF|C?4xJhN?CvrAJhc{4Cbb98^oz2Om=?zoGEv-9 PauAE4rK+BQue4I&RDs +%QR=ApV_CqK3xFia{{zL$3O9+R9itT(*}1s;6|fGnxrgNZoFo^9Q ?}Cmn$Ng`Urm*Y1pCW@b5L#2gVvp#DtHj+gw6;IVM7pdP0pLLDtM?FW)PWoh09yuS +k4N?jJxDum4C7CfB$GifpOW*KDvYK25EVE3$+uvTUp_xM`xIfIX+E;7L?8YDRAntJF25nMO-d6M!@_+ +)uOs6@{7z7Gs;D;i-ZIEzPyI%t**1d&-++