From 38a82d22b97b614d57d8e35f0b81fa11d3bce1f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Perlk=C3=B6nig?= Date: Wed, 12 Jul 2017 19:27:40 -0600 Subject: [PATCH] Added an HTML help file, which can be reached via a new button in the Settings group. --- EditTools/EditingTools.csproj | 5 +++ EditTools/Ribbon1.Designer.cs | 51 +++++++++++++++++------ EditTools/Ribbon1.cs | 15 +++++++ EditTools/help.html | 74 ++++++++++++++++++++++++++++++++++ deploy/helpfile/help.html | 74 ++++++++++++++++++++++++++++++++++ deploy/make-installer.iss | 4 +- screen-capture.jpg | Bin 21281 -> 22357 bytes 7 files changed, 208 insertions(+), 15 deletions(-) create mode 100644 EditTools/help.html create mode 100644 deploy/helpfile/help.html diff --git a/EditTools/EditingTools.csproj b/EditTools/EditingTools.csproj index d4654d2..9507d57 100644 --- a/EditTools/EditingTools.csproj +++ b/EditTools/EditingTools.csproj @@ -363,6 +363,11 @@ + + + Always + + 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) diff --git a/EditTools/Ribbon1.Designer.cs b/EditTools/Ribbon1.Designer.cs index 144c190..5bc555e 100644 --- a/EditTools/Ribbon1.Designer.cs +++ b/EditTools/Ribbon1.Designer.cs @@ -42,16 +42,19 @@ private void InitializeComponent() this.group2 = this.Factory.CreateRibbonGroup(); this.dd_Langs = this.Factory.CreateRibbonDropDown(); this.btn_FixLang = this.Factory.CreateRibbonButton(); + this.btn_SingData = this.Factory.CreateRibbonButton(); this.group3 = this.Factory.CreateRibbonGroup(); this.btn_WordList = this.Factory.CreateRibbonButton(); + this.btn_WordFreq = this.Factory.CreateRibbonButton(); this.btn_ProperNouns = this.Factory.CreateRibbonButton(); - this.btn_SingData = this.Factory.CreateRibbonButton(); this.grp_Finishing = this.Factory.CreateRibbonGroup(); this.btn_AcceptFormatting = this.Factory.CreateRibbonButton(); this.group4 = this.Factory.CreateRibbonGroup(); this.dd_Boilerplate = this.Factory.CreateRibbonDropDown(); this.btn_ApplyBoilerplate = this.Factory.CreateRibbonButton(); - this.btn_WordFreq = this.Factory.CreateRibbonButton(); + this.lbl_Version = this.Factory.CreateRibbonLabel(); + this.btn_Help = this.Factory.CreateRibbonButton(); + this.lbl_Spacer1 = this.Factory.CreateRibbonLabel(); this.EditingTools.SuspendLayout(); this.group1.SuspendLayout(); this.group2.SuspendLayout(); @@ -72,6 +75,9 @@ private void InitializeComponent() // // group1 // + this.group1.Items.Add(this.lbl_Version); + this.group1.Items.Add(this.btn_Help); + this.group1.Items.Add(this.lbl_Spacer1); this.group1.Items.Add(this.btn_Settings); this.group1.Items.Add(this.btn_Export); this.group1.Items.Add(this.btn_Import); @@ -125,6 +131,13 @@ private void InitializeComponent() "ters"; this.btn_FixLang.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btn_FixLang_Click); // + // btn_SingData + // + this.btn_SingData.Label = "Find Singular Data"; + this.btn_SingData.Name = "btn_SingData"; + this.btn_SingData.ScreenTip = "Find \"data\" used as a singular noun"; + this.btn_SingData.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btn_SingData_Click); + // // group3 // this.group3.Items.Add(this.btn_WordList); @@ -140,6 +153,12 @@ private void InitializeComponent() this.btn_WordList.ScreenTip = "Generate a list of all the unique words in the document"; this.btn_WordList.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btn_WordList_Click); // + // btn_WordFreq + // + this.btn_WordFreq.Label = "Word Frequency List"; + this.btn_WordFreq.Name = "btn_WordFreq"; + this.btn_WordFreq.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btn_WordFreq_Click); + // // btn_ProperNouns // this.btn_ProperNouns.Label = "Check Proper Nouns"; @@ -148,13 +167,6 @@ private void InitializeComponent() ""; this.btn_ProperNouns.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btn_ProperNouns_Click); // - // btn_SingData - // - this.btn_SingData.Label = "Find Singular Data"; - this.btn_SingData.Name = "btn_SingData"; - this.btn_SingData.ScreenTip = "Find \"data\" used as a singular noun"; - this.btn_SingData.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btn_SingData_Click); - // // grp_Finishing // this.grp_Finishing.Items.Add(this.btn_AcceptFormatting); @@ -190,11 +202,21 @@ private void InitializeComponent() "o add/remove/edit boilerplate"; this.btn_ApplyBoilerplate.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btn_ApplyBoilerplate_Click); // - // btn_WordFreq + // lbl_Version // - this.btn_WordFreq.Label = "Word Frequency List"; - this.btn_WordFreq.Name = "btn_WordFreq"; - this.btn_WordFreq.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btn_WordFreq_Click); + this.lbl_Version.Label = "Version 1.3.0"; + this.lbl_Version.Name = "lbl_Version"; + // + // btn_Help + // + this.btn_Help.Label = "Help!"; + this.btn_Help.Name = "btn_Help"; + this.btn_Help.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btn_Help_Click); + // + // lbl_Spacer1 + // + this.lbl_Spacer1.Label = " "; + this.lbl_Spacer1.Name = "lbl_Spacer1"; // // Ribbon1 // @@ -238,6 +260,9 @@ private void InitializeComponent() internal Microsoft.Office.Tools.Ribbon.RibbonGroup grp_Finishing; internal Microsoft.Office.Tools.Ribbon.RibbonButton btn_AcceptFormatting; internal Microsoft.Office.Tools.Ribbon.RibbonButton btn_WordFreq; + internal Microsoft.Office.Tools.Ribbon.RibbonLabel lbl_Version; + internal Microsoft.Office.Tools.Ribbon.RibbonButton btn_Help; + internal Microsoft.Office.Tools.Ribbon.RibbonLabel lbl_Spacer1; } partial class ThisRibbonCollection diff --git a/EditTools/Ribbon1.cs b/EditTools/Ribbon1.cs index d02c294..f130676 100644 --- a/EditTools/Ribbon1.cs +++ b/EditTools/Ribbon1.cs @@ -656,5 +656,20 @@ private void btn_WordFreq_Click(object sender, RibbonControlEventArgs e) watch.Stop(); d.Hide(); } + + private void btn_Help_Click(object sender, RibbonControlEventArgs e) + { + System.Reflection.Assembly assemblyInfo = System.Reflection.Assembly.GetExecutingAssembly(); + string assemblyLocation = assemblyInfo.Location; + Debug.WriteLine(assemblyLocation); + + //CodeBase is the location of the ClickOnce deployment files + Uri uriCodeBase = new Uri(assemblyInfo.CodeBase); + string ClickOnceLocation = Path.GetDirectoryName(uriCodeBase.LocalPath.ToString()); + Debug.WriteLine(ClickOnceLocation); + + string loc = ClickOnceLocation + Path.DirectorySeparatorChar + "help.html"; + System.Diagnostics.Process.Start(@"file:///" + loc); + } } } diff --git a/EditTools/help.html b/EditTools/help.html new file mode 100644 index 0000000..acda9df --- /dev/null +++ b/EditTools/help.html @@ -0,0 +1,74 @@ + + + Editing Tools Help + + +

Editing Tools Help

+

+ This is the help file for version 1.3.0 of the editing tools. +

+

+ For general information about this tool, or to download the latest version, visit the project's GitHub page. If you have suggestions for new tools, or if you are having problems using the tool, either file an issue on GitHub or feel free to email me directly. +

+

+ The various tools are grouped into five categories: +

+

+ + +

Settings

+

This is where you configure the the tool generally. There are five features:

+
    +
  • Version: This tells you what version of the tool you are running. Visit the "Releases" section of the GitHub page to download the latest version (or older versions, if you prefer).
  • +
  • Help!: This opens the help file you're reading now.
  • +
  • Settings: There are currently two settings you can change: +
      +
    • Edit-distance sensitivity: This is used by the "Check Proper Nouns" feature (see the "Proofing" section). The number represents the number of changes you have to make to one word to make it another word. The higher the number, the more false positives you'll get. Too low and you'll miss valid misspellings. A setting of "2" seems to me to be a good balance, but play around with it if you wish.
    • +
    • +

      Comment boilerplate: This is where you add/change/remove comment boilerplate (see the "Boilerplate" section).

      +

      To add new boilerplate, click on the blank row that appears at the bottom of the list of boilerplate. Give it a helpful shortcut name (left-hand side) and then enter the full text of your desired comment (right-hand side).

      +

      To edit a boilerplate, simply click on the entry and make the edits.

      +

      To delete a boilerplate, select the row by clicking in the tiny cell to the far left of the row. Then just hit the Delete key on your keyboard.

      +
    • +
    +
  • +
  • Export: This is how you can backup, migrate, or share your comment boilerplate. When clicked, it will ask you where you want the save the file. It will then create an XML file that can be read by the "Import" function.
  • +
  • Import: This lets you load exported comment boilerplate. You first select the file and then you have one of three self-explanatory choices of how you want the tool to handle duplicates.
  • +
+ + +

Editing

+
    +
  • Apply Language: Applies the selected language to all the text in the body, headers, footers, and notes. It does not find text in text boxes. I don't know if finds text in frames.
  • +
  • Find Singular Data: Where I work, "data" must always be plural, so this uses natural language processing to find (and highlight in grey) possible instances of "data" being used as a singular. It will only highlight sentences that actually contain the word "data"! So look at sentences around highlighted sentences to find misuses of pronouns referring to "data."
  • +
+ + +

Proofing

+
    +
  • Word List: Creates a separate document containing all the unique words in the document. It retains capitalization. This is a great proofreading tool because it removes the meaning of the text and just gives you the individual words.
  • +
  • Word Frequency List: Does the same as above but also counts the occurences of each word. It puts the list in a table, which for some reason is slow, so please be patient.
  • +
  • Check Proper Nouns: This feature gets a lot of use in my day job. This tool generates a list of proper nouns and then does two comparisons: (1) a "sounds like" check and (2) an edit distance check (see the "Settings" section). If it finds groups of proper nouns that are spelled differently but either sound alike or are close in spelling, it will list them in a new document. This is an excellent way to find common typos in proper names that can easily be missed in a long document.
  • +
+ + +

Finishing

+

This is for tools you run at the end of an editing pass.

+
    +
  • Accept Formatting Changes: This lets you accept all tracked formatting changes with one click.
  • +
+ + +

Boilerplate

+

For me this is the second-most-used feature, next only to "Check Proper Nouns." If you find yourself typing similar comments over and over again, then this can save you tons of time. To add/remove/edit boilerplate, see the "Settings" section.

+
    +
  • Apply Comment: First select the text you want to comment on. Then select the short name of the comment you wish to insert. Then click the "Apply Comment" button. A new comment will be inserted containing the boilerplate. Edit as you will. It's that easy!
  • +
+ + diff --git a/deploy/helpfile/help.html b/deploy/helpfile/help.html new file mode 100644 index 0000000..acda9df --- /dev/null +++ b/deploy/helpfile/help.html @@ -0,0 +1,74 @@ + + + Editing Tools Help + + +

Editing Tools Help

+

+ This is the help file for version 1.3.0 of the editing tools. +

+

+ For general information about this tool, or to download the latest version, visit the project's GitHub page. If you have suggestions for new tools, or if you are having problems using the tool, either file an issue on GitHub or feel free to email me directly. +

+

+ The various tools are grouped into five categories: +

+

+ + +

Settings

+

This is where you configure the the tool generally. There are five features:

+
    +
  • Version: This tells you what version of the tool you are running. Visit the "Releases" section of the GitHub page to download the latest version (or older versions, if you prefer).
  • +
  • Help!: This opens the help file you're reading now.
  • +
  • Settings: There are currently two settings you can change: +
      +
    • Edit-distance sensitivity: This is used by the "Check Proper Nouns" feature (see the "Proofing" section). The number represents the number of changes you have to make to one word to make it another word. The higher the number, the more false positives you'll get. Too low and you'll miss valid misspellings. A setting of "2" seems to me to be a good balance, but play around with it if you wish.
    • +
    • +

      Comment boilerplate: This is where you add/change/remove comment boilerplate (see the "Boilerplate" section).

      +

      To add new boilerplate, click on the blank row that appears at the bottom of the list of boilerplate. Give it a helpful shortcut name (left-hand side) and then enter the full text of your desired comment (right-hand side).

      +

      To edit a boilerplate, simply click on the entry and make the edits.

      +

      To delete a boilerplate, select the row by clicking in the tiny cell to the far left of the row. Then just hit the Delete key on your keyboard.

      +
    • +
    +
  • +
  • Export: This is how you can backup, migrate, or share your comment boilerplate. When clicked, it will ask you where you want the save the file. It will then create an XML file that can be read by the "Import" function.
  • +
  • Import: This lets you load exported comment boilerplate. You first select the file and then you have one of three self-explanatory choices of how you want the tool to handle duplicates.
  • +
+ + +

Editing

+
    +
  • Apply Language: Applies the selected language to all the text in the body, headers, footers, and notes. It does not find text in text boxes. I don't know if finds text in frames.
  • +
  • Find Singular Data: Where I work, "data" must always be plural, so this uses natural language processing to find (and highlight in grey) possible instances of "data" being used as a singular. It will only highlight sentences that actually contain the word "data"! So look at sentences around highlighted sentences to find misuses of pronouns referring to "data."
  • +
+ + +

Proofing

+
    +
  • Word List: Creates a separate document containing all the unique words in the document. It retains capitalization. This is a great proofreading tool because it removes the meaning of the text and just gives you the individual words.
  • +
  • Word Frequency List: Does the same as above but also counts the occurences of each word. It puts the list in a table, which for some reason is slow, so please be patient.
  • +
  • Check Proper Nouns: This feature gets a lot of use in my day job. This tool generates a list of proper nouns and then does two comparisons: (1) a "sounds like" check and (2) an edit distance check (see the "Settings" section). If it finds groups of proper nouns that are spelled differently but either sound alike or are close in spelling, it will list them in a new document. This is an excellent way to find common typos in proper names that can easily be missed in a long document.
  • +
+ + +

Finishing

+

This is for tools you run at the end of an editing pass.

+
    +
  • Accept Formatting Changes: This lets you accept all tracked formatting changes with one click.
  • +
+ + +

Boilerplate

+

For me this is the second-most-used feature, next only to "Check Proper Nouns." If you find yourself typing similar comments over and over again, then this can save you tons of time. To add/remove/edit boilerplate, see the "Settings" section.

+
    +
  • Apply Comment: First select the text you want to comment on. Then select the short name of the comment you wish to insert. Then click the "Apply Comment" button. A new comment will be inserted containing the boilerplate. Edit as you will. It's that easy!
  • +
+ + diff --git a/deploy/make-installer.iss b/deploy/make-installer.iss index 4fc4187..3683e18 100644 --- a/deploy/make-installer.iss +++ b/deploy/make-installer.iss @@ -34,10 +34,10 @@ ; The version number. It is suggested to use the semantic versionin ; scheme (http://semver.org), but this is not a must. This version ; information may contain text. -#define SEMANTIC_VERSION "1.2.1" +#define SEMANTIC_VERSION "1.3.0" ; The version in four-number format -#define FOUR_NUMBER_VERSION "1.2.1.0" +#define FOUR_NUMBER_VERSION "1.3.0.0" ; The year(s) of publication (e.g., "2014-2017") #define PUB_YEARS "2017" diff --git a/screen-capture.jpg b/screen-capture.jpg index 2d3b4a65d70109d5188eae4c60ed0a4e39271401..1281aa3c21052881670210175f766f19da0841d1 100644 GIT binary patch delta 14306 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 T`G5WD`~O4e|AEYB4|D$u)dz-E delta 13390 zcmb_?byQs2vt}a+Bxvx)2^!oT0wGuk&>^_HyK4@RAi)B3a3{DEq;Uxj!M$;JcOQQ5 z&3pG|*4&vl@<*-HeOB-4EmdDteYM9+5HfNQB1e#-k&w#A=aDPwpZrFw_=c+T0=f%+ z3GB{QOAQ9vq$e}FixnH$&zYVN<+nT4DJdzzh-kgB>$xmU%hZd}?0Jp@D9ejlQa1Fs?u z;=XB$H0rGbURWlIS8B6H51>Evf4fvBfBFDQr?{6Nd;oP!%9F#gfMx zTLjp-0#4JFdy8e6-pSu~W}wz*u|Y8?NW{phEAn*RL+(2l6svB?zHFhxaCFKdW53e$ zc2ZN`9SRtXl)$YLLO zkC7xPALW7+$~Y?hr5m2A`>uNAS28+GVotq|Pw|$>tO9}?b#z;c(Y_NRt_lBam3vXo z-wjIkL^MaF_(PX4?D2G6Gaf*GOb?(gMh|cCAL4d)4!osCqp?(k*`nZ)BU1z%er^`x-^^3-0<(h2wl6J`Cb&2r>Pi3T@!-_{g9qIsmp*_yiTHyo_lCL4sU~&}#~GQHW&87B0_7Tfwx9^;lK6+!s+XGP#puzt73n zDk6Fvi3)KUgL$-f$-C7j@^;vDVz%$~W0i$hSM?W3i9w^$sQ4lUFnIIS>WEtR!rc!? z%7I%CkFTqP3ZK?Fx-_F#RA4`AY6vfQT_+CTL{~;@2biFDIQEJ?uO-4rRgflHg{Dyx z0)rJty5V_N#aYvOGlTXlBQ6}j!%B+l16q41Sy#HGKF(J&AU02B-k&a9JkGoGTe;-j zR`bEl11MZQ)0gS)KexsF22XE3>HcxIF2_UuYeOt>CZ3VtefJ1PF1^0k#>4_Xs9K`E zKErqb=@>tNhTza*Dng+Om)AJbIhTQL@2y;;Y#lZfC=fB)i!{hC%9t)yztrWV+2u(Z zh@4fbK{1B48hU9Wow}7AJ;_r8eaWCl6!-w7q&BNwr(iqQdO|EIofVhesO0{WZcvHf zM~Ze$W>p8Bz9Mzn%HDp`erG>YM7+r9R!}5XEut^;|9oi-!gAT#?jiC7BsHl=EF<=r zDncU|46y!Xcc_DZYdpcL!JSMY}&s4czlvnvh4QdpgEzXa+UD=Dl zMlgbwQsDy`Q0)=JO8;#gr5=`jEo)q!U&!CDUkwo5z0%SeiG-t!?T*c_?559B-bguw zC*RIVzdyr6VEfDJql)#V#0J?}T}uxZp#DBS2wAXk?wh`zJr=g&+*%laB2kX2dxXOY zg8)Ui=*pc>>7C2#Yb3~%H+X~0_HbQ|{xx=0O%p@j}g5hA54y9bcip2PzPQSAW~ z@sX8>c7(agYa*=IDCN!D+^5p!E6NZrlVI>g?!48JmIOC;kC{V}I7;%hrH&s}3$kD5 ze#)~Csa#=)pnt_cK$F+aL2s(n&Du@Efw&KRrV6IW$j?Kf{>P9snd!^Q^*snD(y!E;M}>t34H*C{@7D{eTrW9 z0BTx(04;Cd;UP%;?F|50-n>y6yhCDbKB#HFtZSA8LH_<-bo?!4C!>QGW992+`gD-$CLj+g6kQbCUk`KJp=*xrC4(n$= zO_7N9#HbxmkP@wIeGCzOY1bD)51=>EzRZBs4ztxu(n3(n^=CPV`eV)`ICEdic8o6q z!Y8dh8t5IYXGDFXU8>uNRhG|?{`>*-mj^R;;DI8DexP=%cJ-p$1Sk653`fCL?F5b!Z5w3q~jG&Nh-NCN7@ ztH321Uz*eokfZ4|nq4jwP#PiR7~`vlb2%wo)6B7nJnQjAKWj0K)hGB~Q?^`TO7pLP zOZG!R%V!5zBrdg0HwtMcR%BKFPimpP0jcw@K0itIsn83sgwIz{_}-U~xpceOsL2L) z*qV&Nwd4xDCS`_#ad-h|yH{V*%kbbcRblxUCRi~Th z=u|dqv|0hq`|a%C;hit)oE)u@i>TjdyZ4r>^<3cbm(~4uCA*dKrN~d zpq1~?9wrPaqSz+<+UnR|72ZA?!L^AWO!<_Rj$eJjT`XU*vE8pclb^?_jVNT4=)tw6 z>8E*8m^D3)GVEwqEU;*tyOStWIpepbT*{#tj9{7H?%oiT9HpxNhStn?P2(d01 zn!!OVCxD^Wnz%L)?vMl5p1DhOYZg_Uq4UEX{N7;gU3GO>)ROV*_|uuZ%MyzL+{-;M zg_)3WBCgm;xO79x@c1(&397J^y(7ON$NazR6BW?gwXu6QnRWDJ>&Ct+Wa|S}O`-+; z3E6wgvb|{{1Qi**_tBmaKic5liHd>FbE2kmw8cgCwSz7YtfdYiC>BQ~-n3zayY8zf z;|NK{%@r!YMSr1?Y-k!27(jMYRfXFHlvwW?sM{=6MSUPlCsADYf{rC7Jb+fIvF;q9 zSJ@Iyc6mCQeRi~SWwMYT_|?|FQm;3%-#=DZFM{rCWp77(xf(uX>ug`Y3Vol*&$b*x zR~`H2O=12)ga=8`ipE3}mX#uIn+x)GqBHMHns8a1XTPotx`>eah=8+x7j6j3W9^1& zTFM(-=e(EOaW3+5MZP+g(9sq>7*E(YZ%Py*^W<1oU?oZOBEUtca?Eg)dNlhRWMriM zu0%?&0&l_Jm#SN+wTp-mON8lXrZ4+hKNqAXR2nKTXJIy4(!NL5-j7prY#ip>O0>a> zr7$k>VTgxC>U#O!3((@?u8uv*k_Bi!DVNJJ9caAOSn*t0TU~t-(WrxmFt8=4P+?Kh z0p#`DIGc`UR@X%esNqm|PeZVuqWtdsq?^#iUlJ0+0LuKEh#`x}BpbsDk%hdFW z2M}c8Y(nu4BM&KV%$vlkpr>e%w_KzMHqZnpt1fd97wLNlg?6fAx0J)BX;vmmE#Ri5 zMn$>`N7HhcSw^wTCMhH8q;Ih^F@ii1YqeuK*H~%oX9xB)7}yT>leH_$}4A9NK*t1kGFKG5tgN56wpF_jMk+i$K$QJk{?srTY z;n2zTac7>KcgM-+JVms3LdXgk&51q+O{8J>#+bk54Op4nW3Lm-LK5Wo=^6b8olo~N zd)}cp#}K%HyD=J`d50d7{cI7RzVT-@XCX2-8Ccaw)(!eOLC8zF3Z}1#v_vW#Hl4fr zwhJ@-ds?Ru6nvY-JEbnE5q)5^#Ky*U*V!wSE|ycu1Yjt{ipyCwlm#PiJWa}V=YxdY z3xy6=SnKGp{g!uQ>G>Drd^-L&$l;1WA!@;&85Se=$%6yG7>@LGbZg*&z%C9ZZ}Ot+wsZ{Mo$nfrPKK_yW4WXgCv=6kr=aIVPdPM z5KEU({L+Iqc3<8QkLp;H-O#oR-3{hG0FIf`W|WaXym`>v(l z$(hvy$hY{h1ZO~KA|G8H@#f0eI^o@7u`vo5@G9^HFqx#FzD!ZjWG0tKA(cb^X;H1T z?O@5NB{dnD5g`zA+nbwr54=zN7$0;S#0u=pQ`|j&$B_>Vj+fpe!XB&L%=vkjy4dA) z^Hq-**r+QEAf>K)iUSBz5j0Si3Sf#n%nj|#&(@sZPV9{1nhjQ-QE!89!VY|CQ#%)-+r$+dV)pvCTXumqdu&hU-=_86Qni26+BA%x5 z4ZTz`ZGd8+*7U-ATi$BK{pQ!jW%y*&$?oL;tioa0hHgfQfJ?h9$&s4#7qCanb=P5m zxU1yI{tS85Gh{ujO|$*Fqu+n~B|n9v|A19zd3S<$Pb=C9=;sq^`lu5#^KPVficgyp z9PDiJP%8`TgKg=n%=u(=**~vA-FmUUCp?ke@#ktmIuLfsnOT6tXQW+RO`5D;=?ck) zv~QQzBU7PE(D8mwCYyWWTm=m91?0$Cxm1n4po5L)j76=&=5v2@u00PVL(Vc25#!&} zAp_w*NxKew0G0d%Hf=tR5dhmH_jNrFpo}Vzq2)bIlHw6rcJha}=T>WXO{xQ%-V?7d zh0x0c2CY?U8y?|gJKEwzhjUhvQG)WA<`qeel3z0G_*{(W^h_hF*+%C2bm*R%3Ef=yMdVb3A0Tav~uE3S-G@6*3;okJfqWwCu z6b#G9JA$|Iz@>4Q0Q8XOd!(@_{6vGoE(OFCL1$>8pLy;EW6W%d=5;#EZQgbNHi={+ zWa%}4fe4e&I(WOHtdche}|#uM9`*f)vNR) zsg#_|jKFR9vY8>~qLI1(O0v;Kkg%t6w3RAkdw6SrnP0!G;yE`JC8!8?jsx2{0%(m;S159C}As3l_^nO zd2M*N)vl`%CZiqmO+Y{0UQs}J=xIPu7&nV7c#lms+$MZ7fd)sa7-z*P&;-G^8wK3D zxHyaw#w`~BL}rhL7#_P7RsZblTW{*VG(lOn8%<4~FzNEo(8JQunA7b(vbcVGjy|jv zeT?$rb~_y!wPwtKBG5Gv5c@6vGI~cX^?d*B97Zzlg_1?7HF{+4s98@G3?I2fmJ&xD z-OyKX`fP>>qnmD7wKB#afo0DmA!-`Q?~9TQyk*q^7!Vv6Y6hFDsvaqdY_a!Qv$jWx z(}YlokcH&KvBZ-fZKSC08}i&d+E+FgA+3ZGJIUF6-n6>8a!~NA;GO|?A{+%&FbcRx z-l#3klP-ug>W7ZDw)Xs%Y;F(nmXZuqzpl_DeK+VJW#((kMnomTEMKs5$Jj{Az`R$C z_7xlNTA)F#a!+_jyM6!-ZdBLH%EGvyRtGKjm^1ajB!*b!gr@P_XJ%3=&%JA5{^@%t z$fTqz#V%0$w*-JP)_)RQjGlgfRpSQUu-tdT+>uDIZi~!N{1||IfTdf zp@6|#-!clKF5gYC;m~D8zd%$E6$dO}VW%g2W+j7hL|bAwk}DXP>iaZWT`y)@Y5Rm` zx(klz7o2GwD9Q6ve~hWfJ9WZ8rKD@m!DSAd&R^NutVB;}lcfi+9fybfW=F%vm`W^s zOxJkY>(tI&=1YFI+U4};s>f8phiQUwor641h#2!0DTR*)30%^i%~?{|X#p5YLfm6T z1ihOgrHSec_F#ph%B5}*_fz2^Qk60UVa z`fp_JH&=rqj3xO?!BtkpAAo&&1A-s9w4pCcUsYw2NQQAC_N ztq5jXou<2NXp^rcQ}&9M&DSeNgueq(QD1^-uYQsqKVKZTA#AJ54+NO1nh4y^VRa!~ zgQn{5qX%T|>*K&vMY%LiLm{BK$4OL39v9ORS`W{)L#1|*15|nW)f@?5Z7VN}RLCkH-DRfI? zlEOvN3M?z}@ZOhEJ(N!(OD4cdoX^MvRzDQ%r4PWS84xnd=$>}*!xJhpInU$Nj zW`=gWsI1Qc=4u?td&SY|_*;t<@+7oTmPJj$D>Tn0c3tO-EH3ZKTE!kRHf{htJvAsI zOVwmDyokz%Z})t1vJ_VR>^Ey@qbf>b> zbwu**XMM9m0+`J1OdUB!$&O!XT?+2clK^bW{sK0o6Z@#kl?FE0FDgw4s9!N+o(r>s zJ5jWKU1I(*j44XuK@k3T0?`IaA1l?8+(!!JG5@at9zc4J$%~HSz3&)k?%h2Zn_O*k zEq@4{F6OQU+%-||+>CeS`J`hqL^ug82|R&T^~m#b#Z3G4wBpcesyix}M})#(LJ65;F#;xv-sdoMw)CcdR42xgYt}O$awY zX_^dR=jvoYvcGJW)KW>=HxZkBZStb3C{s_!z&=$&XE6qhM0ymqsv`FdtRd->+e6xO z_n0y`(Ts8{kn=^zL?YJoE_S#2ks2lIPq=0;?WvN?iEayZ)Qs7>1f*JhsSth7Sp73| zU1T+2^BG&TR^D72w?&U_? z(N(|!Eh0PF18A7;3UV5Go3=f8dwSD!miAvlKVrUnLc%s>#DhL!ATYYloLtqr!K3-L zE--PrvVXSW`^-*QC)47hLUV4OXbl!+lyrfE|208^!4$317M%my(+#E!@x08H^&+U( z$YrRwi|;y@^*-PusrJxv+pw4mZxq;4p*xI^Wsww}u3XTC&zbe!q)J1N&o)FAb!X~G zo%GZW-+E?`_m3(9w#RbbaZz1vru4yvPrm%fFsQ+<9S}z$PxjSG>#TcHJ<4+8J;c&8 zZAWb#T)}$&E5(;H(#^jb9OxJxF80EI8oYRBU5n9kT9)`v-;7IK0p>}HO*&%Qp&xQzP$Un0{M{{dZZjP_S5HcQ3qcW= zbo$ZB{%#^l(;_jTe|#`i^miz6gFG5zcZtR?f3%1%pQldyOP}o!3SI>4@-WSOv;lb9 z8Fw3OtbN^B!DYF^#v5ahryb&E_ZiJQMQPV0%4dIr8!_Br?U?FpCzq9QrCuAwj}byv z@hkrG^BuYvIjFM-alO`Lzvr}FGugba;I8RkQ%RSDVjjUd3JnZG<#d-5B zou41HV_x#HU6je4KnCEBx7EmKtc1m$y&%Tplq28lp%-A7d$VXu`uU@K!TEXbet-Yj zKvLFs=pJEp8BH->8f*W}cy(9!w6(oh&xbLj?9AF);g5DkF2b~SRnHQyg}5V#R%X_D zYT}Vsy}!5_+RJX(y?lEVP&ouo(hG9rs%{Hg;4Y_$O3BeQL1q zD+@Bb+uxq$!bcq-7iCrQq~&^f-Rp@N#p=2kTk9Wp99M^pUyD9`wB zgQd5Lh{klBOK%d8!uF`07_?VXEx(YzmeYG`Q8(XcMDui??BJ(5HpO=iW3@PDOa(lX znypbvvT(fM9U99`Hztty8D1smgCySH1pxhH0;niyv~zI*5eW!PdD-Taub{6LB>xNl zMMVX|P&KwM7FdANSJG^IQZp?`Av*K=M1@c@_-j-~P=C~Woaz>p4-U1;8(~hdU1FG- zA!~M@s5Z}ueX9C<-$!e6_nlkN1PV}daL6J7c9ERs5e6efwo zvRd<{Ti(vKF(I#{HEm6m)pz->7X)em91Y#9{B$b}2VrDb+gX&lNpIInXgZo{b?ixX zMgW3I*i7HcZmwZ1OBfld$*$${<$BkyqfWmO@T7TatqB(W_PvfI(QF6%>Supctjfqw zm5+MVJ>x=lE2~q?{I@00c~96w*gL))$44S0Lu(vG1dWd%Y2X>g;2DJ`tx>@3{B^lN zfbofNIsH7Rb*mEURqY_zCQ{}fL}3EaPbSXqG{%KS)H4x`B!BD4`qKZMUHqrdd91G| z;SZq6kB@B@9>u@sAV`*=RH%V0HPl`f9r{I<8el>YCd?F z7u9RNX&Y2XR(<60e!C~NVfa{Z*LftAtl!`vGl$e01+L1d;=NqS5>608P~Szf z`|Rl=;GlznhcKvp$vd&WE=_nb)XID~+h>KF9wBQuT@?X=iE6GQB6K>WTHcrb;4KPx zn(bx$jYN`Bi_=g=B-q88yrBe3#M9_q2&g^um!~&j)a;v4`Z(7(3nGIm4VL=>!W`G# zjS{DYDwFMd3LgsNqBQZU z^4hUdmQ`Y9Pn(6QImCewtc%E~K3P2{JZsBCZ%p<*kf%TvklTyYQODi zYP2_;CHF&vZGWrD>wIC-OPc-5o_@k@kp0 zWcZjkLbcz~`*x~-T|FT~bv9wDM>aM#D%FMqpT!C43Kz62`J%2mG}jT<;`hnaY|o!? z7KuSz@lni|tIX5Ub&!6Ye(Z^JqO1&!C%#MxQ*(EU`Ift8B~l zxWjg!kEI=kuI(=&vo?i}(5b!xFCG>nLR&&Jx328AW;?LX9<}K&;)7J0N(KAH*mNrc zs|9KGt)xbY{Qz>%1YLEYS04-Y4I>)csmDjIfM})74nNzlX7<*r2rSLr$EgGh3&wh8 z#d-SN&1HQQY?yHHFa?8^S?#;kO;p6;ZTx4s^g+echhGmjqwUJ?!lndv;wa0pbU5*G$>b_64pYM(koQ20~Ps_9hg$EwhJXthi@-yf|q<6PxE9YZSB z6(GMIgMSNPIU_n_xSw-Dv~>K+8bv^e6+9tQ6V2Q53u!0ytp2e}NfeE$#6a)&j5q)y z%Ma3bv}F1l&gK5$?Ej8g0Al)M-}pbur*RQ+hx?|<`?|C{ggit~hD_h*{|7=@{s4+} zf!#UktulK0cioFmES&WKk@=hd(Y-++aqXNApIQ;&(x%M~VLc^7g8(&0_?;PUMer`H zl$<_fE23z%slcZp!VT8DPo1bi>{7e=J0u#T3Gb3V`?K2@VXZ$g%z-X_uyaFiHm@a& zD*7nv;^ZJ4fES%Ev#TLSPi;XYe3t$k`!cuPGbotbe2+WNCbRBmqlb+hT`bPAB#mY9 ziFgAm5w>gCR}x0v@Ns~9fn+BR_-h~Wz-2ezR7GkW!0NJYFV!INg^=M{FsY`wL@ ze8|rB@J;ehsXZ*S6;pNuBO?9n(FWbjMIE91G*~fTDHvA#K9mM}^T(o@oRh@DV)Iz-L5S)~%|2fXeR;qcvIXl}RwT(bE zMg9DftE*1Bu~0Rz678jr^z#qPu$*fN!N*ZiAp&XDfIcbHj=ji7g@R=5&alRkQ|EJh znTJ*GX9zD$AMZtB-Q)RGv+X|yt4|cS42T{0dVA%7tKH4v187Nl#_)c3;bQ5L>h)#* z@DD?P|HT+Jl+4S|N})GiY7^PxYonE0rGvATH+*sE1BmI`@6{QN))yl^wsdm;`k(UR zQ!>nnta@Q0ZaHTHG!xM>0F&EAf-w ztlg5L?OeYo>Qw}PE&f4ngz%hOKqA_P7eiWoM6}J!DNC;4*RYPqfD&b(BvX|be#x-mtT}wN3G!^|WNn z_gLOcb<-#u`sZK`#RU{YGkRecFi+YN8%D=cVNzfI{#t!aZ3Kh3mX~iiP8a!Jf$(J1 z*S^%^Fnth5H;NuKO@R0Pd_CYrVOo``g!-N+fyc{%@eR z5M>IgYf>{U;SfcwrQ9ugwmLy9&kss`@ZPN=UgBd7s7K>I42}u3Hz*2 zM?6&4e7yf9Uaulyvd{F3KUjb!k21XRg0&wOBrIZ;GdCq|=0ZallFyM+LhGtRBu3U_ zf;Mh1HQL>}o>MgpR0{F$O^|3s+mwVa%d(|WCxmbknpsz*6iNS9BswJm^#pYihru9I z7Io@Pbu~3(F`DZ~hRRx2eiXDu!q|(L&xk-&b zT_k~wg~z<>cQYI52<`(8TGe&7;btCWb5&VA!Z!BZH?;f!S2s=E=dRzqSk?S3B~H4B zJQ2kf76t~dMt3PI2$&0P97ig_H%aXwSw^|>-#+()+&;WcdM?UQE8dl3F|J{|_*O+F zo-qtz_3?=B{!4DH{I?zy{fzm4I(!ssdbrHnctklM?^D+5`58BYX-Mh$RC7Jw-6e4N z<1dg9BVZ_a0NI4zQ~(Q)caNTn{sk-uhW{{xv>EFAo*Izl3uUve0-xS^y<*!}C?rTB zs;QOnkNt_ePiwSjO!_VUxZR2~2+or`m!{Wr9aSrgTO*EeW4~$-Dc)9Fyisg>d5b%>_*Y z&;BAJ&;C2yJOUI4fT`A*7*T-|%$-C=ATPtxkv%&iol~42mB@vvB;PVqX=lBXDy{jo z!Oh7ov(>@Q>S+;6rTdxuyERiQm*W9(^Qg#J`o8abHt`_z)gxHpmZlWU!A|7XZQ07$ zIYiFF)@F)nZ-#;7V-oYcMu7^Z%U`jSt%B?^JU#gEK= zbrmt}p0*CaZ8NcADx%hr6X3JfKjKX_gEuoU^64MT4tTV}8K-Y$5^p4G$0>(ckzdLg zn3{0Dg`o*A(+Z_hX87v2zjA4%;Bl7E+3e3FS+U@#;WIq>)B{YSdPh!e-IuO)DO?Wn z=we}Q@}5Tna7i1Fa|_c5fGVrje0T-=TPH;Jh3_IM185Nub=mio+=|eRkHR`h3Ne0F zd1KYj`dYcU8C~aK|F3KQE!-`ndn?FhkzBUkfLrD!pIRI?T`n^p+}B(}usilpThO0? zKUtpvRPkLm!PZKb4Z}k3FnYm?FU_JRaeZGX@5eO2*@a6ZOT2~vU&UiaV^vNSG)?hZ zQbgazZctMtq^03XK(=$BNZ1g)Lb9Q@XLkA=iS-`x)a{l|Fg5X>xqhtJsHS4Hl*+%8 zpT^XcQyMEa{)HL(NFe<>WjTobLu!)PINgM^`vGf_Nm)!nOhycu47}ag?yWU8CujQN zX~9R~%|!gx=96MpbxYJj$MgaGb6ce6wlKcl#|$XoYt`uP$OMw-QCBigR|;2h zw1-X z<9pyglI8!aX9-G|X82xCExK!595z+8DidB&dP@HQLS_i4b`fo-esB+~T1VcYqHkus VTg%qX41BF-@+X;wgzzx^-vFP0_R;_V