浅谈OCR之Onenote 2010

上一次我们讨论了Tesseract OCR引擎的用法,作为一款老牌的OCR引擎,目前已经开源,最新版本3.0中更是加入了中文OCR功能,再加上Google的更新、维护,可以说是潜力很大,值得期待。由上一次的测试结果也可以看出,Tesseract的OCR结果还不是很理想,尤其是中英文混合的文字,其识别率有限。本次我们来关注下Office 2010中的Onenote,调用其API来测试OCR功能。

PS:在公司经理一直推荐使用MyBase来记录工作中遇到的问题、工作日志等,但是我一直坚持使用Onenote :)

测试代码下载

在Visual Studio 2010 Ultimate + Onenote 2010 x64中测试通过

转载请注明出处:http://www.cnblogs.com/brooks-dotnet/archive/2010/10/07/1845313.html

 

1、Onenote 2010 新特性:

New features in 2010:

Gather, organize, and search

Sharing and universal access

  • Organize page tabs better:
    • Multi-level subpages
    • Collapse subpages
  • Jump to any page with a quick search
  • Dock to Desktop
  • Link to other notes, like a wiki
  • Quick Styles for making headings
  • Auto-link notes to Web pages and documents
  • Insert Math
  • Notes on Outlook Tasks
  • Send content to any section in OneNote
  • Access from anywhere:
    • Share on the Web
    • View and edit in a browser
    • Sync notes to OneNote Mobile
  • Share notes:
    • Unread changes are highlighted
    • See author initials
    • Version history
    • Find recent edits
    • Find edits by author
    • Faster sync with SharePoint

   

   

Examples:

   

  

Organize topics using subpages

Drag tabs to indent and organize pages within a section.

Keep notes visible during other tasks

OneNote will link notes to documents and Web pages you view.

   

   

View >

  

  

   

  

  

What's new in a shared notebook?

Unread changes are shown automatically.

  

What notes are teammates working on?

   

Share >

  

   

   

  

Select location when sending to OneNote

When sending from Outlook or Internet Explorer

Link to information for yourself and others

   

   

   

   

Insert >

  

  

or type

[[page name]]

   

  

   

   

More Resources Online

Videos, templates, training, help, and discussion groups.

   

Microsoft® OneNote® 2010 Guide Notebook

Copyright © 2009 Microsoft Corporation. All rights reserved.

The example companies, organizations, products, domain names, e-mail addresses, logos, people, places, and events depicted herein are fictitious. No association with any real company, organization, product, domain name, email address, logo, person, places, or events is intended or should be inferred.

 

2、Onenote中的OCR功能

园子里的朋友斯克迪亚很早就写过一片博文,详细介绍了GUI下使用OCR功能的方法,当时我也看了,想用编程来实现Onenote的OCR功能。后来忙其他事就没有细究,国庆假期我正好在查找一些OCR工具,又想起了这回事,于是多方查找资料、测试,今天终于是略有小成,特与大家分享。程序还存在很多问题,欢迎拍砖。

2.1、关于Onenote OCR功能的一处细节要先提一下,那就是如果从网络上复制一幅图片到Onenote中,是无法进行OCR的;但是如果从本地插入一幅图片到Onenote中,则可以进行OCR:

左边是本地图片,右边是网络图片,可以看出,网络图片右键菜单中的【Copy Text from Picture】是灰掉的,无法点击。

 

2.2、我用WPF写的小程序界面如下,和上一次TesseractGUI如出一辙,不过是换药未换汤。

左边选择图片,支持本地图片、网络图片预览、缩放、移动,右边选择输出目录、显示OCR结果:

 

2.3、MSDN杂志上有一篇文章给了我很大的启发,介绍了Onenote 2010中的对象模型,感兴趣的朋友可以深入阅读。CodePlex上还有一个托管的Onenote对象模型项目ONOM,对Onenote PIA提供了更好的封装。建立WPF项目并添加引用时要注意一下:

首先,由于与 Visual Studio 2010 随附的 OneNote 互操作程序集不匹配,您不应该在"添加引用"对话框的".NET"选项卡上直接引用 Microsoft.Office.Interop.OneNote 组件,而是应该在"COM"选项卡上引用 Microsoft OneNote 14.0 类型库组件。这样做仍会向项目的引用中加入 OneNote 互操作程序集。

其次,OneNote 14.0 类型库与 Visual Studio 2010"NOPIA"功能不兼容。在 NOPIA 功能中,主互操作程序集默认情况下不会嵌入到应用程序中。因此,请务必将 OneNote 互操作程序集引用的"嵌入互操作类型"属性设置为 False。

 

2.4、Onenote没有采用OpenXML格式进行描述,而是使用了原始的XML ,一个完整的页面的描述代码如下:

 

ExpandedBlockStart.gif 完整的Onenote XML代码
xml version="1.0" ?>
< one:Page  xmlns:one ="http://schemas.microsoft.com/office/onenote/2010/onenote"  ID ="{6506BE8D-72F1-461D-AB41-632D60CCD6D3}{1}{B0}"  name ="Untitled page"  dateTime ="2010-10-06T02:33:02.000Z"  lastModifiedTime ="2010-10-06T05:26:59.000Z"  pageLevel ="1"  isCurrentlyViewed ="true" >
    
< one:QuickStyleDef  index ="0"  name ="PageTitle"  fontColor ="automatic"  highlightColor ="automatic"  font ="Calibri"  fontSize ="17.0"  spaceBefore ="0.0"  spaceAfter ="0.0" />
    
< one:PageSettings  RTL ="false"  color ="automatic" >
        
< one:PageSize >
            
< one:Automatic />
        
one:PageSize >
        
< one:RuleLines  visible ="false" />
    
one:PageSettings >
    
< one:Title  lang ="zh-CN" >
        
< one:OE  author ="Brooks"  authorInitials ="WS"  lastModifiedBy ="Brooks"  lastModifiedByInitials ="WS"  creationTime ="2010-10-06T02:33:02.000Z"  lastModifiedTime ="2010-10-06T02:33:02.000Z"  objectID ="{E13C4904-E707-4980-83FD-C92F117109E1}{15}{B0}"  alignment ="left"  quickStyleIndex ="0" >
            
< one:T > one:T >
        
one:OE >
    
one:Title >
    
< one:Image  format ="jpg"  originalPageNumber ="0"  lastModifiedTime ="2010-10-06T05:26:59.000Z"  objectID ="{9C53EE63-B289-40A1-9CA9-2E45F2F833B0}{138}{B0}" >
        
< one:Position  x ="18.0"  y ="104.400001525879"  z ="0" />
        
< one:Size  width ="420.75"  height ="113.9999923706055" />
        
< one:Data >
            /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsK
            CwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQU
            FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCACYAjEDASIA
            AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
            AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
            ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
            p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
            AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
            BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
            U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
            uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9MvH3
            j7Qfhf4Sv/E3ia//ALM0OxCG4uvJkl2bnVF+SNWY5ZlHAPWszwL8YfCfxH1PUdM0PUZ21XTkjkut
            O1CwuLC6iRxlH8m4jRyhBGGAI5HNcD+2z4d1XxX+zH4z0rRNMvNY1S4W18mysLd55pMXULHaiAsc
            AEnA6A15j8V/2c/Gn/CG+LPGSazP4j8XatZabYXWm6JYtp6jSIXRri1jiMsjySOocsDJlxlFXnaV
            B3b5trpfet/v38r/ADclorbu/wCFv83bzsfYFc94j8f6B4S1zw9o+rX/ANk1HxBcPa6bD5Mj+fKq
            b2XcqkLhRnLECvjXxf8AC8+JtU+IFv4W0vxP8PvhbqiaXCkGneELpo5r+Ni8sh0rZHK0BjVI5GCA
            M23O4Kap/wDCr7zVtN+GfiTxN8INMstHsPF9+NS0/QPC9wUmsGhEcVw2mssk0cbtECY9nBCsVBbJ
            Fra+mq/9KS+WjuvLW1riel7a6P8AJv8ANWfnpdaH3vXG/E74p6T8KNP0W81e3vLiLVtXttGgFkiM
            yzTsVRm3MuEBHJGT6A18b+LPhdrWo+PPFF3cWup6Dbi807UfB+o6X4Av9QvLWwiUGG0tZYniXTwp
            DLJBKkZ+bJPORV1j4b6rPLapq/gXXNV+J6fE+DUL3xF/YFzOJNMWYbJI73yyi26x+WPKEny7SSoA
            JFQ96UE9LtfdeCa9fed+1mKT5VK3RP77Sa+Wit3uj7S+IvxT0n4ZT+FotUt7y4bxFrEGiWhs0Rgk
            8oYq0m5lwg2nJGT7Guyr54/bI8Nz+ItO+GR/sLUdf0uy8Y2d3qlvp2nz3zJaKkvmM8UKsxTBwRg5
            zjnOK8D8UeC9S+HPgfxZ8WtH0OXw1pHhHxqut+F9G1G3bTi1i/l293GsDgNBHMSCqlQTs4QbhmFJ
            Wblsn+Huf/JN/J9i3F3Sj1X4+/8A5JeV0foHXB/ET4tW/wAPda0TSToOp67f6tFNNCmnz2UKosc1
            tBhnuriFdzy3kCIqkszNgCvFfgL8MtK8Hab8J7/xP4S1nWPHutXGp+IZNfsopGtdLuruIPN9rYOF
            UtF5cS7lb5kOMHmt79p2HUL3xX4WXS7K9i1GC1nSHULW/W1eRZ57aJoE2a3p0p/ei1BBWRS00AUh
            jg6yi4aPfr69TNSUtVs9vS7t+B1XgD9pfQPHc8Hm6Pqfhqwn0WXXk1HWbnTxbraxpayuZTDdStAw
            ivraXEqp8j5qz/w1P8Jh4h/sl/iF4ZTda/ao77+2rRrWTD7Xj3iU7JFyh2uF3B8pv2S7PEP2XvDn
            ivwTqOg2+paJNfa3a+G7vSLL7ZrCPbW8luYEuYw/9s3myIXEEMMhgsVKOY8pGB5dV9WXXU8Ian4r
            8WPZahIPFOsvBJpGqT6PJdalaSTWaTuyTRvbRtY2ctqDHM6W6A3NyLlGle2go+kJ/jj4LifR2h1W
            bUrDV5YYLPV9K0+5vtNkkluPs0aG9gje3RjN8mGkBBIzjIrO8DftC+FPibr9lpnhRNT1dJomnmvJ
            LJ7GK3jEUUqOVuvKkmVluICDAkoUTwl9iyxs3K+L9G8WaFqXwK8JT31lrOlQapawajrmpzTTXGp3
            Ftpt5K3m2hG07mt0nSZp2Mc6xv5b+WCfGf2WdZ/sjxJ4euLexvdXvI9AjtRp1jDiaTzfDfh2dZFe
            QpF5YOnmF2Mg2SXdmH2rOrUAemab+3b4G1XTrW9h06ZIbmJJkW58SeHYJQrAEB45NUV0bB5VgGB4
            IBGK938FeK7Tx34N0HxLYRzQ2Gs2FvqNvHcqFlWOaNZFDgEgMAwyASM9zXxFHNrvgnxl4a8JyeGf
            EEMOn6Le21xp2ieK/GyWM0tvJZxLLbhbF3WKMNIqLF5sW2YbpARF5n274K0KLwv4N0HRobGHS4dO
            sLezSxtrl7mK3WONUEaSyKryKoGA7KGYDJAJxQBtUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
            AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
            UUUUAFFFFABRRRQAUUUUAFFFFABRRRQB870UUUAfRFFfPv7fHP7Jvjv/AHLT/wBLIK8k8VatpPwI
            +NDr4Mvk8FeH38Czaj4ni0SxWaCynAC2t19lH7sTlmQDcoDA/NkEmpUlq30v+EXL8kU4uya6/wCc
            V/7cfbtFfn98S/ib4w8bfDb48+FdX1PX5NM03QNN1iwGu22mpqKxzEM8c32NTEUYYcYCyKOCRzXp
            Hijxv8QPCOtfDjwF4f1/xLrK67ok+qpqdrBo322R44UEdrCbiOG38pM+Y2Q8pBGGA5p7X0/r3r/d
            yv8Aq150dtf692338y/q9vrmivFPgr4i8YeILzw5L408Y6Ta6/8A8I+6an4GtBZyytdR3TRtfiaK
            Rm2/J5ZRfkDEjgjaIPj54L8PeNdUXSdM0Cx1P4nX9tElnrDwq0+g2ySki984/NAEYuUCENJIMAEK
            7JbVpKO93b7m1+l/Jb2sxRfMr7f0v87eu19D3Ks3xB4a0jxbpj6brmlWWs6c7K7WmoW6TxMykMpK
            OCCQQCDjgivnXxfp8cvjHxZ4hktYZ/F2k+NtA03S9RaMPdW9lKth5kMb8tHFIJ7rcF4bfJkHmvR/
            DukR6P8AHvx9LZvdSzXfh/S7lluryWdRIbjUBhBI5EafKPkTaoOSACSTF7Q9p/WykvwfyZVnr8vx
            fL/Xc9UAAGBwKz77w5pOqf2j9s0uyu/7RtRY3vn26P8AarceZiGXI+eMebL8jZH7x+PmOfm74Mhf
            DV58PNZ0bRHv9U17wRdap4gi0xYUudVvVlsiJJpJHRZJg81wA0rjG9xu6ivQfGkJ1vxn8IPEF5pu
            raFqR12a3OmX18CIlOnX5y8ME0luznaCHBZgDjIyRWjja3z/AAbXz1Qv5vJN/cr/ACPUP+Ec0n7d
            9t/suy+2favt32j7OnmfaPI+z+duxnzPJ/db+uz5c7eKrWHgrw9pWtNrFloOmWertFJA2oW9nGlw
            Y5JmnkQyBd21pnaRhnBdix5JNfP/AIysYp/Gni7xE9pDJ4t0rxvoOm6VfmMPdW1lKLDfDG5y0cUg
            nutwXht8mQea7T433Fx42+B/xKt9V8Oa/wCGo9P0m8mt5ptQihF4UglIZTZ3Ls0fAykoUMGAKnkC
            FrBT/raL++0tu/3lxjzVFDv/AJtfdpud2PhP4HXTtPsB4N8Piw06K5gsrUaXB5VtHcArcpGuzCLK
            GYOFwHBO7Oas3Hw48J3esatq0/hfRZtV1e1ax1G+k0+Fp723ZVVoZnK7pIyqICjEjCqMcCtm3kSL
            TY3kdY41iDM7HAUY5JNfM/w18CWHwd8UaZodm3gi6l1Xw7f31p420jw+lpf2ccZjIuLmUyyrPG/n
            Kd+6MEx9GB+VN2bXr+Cb/RmcHzwUu9vxt+V0eu/8M4/Cb/ol/gz/AMJ+0/8Ajddn4e8OaT4S0e30
            nQ9LstF0q33eTY6fbpBBFuYs21EAUZZmJwOSSe9eD/E7wfoXjrSdE0yyh0zxr8U9R0q0Fr4witog
            +n26tn+1FkUkWy7zI8axHMj8LuVXZOK8d6SzeP8Axt4rlsdNvbPSfE+kWzeILh9viDStv2QPBZjb
            gwSeauFMkefNnOyXcqtSV5KPn+qV/wAfLXS9wb93m/ra9j6+orxDx/4Aj+K1g+i3vjnw3rk9v4pa
            7s7DV9JhvbaHy7ds6dLbpPGZmRXaQlmDAYJGBXm1j4dsdf8ADum6nq3wy0TxF4E0RNZ0260fw9FZ
            2enR3cVyEOpxQXUsUSo0cUo3+YzxliFLAs1Z82l3ppf5WT/N29ddtS2u3p87v9Ff0030PriivPf2
            e59Wufgj4Km1vz/7Sk0yF3+1sWm2EZj8wkkl9mzJJJznJr0KtZx5ZOPYzi7pMKKKKkoKKKKACiii
            gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
            CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA+d6KKKAPd9f8ADuleK9IuNK1vTLPWdLuM
            Cay1C3SeGTBDDcjgqcEAjI6gGsjRfhb4M8N6PqOkaR4R0LS9K1FSt7Y2WmwwwXQI2kSoqhXGCR8w
            PBxXUUUd/MDldB+FHgjwtBfQaL4O0DSIb6A213HYaXBAtxFz+7kCqNy/M3ynI5PrVX/hSfw7/sH+
            w/8AhAvDH9i/aftn9m/2Nb/ZvP27fN8vZt37fl3YzjjNdpRR/X6gc/onw+8LeGbq1udH8NaRpVza
            2psYJrGwiheG3LmQwoVUFYy5LbBxk5xmqXij4ReBfHGpDUfEfgvw94g1ARiIXeqaVBcyhASQu90J
            wCTxnua62ih67gtNjCl8CeGpvEGn67J4e0qTW9Ph+z2eptZRG5tosMPLjl27kXDMMAgfMfU1DZfD
            bwjpviifxLZ+FtFtfEc5Yy6vBp8KXcm7ht0wXec98nmujoo63/rUP6+4xdE8FeHvDWpanqGj6Dpm
            lX+qSedf3VlZxwy3b5Y7pXUAyHLMcsSfmPrVbxJ8NvCPjLUbPUNf8LaLrl/ZgC2utS0+G4lgwdw2
            M6krzzwetdHRR28g3v5mLd+CvD1/4ms/Ed1oOmXPiGzjMNtq01nG13Ah3ZVJSN6j534Bx8x9TUni
            bwjoXjXSzpviHRdP17Ti4kNnqdrHcwlh0bY4IyMnBxWtRR0sHW5Q0jQdM8P6RBpWl6daabpdunlw
            2VnAsUMaf3VRQFA5PAFY/hz4XeDPB9vqEGg+EdC0SDUUEd7Fp2mw263SgMAsgRQHGGbhs/ePrXT0
            UPW9+oLTRHF6z8E/h34jktpNW8BeGNUktbdLSB7zRreYwwpwkSFkO1FycKOB2rSn+HHhO58Q2Wvz
            eF9Gl12xjWK11R9PhN1booIVY5Su5QAxAAIxk+tdFRR5gcxrXwv8G+I7Oe01bwloWqWk92b+aC90
            2GaOS5K7TMyspBkK8bzzjjNP1D4a+EdWtdGtb7wrol5baLt/syG406GRLHbgL5AK4jxtXG3GNo9K
            6Sihabf1bYNwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
            ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPn
            eiiigD6IooooAKKK5T4l+NbTwH4Xk1G517w/4fmaVI7abxNeC1tJ5M7zAZCw2M6JIAwDlPv+XIEK
            MAdXRXjPib48654X8V6ij/D7WtT8M2l1Bo73djd6WZ49Rmnijt12G/3GOdbqBgJEieMFWYMsv7qx
            d/HC4k8eeO9A02whVPDmi2mpCfxFBe6Pabjc3Ud20t69u6CJY4Y3jdUKviUqzKrtGAevUV5lF498
            cXXwU8S+KpfB8Ol+KLewvbvSNEinnvmujHEzW5eMwwSq0rKD5JUSBWUNskLInGeCPjJ4s8Q/ETRN
            Gj1KHxDYNfy2WtJF8PNZ0VtNUWMtwjvcXU7xoxb7KPLZdzLcKR1BoA+gKK8Q1j9om40n4ry6LFoU
            2q+E45fsMt9p1le3V6k8ccz3FxDFBBKt1bRy/Z7SQoyvbzsyyLh4yc/wX+0nqGp/CL/hM9T0kTSS
            2GjSQxHTr3SYTeXoSJovOuYzG8CzMH+0RPIBHIAUJRXnB7nv9FcMPiHe+FtAmv8Ax7pdvoE/2xbS
            1t9DuJ9ZN4WUFfJRLdJnbO8FBFkCNm5XmsTV/wBofw9pl7ozRLLfaVqml3l/DcQo4uGmgnt4BaLb
            MgczPJcbNh2srptK5JwdbL+tL/fboL+v0PVKK88uvjLpnhSy0yPxrE3h7W7q3+13FhYx3GpRWERf
            aHuJ4odkKdjJJtTKvhmClq09C+IkWrXXjhJrGaGDwvffZHa2V7qW5UWkNyXSKNC5bE20IoZmK8ZL
            Yp2vt5/g0n+LFc7Civnd/wBobx5p11eaXfeDfDMfik3U407wrd+JpLXWr2AysbUpbJazxPmLZvmj
            neBGSYvJEIpVj6L40/tD6f8AB3xf4f0vVtU8M6TpV/8Avru8v9TZr+1hSO4mdxYKgZ45FtTAkolz
            50yARybdjoZ7NRXkPgD9ofSPF3jrXPDlzDqdhN/bQ03Rvtfh7UbMTqNMhvHWWSaJUSXJuWCMUYxo
            jBSCGblZf2rf+JprNt9p+GWlf2fql9pv2bxD8QPsF7/o1zLBvkg+xP5e/wAreBub5XXmgD6IorxD
            xX+0rBo3wKj8Zw6PqcWt3/hEeJLO1j0W/wBQsYZHtTLHHPdQQiNVDDDFnjIX5jsBBra8QftF+HdM
            8PeJbyzstak1XR9Av/EEem6vol/pP2uG1RTIEkubdVPzSRKdu4jzAcGgD1Wivn+6/aI8aW+q2emj
            4aTX12/iQ6Gs2h6pbXdhqAS1ee4SC5uHtXWWERz7t0LRl7SSEursWi7L4h/E/wAV+EPhzc+MLPwR
            AILCzub3UdL17WltLyBIskBPs0V1FIWVSw/eLgFc8khU3YaTk7I9Oorx3Vfix4+0nWNL0aTwX4ZO
            rXthe6qQ3iqdLaO2tzbqSZTp+d5Nx0KBQEzv5wPRfAniyHx34K0LxHb201nBq1jDepb3AHmRiRAw
            VscZGeo4PaqSur/11X6P7ibp28/+B/mjdornfiJ480n4X+Btc8Wa5N5OlaRavdTYZFeTaPljTeyq
            ZHbaiKSNzMo714R4t/ax1b4dQ+J7LX7f4f8A9u+FbWH+0LKfxi+n3Wo3H9nwXUv2K1e0kZo2eZo4
            9z5Ypg4NIZ9M0Vzus+LvsHiGx0WztP7Q1GXy7ie1MnkSCzZzG9xCXASfypDF5qK4ZEkDcs8UcvKa
            b8WbuL9mm1+Jt/YQ3N+vhFPElxYWzmGKST7GLho0Y7yik5UE7iB60Aem0V8//wDDTOr3XgnQPE1l
            4RhvLC4v7uG7u7LXdObTpYLWe7inNtd3NxbMzCK1a7VvJKNGhUlMtLF7vpt1Lfada3M1nNp800SS
            PZ3JQywMQCY3MbMhZScHazLkcEjmgCzRVbUpLuLTrp7CCG5v1ic28FzMYYpJMHaryBHKKTgFgrED
            naelfL0H7X3i5vtusyeBrIeDU0u31GDWfK8Qi1ZT5zyyef8A2KQYxGsL5MaKA2RJJuIiAPqqivO5
            fivbaT4hudP1LU9FuLyx0uK41Tw9oMk+p6vYXBeMErbwxtLPAwnTD+TGUCqxDLL+6xdH+PbeIPHn
            ifRtI8NeINWh0zRdP1G2s20S4028nkmubmKYbr/yIgoWOFlDMpbE+0uUZVAPXqK+ZvBX7YT69N8K
            1vND8+PxRoEV7qcmlz2kv2O7m1C00+Jggu2dIPPmlDBlaQbkGN8Vwsfrur+PLt/GWp+HvDWo+Etd
            1u0sEnfw9d6wbS+tpPMjy8ojjmYRPFMpB8pSrIg+cT5iAO8oryr4L/GDVvixdajLJpvhmHRbbesF
            9oniR9Re72ytEJUia1iIgMkN1GsrEb2tnKK6FZD8/wDgX9s7xb4lfwQ1xqHhKWbXL/SrW5062hsR
            LGt1cQxShAmuS3AZFlYjda7gV+dEG7aAfatFcpa+NbS8+JV54atte8P3k1rYCe50eK8H9q2cgZCH
            eEMcxOk0fJCFCq/6wTDy8b4cfGDSfFmh+KLnUda0W3vPDeqapa6pDFdIv9n29ve3MUMlwGcmLdDb
            hyzYB+ZhheAAeiUV87wftV5vvAGnHTvtuseKfL1aHSrGDfdT6TdwanLYiJDLxOv2O1S4dz5EZmJL
            qh3p1WlfGfxD471GxTwP4V0zULC58N6X4kM/iDW5NPlWO+Nz5UflxWtwCyi2JY7gMsAM4zQB69RX
            kN38YvFegQeO4dZ8GaZ/a/hvRbTWobbS/EaPb3Mc73Sfvbi6gtkgWM2js7ncAhJAYjaeEsf2q9S1
            G10a4I8M6Pot59s02bxRqesWTafBexRWDpLKbe8ljj3Ce+KWQmkmk8iM+ZGhkljAPpmivnfx9+1t
            p+j6xo7eFbnwzq2jz2thLdz69rDaSiNqCvNZETGKQRbba1uppI50jYq8HllnYRts+Hv2jpfF2v6X
            baDoE2uwyaLPfXNrprJ5s84i0aeL7LJcvbqYvJ1ckmZYnJj4VSNrAHt9FeIeF/2g/EGsz6jLcfDL
            xAbC41q40vRhFeaRFNM1uhS4idZNRG6Vbi3vj+7BUxRqwzhjW98SviZ4w8FaVpWq2Hg3TLuxvpbG
            0eDVdea0u7a5up0hWN0htp4yEaRNzLKejbQ2AWOqXfT7xnqNFcF4X+IWr6h4m1vw9ruiWWmappWl
            2upSnT9Se8hfzpLlFRWeCJuBbAklerkY+XLcW/7SVzP4VsNfsvDME1lD4btPFOurPqhjextJw5VY
            AIW+0SgQzHa3lD5V+b5uGld2/rr/AJMLP+vl/mvvPcaK8t1j41Tab4ruraHRYLjw1p+qWWiahqrX
            5S4ju7oRGIRWwiYSRj7Tb7maRCNzYVtvOPrn7SSeGE1HWdT0DHg2GXVLW21C0vfNvriewinlnU2x
            jVEQi0uAjecSSqZVQ2VEr6r+tv8ANW730E9Ff+uv+T9LantVFeEWvx98UyRnw5deCL2y+J8f2HUW
            8NM1pKJ9Omu5BO0Ekd2yHyYIJk86doUaXyPkQzpFWx4l+N+t23wrvvHmgeEILiw0tdS/tPTte1YW
            N5bvZTSQyogghuY5DvhlwfMAwF5OeJbsNJydkev0V47qvxY8faTrGl6NJ4L8MnVr2wvdVIbxVOlt
            HbW5t1JMp0/O8m46FAoCZ384Gl4i+NENh8F9A+IUKQaVYajPorz/ANsMES0tbu8topmkbcApSKZ2
            DZ2gqCcjg0ldX/rqv0f3E3Tt5/8AA/zR6hRXO+EfiP4T+IH2v/hF/FGi+JPsmz7R/ZGoQ3Xk792z
            f5bHbu2tjPXafQ10VIYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB870UUUAfRFFFFABXB/HHTbvxJ
            8LPEnhjTrWa61TxLYXOiWnlxkxQyTwSJ5s74xHEg3OzHkhdqB5GSN+8rnfHnj/Qvht4em1jX9Sst
            OtlykC3t7BafaZtjOsEbzyRx+YwRsBnUcEkgAkAHiGseLReeKJfF93pPiDT/ABnpsvlWGkN4L1O6
            tEgjEyeTcXUFnIJJXE82LmBnSDzCsPnRtcG80fi18MfEPi1/G93rGn6Zd+H/ABHYWvhyfR9Phk1G
            +e2huLiS3u4GdY447lmuymyRTFbsEuGnZYWjfoo/2tvhFcz6HHbfEDw/OmrRNcLK2p28K2sQQNuu
            PNdDExLRoIiPNLMfk2xysln/AIac+Hn/AAnv/CHf8JBZf27/AG//AMI79n+22+77R9k+0btvmbvL
            3/6Nnbn7R+7255oA8I0/4E3Om+FvGWk6L4H+0f2j/Ya6jBYaHBHYTapa6pfaheoltezWX2iwXzLe
            3jcOQ0LRqrP5b7eU/wCFP+NvCk+v+If+FLaYj2etWniKxTQ/CmlQXe2zS0kFvBJHq8r2qyyWrqyR
            xXDHzZHAZpPLX6q0b9ozwT4i0573S5PEGoQrFa3G228K6q8rwXIlME6Ri23vE4glxKoKZXBbJUGv
            c/tPfD20sZ7x77Wntra1kvbt4vDOpyfYoY57iB2uAtsTBtktLlSJdp/dMcY5oA53xB4Ng8QX3iV7
            zQ9avpPEN1f6ffXNrpEUH22xigVWsIC8wa2+0rCkTXswHnfZSFkiQ6eU27HSr2bR/Fml+G9Hiv8A
            StQli1ODQ/GNhNa2lwl67zXo87Y7BZHeYmCaEywy+YGXyZIAt/xX+0r8MfBuox2Oo+OPD63Qvxp1
            3DHq1qZbGQkpmePzA6qJAqMQpKFtzhUV3Q8QftH/AA+0bwbrfiXT9fh8X2GjxGW8j8J/8TaWEeXJ
            IvmCDcIVYQyYklKRgj5nFJq407HHaB8DvEnha2t9W0Wy8PaPqFnr51iy8I2V7Mmj20bWjWssKTC3
            BQvvabK24Ac42nLOas/7Lk/iO90m7127s4ruGLV743VgzGbTNUvL2C6hltGZBkQmN13naX7piRlH
            Z6p+0p4U0m+0e1l0rxmZNTumtIj/AMIZqyYYQSzZw9srP8sLfLGHbncVCK7LY8YftK/DHwS8sN/4
            48PvfwX8OnXGnw6tam5t5HuEgYyRmQFViLlpCeURHOPlxT6p9tvLS2n3L5q4vL+t2/1frfU5TW/h
            f8R9ds9XW6k8NzXvinQI/D+u3Bu51jtfLadRd20fkHzC8dw7GBzGFZQPMYEtWtoXgLxl4W8ReLrG
            103R9Q8K+Ir+KV74+Irux1G3g+x29rJtWK1b94BCzKyzIckfMpGa9A8I/Efwn8QPtf8Awi/ijRfE
            n2TZ9o/sjUIbryd+7Zv8tjt3bWxnrtPoaseEvFdp4y0qe/so5ooYb+905luFAYyWt1LbSEYJ+UvC
            xU9SpGQDkBp2bfffz1v+ewmrq39bW/JL/hz5E8Q+B/Gdl8MfiLp+n+FfHN1C9/rNxb2EekeGrrTd
            QeG5lFnPPFdI19dsyQWzNLIJJpSN6s5ZWPonx/8A2drjx+fAnh6z13xBD4fWXUdOKi9vbtrZrnTN
            Q3Xl3M85edVk+zxxq7KoWWaJi6zhE6Lxv+1r4T8CeNtb8L3tlM9/pEsUM7y6zo1irM8EU4KJd30M
            jLtmUbtm3cGAJ2mtHwB+0lpXxPg8SDw14e1PV7/Q4rSaWxsNR0m6adbh5UURyw3rwBl8mRmWSRGC
            4IB3AFDOV8JfBvxTb/EXxNr8vinWtXl0XxS2p2Fjr1vaW9rrDt4ehtFlaaC1Rkw87RGSNWQCBgYm
            ky1WLr4UXemXtnpWr2/iCbT5783a+IPDepGS3W9mvXvvNuNMlDLAqahMjwvGtywSBRcyiASiTs/D
            Pxn1HxRr99pUPw08W2r6dfx6dqFxcz6V5VnI8UM2X23zMyiKeJyY1c4OACwK1Z1r48eFtC8c6r4T
            lj1q/wBV0u1trq7/ALF0W71RIPPMuyOT7LHK0Um2LftkC5WRCu7JwAVvFem+IfHegx+BdVtYVe/i
            C+IdUtI5EsZNPMpSSGLeN3m3USOhjRybZZXYzFlgM/CfHSK9+If/AAmf9g6NrV3/AGV4C8UaLN5u
            k3Nv515c/ZPs8Vv5sa/ad/2WbDQb14XJG9N3rth8U/Cl94JbxfJrMOl+HI5ZIJb/AFlX05YJI52t
            3SVbgI0bCZTHhwDu47iud8KftK/DHxlqMljp3jjw+10b86daQyataiW+kBCZgj8wuymQsikqC5Xc
            gZGR3AOE1D4ZT63rkNt418OWV54etdUvPG2o6Ta2kuq6dbMbJrOOygR4ENzJNI93fMY4tySghoy0
            6SvseHPhfeal+zJ4m8G6Zp8Hh9tZOvDSrS5hNrFb213e3UtpuiC7oR5U0RMZQMmdpVWUqO91r4we
            E/DOsarZa5rVloNtpv2aObVNUuobezNxOsrrarK7geescSytGcERzQtyH4xdA/aK8D+K/hrceMtE
            1aHWIbawgvZ9H0+5gn1GKSdcwWjQpIdtzI/7pIi2Wk+UEmgqMnFqS6Gf8U/gDp3xd8T6LNr9tZXe
            j2WiX1hmRd1zbXUz2zRXEGVIVkEMnzZBGQMEE1fs/BHjXVdf+HGr654h+yXHh5L4avb6ReyrZ6wZ
            IhFCZLcooJ6TAsxETKUVZPM8yO1L8ffBsHiG50WSbWo7y11SLRZ5X8O6iLWG8leNIonuPs/lLvM0
            O1i+1hKjAlWBPolNOyt/W7f6/l2RmopJLt/lb9P6uzg/j5pt3rPwK+I1hYWs19f3XhvUoLe1tozJ
            LNI1rIqoigEsxJAAHJJrxn4kreX138U9AsPEGp6fpHi+WWG+ik+Fuu6jLAxsIbCQwXULpFIpW3Dq
            wRly2csMV9IeIdftfDGkzajeRXs1vFt3Jp1hPezHJAG2GBHkbk84U4GSeAa4nRf2hfBOvRedbXGs
            x2xukshdXvhzUbWA3DXC2wi82W3VN/nOEK5yCGyAFYhLV2RT0V2ch8QfDkXxPvr+18MRfEDTtd1O
            1jDa7/a+r6Pp2j+ZApin+zvNEssiplvJhif96mycwly4xfEnwqHg34a/ELwbpGk+IJ7q/wDDd7pP
            h0W+ranqGnSwTKIILcwzzyx2ssTSQozNtQx5lV0QTxwe2az8R/Dvh651m31DUhbz6RaQX14hhkYp
            FM8iQ7cKd7O8TqqJuYkAAZZc0D8YPCw8Mf28bu8W0+1fYfsraXdC/Nx/zx+xmL7R5mPm2eXnZ8+N
            vNA7f18r/lr6HzP4U8EeOBZ6jc2vhnxNq9nqV1Hew6lcWNlBdyTWfiLWb+3a4tbm5smj8x57GVgs
            YDRtKiiJmV09d+EnwT06++EXgF9bk8W6Xq8fhvTILqyt/E2q6csEkdnFGyG3iuESNgVwwCg7sk8k
            mu61L4yeE9K0DS9Ykvrq4tdTDm1hstMurq6cJnzSbaKNpU8sjD7kGxsK20nFPk+LnhVNbh09dXtZ
            Ym0y71ebUEuYja2sFuto7maTd8hMd9byjIxsJYkArudt/IXbzE0bwHofw4+3a1bXPia78q1k82K9
            1zVNYygw58u3lml3SfJxsQuclV+8Qfzv/wCFSat/wpv7B/wgF7/bv9geR5X/AAiD/avtH2fbt3/8
            Itu8zfxu+2Zzz9oz+8r9EPh58WNG+JP2iCytNa0nVbS1tru80rXtIudPurZZ/MEYZZUVX+aGVS0b
            OuY2wx4JWD4weELrQfFesw6ykum+Fp57fWJkhlP2WSFd0o27dz4BzlAwPbNTdL8xpN7HF+L9UttZ
            8c6Z4kvPDGtap4Ns9AvdH1JZdDnleX+0DZTKv2Ip580apbCOULE21rlFIPl3PkcH4Zxrr+ObfVvD
            up+I7RvDelaJpVv4i8N6nfy6o1ncXXk3F6L2ztIWleS8t3ZPN2qUkdpURGkX3YfFXwqbvwhajV0N
            x4ujeXRIxFITeIkXnMw+X5AEIPz7eoHXiuW1n9pz4eeHNDsdS1bxBZaX9vuo4bS0vb23huLi3e9N
            ol9GjSDfaNgziYEgwguPSqaa3JTT2OD0v4S2lrouk6PrNn4t1fUPDthbaJotxp1qLRbWbTIUmhlT
            dM8LtdSKtwGlJtS1raQzhZ4Arlt4VsdK07wFa6joviDxB4L8LeER4a1G5TRrqKW8acadLGfsK/6R
            JFtsVSeMI6g3SxOHVLryfTdU/aA8D6Z/Y7R6le61baxuGnXnh7SL3VrW7ZfN3Rxz2sMkbSKIJiUD
            bgI2JAAzV9Pi74emu/DlrG14t1rlybaK1urOSzubYeReTLLPbziOWKNhYXKqxT5ivGVywltJXYzy
            zwlF4a1Dw/qUd7o3jO81y3utbuLZtM0nW9Gne31DWRdLBFcPHbKsjN9kDkuoUJIWcQiV68yvvDvi
            ax8ZTWGoap458Pi10Wwju1S38Ya9Yz6l5l19qktJrS/XETILV18x3O10UiORJkr6h8HfGDwv471U
            6ZpV1fR35thex2+p6Vd6e88GQvmxC4ij81ASoLJuA3LnG4ZxtN+Pel+KdOtbvwj4a8W+LkuYkuYj
            baJLp8UluwBWZJ9Q+zQOpymAkjOQ2QpUMVqzQdbGN4rTVND8V/DzxZolnezeFtN0C8sr66vrS+vt
            Qhhnn0x41+yBWu5p3W3dSXAMfzSSlinlyHwJ1nTfEPh/UNA1DQtaiuV1/V9aSLXfDd7aQbH1me6t
            ZVkuIFjMmJIJVUNvUjOAUOOqv/jj4H0n4lL4E1DxJplj4jkijeG1uL6BWlkdlUQBd+9ZcSQsqOqm
            RZQY9+2TZZ8HfFXSfH3hRdZ0O3vby5bS7XVl0d0SG8aK4gE0AAkZYzvG5A4fy/MjkTfmN9qA+bvB
            nw/bwWfh7req2PiDwvMvhHw+XudD8MXGo3j6hb6ZqllOsyQwS+TLEmoWpDXEZDeUECsEYJ6J8Mvh
            jpHifRfCIn8N+LfDT6b4R0rTLu6fxFqOlXCtHCskNmyW7QC5aITzeZMURVdwihm81IfXvEfjrT/D
            Pw81TxlcwXr6Vp+ly6vLD9maK6MMcJlK+VLsZZNoxsfaQeGxzix418V2ngTwbr3iW/jmmsNGsLjU
            biO2UNK0cMbSMEBIBYhTgEgZ7igDxn4gfDyDw94D+MekaPoHiC81fWvCN1DZajcarf622oxx20wS
            3DTvI0MqTXMm2EcSLKGQuRKsPnfg/S/Hfw08Wa5J9t8QHw/PrWp2F9rkGj6veSl2s9FEVzBZzG7n
            nYfZL2GOeVngQ7m3MpSCX671LUrTRtOur+/uobGwtYnnuLq5kEcUMagszuxICqACSTwAK8z8M/tL
            eDfE2j+H9RW38Tabba59jW1l1DwvqMUAe6ZEgRrjyDB8zyoocSFCWGGIIJAPKviJofj/AOKUw1fQ
            vD2taDrGr6X4Jv2tjJb28dnLDqF/d3EU811C3/HvujLCOJ5A/k5iZGdG2fDHwdu9D+K9hpj3Gp2U
            N54bupr+60a2Nvb2RMegWgtIryOCKLdIul3BzCkEiI2USEiNq9mk+JOlj4gQeDI7bU5dbkikuWLa
            fLDbJboiF5lnkVY5lVpoIyIWkdXmXKgBypZ/EnS7zwnf+IhbambCyv7vTpIrbT5by5aS3vJLRykN
            usjupkiYgqCdh3MFwcAHzMw1Kz8K/ALTnv8A4jeH7vw5Yaeuq2uj+DprqKwb+xLmMzB306bfLvnj
            gZAzqodsxq6F1+i/iD4euPiZ4M0ddKYW27U9K1YDUYpbZxDDdw3DK0bJvSQohGx1BDcNt5xhyftP
            fD1b7TrOO+1q8udStbW9sksvDOp3H2mG4geeBkMdswbdHFM2ByPJlBAMbheq0b4l6J4i1HwvbaZJ
            NeQ+JNFm17T7xYikT2sZtRlg2HVmF5EQCvQNnaQATZp9mn9zuByfiL4C6H42+J2v+I/E/h7w/wCI
            7O50ez0+wTVbKO6ltpYpLlpGAkQhAwmi5U5O05AwM8XH+z94r0zwPbeHbGbRpRq3g6x8I63cSXc0
            RsxAsqm4tgIW8/K3Ev7t/K+4nzfMceweCviJaeOtO0G/stN1O3sNb0W31uzurmAeUY5QrGJ2RmCS
            oHjJVsBg/wC7MmyTZ1dC00W3/D/5sbbbv1/ytb/0lHjGtfB3XLnxJqdlZnTB4S1jW9N168uZLmRL
            y3ktBbjyEgETJKjmzi+YyJt8x/lbaM8P8Xvgj4pufhv4w0iC2s77Q9Pi8Ra3pf2GWabUL66vLS8C
            WrWvlbRte8kCusjM2xBsBY4991zx5pPhvxDa6TqU32LztLvtYe+nZI7W3t7R7dZmldmG3H2pDnGM
            K5JGBnlPCX7R/wAPvHHhe31nRtfh1SaSwh1GbRNL/wCJjqtrHIYxiWztfNlDI0qK4CkKc5OBmmm1
            b+uy/Cyt6epNlbl6f8P+d3f19Dzvwr4Divda+Kcer+GvHPhjRLzw3pSx3Gs6g+sais8M2pSedZTL
            cXh82EtDJGiMXSQIwjBZS3U6b4B1fxX+zr4w8Oxw/wBm6h4jm8QTWS6krw7Y72/u5rZ5U2l48xzx
            syMu9MlWUMCo27r9ofwlFpVnfW0PiC/S9lNrarF4evo1kuvtT2i2ryyxJFbym5QxbZ3jwxUsVVg1
            bWs/FXTfDf2GPVtH8TW15dWsd01tZeHb3Uvs+7OY5JbOKaISKQQVDnsRlSpKLjJxakuhyvxT+AOn
            fF3xPos2v21ld6PZaJfWGZF3XNtdTPbNFcQZUhWQQyfNkEZAwQTXN/Ebxpqdv4G0nw34h07WdW8X
            afreh3N9ceH/AAzql3ZzxW+p2txJOkyWvl58iNpGjVm2tujBYjn0XTvjj4LvoNZmudVm0CHR4ree
            /k8Tafc6MsEc7vHC5N5HFlXeKRQRkblx1xVm6+MHhP8A4V54i8a6TrVl4n0LQrW5urubQbqG7/1E
            PmvGpV9vmbMEKWH3lzgHNNOyt/W7f6/l2RmopJLt/lb9P6uyx4U+JekeMtRksrCz8QW80cRmLar4
            c1HToioIGBJcwRoWyw+UHcRk4wCRjfCP4R/8Ks/tb/ibf2j9t8pP3dt5HneXv/0q6+dvPv5vM/f3
            Xyeb5cXyJs5PiD+0H8PPhj9vi13xdottqNh5bXWlf2lbrexI20l/IaQO22NvM2KC7KMIrsVVi4/a
            L+FsGj6tqa/ETwzd2elWrXt61jqsNy8MIZU3bI2Zjl3RAACWZ1UAswBRR6JRXmTftG+AYfDfh3X5
            vEWmRaRq9+NLe+GqWcttp119kkujFczxzNErBYtnyu2XeMDIbdWjJ8afDb6/BpNkNT1aaWwk1Zbj
            T9MnltpbFIkkNxBME2Xa5mt022xlffOg2Y3FQDvKK53wf480nx1JrP8AY832u20y6itTdxsjwXPm
            WlvdpJC6sQ8Zjuo8NxkhsZGCeD/4au+GMNl4RmvfFWmaXN4iit51s7/UbWG406Oaya8je7Qy/ulK
            Kq55BeWMDIYGgD16iq2m6laazp1rf2F1DfWF1Ek9vdW0gkimjYBldGBIZSCCCOCDRqepWmjaddah
            f3MVnY2sTTz3M7hI4o1BLMzHgAAEkn0pNpK7Gk27Is0Vy3gv4l6F4/e5TSDqSvbxxzOmpaRd6ezR
            ybtjoLiKPep2N8y5HFaureJdN0PUNHsr258i61e5a0so9jN5sqxPKVyAQvyROctgfLjOSAaaa0ZN
            7mpRWN4X8X6T40sri80a5a9s4biS1NyIZEjkdDtYxsygSIDkb0LKSCASQalt/Eum3fiO+0GK536t
            Y20N3cW+xhsilaRY23EbTkwyDAJI28gZGUP+v0/M1KKKKAPneiiigD6IooooAK8q/aeudWtvg7fD
            Q57231WfVNItYTp87wzv5up2sTRqyTwMN6uyHE0WQxHmJncPTJNStItRgsHuoUv54pJ4rVpAJZI0
            KLI6rnJVTJGCRwC65+8KztS1Lw9qOg3V/f3WmXWiWErz3F1cyRvbW0lrKWZ3YnajQywkknBR4uxX
            gA+RPCPiH4j+Hr260fUbzxBa2Fv4usre7W8mlla3Z73wt5UBma8vGRZIru/PlfanV1klyowUTa/s
            TxT/AMNb/wDCQ/2Pe/2F/wAJns8n+1rTbn/hH/s3meT/AGnt8zZ+/wDL+yfaPs/z78fua+kJPBXg
            eLUYLB9B8Ppfz38niOK1azgEsl6hRZL9V25MqmSMGYfMC65b5hVfxf8A8K80/wANaxpPin/hGbbw
            9FsvtTsdX+zpaJ9ouWZJp0k+QebcK5DsPmkViCWBoA+TPgbFrHgvwSdYiM1hq8PhHwRe6Vbxa9d6
            guqPLPfQxWj+eqpbLdGQ2/lAPBbNKsynMYZe8v8ARNAj0Pwfa6X4l/tLTvGul2dp4tv47CRf7Rs7
            +986O7kjJJtftdzd31skSbGH9pyyL8tgQnu/hH/hXnja+u/Fnhf/AIRnX7x7pPtGuaR9nuZGuI4G
            iTfPHk+YkM7IMnISUjhWIOdL8R/hNfX1zoEnijwZcXniTyvP0t9QtGk1T7RBGkW+LdmbzYTCq5B3
            psAyuKAMXxXoN98QvjXZ/wBieI9T8NJ4W0W5tdQ1HSo7WRnnvpbWWO1BnhmTckdn5silVdVntSCV
            kNcJ4/1HxtcfC34v+Dbea98f30mqS+GoLvUIhFPa2dxottPJMy2NmVk8pp5XCeWrSDEaM8rRxye/
            zab4eEE3hqW10wQ6pFdzyaO8ce27jdwbp2hI+dWe4HmEggtMN3L85118J/A994Xs/DVz4N8P3Hhy
            zlM9to8ulwNaQSEuS6QlNitmSTkDPzt6mgD4a+H1jq2hfEuw13wz8P8Az9R8JapItzbf2K9h56Sa
            c3mHzbbw1bOmyO8EnlSNvk8rEcMjSQFvbv2mvFo165sNP1GDxbpnhzT9a0pVTTtK1NDqU/8AbFoj
            zCe2jHlrEkdwkSF980kyyRxjZayy+qyfAP4NxajBYP8ADnwMl/PFJPFatodmJZI0KLI6r5eSqmSM
            EjgF1z94V6Jf6baarAsN7aw3kKyxzrHcRh1EkbrJG4BH3ldFZT1DKCOQKAOM+D3i3UvEnheC21mD
            U21awiSKXU9Q0qbT11RQWQXSxSRxmJnMbl4CoaNum+JoZZeM+C3w00jUrDUPEEt54gS/Xxdr8wht
            /Eeow2m5NavAoNqk4gKnaNylNrc7gdxz6r4r8FeHvHenR2HiXQdM8Q2EconS11WzjuolkAKhwsik
            BgGYZ64Y+tcr/wAM4/Cb/ol/gz/wn7T/AON0AfHf7UviuUeJ/jfpUGp6npsOnyu17Et4lrY3bX2h
            2C2yN/xMrR5ZQNPugI/KuVKyN+6c/KfZv2ZdcvviR4X8R6RZ+NPFum3Ud/Hq8OqqbW6VrVzNZeRb
            yXV3qm+L7Rp1y5YyDLMCh2N830RpOm+HtK1rUIdMtdMs9XaJJ7yO0jjS4Mck1xIjyBRu2tM92wLc
            F2mI5LUaBpvh6ae48S6Ja6Y82vRQTz6xp8cZbUY1TEDtMg/eqEb5CSQFPHBoA8Z+HPw58QXHjD4p
            xx/FPxbbPB4khjklitdILXDf2RpreY+6wIDAME+QKu1F43bmbjPirrEXhr4u3eia3rXhLTLW1sDq
            enxz+K38FKEvby4aQLLBFLc3Epe23TsJ44ZGeJjbh1D19I+BfDnhPwzo89t4N0vRdJ0prqXzYdCt
            4YYDcI3lS7hEAvmK0Wxs8gx7T93A0bz+ydFupNWuvsVhc3P2exe+m2RvLmUrbwlzgt+8nYImfvSk
            AZbkA+XY9X17Xv2Wba8i1OG/sIvEmkadosfhyOza5jFr4hhtgYLjZDZzqxiQwH7NBGqbA4flzZ8b
            /wDCb/Z/Dv8AbH/Czf7O/wCEp8P+b/wkP/CL/Yv+QvabfM+xf6R97GPL/i27vl3V7/4y03wPpXgn
            UofFlr4fs/CDSme+j1mOBLAySTiQvKJB5e5p3DZbku2fvGvM/Dn/AAzJ/wAJDpf9gf8ACpv7d+1R
            f2f/AGb/AGZ9q+0bx5XlbPm8zft27ec4xzQB5D4t8F6d4n8XeOvDsV5DFDrOtLZafJ4e1rVdVjgk
            l1BW1CyniHkRRtcLLcz3lrFdqUhhjk8gm389g+I9f8YfAHwtY+I/E+mP4ntrDQdS0q8nvdQ0TUQt
            3Yzp51vdW8t1JfXsqi7gSPylZpI5XaCVDGkn2Jrn9k3dquk6x9imttX32Isb7YyXu6J2eHY3EmY0
            kJTB+VWJGAaP+JT4O8Pf8uWh6FpVr/sW9rZ28SfgscaIvsFA7AUAfIj3lzruhaxb6LH/AMIadb1+
            3vfCD6dJBHaR6jZ2NjpZt7uzvbZGjtLe9RQrNCrmS3jCJHM1olx9M/2z4sPxk/slLGyfwKugfapL
            7yZluo9RNxtSPeSInjaIOdqBnUpl9geLfYOm+B7PTtQsDa+H4LBIrbw5e2pjgWJYyAttYSLjAUi7
            UJC3GLgbV/ec9XQAV84X3g3Xr34EtpMNnqmn6lJ48a5Vre1zcwQnxCZRcKjoy7RGfNDMrJtG4grX
            0NqWpWmjaddX9/dQ2NhaxPPcXVzII4oY1BZndiQFUAEkngAVZoW6fZp/c0/0HfS39bNfqfMnir4c
            +J9N8W+M7qS/8ReL4oYfDGoLe3lnAJZ47TU557iCEW0EKSMka7tgVnJdRzuUVaWx1AeIW+II0nWh
            4f8A+E3/ALWNquk3QvTaf2P9g842Zj+0f6/+HYW2/OF2819ESalaRajBYPdQpfzxSTxWrSASyRoU
            WR1XOSqmSMEjgF1z94VZppuO39axv/6Svx+Q9b+f/wAjy/rf/gHzP4b07U/Ac/h3xXqeja1LpVyn
            iUfZLHSrm6uLc3+oR3VqJLeJGmTdHG27cvyMQrlSQK5Rvh54ytNZ+HuhWOk6XoXiPSvhzd2n9p3m
            nW+q3V5NbSaVKiQRNNFGpguHQwyTyFRKJSYwu2WT7DrO1X+ydL36/qX2K0/s61m36pd7E+y252vN
            mVvuRnykZuQP3ak/dGBe7FxW3+Tb/wDbn+HzT1d35v5s+dPhcvi74V/8JhpdveWXiOw0/wAIadrN
            lYad4Wm028ur24a7ijaSJpXdG2WccZh2KkaLDHHHAkJRsnxD8K/Gnw88D+LtBk8rxWmv+Crqx8zQ
            NDnhYXtvGfLM2Z5vMlmE8o3AJuMSjGSBX0xoXgrw94X1HVb/AEbQdM0m/wBWl8/ULqxs44ZbyTLN
            vmZVBkbLuctk5ZvU1oyalaRajBYPdQpfzxSTxWrSASyRoUWR1XOSqmSMEjgF1z94VK0d/wCtn/n+
            RUZWafbX8U/0/M+WPiB8Fb7TNRsLnXIrPWPCsd3qMUMFzczWttYaZLpmovOt3cqhNtGZbjyjIuQi
            RxY+YYrzh9F1W7HgbUdM8QzWnizStatbm6voLvVtU0y+a51PT7W3vWknktWkVorq7toHYXK3FnDL
            ELlzCHT7utdStL6e8htrqG4ms5RBcxxSBmgkKJIEcA/K2ySNsHna6noRWN4h/wCET1i1uLnXP7Fv
            rbw1dLfTTah5MiaVcRRCVZmL5EEiRyK4c4Kq4bIBzVX0S/r+ur8zNRtZ+Vvz/wA7eh8zfGWfWtc8
            EaD8RLhrKO80+6tdG1HXo/Fep+GPsOdbjt720a1haeJI8xiKW4Fw+fLMibliizF4B8Knwz40+GGr
            6Z9m1Tww88Njpkuka+NbgP2e08VObWC6dY2kSGO4gjXeo2gBNzGNmr6en8OeE9T8cxatNpei3fjL
            TLVPLvnt4X1C0t5DKqYcjzEjci4A5AOJAM/NVjX9N8PQz2/iXW7XTEm0GKeeDWNQjjDadGyYndZn
            H7pSi/OQQCo54FS9tC1ueOaZ4wtx8TNT8fXI8S/8Itpvhy8n1K68UaFPp40RFaKXybRGgieYOscr
            SECY/uYhvGVVvFvCl/p3gTSbTwZrl/pnh7W/DVhpunX1t4i+Neq6NK1wdOtZ5DFbQ+ZGsStM0amN
            tmY22gAAV9u3+m2mqwLDe2sN5Cssc6x3EYdRJG6yRuAR95XRWU9QygjkCq9x/ZPhm11bVp/sWk2z
            br7Ub6TZCh2RKrTTOcD5Y4kBdjwsajOFGK0sorp/m3+v+d3qT1b7/wCVj4qsPEs3xE8WeG7N7iZN
            J8VS6PeIupeMtYmttOsks9Ee60q6tWhNtctcJe7BJM22Z7za7CVlRtr9kzw98OtP8CarBqVvZeHd
            VvNLsL2XVbB30u6Sxh0PQri7Y30BjeKPz7hJHHmLuMjsQ3zmvqGPwV4Hl1GewTQfD738Gix6VLar
            ZwGWPSnLrHbMu3ItmMcgEZ+QlGwPlNWU8OeE/Ft1Z+KF0vRdaubi1g+y6yLeGd5bdZVuYNk2CTGJ
            FSVMHAYK45ANIZ8q+Lvh3p/iL9nq08S6p4UsvFvibVvAT6ReTN4bbVNdTxFFaLFExlit3mSRXS4i
            med/3ckECjy28zdo/tSeHPCb6xaeD7/V/hN4ek1PSxp2nDxD4dhS80TS1Xy3mju3vI1TYzSeRGkQ
            JkIAARJpY/ojxD8Ffh54t1i41bXPAfhnWtVuNvnX2oaPbzzy7VCrud0LHCqoGTwAB2rok/snwlo9
            nbL9i0XSrfyLG1hGyCCLcyxQQoOFGWZERB1JVQOQKAPnf4H6dpPiqx8W23gbV/hMZbO6gjuYtA8F
            okaXEM6zWlzL5GpOs0ZRXeIhlKO3JWSKWIeVeEfiXBf2PgnXNK8SeGU8TapqljNHD/wnkWo3sc+o
            TrE5k0UafFbJIv2tzObUW07KJ/34aSV3+5Y9NtItRnv0tYUv54o4JbpYwJZI0LtGjNjJVTJIQDwC
            7Y+8aztN03w9qOg2thYWumXWiWEqQW9rbRxvbW0lrKFVEUDajQywgADBR4uxXgA+Tfj78JvGfjz4
            8eGoU0+y1yNdLiubiw1HULqKy1lrfUtHa9227XMsNtaFHiOxo5GZoZy0Ur/Z5axfBnwg1KK2k8QW
            /hLw/wCCLDTr/W1bVvDFhNrM0l1b+KrO4t7aWyt4IJ5Yo/sUkUZjLYiUsRDwtfbsmm2kuowX72sL
            38EUkEV00YMscblGkRWxkKxjjJA4JRc/dFZ0Gm+HtS07WNDhtdMurAyzQanpsccbxeZOPOmSeMDG
            6QT+YwYZYTbjndkgHwBe+IfFHhvwv4W0e68IeIPEcv2CbwyEtTc2qzJp51a1SyWKytrmC5l/0COa
            SK9lvIQ1zKEiWCSaRPd/E+ieHrb436D4t1zTvCWpeE4/A+s6lfeLJbSPUb3XrJIdOjknmWGCNEYR
            ysFaPzleGSVFSMSAD17/AIUr8JvFX+m/8IH4M1jyv9B+0f2PaT7Ps/8Ao/k7thx5XleVs/g8vbgb
            cDZh8FeBzrUMMWg+Hzq+l2FpBHGlnB9otLJJjJaooC7kiWa3LRgYUPCSvKcAHhH7Hvgrw98NL/V/
            D17oOmaN8QI4rWCY29nH9o8uDRdDN6hnjUgr9puVdhvw7yFxu+Y17f8AB3WfFniH4caRqPjixstO
            8TT+c1xBp8M0MGzznELrHMfNTfEI3KSBXUsQyowKjov+Ec0n/hIf7f8A7Lsv7d+y/Yf7U+zp9q+z
            79/k+bjd5e/5tmcZ5xmtGgD47/av8FXbfEDWfENhoPhLRr+y8D6/rFv4hezN5qVzJapp22XIWE2t
            zCSBBcCWcoCx2rnFaPg/QPEnhi519fEuseINPtLnRfGt1fT2mpwaTErHWA0U2n20048llRppxczb
            lQXsQa4ZNip7v4r8a/DHwJ4yjv8AxLr3hLw94sksBAl1qt5a2t81kZCwQNIwcxGRWOPu7lPcVneF
            PBXwb03QZPF3hrQfA1rogiM767pVnZpbeXBKJS5njXbtjlgV85wrwg8FcgA+d5dW8QnwpPo00ni2
            800y6Emi3mieHJLhbS3sfE96XfyLW0a2trmGyitC8DxI4aJY3i3KUH2J4cl8/wAPaXJ9pvb3faxN
            9p1K3+z3U2UHzyxeXH5ch6smxNpJG1cYHGeM/hx8JtU8Qi98W+F/Bl3ruo7MXGtafaPdXWHht1+a
            Rdz4eW3iHXmSJerKD0V54c8J61o8ngq60vRb/Sra1t9/h6a3hkgitwxFvm3IKrHugYJ8uMxHH3eA
            DzLwlq93pf7KVv42g1OHTPEd74bh8V6jrN7GZY7i9+yxzyvchUdzEwQRssS7khASHy9ke3zP4t+F
            IPFXwf8AiT4l1Pwrout6ncf8JDcarBqNpE154YmTSwlm8bSElJBDY2IkWPeJJLlZ4pfIVN/1Unhz
            SY9Hs9JXS7JdKsvI+y2It0EEHksrQbExtXy2RCmANpRSMYFYur+CvA/jtNTsNU0Hw/4hSO/Se/tb
            uzgugt6LeNUeVWU4lFu0QBb5vLZMfKRQBxnxF8Mr4h8WfDvwb4YvpvCzeHpZNbkudGgt8abZJZ3F
            lDEiSRSRo0rXOI1ePa0dtc7SGiArzv4uajr3hOLxbo2qePJtSsNMl8F6vbap4ntrNYtPkl1+RJZJ
            Ps0dsGiAtYmIZgcK2HXOR9Iwf2TpmsS20P2K01XU999JCmxJ7vy1iieYgfM+xTboX5wDGpI+UVna
            H8OPCfhnR20nR/C+i6TpTXSXxsbHT4YYDcIyMk2xVC+YrRRkPjIMakH5RgA8Q+Ctjd+LfEfj/wAZ
            aH4m8P8AiXXl8XWltJrWmKRpl3p/9naYLqGFDLceU2zJJjkBee1t/MYxx+WPKvAngjX9b1/4O3tv
            Z6nJpC/DKKZbK28TahY3WotHFpK3AtWhu0itl2ywbFYRrLLDKJQoaK4T7E1rw54T1v7boGr6Xot/
            /beb660u9t4ZPt/k+QhmeJgfN8vFsu8g7cRDI+WtH/iU3XiH/lym12xtf9hrq3t53/76WOR7b2DG
            DuU4APn/AOH1p4k8YH4uaXqXgTTNdsJdatBNYeOtRgW4ubqPTNJH+kxWttcWwUonnh42Pz7V8pPv
            L5V4U8J+J9F+FnwnS08bTaPPdeG7HUPBtlpNnpltZWWsTQPbSSXizQvI0TLqMBeTc3mTSTgBZZ7S
            B/tW48OaTd2urW0+l2U1tq+7+0YZLdGS93RLE3nAjEmY0RDuz8qqvQAVnWPw48J6Za6lbWfhfRbS
            21O1isb6GDT4US7t44vKjhlAXDxpGSio2QFO0ADigDnfi5/wn/8AxKf+EI/6a+Z5f2f/AI+vk+zf
            avP/AOXD/Xef5H+k/wCq8r+Ouj+IVnp+o+BPEFrq2m3esaXPYTRXdhYIz3E8TIQ6RqpDFipOAp3E
            9OcVoaV/ZOl7NA037Faf2daw7NLtNifZbc7khxEv3Iz5TqvAH7tgPunB/wAJHpP/AAj39v8A9qWX
            9hfZft39qfaE+y/Z9m/zvNzt8vZ82/OMc5xSaumhp8rTPnK7HizW/CXiPSrebxV4y8DWw0tnbxLo
            b2Op3ES3I+32iRC3gkuENsoPMRLl3QM5JC4Ou/CbU/Glta6X4StNW8D+Er7xVcS6QbbSns202A6L
            NFLKbaSNWt4ZLneu1ljJ8xmUqZFavrO61K0sZ7OG5uobea8lMFtHLIFaeQI8hRAT8zbI5GwOdqMe
            gNWae979f80/00+d7t3EtNv+AtGtPv8A00Wh8za19n8SW/g8ePPhteSeG9Hs77Sr3w5aaBcahbW2
            pJ5IgmghjiYSQNEswimVSqb9pKsSBP8ADLVdV+FniqNvG+m+I57248H6JaPd2Gh32qq1xC955sby
            20Mi71Eke4kjJORnNfSVFUpP79/x/wA330sumqsrcvT/AIKf6K/fcRTuUEZweeRilooqRnzvRRRQ
            B6J8e/Dn/CW/D6HSW0v+2ra41/Q/tVibfz0lt11a0afemCDGI1cvkYChieAa8Qi8C+B9X1bxSPC/
            gjw+mraH440CfS5dH8OwQXNrp6ajaW9y4eOJWCrdWOrqxJyEiZj+6aMn6Z8V+HJfFGnR2Sa1qeiw
            mUNcNpUiRS3EWCGhMhRnjVgfvwmOVSAUkU81xnjn4CaP4w069sLDVtT8H2F/oq+Hr618Px2iRXOn
            oJVit9s0EoiWMXE4Uw+WcSnJO1NoB873mqxaf8dfi9bofCWj+FZItObUNVudDfTtOurpbq+li36j
            Delre5E3mRHUTEdtzbbQiSxxJNo+KPHWl6/+yT8T00vWPEEEK3/il1vdE0SW7tNQjnvNUkjT7QbW
            WJrZ1wXniZRH8oaWMsAfqq08KWln4y1TxKkkxv8AUbC006WNmHlLHbyXMkZUYyGJu5MkkjAXAGDn
            ndX+EGm6r8MfEfgdNU1Ow03XpdQkuru2aE3IW9uZbi4jQvEyBSZ5EGULBDwdwDUAfN9zoOtXfxa0
            +81jSNaiks7qLQri0ufiPqcWtXo1KSzmF9Db2yLCkcSQ3bSw2zrb7rS52nZaK1c7+0NP4vsdZ8Wz
            6ldWVprT/wBmRI+o61DpsJso9a16908K32y1jEjCy09PMDmeON52Ub9+frLUvhOup6jdas/irxBD
            4gMrmx1eKW3Eum27ElrWGIwmBojn5vOjkdysTOzNBA0Z4v8AhBpvjHWr7Up9U1Oxe/i063u4bNoQ
            ssVnNczRKGaJnibzLpm82JklRoomjeNlJIB8m+A9b8XxfBH4va59isvE+iR3Ums/LrsN5aXTQWUq
            zQX0y6hfTSweRaafIbcShnknMDMbYu42fGmr6jovxX8U6DJqfi2/hj8XaFqtw6R6V9gvI7KPw8bi
            SYbFumuSZYNsNqoEjyRJHGxLrX0inwR0mPwp418Nf2trUui+KrWS1uYrm5S4ng8yAwSSLcyI08sj
            JtG64km2iONU2ooSrFz8G9EuNV8Taqt3qcGra3fwaot7FdHdp11DapbRy2qEFI28tMPlW81XeOXz
            IiIwAfO/x08Fav4w+PP9jX93D4nur2LT4dJ07ULbTo7DT1mXWp3K/atPvmVjFpkQdlUNK5yxVFij
            ixvC3gh9X8CeFvD1pFovibSl8Z38Wh2OqzWmq+G7iY6Hqd2JoXt7C13wfa7hkdQjCNrZlj27MV9Q
            6l8INNvkuriHVNT0/XJtafXk1u2aE3MF0bc2gKJJE0JVbQ/ZwGib5BuOZf3tc7dfs0aB4i1+PVvG
            Wsan4/mWW2kNv4ittPe2dbeK+jijaGK1jRlB1Gd+QW3rGc4XBAPGfAutNFoPgi88Oaxpj2H2DSrf
            w1r+p6vcLdWmnvLDYraNYQ2j29wwmeOK7jW5y0rRO0lrttPs/wBMyfES0i+KcHgR9N1NL+fRZNbi
            1JoALGSNJ0hkiWTdkyqZI2KhcBXUk/MBXCa1+zNa614vvfEZ8c+JrW9udUOriOK30p44pvLgjVV8
            yxdjGq2tqQjlhvtoZTmWNXHrsem2kWoz36WsKX88UcEt0sYEskaF2jRmxkqpkkIB4BdsfeNAHO/E
            uK3vPC8lle+CJviDYXUqRz6NFHZSKyg7xI6XcsUbKrIvctuKkDgkfInwY0PQ9P1H4I39v8Bprq/T
            wPLe/araz0RZdQuUOksmoIz3SnchLEPJslBuOF5k2/ZnjLwpaeOfC+peH9QkmTTdSiNteJbsFaa3
            YgSwkkHasibo2K4cK5KMjBWBd+FLS88ZaX4leSYX+nWF3p0UasPKaO4ktpJCwxksDaR4IIGC2Qcj
            AB8m+O/EPinR/it4+ns/FetS/wBtZ0O0torO0NwiQX+jJbwKitaSxZl1vUYhK88bmGWGdHbEUrbK
            +M/EOk/DD4i3HjDR9Tn03whLFHpvhzwssnhu4sZINN+0SQPLY300aWQt2glVnnY73kQRllt4z7N4
            p+AWieMb26u9S1nxAZ7yVJLqS21A27SrFe293bR7o1BjWA23lxeWUZFnuXyZZnlNm1+BmgWXgrx1
            4Xivdak07xh5/wBvmvdRkvLqPzbOK0by5597nEcKkeYXwSQPlAUAHjOleDvC/wAPviH4Q+Gt1ffE
            DUbmfS7qfVNVtL/xNDHd6l51kTcq0M5gWOV7u5kmcFkjdlDuhOG4P47eCPA3h/4geLb+Cwhg0/R5
            ZNa8Tyzaf4dvSqzp5xEclzazzxyyyyny47p1aSQpFBH5DPPafTOs/BjUdX8ZJ4lX4l+LbG/giura
            0jtoNKMVrb3EkUkkKB7Fiy5t4cFyzgJ97lsni39nrwp4ynuJr59Tea6lmNxJc3r3rG3nSSO5tYDd
            eb9jimSQq/2TyXKqgDKFGADxG4+Hnh7wV8BfFXiTw6P7Ijutf0iX+1HbR9KujbWGqwHLxeTbWdvO
            kgu9sc6mTJRJiHHkRed+FPiTF4x8c6ppVt401q/l1Lx7oN6ttqet+ExBeLCdKZmlFvIJZJALdlQW
            mVYxxqQZPNFfamu/D63v57690S/m8G63qMsMmoazodnZfbL5YkZI45nnglDqobjI3DAAIGQeV0v4
            Harot9rF5Z/FfxnDc6vdLe3r/Z9GbzZlgigDYOnkL+7giXC4Hy5xkkkAPGfhyXxR8QxoE/jnxNo/
            2u1TWLHT4LHSJ7I/ZZoQ7RGezllEkUrW0uZG+9MhjJ2MI+D8e3PiTX/2RPiHqNt4mm1BJrDXG+2+
            IbOC5a702OO5hja3a0S0RVnjjjnjlKyALN/y0UqR6J4n+DGo+KNRvbt/iX4t057iK5tojp8GlRS2
            dvOVMkME/wBhM8a/JHyJN+Y0JYsoNWdK+C1lB4eTQNa8Qa14m0KHyVt9LuzbWNrDFGjJ5BisYLdZ
            YGRtrQTCSNgqjbjOQD5u8YaF4EX4wy6Vr3gfwNqXiC8v4bjUNOebSLe51W7+QtLtmvTc28s7wwvB
            aqrwyJOwuXLXcjWn1VJ8RLSL4pweBH03U0v59Fk1uLUmgAsZI0nSGSJZN2TKpkjYqFwFdST8wFcr
            P+zX4Qk1ifUIJda07fqmm6rHYafqs1vp8DWS2iwRLZIRbmPbZRA742YZO1l2x7PTI9NtItRnv0tY
            Uv54o4JbpYwJZI0LtGjNjJVTJIQDwC7Y+8aAPO/2hY7ufwLptvDPClhdeJNDstTt5oTILyyn1O2h
            mt+HACyCTa4YOrRmRCvz7l+XvsPhP+3/ALT/AG38Mv8AhKf+Fpf8gz+x4f8AhKP+Rqx/x9fat/8A
            q/m/1H+p+Xp89fani3wpaeMtKgsL2SaKGG/stRVrdgGMlrdRXMYOQflLwqGHUqTgg4I5X/hV/iX/
            AKK94z/8BNE/+V1AHkPivSvEur/tNWeq2OlaZPNpsVzZqr/ETVLS3kuHNrPbQtCtsY0la3tHmks4
            lkRkIkm48lped+CXwc8PeMvhrrPhC20zTNIh8T/Cjws9zPFp8bKb2VdTxePGNvmSq4jk3Ehi0anc
            CAR9EX/wG+HGpa0usy+BfD6a2t/Hqg1W306KG8+1JMsyymdFDljIoLZb5uQ2QxBr6P8AA7QvDPhT
            T9D0G6vdA8q1srC+1TTFgh1DVra1g8iOK5uRFv8A9Xx5kRjkTH7t46APMtD+GPgfxzqPhOLQ/hd4
            f8H63pN/aan4kmtNHggn0a4tyJ0sorlYl3yvcJDkopR7UvJuQXFs0lf9oi+1y/8AD3jeC68B+Jr7
            7fazeHvD+oeZpcMdvcX6fYAnmJfLK9pPLJayeXNESjjzG+5EsHrt18G9Eigs20K71PwnqlpEYYtV
            0e6P2iRS7uxuFmEkd2xaWdt1ykrB55ZFIkcvWjYfDu0h8UN4h1LUtT1/Uo5ZHsRqU4+z6cjhgEgg
            jVIgyq8iCdkacpI6NKynFAHkXxt8aP8AEX4C3l1ceFL3StKuNU8PS28mrwWms2uowy6raHKW9jdT
            Ncx7cZjBUyBwqE5OPCB4q0PTfgz4N1+8ivTc+GtLso3gbxXqloP3XhuyuhcwJBdRx2u8XI07Kocy
            6hA5LFjBN9h678INN1mC+toNU1PSLC7v4dWNlYND5MV9G7TLcRrJE+xjceTcMo+R5YAzIfNuBNys
            v7JvgeTwVc+G0uvE1pbXWlxaVcT2XiO9t/PWOzjs0lkgjkW3eTyYYlO6Iq20blIyKAM7xfqHi+Lx
            X8RIIL7ZeaPpemazb3Pg/SYYdWurF59SU2Lm5W7W4kRIXeMKkW+VyuYlkYjyr4teHNQ0T4R/tHve
            +Jb3Xo7fVNstzrWtLo20nQLRVfNlbxrcyO08UQtZAIpdkQOH3F/pDUvhOtzqN1q1h4q8QaJ4gupX
            M+r2ctvJLJbkkx2pinhkgEUXHl4jDqTI27dPcNLnfD/4E2Hw5046dpmv6mmltfxai9jaWenabE8i
            AjDfYbSAlWIiLgnLCBEJMbSI4B4B4jk8R/C/4g658UbNda8UeHvDFrFpuo3Fhf3i2l1/Z+k3qzRy
            RyXVw00bXt1bKJQj+RJb3hm2tHLNPxnjnwnptn438dPp+oWV1YyebHeTaX4XvYp9TTV/FD2l5a38
            9vMs1z9le1ZYo4nhecZVd8QkV/sz/hWm2x+zR+KvE0W21+yxzf2jvkTZP5tvJllO6SHlNz7vPQ7b
            n7RgEc7afs4eGbSbX7n7frUmoardNdpdteAfYm/tB9ShEUSqIX8m8kkljaaOVv3jozNGxSgD5ms9
            OPxD0Pxf4Z16+vbqOH+zTc2er+HNb8SyW7fbdZRZEsJriW706S5sorRi+9WRJgUKPJG452bUr3/h
            SGparZ6fovh7TvFGlzXc9p4d8H3PhyP5/C+syPaM7rsv4EkjilSVXk+d3Pyr5VfZkHwq1yD7bJ/w
            tXxnJeXX2dftMiaWfJSLzvkji+w+Uu8zZd9m9vKiG4KuDWk/Z98N2/w11zwPpN/4g0bRNXsF0uQL
            rM981vahShit1vGnSFTGzIdiD5SMYKoVAOVb/hKY/wBpewvB9t0qPVN1vLp4+yPb3mh2UF0BPIfn
            kWdNQvYWAR0DQXlvlC6XAi4Pwzd3ep/sr+BdE1/wr4f1ya3sPCQ0u+13RjfaU0d/NDZoxhd1zcwI
            8odVkwQ0T7kExij+mdC8KWmh6jquoiSa91TU5d9xfXbBpTGpYwwLgALFEHYIigDLO7bpJJHfnbr4
            N6JefCjRPh7Jd6muiaTFpsMNxb3RgvGWxkhkhJmjClWJgTcybW5JUocEAHw1ogstO1T4lafF4P8A
            hNqeo+HbXxLrt4174Mtpd39nXKW8UEcMWos9tG8e3HmQx42lh9oZ5Jm9/wDj5deM/EXiS10LTLP4
            jQzXetWd1Y6dZHw01k8Fjd28811F5jNcKoWIOrTkJ50sEbgCQRnvNY/ZI+Hur6PqFgD4ms/tlre2
            huIfFepu8a3bb7khZLh0bzJAJHV1ZXZQXVq6rXfgn4Y8ReKL7xFcyeILbV76KGC4n03xNqdirxxB
            vLTy4LhECqXkIAAG6R26uxIB5neazqvif4SyWuoQ3usxatdW76cnj7SdG1xNeWSMyR29pBpl1DE2
            DEs3mykKi75Gby0Z4vEPh/ca/r/wK8WXera14g0y78JfCjSr3Q4dKvNQ0WK2b7LqDRzFYbtortmW
            C3bzvukAI0cbpJGPsz4d/DbS/hhp2pafo1zqcthe38uoiDU9QlvTBJIF80RySsz7XkDzMGZiZJpG
            z82Bysn7L3wz1Hw9p2k634WsvEv2DQLXw3DfavGs10tnbo6x7HAHlSfvXJkiCMSQc/Km0A4zU7G9
            vPirNa6EPGemeIdLutS1DVEt/ENzd2lzZPZSLam1hu5DarJLPdwtEskSwrJYXiBitvl63wk0bRPF
            em/E/W9W8eeINW8MS61Z6tHrE2pHRG8j+wrCUXEklmlqyqYplDK+ECwxkoHDs3r1p8KtJsvEsfiG
            O4vRrX9qXGqT3gdFe6822FsbeTaoHkLHFa4jXGWs7d3LurM2dpfwWsrbS9YsdU8Qa14ji1rVF1TV
            zqRtk/tHbbRWwt5VggjXyNkEJaNQu/YVcvG8iMAfP/grwJ4i8KfD/wAJa74q8M6nDNrcuiQa1ex/
            FDxBb6lLdXb2tmbie08tEEql490Zk+UR7A2FFdXpujR+N/2nfGmk6mPE3izwzJpenx6lY65o2nxa
            Wmy51RooZEuLeOaeBHAMEtuJNz5MkrqBj27xR4AXxdrWn3N/rmp/2RaS29ydAiFutpPcQTCeGZ38
            nz9yypE2FlVD5ShlILhhPACw+KPFXiCHXNTh1LXrC105XUW5XTo7cTmM24MJy2+5lkJm80FiBjaA
            tAHnfwL0Pw98Mfhb4v1zRPCcMU0OteIXntfD2mxi8vY7XVb5YIEVAvmMqDy40JwMhRgV6r4K8V2n
            jvwboPiWwjmhsNZsLfUbeO5ULKsc0ayKHAJAYBhkAkZ7ms7wl8OdN8L+CZ/C9zNN4jsLqW9mvX1m
            OGRrxrueWe4EqJGkZVmmkG0IF2nGK6ugD4z+P3xb1Lw58WvFN14e8ZaL4L1WxutE8N3cN94nsree
            9tzJFP8AaPslxps7JGi6pOpmWXCiJnKP5extnw5rS+MPgNrXhmz1iHUCni59PuLjQdXt9Wm8RPcs
            mp3EdrN9kit2ZmupBJHJbmDyoJ0lMcZeeL2/xD8BPCniq6uJ9Tm8TXPnXS3phHi7Vo4EmWUSoyRL
            dBI9kiqyBFAQqu0DAwaH8DtG8NeIbrVtO1nxMkl39hF1Dd67c3nnLaPcSRRmWdnmWMvclmRZFVvL
            VSNjyrIAfO+n/C280C6sXfxBe6d4F0q1vdH1+bRbbTX0XTZtQle41SG2juLFy1hBc28ET+YJAi3B
            DSRCzuVbR+JehaNqnxk1c6r4X+2a0lrunvPFvhS58YebbNcTC18izso2jtIAI5xG/wBohkfbL59v
            I5WcfRH/AArTbY/Zo/FXiaLba/ZY5v7R3yJsn823kyyndJDym593nodtz9owCK3iT4MaD4r8ZXPi
            W+vvEEF/PYW2nNHpWvXmmxeXDJPIhItZYy7E3L8uWAAG0LltwB4QPE0WifsnyQaLpM3g3S9N1rT7
            VtQOrvpVpcNJriR34FwkUFzZqHM6TZtLdYt7iJGjVa5W38S6Hot/4at/DPiLwzbXNx4p0rNvoHxm
            1TWZ5ftGqwG5xYyRrHP5gklMm49Hkc5I5+mf+FI6TB8NP+EKstW1qys01T+2INR+0pcXsNwNR/tB
            W8ydJBJibAzKrllHzFmJY1rz4MajrL2Caz8S/Fus2Frf2momwuYNKjimktriO4iDtFYo+3zIkJCs
            pIGM80AeEfEDU7hPjzqc/wDwhfga8v7fxJpcK61eaXey3lvOVhFtAdRXRZIIWl8ywPzvI8XmSqso
            3wtBwngT4caTd6V8OtJsvC/hmbWtX0vQL6Cxv9PRtJvd3hrW2tpr5Au6Sc3qXZlcA/ultip3h6+s
            tZ/Z98N654o1HxBcX/iBL+91qw1ySG31meO0E9oLURKbVWEDqfsce4yIz8nDLhNlew/Zj+Hlh4K8
            J+E/+EfsrnQvD90l99kuLK3aPUrhbOS0868Ty9s0hSTeXwCXRDnAxQBwfw68V+HrXxt8ErDQ49TO
            kR+B4tOsW1BY/tHl38C3NoZdh27lh0C6EhXgPJDtDBmKeReJ/Gfn/tfasuo69mybX9B0abTXg8l7
            l4rzzbdBZ3GrJN5cb3FpKLuC2KO0cjrH5TTi5+u734VaTf6Pr9nLcXpudZ1SPWptQDoJ47yJoTay
            oNvljyBa2qorIVYQL5gkLSF8XWf2ffDeueKNR8QXF/4gS/vdasNckht9ZnjtBPaC1ESm1VhA6n7H
            HuMiM/Jwy4TYAfM3w6+EWj+Jvgxqnh2z8CaZqWt674H8OXEJsrO0SK2jl0+8VNRcSlN+oC4/tABg
            QGDWSmSIGeWPR+GfgPw94u8XXsSfC3wNqOpax4b02+066i8LRw6Nb2j6hqwi1J4WLGNpbZbN/s/m
            CaRiqExrHJJD9I+HPgN4T8J/DzS/BOl2f2Pw7beV9utYIoYv7Z2QiM/bSiL5vmbI2kxt83ZsfdGz
            xsfEv4LWXxJ/tfPiDWvDv9taX/Yurf2QbY/b7Medsif7RBLs2/abjDRbGPmncW2ptAPn/wAP2mtz
            /EDSJ9H/AOEt8N6lr/xC8Q2d/wCKZtWF1pt7BEmqxpHHZNeMoljhtIEjeW22IbVCRIqhJB9KuPDu
            leLdG0bTPFuhWGjaLpEy6W/ie9a30dobrWLe4nSS41OxY2TRWibMTRqyfZ5TENpC+76N+z74b0Px
            Rp3iC3v/ABA9/Za1f65HDcazPJaGe7F0JVFqzGBFH2yTaY0V+Blmy+/Ru/hBpupajq+p3+qanf6v
            fSxSQ30zQg2SwGZ7SOOJYhDItvJcyyx+fHK3mbHYuY4ygB8I/CPxDaajqPh6ZdYmukmlS00nRdN8
            Vi3urbT5DCkdlahvFayQNKsELmF43KStsw6xoB9EfHHwr8MfFVpqtjoHgLwlrd/qOtWui+IvE9tp
            9r5ulyXt/FaTbJxGxbUAZ2cITmIjzJSMxRz+mwfA7VbbxDe65H8V/Ga6re2tvZT3H2fRjvhheZ4l
            2/2ftG1riY5ABO/knAx3fi3wpaeMtKgsL2SaKGG/stRVrdgGMlrdRXMYOQflLwqGHUqTgg4IAOV+
            EejeE9A/tax0XwZovgXxFF5S6zpelWcMO77/AJMqvGiefA370xS4GcSKyxyJLGnolFFABRRRQB87
            0UUUAezePPFNz4O8PTalbaX/AGn5efNeW9gs7WzQIzG4uZpWHlwJt+dkWR1Bysb4Ir538F/GK18L
            +OfDs3if4sXun6Jq9rcamNK8Q3GlW8Fw0pZ3njdt0sVhHK7QwKtzO0xwYi1tbmaX3/4iaNd6vp2m
            vYeF/D/iq/sb+K9t4PEV0baK1kQNtuIpBbTkSqSApCggMx3DGDxnw/8AgQ2i6idV8QapNevJLFdf
            2DDd3FzYrcREtDPPLcvJPeXMW7YJ3ZEZYLUiCNreExgHpv8Awkek/wDCQ/2B/all/bv2X7d/Zf2h
            PtX2ffs87ys7vL3/AC78YzxnNcZ8eNc1DSPAUdrpy3sUmuapp+gTajYSrFNp0N7dxW0lyjl1ZZFW
            U+WyhysjRsUKByOi/wCED0k/EP8A4TV4d+urpf8AY8c21F8u3M3muuQoZ9zhDh2YLs+QIXlL1viX
            4Uu/GXhyzsLKSGKaHWtJ1FmuGIUx2uo29zIBgH5ikLBR0LEZIGSADwD/AIWD8RPtf9sfb/Gf9nf8
            J7/YvneToH9ifY/+Eg+w+Vt2/bv9T+73Y3eZ82dvzVo/tF/GP/hBfCnxEh0zXrLQteu9LvVbS/Ev
            ib+zby2dIGSC80qIRStP5y7SqxyogkiAxHObjGj/AMKe8T/2p9t/4QTRf+Qp/bX2L/haWufYvtn2
            n7V5v2X7F5P+v/ebdm3dziuz8dfCrxZ4ruoZ7XxpZQD+1ItRms9R0ia5tCltL5tjDHHHdxGPy5As
            0km4vNIqglYVWAAHmXxV/aOu9S+DmtPomteEn1eeLVLSeXwf4kOrNZRroeo3cEyzJHC0Mpms8DKk
            bVYg5PyY3jf4xeKNP8a6leWmr/E2PwbaWviK9unsbbwydg028hgla2EyeYYIi0ykS/vWzCVDfOa9
            E1f4IeM/GOl6x4e8Ya/oviDRb66ee0v7a3urS60lbm2u7a/SGN55xLmOcrD5khWI3Mh2FLeGFtHx
            T+zrB4hmOmQ6xe6f4evdL8R2WoTQSRG93atqFrdyrFvhaMR4juI8kblV0wS3zgA5Txh8Q9StPjDL
            cx3HxTS0sL+G0js9M8OTS6HJanYbppD/AGW8rsGtmClGk3faI/KmjSWYwcJ4a+KfxCvfDnhi6u/H
            Hia8/tS10u7uraw0rTG1aRn0HUtSnFjD9k2PBLJFbQxM4ZjLa3MYYbST6J4t/Zq1bxD8UNY8Wxr4
            MP2nxTo2tQXF7ojy6vFb2g08SpHfeYPJz9kmxGInBDnLr5h2Hhn9mHWdC8MfDWH/AITC9g8TaF9h
            i1HWrc2zSQW1tpl9bR21mr2piaNZb6QhpozIUkcs5ZUAAOi8KeK9Qbxz8KrDVfFVlrN5deDLp9Su
            NNu1NnqF9IbB4Z0VQqt5qW+oyQkKMxxXBQBUfFbwr461Ky/aa8T+ELvxhpmtWs9hFfHQ7WymFxp0
            rF/J+b7RNtX7PD++LLBEHezZF33T7rNr8CZ9HtTqGkmystd0e6sV8NQmaV4LPTbGKS3gsnkZSW86
            G4vw8zRu8Rv2x5pt4mPVaR8MbTTPinrHiUafpiWE9hZJZRxwgSwXqT6nJczgbcK0g1Fsup3MXm3f
            e+YA8z8CfGScfsxeG9evPFll4T1bRdA02812+8YWEuoPJDJbDZcBY7mNpftD4Mciu5Zg8RXzldE5
            TwD8bdbfUdJ0qX40/DmfUvE9/cSWlgtkNTNhK5DRWbPHq5dWkG9guZIkkLQJKV+zK/s3g7wN4h+H
            vws8IaNo1l4fn8WWWi6doeoapdySLEkdvAU8xdse+5WORnZIWaEMJH/eRkk1zvjb4I63pnhfwpZ+
            An0y7v8Aw14bn8OaafE0gCwMTZPbX5ZbeVXlgl0+FxGYlVmbduTYAwB5F8Vfi98RdI0v4kajps97
            H4e1b+3NK06eWyS1jt7mwtr8SS290mpzTxSBLF2H+ipHI9upC27TvLXd3/xR8V3XwG+J1/4p1Tw/
            4Qu7mXWtG8MXo8RJBN9tja6txAZ5YbaNWWeBzDIMMYtm/DxvI+dr37Jeqaz4y+IOsIPCUD+IbC40
            qC+XSYlufLu5L83F02yFWiuYor2KIMsji5S3YTFGlV4O80v4Y+PNNj8X+HYdesrPwtrN1O9pf2c0
            kWoWK3d3f3d7PGBGNs4+1W8ER81lXyfPIzmBwD53+GPxUg074q+EL3UPiJZWmhW91cPqbah40iaB
            oTZXCIrJJ4kvw/75oCAIQQQG3qFIbovjB+0Hqxm+Kq2fi7RfA3l+FrmCyt9V1JzdT3FpqGt2Z/s+
            ISQ7Z5vs8TGZSxjKQr5cuQyeiWHwq+I2nePfEPiW50vRdWvL/VINQiksvHmsaPat5NpbW4MljFby
            RHebbzCrtLgSCNmkVAzdn4s+FWreLPiZql3PcWUXg3V9L0u01GMO7Xdx9jurydrUxlfLME4ukSQs
            zbo1li8v96JIwCt8GvjVaeMrLx42q+MfCWuQ+Fr9Uk1nQGFvaGyaygn8+QNcTbFDtcoX8zafs79C
            rY9V03UrTWdOtb+wuob6wuoknt7q2kEkU0bAMrowJDKQQQRwQa4zQvB2tv4N1XwX4iuYdS0hbD+y
            7PXHmF1fX0DRtGz3cM8LRGVVKBmJlSZt7tHGG8odX4c8Paf4S8PaXoek2/2TStMtYrK0t97P5UMa
            BEXcxLHCqBkkk45JoA8s+K1l4ps/H3guHSviH4g0aw8Ras9jPY2trpjx28aWNxNmJpbN3yXgXO9m
            4ZgAOMcV4t+O2q+BPDHxj02fVNf1HXfDxaLR9UTw5LcxxY023kV5pre1+zKxleR28zaBu5ATaK98
            8Q+D7LxLrHhzUrqWeOfQb17+2WJlCvI1vLAQ+QSV2zMeCDkDnGQcTVPhFo+raJ490ua5vlt/Gbu+
            oMkiB4i1rHbHySUwvyRKfmDfMT24BHS99rP84/8ABNE1zxb8vzd/0PPNd+I3iSHxFrWtQa1PDpeg
            +JNJ8PHQkt4Ps94l0tp5s0jmNpvMBvSVEbqv7pcq2WyaJ8SfET+JdD1251me50fXPEureH/7BNvA
            tvaRWq3flzRssfnNITZAtukZP3rYVcLjvNS+DOl6l4p/tdtT1OKzlura/u9ERoTZ3l3bhBBPJuiM
            oZfKh4jkRT5KblPOXab8HNL0zxemtrqepz2kF5calaaJM0Js7S7nDCaeMiMTbm82b5WkZAZnwo+X
            B9my31/KP5tSa7X+7JfCk97L8pfk2r97ff4tP8ZfGnh7wBH4ml1SbXX1/wADX3i0WTm2sxpTQC3k
            ZLR1tZDgRXL7ftCzBnhjBIDNXl2s/GTxlY6j4ofxZZeLfE1hoWiw6rFAup69oksAY3XmlpLHRLMM
            ri3QBrpVjQoxWU7pRH9MXfwJTQvDmrwaJcTeIbl9Km0PSdN8QXNvHaaZZTMvmwxOLOUsu1UwLiO4
            z5KKflLZ8Bg/Yr8VxeIb3UG0HwY9tPa28CW3naT+7aN5mZ8Hw0Y/mEqj5Y1b5PmdxsEdyaaVvP8A
            N2+5WX9XH9p/10X3Honxu+JOraV4v0mylvviBoerJawizsvB2mvdaZc6o0chlheeXSpDPGsMrS7o
            /NGy1mYwJNDGstbw78YvE4ufiZfC38Qa7rfh+XUGt21O50y00Oy0/wDti5tVkjUTwNK0cVlK7fam
            U/6JIqzQifdJ0Xxa+AOqfFbxHoOu6povhLULu3ikM0V3FE7WgGnXUcVvHNLZTG4U3l2ZTJKixotv
            CVtmfeX0bD9ny7sh4ugluPD+sQ69YWYk/t7SDfWb3o1PUdQumeyMifut9+PKUzMybRuZimXgDldR
            8beJrT4S/Eiza71rS/7H+Ftpqenf2nOf7Wt5nj1VVnuZgiOt20drbNIvIjlVwpPLt1Xizxj4xf4w
            6vpmnW02kw6Por3NteSQtqdjLav5Ly3EtnbTCeW5MsTW9vAVi+WO8kSSc/uVzvFP7IXh69+H/iLS
            dOnmudUu/DcuiWMV28dlpqyb7yWCWW0soordmSa8ZwxhYoY0dAJNzto/Fj9nJfiFd+MtXtj4ftNb
            1LRb3TtPmi0K3iuXknsHtc3t8yyzuq7htMHklUyrCUYFAGd8C/iFr+n+HPEGq/EPxRDp2iWF/fPJ
            N4h8NahoTRrPqMxtXF1fTlGiMZUJCq7olkhjZsr8/ef8NHfCb/oqHgz/AMKC0/8AjlYvwY+Ct38L
            PGXirU3h8JWthq1hp1tFB4T0M6PEJIJLxpGkg82UFiLiMCQPkhcFRtBb16gD5/8Aix8eG8EGC/0b
            xnpkmkX9/bGae80G41RdNsm0y7u/tMKWskb3NtKLRCso3KjC7zIwTZDyvgD4zfEDw54M8fatqk1l
            4k/4Ri11bXbrRtY0bVNA1AQvfzyWjxy3PnBoJLaG6KIEzF5cMTNwzL6r8UPh54m8W65pt7CNF8Q6
            VYXT3UegawxtrWVWsp7N4JGEMzP5i31xI7kFQLeCIQ/PLNWdbfCXxHYaPrmjTjRfEx1O1tVHiPVb
            y8S8hliaMRJ5eXkMdsfNuIXS5jk8wqGYTPLeuAeQ2/7RWr+B9B8F6d4laGfV/DVhdQzAeMdOtTrm
            pWst7pbG5e+uIJfszNbtPu8mUtJJGcg27LL3msfGbX5fHP2+Wx/4QjSoNAhuobnxffx2mn2lveG2
            3XOoRJIzi7Sf9xDayCAP5F7tuTvxFnat+zp8Q30Px9p2keIPDNnF4k0C50eVr+yuLma8eS91afzn
            dJIlt5JE1BGkZI5EEjSeXEkaIreq3Hwlef4j6t4tt9TstBvLu1a0W60TQ7SPUJlaFUJu7udJmn2P
            HG8SoIlXYqyLMoAAB538KPEev6T4e1/TtU+I39natZaXaXVnYeP4o7m6sLOFAbi/m2x2Ms0EgkCC
            SQ7kMWZWSYzW0VbwR4k+J1xZaJrcvjXw+8PxA1qU6RHL4Xup4YbdbKWS3lQHU0MMU1tYC48ogukt
            0wYAltvpvw1+Fv8Awg+j3vhy8ttF1Dw9HdQ3unC2s/swjdGVl3WozBHIrwxTeZbiJHlkkcQRMC0n
            kOo/s6eIb3Sfhbp9/wDD74c+KH8GWFlZXF/rGoyebqMcWnS27W5U6dJtiW4mMygswJiVtqs3ygHV
            /FLxX4n8NeI7aDXfFmr+D/D0Oixy/wDCR+HfDyXVlLf72Wc3fmRXJtYEAidQzINryZmO3I6DWfjZ
            d6Xrl80GiW1/4S0rUbPSNS1oaiUnjuLjytrRWwiZXjX7RBuYyoQGfCtt51fE3wwvfH0BbVvE+t6H
            b6hYR2ur+H9HuoJrCfhvNRZZrbzlDB2QvEYWZQpwrdI7z4GaLdeIWvk1DU7XSprm1vbvw9A0Isbu
            5tgggmkzEZQy+VBwkiq3kpuVvmyQ0spbX/W7v8tFZ9trBPW7Xb9Ft531d/Pe+nn/AMLfi5r/AMSf
            FOoaFLrb6UnhrUdQu9UuZLSNJr+2S/uobaCANHtMKpDiWZQWyFQMHLsq+Lf2hPEC/DnWtTXRoPDk
            upeFr/X/AAxqMF8L15EhjVgZ4mhVIpNssThA0qkbwW+Xn0CD4GaDZvo09rd6ja3+lane6lBfRyR+
            awu5nmubZ8xlWgcyYKlcgKhDBlDVkp+zZoDaFqOj3Wta3fadNpFxoWnwzyW//Ensp8CSK2KwgnhI
            gGm81gIlGcbtyjotf6dn/wAC3o73vraaVTm6X/C+33Xv6pLYr/H3VPEui6LoGraJ40h8MxlntZbC
            SeC3l1OeRVaFYHksb15JR5cqrbRQ75TLkNmMK/l/we1r4h+I9R8K/wDFwZo7TUb97u4sZ9btNZuQ
            ilbq5ieOPRocRMksaLMtysKpdWzQtIjwJJ6n4o+B/iPxJpkGkXHxK1PU9GkkBvIdZsIGlaMKV2RG
            0FrEylXcNHdxXULnZuiIVleH4X/ArUPC99qXiPU9cvdP8W6vqiX+pTaffLe/a4Uggi+y3Es1uqyx
            s0DSgpDCYPtEkUHlIW307X0MYJqKUtzxnwj8XvHF3p/hFdZ8UXt9Z6za6Pql3fazNZaSlnNHpV1q
            8uJbeFGSwuHghtzK0cw22uoodrKhb0Twd4+1+28EaVe+LNO1oSt49v7FdT8PavHdQ2m7W5LOKG5F
            z5LSQF52t1RIpdscaSAQyCPy9H4c/s66h4J0/wCF093rH9sa74d+xxapdXMihBbW+lX9rFbWojhj
            DRxzX8jK0i+YVdt7sVRRY8O/BjxDZfC3R/B4Xw/4bhg1q715004SXVvZyLqrahYW0MeyDdErmISH
            92dkLRooMolhRZzvw7+IOr6v8T1g1uw8c6/fya1r0elSW95p1ro1rY2upNZSSGGKeGSdY1ltg32l
            JnDKWhH3ieV17x34z1vxzqfhfR/iB/aP9s+Fvsml/ZtDurS8uZpDqKktN5629pqVqtjcPtZLUTyC
            SJ1h8lHg9M8EeAvHHhvxJ4cvpvDPh9F0+K/tri7XxbPPLML+7gur25aL+y41aVpYd4RWijBdlAVd
            uzG8X/ADxN4u8e6drWvweGfG2nweU91Z61mKG7a3tNT8hfIFvKiRm41ZkAYyNFHZxOXuJJGCAGjp
            nxc8VX3wv0XW7i/+yarq11PJbzW/w+1HU4RaRkx/NFY3twv7xsSxzi4MckbAorcsOd+AXxa8T6nN
            DBrmu3uq2c2v6tbtF/wrvXI5DnULlIh9teV4oI1Oz5JFPkovlOQyFh1Xhr4B3fhr4PeDPA2lReH9
            AewisNQ1jULK0Li51Wz+zSRSCNRF5qyXFujSyOyu0cWwANKJYc74Y/C3x34N8SDUb/RNMd7jWr/U
            biS2+IWrtbRR3d3NMwTTjaLbO0aTkAEKHdN+UY5AB7fY+I9J1PWNS0mz1Syu9V0zyvt1jBcI89p5
            i7o/NQHcm9QSu4DIGRmuL+NuseItG0LSJNDk1S0s5dSji1bUNC05dQv7O0KOfMhtzHJvPmCJWxHI
            VR3IXjI6PRPAek6B4v8AEvia2hxrHiD7Mt7PtRdyW8ZSFPlUbtu6Q733Od+3dsSNEd4w8LXXii2t
            EsvEmseF7m2m81bvRzAXcFWUo6TxSxsvzZ5TIKggik+ny/Ma/wA/6/yPOtG+KuoPo/h/S/CV1H8T
            NZv4r68N7rdwNHZLeCYI6zLHbErOryxxbPJTlWLbCMHjbn9ovVPEvjvT9C0C7bTI/FujaVLo9xqF
            oDBpc05vWneRwuGm2QKscLNh3Tj5Q5r0l/gJptvY6d/ZfiHXdF1q0e7eTXrOS3a8ujdMHufN82F4
            sSOqPhI12lF2bAMU+f8AZ58HzaZqWmi3uotOvNIsdGW3jnx9ljtHle3lhfG9ZVaUtvLE5RT1zmvX
            +t7228vO99tBdGl12+9b/jotLaamfqHxg1Dw1ql1b/2UuseGdDv7LRNW8QXOoLHe/aphCA620cAj
            dVNxCXbfHjc+1CFAKeG/iRqQ+EOteIdV13RdOurbWtSsV1XxDKttZWsSanLbRNJt2htiBQE3IZGV
            VMiFy40X+BWnXGsre3XiDW7y2lntL3UdNla2Ftql5bKgiup9sAcSZihYrE0cbGJcoRkGjJ+z5FJo
            fiPQP+E48Tjwzrq6kt1owXT/ACVF75pm2SfZPOGGndlzIcEAHcMgi213/wCG/W9vK1xPbTy/KX+a
            v07Hyhpv7S3iDSfBtrcx/FGEwweG01i3s7nx3pFzfSqkYLWbltBZzeqDGCkrBpGf5WkKSlPrPxZD
            r998PLyz8PeKL3xJ/wAJVa2unaRrFpFGJrHzodk2oi5twkRjWIG6UYj3SK0aSfvoY4+M+In7OnjL
            WLXXLDQ/iFrVzbeLLV7DX59Un063RUMXkrKttDpZE8nlsysRLA7LFCnmgKhj7vxJ8IJfE05tNQ1S
            bVrDUbBtM1e/1Fk+2NY7I1ks7ZIokjhW6YNJPMoD8BEAxA1qhnK6N4n+LnjH4eX2uaPd6Lf22r+D
            JNV0G4ttH/s66XUp4Q9nFtlvbmNtoyZPMCoC8W1pAZNmL4g+J3xG1Dxl8RrDw54C8W2utv4RsBpN
            rc3mkNFp968mprHdOrXrR7XYRg7d7EW/zLgJu7zxN8I9Wu9N1HQ9B1ay03RbrVIPEVs99bPcvYaj
            FqUV/Ivlq6GaCeRZHIMiPEzMFZ0dEgrWnw4+J1n4y1TxKnjrwkb/AFGwtNOljbwjdeUsdvJcyRlR
            /aeQxN3JkkkYC4AwcgHCftY/HX/hCtL8R6DpPxJ8M+HdRfQL5fsMkPm6nFeLbPLGiyx30b20ksZB
            icwModBli0kUb9F8P/jd/wAJzo/i9LP4rfD+/wBQ0vdJDewab5cEFvAwF1dSwf2m8jQZJRZGaEAr
            vHmRvGzVr/8AZ48Q+IPgCvgHW9a0y+Fl4Rj0bTdNhgkitF1BbFYBcXMpLNcKky+ZFiOMJkOY5JEi
            eP0S18KeIfAkF5B4Rk0y/wBDSIf2d4b1RpLVbSQum5I7xBJ5dsqBykHkOVYhVdIgkcYB5Vb+MvHG
            jacnjC6+Ivh+10TXr9rIw6j4Vn8qwkgE6STmNtW8yBSttmWLrCI2kligK3brZ8f/ABf1Tw/8WvC9
            la6ne3f9jWsuleI1s/DV9Lp93qVzJpb2lrG/mpb288yyOIpJpnSHztrn58ns4Phd4m0bWJfF1lrW
            i3/jW43rfLPpJttPu4dsQEUQWR5bWRhbQq1wXnJx88cqw20cGdf/AAP1nVr7XNcufEt7Dc6nqmn+
            Im8J2UtsmmG+s4LIRRSXb2j3DRmaxjJkQR/IR+6BB3AHB/Df4oeK/sHjvWrqCZJtIi1ec2V7raXM
            0Eba1fx2r3NvOYbWNbcW94jGHUADFAA24CAx+d/Cr4++NvF/w+8Jq/ijUy9vFY2V0vhk6Vqeq3qx
            aNql7I4R5Lp1uZpLaCIxzqjMbfeuxppIofXvE/7Nev6po/jvS11nRdY0/wAXaBqCXkGoaXHAI9Zk
            aN7WSLYjmO0ikNzMsfzSJLPLKzzySl0ztL/Ze8Z2Hj211iTx3tjjurGf+07KS6lvYVhtNXhdEXUp
            b9TltRh6uF2+aQiOAzgHGahq+up4E8b+IdSk8TfEDxNafZLS11Hwt4tns9Ia7bQ9LeIpBDfWvmx3
            F3cuyLbxtJIZMKu5kU+ifD+5nh+Ifh+88OWXia0ttW8LazeW+m+K/F8up2t+0c2lG1uFkS7vY0jI
            uJFEiZbDMdrDbnR0L4A+I/B3inULnwvq3hnSNCtrqGTQrHVNJvNTks0TS7KxLFhewqJNlqyKxV3V
            Hf8AeYmkSrGlfCbx94e8eDxFb6v4SvHNhqUEcVvpl5Yw291e3Ng8twYWupw64tZJWjjaDfKSSwad
            5UAOd8N+Lvi7N8U7bQru38JapqXh/RbmO7h/4Su4hi1Fp54GjkdU0/abm2hih83EaqBqUTqIlmWO
            vb/hx4u/4WB8PPC/ij7J9g/tvS7XUvsnmeZ5PnQrJs34G7buxnAzjOBXO6p8Pp/D+l6PP4e0ey8U
            eIbLVG1V73xDq8tjJPcvbS28l1JLDbyiSQxyGMR+WsaIVVAixRoOi+HHhH/hX/w88L+F/tf2/wDs
            TS7XTftfl+X53kwrHv2ZO3dtzjJxnGTQB4zRRRQB7N8QfFE/gzwhf6zbw2U0lr5ZP9pXMttaorSK
            rSSzRwzNFGisXZzGVUKS5RAzr4zq37RfjPwto8VveeFvDOveIra11GS8Gk69dRWl1NZtYwtBaF7E
            mWeW5vRCsK7gsiGIytIGVez/AGmfDL+KvhVJaweH/wDhJLxdU00xWkemWmoTor3sMU8kMd2jwLIL
            eSfDyDagLMxVQSPnfwn8DvEU3i/VdK0jwR/wjEd3a6vpa63rGmWGm3VhC0ehTW12H0u3+z3E8Nz9
            plgUOhzE/wC9jeJsAH0R8PfjHq3jfx/f6HN4csrTSof7V8u/tdVe5nT7HqJsU+0wG3RYPPaO4eP9
            4+4W8oGdjY0fCPjzVvFvwb8E+IY5tFs/FPiPS7G9gs71nitbm4kt1uZbeP5i67o1mww8wxgFykgQ
            q3kOm+BvHC2HiOSzspvD13q9/wCIfDthcadJOLySO91qeZNTuf3cawrZQ/aZoMyMJftJVHieZVk7
            y0tdW8G+ENf8Kx+Hf7Si0fVGu9Ku7qxe5sreweR722lS3jyz/Y3VraK0gJlLWtsQII5keMALXxt8
            SdO/szxPrNpZP4NutUu0uNKsPDd6+r2emn7QLK4KrcSSPI5Wz3xC2DoJ33KnluVPin8fdS8JaF8R
            5PD3gjWtaufCNrN52qlrIafFcLYx3a71e7jneNUmiL7EyfmC5IrzLQvhH4X8M61Y6zL8JptP8HWe
            tTa1ZapZeGbY6yrmZbi2EscDNdpbJK/7qOKETbVSK4jgigkN0fEr4K3fjfxp4h1iDwdDcvrfiS+s
            RqjKbTUpLJ/Dg0wosrW7+VbC4NzIZJSFxArRR3DTQq4B6J4o+PuvfDv4a+MPE/i/wlD4am0uV30e
            31/WLOyXWY9rSiCMwzXW25VEkQJyJWRGXYJGSHjNQ/bHuz4V8YXlhp/hK/v9HlubS3m0TxKdWtnk
            j0S71NZmAghJiJthBwQWcTjI8r5rOtN4j8Pf8JxpniPwze6vFcXVhqNxLZWt5JZeJ7iX7TDJHJ9k
            trqSK0jtbSxUweUDujEU0lxHOZZ+M1Txhq/xFh8a6H4i+G97oGleINUV59Z0vS9envUhfT7eznnt
            1n0SRPMMAmgztgJUsoC58+QA9M+Jf7Tl38NfFEmiXY+HIu2v0tIrS98eG0vI43G9ZrmJrErbqIf3
            jbnI6Khkd41ezfftGXtp4CPibyfDOp2Z1/S9Hjn8Gapc+JYz593ElysnkWsRjkWGTKD5tzvGuCzI
            knKfGD4WeK/HNr8SLXRtGmuZrnxJfTweayQLNHL4LNjG6NIVDKbmVIsgkBt2cBGIs+OtBvfFNr43
            tktPE1rbap8UtD2JY6dcwPd28EWkx3EvmiISRQIbadxdRtGN0C7ZSGw4BW8a/tR6v4d+MN/oUGv+
            BovDlprVnZO13qOnLKlr+4F68sj6tHLFLExugI/sjcxIOdxI7z4rftDJ8PtdvNKg0m9vfst1okD6
            haaZd6hAGu75Yrq2f7PGwinjtnilRHfdIbmHajZAflPEfw/8Q3PhPxdptqdT/wCETni8TaZdFbeQ
            XM51S8knkvYbHOZ1syfLQblkuEe4eJceStzZ8R/CvxF8RtU1TSPDfjfxN4X8PWeqS6lK99oNhDar
            qSXJuoFtYWso5Z40uhHO87SMkoAQPM0sskIB67deKdY1vwvZ6t4O0aHUJriUg2viaS70RkjBdWYq
            9rJKG3KMK0agqdwbGN3Gad8R/idqvijWdDtvAvhKSbSYrd7m6XxddG3EkwdhBuGmf61USORkIBCX
            EDchxR4NsfGmo6dqWlSeMfEFn4ghlhj1F/EGi21xFbRkSBjptzBbWsEzP8rrK6zBAqCW3RmeMZ3g
            b4PRaTrPxAOjQTeGNQtPEi3WiatJE8plWTStNE5lLsGu4ppon87c+6SRC+9Z40lQA6vx18Vf7Cmv
            bLSbf7Teafqmg2N3cTJvtV/tDUIrd4QysCJ0hkEpQ42ie3YhlfFdVoXiu01zUdV04RzWWqaZLsuL
            G7ULKI2LCGdcEhopQjFHUkZV0bbJHIied+MLyLxXaS+FPCfg3U7iay1qHUp57m2fQ9Niure/S93P
            PNAWmWaaFyXtYZ9xbLNGJFkrq9R8FahceBtdtW1D7V4u1PS5rKTXLPbpk7MRM0SxyokjQRxPO/lE
            iVowdxMrlmcA7Ovm74vftVS+DbnxNHojaYbSyi0uG01LUlRIhfS6xd2F5A6zXNvvZUs55EwyIBbz
            M8qptJ938FaFd+F/Bug6Nf6rNrt/p1hb2lxqlznzbySONUaZ8sx3OQWOWJyep618zfHT4Oi68SeI
            7PSPDs1zaXkWkyW8bWep3MV1c3F3rzX8ay2txB5bMl/KT50qW4E6pIYkkV0ANHwp+1xLqHwm+Ius
            X2p+H7zxRoct5DpNtYxo0Vy0ekNqERmS2vLpArGC7G5bjawgZcrICoxvFH7ZepaL8UL7Szf+GdK0
            Kx1/TNLubbUpLJrq2imFn9s82VdVDCSB57hWMVtLGpgIZyFkKVtL+DAf4MfF2LUfCmpr45gsL+ax
            iaPU3llaXT71YwvnXl5DNK0moaiSttcTLm5VnCzEquN4y+Ddxf8AxD8S6jc+Fb3UfCLa/It5c2lh
            4gjzayzS/akESamJXkIvr9Ve1sprZ/tLNuRJZxEAeu6r+0zd23jjxV4esIvCWq3+iy6fa2+nWXiE
            zS3Ul7qi2CmdxDm0a3ODNEIpyDcQjeuPns+N/jx4m8M/C/x1rFzpGi6H4h8Ma/p+iyr9uN/ZFbg6
            e5m3y/Yh8sd90d41DJlnC5I53xj8L9fuvit8QbmTUvE2oy6/a+H5dKXToo4bK3vLa/u7i3AmnhnW
            CO3S1heUncrNczMInknghHVW+ga34S8G/ErT4rjxBfeKtSv1ujqV5aC7N+sscNpAbdrL7CqMYbdE
            b54Wt5A0jv5WyaQA8Z8KftneLda8ZWmlSah4SuoZPEmm6OIraGx824guJLVZJE8rXJ33KLiTBiin
            QGP5mUiRY/XvG37SieHtU186dF/aelaZr+leHPNsdKu9Qb7W1zbjUg72wdF2QXsCRKxWRriOdNj7
            VU8H8GPhx41+HevL5GrTSaHofiT/AIR+OW68NalcSy6a0SMY7f7XqDtbWSzSR24kto2BNlbyytJE
            kjDvIvDmreJviX400BtLvbXR5PGem+IrzVLi3eKGS3tdO017dbaVhtlka8tFVwoYLHFOGaN2h3AG
            d4y/ajk0j4N+JfGWivos/wBm8yfSLvxJDqGh2uoW8lvLPbeQtxbj7VP8mzyYZMShRJ5kPmCNSb9q
            LVNA+Jb6Z4k8P2WleEotLsr261HffJdWbS6dqN/K3kzWkbTRqunSR4UKyleQXLww87Dca1q/wD0/
            4W3HhzWrCTS9A0fRNQM+ganOmo3RhniubGJoJbRRGrW0Qa7+0/ZWWfa7hG3Gxq3wn8XR6Vp+g+Lo
            PCXjq78WX7nWraLwjfOwt7i6t5L5Rqhu9sCwQpH5DSqjstjbIil40AAOzh/aUWw8UXX9v+G9T0jw
            hc61ceHdH1oLbzLd3tqLkTgpHcNOWkltZYoYVtyzNGh3M06xx7Pgj4oeMPEmk3Wj33goaR8RdK0v
            Tr2/0/Vr+G30+drgzIzQT2zXbCMPbXGA67sBM9cjyvwR4N1a0+KHhS6k8H+M7TyfHviO8n1a91F5
            NINvKNY8p47P7U3k7vNhxKbeMMWOHPmgyemfCHwlF4d+I3jGTS7fU4/DkFhZaTaPqds9sElhvtUn
            kt7dHRM20KXkEcTIpi8sKqO2xsIDO0X47eLLjw6uv6t4M0ay0ptcTQB9i8Qy3M/nnUlsGbY1lGuw
            He4O7JCqMDcSvS+MPjKvhTXvEWkjSPtdzptppclqftQjF3cX9zLbQxNlT5aiSNdz/MdrkhTtw2Bf
            /A6/1b4TSeEL/wDsu9E/iptZuIrjdJbTWjawbxomBT5mMJKlSNpY4zjmqWp/s2Wmnax4qufCGl+H
            vDdlewaLcWNjZWwtYmvbC8luT5yxIAqyZiTeNzAbjtO0A0rWXN3/AAtG/wCtvMb+1b5f+Bf5f5m6
            PjVqZszpv/CPWR8bjXf+Ef8A7KGqv9h8/wCy/bN/2owB/L+z/NkQZ3/Ltx81Rp8cdR1nTdEh0Dw5
            aX3iW9XUXubC91Vra2thYzC3usTrA7P++ZVT90u4EsdmMVQHwn8UmU+LDFo3/CZf8JL/AMJANKa/
            max2/YPsHkfavID/AOqzJv8AIOG+Xbj5qjsPhF4r8JQ6Hreiro2o+J4l1cX9pfX01vbZ1G5W6cxz
            rA7t5Txqi7ohvUknYQBUyvy6b2/Hl29Obd/jYatzK23/AAX+nLbv67ZPi/8Aaozo76l4NsU1S3Tw
            frOv3H2uEqbG5trLT7y2WbMibo2jv4w4i3tukjAKhZCMz4aftRazrvh74raxqX9i69beDdAh1qBd
            INtD57FL13hd7e/v4xxapg7ww3klCNpONr3wy8S/DCDyvh94dnv5dH0A6HqGszC4QXU9xaWizXaR
            RSxzkQxaTYRk2bM5a8ZoxJNbSRScp+zh4R+Lnws0PxHZ2Wga0wF1pz/Y7238u6nhtL2CylWN7nUJ
            LVfNsLWVgI+ckgPFCliZtJ8vM+XboZxvyq5674n/AGw/A/h7UfHL23i3wlrNhonhuDVdNgttbgEu
            pXpN95tqkgdgzYt7YBVUspmyQ25RXV/Ej48WHgnxlZ+FLa48OJrcsEd1IPEviBNJgEbuyIkbeXK8
            srFWwipgAZZlLIGxdN8S+MLP4p+IfEr/AAl8Wmw1HRdM06KNb3RvNWS3nv5JCw/tDAUi7jwQSchs
            gYGcHTvh78Q/FHhG21to9JudX8beCdO0nxJB4jWSzmsbpYZPMmEUcLCQk3Uwa3bygGQAMASFzbaa
            sr/rptfp6miSad3b/h1f7lfTqdXffHe8/wCFwah4DsrbwlHdWc1tEI9Y8Umzv7sSQrKzW9oLWQyB
            QxH3xkqeldv4y8V3fh3xH4EsLaOF4de1qTTrlpVJZI1069uQUwRht9tGMnI2luMkEcL4k+HXjbxP
            YWPg66j8Pr4Ps72wmi1wXkzamIbUwyhfszQGPzWkiK+aJgAr5CEjBn1f4f3fxifU/EF6ZvD7mwS1
            8K/a7c/adOkW4juhqEsJKfM9xbWMgtpclUs0D7GmmhS7JLe+v4adOnUzTbeqtovv9Tq/iT411bwl
            J4Xs9D0ey1rVde1RtNhi1DUHsoIttpc3TO0iQzN921ZQAnJYcjFYqfEDxxo3izwppfiXwn4fsbDX
            7+XTku9K8RT3ksMi2dzdAmKSxhBUi2Zc78gsDg1neMn8Y+LT4E1HR/CsK+IPDviSSTUtO1S/a1tE
            U6ZewmWO6ELmaJjcxFHjiLHeFdImWVYjUbD4j+JfHXw8udZ8LeH9P0jR9amvrq60rxDLeyxqdMvo
            FzHLZwZUvOgyrMwJHy43MslHr1cp8Q/HEvw70W81+50ibUfD+nWF5fajPZzJ9ot1ghMy4icqHVwk
            iZD7g5iG0qzvHjf8KH8Nf9BPxn/4XOt//JdcZ8avhalp8M9Z0bw5oWta/qN9peq2dvqN9rl3ez28
            l3a/Zkt980kkrxyytbkxuVtoxC08jI0KFgDR0747eIpfiZfeH774ZeJrPTorXSXDr9gnntWu7q6g
            M84hvXzAPJQ5jVmQRzs4C7Sc67/aB12bS/F01loH2G70jX4bADXrWe2tbC0S20+a7e/uIxIseGup
            UWaMSR42TAPbxzTDlPh58L/CnhX4gaBrul+BZtF8Pw61e3Oj6xbeE3ttSluLpHjNtdqqCeCyj+1X
            IjeSKNMQxBjGsMUl6XHwAHiDWfGmueM11PxDd6b4utdY81bnU7CKeKPSrINPp9vZS8SwuZViYJNK
            wg8hpC5MygHr2mfEjxTL4Q0XVbv4aa1c6jf+e02n6ReWjfZUWQiF3N7JaOPNj2yBDGHTJWRUYYPO
            t+0jpuqal8L49J03WltvF11b+Y134fvSkdvcabPdRbLhEMBkDrAH2u4RfOLYCM6ed+HPhvql38ON
            GsfC9r4m0rXdQ1/xPcxanqd3fWlxZ6bNNeIPNmuEeWHzg1iyJjf5/l3ZinNvKrdV9ma5+JHwok0j
            TfEGmaJcS2urr4dudDuIrbQY10bU7ch5gDBbsfMs4TaKyhHj3BSZmYgG1P8AHHxXP45i0TT/AIUe
            Jpvsdql1q1pPcaSk8UM5lW2mikGoFGzJazo0RAOG3712BJa3xQ+POveDNB0m7TRPD/hG/vL9YDY/
            ETxRZ6ZLJbrLbiaWDyHnSRRHLJuJkV4yoIjlyqOah4F8KeL9R8Q/Ej4g+CIdatZorWw0ixv/AA6+
            pXsGnxFikjWgikmSWWa5ndlUZWEW/mJG6SgZ3g74ba9Z+CfBdp4ahm8EwnxJrcst3YWFnFeWGh3U
            9/dQRxxXUL+SruNN3Q+WHXADKpRtoBjeBf2odf8AEfjXQtJvr34TfY766u7eX+zfHsc90f8ATI47
            QRRiImSR4WcqgH70gFjbNiJu78dfGfxP4X8WeGtKs/hp4gurXUdam05rgz6Zi8jSzu5gbbN8pViY
            FfMyoPLEgIDlVrlfAng/4hR6p4XTV9Z8TeKdFfxTrT6tbeI7fTDawWlvc3jWE4BgjuPMaZLGWIxE
            xqFJURoIxXmXj/4YaJDrOh3tn8J9M0nTbvxIdQ0+4Pw4OpxQ6SNKmgaK8tLNFmDNdhZljmKsBcwE
            /NDNFCAfYnh7VLnWtHt7y80e90G5l3btP1B4HniwxA3GCSSPkAMNrnhhnByBo14z4K8BaN4p+C+o
            eHdHsrLw39out939h8G3Ph+zupkeOTbLp9wVeWCSNI4ZhvxLH5iB1zhPRPh94R/4QTwhYaH9r+2f
            ZvMbekflQx75Gk8qCLLeVBHv8uKLc3lxpGm5tuSAdFRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
            RQAUUUUAFFFFAHzvRRRQB7t/b9r/AM87z/wBn/8AiKP7ftf+ed5/4Az/APxFFFc/tGMP7ftf+ed5
            /wCAM/8A8RR/b9r/AM87z/wBn/8AiKKKPaMA/t+1/wCed5/4Az//ABFH9v2v/PO8/wDAGf8A+Ioo
            o9owD+37X/nnef8AgDP/APEUf2/a/wDPO8/8AZ//AIiiij2jAP7ftf8Annef+AM//wARR/b9r/zz
            vP8AwBn/APiKKKPaMA/t+1/553n/AIAz/wDxFH9v2v8AzzvP/AGf/wCIooo9owD+37X/AJ53n/gD
            P/8AEUf2/a/887z/AMAZ/wD4iiij2jAP7ftf+ed5/wCAM/8A8RR/b9r/AM87z/wBn/8AiKKKPaMA
            /t+1/wCed5/4Az//ABFH9v2v/PO8/wDAGf8A+Iooo9owD+37X/nnef8AgDP/APEUf2/a/wDPO8/8
            AZ//AIiiij2jAP7ftf8Annef+AM//wARR/b9r/zzvP8AwBn/APiKKKPaMA/t+1/553n/AIAz/wDx
            FH9v2v8AzzvP/AGf/wCIooo9owD+37X/AJ53n/gDP/8AEUf2/a/887z/AMAZ/wD4iiij2jAP7ftf
            +ed5/wCAM/8A8RR/b9r/AM87z/wBn/8AiKKKPaMA/t+1/wCed5/4Az//ABFH9v2v/PO8/wDAGf8A
            +Iooo9owD+37X/nnef8AgDP/APEUf2/a/wDPO8/8AZ//AIiiij2jAP7ftf8Annef+AM//wARR/b9
            r/zzvP8AwBn/APiKKKPaMA/t+1/553n/AIAz/wDxFH9v2v8AzzvP/AGf/wCIooo9owD+37X/AJ53
            n/gDP/8AEUf2/a/887z/AMAZ/wD4iiij2jAP7ftf+ed5/wCAM/8A8RR/b9r/AM87z/wBn/8AiKKK
            PaMA/t+1/wCed5/4Az//ABFH9v2v/PO8/wDAGf8A+Iooo9owD+37X/nnef8AgDP/APEUf2/a/wDP
            O8/8AZ//AIiiij2jAP7ftf8Annef+AM//wARR/b9r/zzvP8AwBn/APiKKKPaMA/t+1/553n/AIAz
            /wDxFH9v2v8AzzvP/AGf/wCIooo9owD+37X/AJ53n/gDP/8AEUf2/a/887z/AMAZ/wD4iiij2jAP
            7ftf+ed5/wCAM/8A8RR/b9r/AM87z/wBn/8AiKKKPaMA/t+1/wCed5/4Az//ABFH9v2v/PO8/wDA
            Gf8A+Iooo9owD+37X/nnef8AgDP/APEUf2/a/wDPO8/8AZ//AIiiij2jAP7ftf8Annef+AM//wAR
            R/b9r/zzvP8AwBn/APiKKKPaMA/t+1/553n/AIAz/wDxFH9v2v8AzzvP/AGf/wCIooo9owD+37X/
            AJ53n/gDP/8AEUf2/a/887z/AMAZ/wD4iiij2jAP7ftf+ed5/wCAM/8A8RR/b9r/AM87z/wBn/8A
            iKKKPaMA/t+1/wCed5/4Az//ABFH9v2v/PO8/wDAGf8A+Iooo9owD+37X/nnef8AgDP/APEUf2/a
            /wDPO8/8AZ//AIiiij2jAP7ftf8Annef+AM//wARR/b9r/zzvP8AwBn/APiKKKPaMDxn/hHdV/6B
            l5/4Dv8A4UUUUe0YH//Z
        
one:Data >
        
< one:OCRData  lang ="en-US" >
            
< one:OCRText >
                
Posted by: 
Date: 2010-10-1 5:28:59
fSoKoLflW5jjJ5TR, ?kU? 1tI ?t!iFh扝 TH000TR?
t? TH0004AMI]3 tJ1, 4i1 7 4:fli1$4 o SoKOL
WflI扞Th *H領ttJ?  Eflfl
TH000 ij*? SoKoLj4jfl, SoKoL*LJ5?j
1? R  o
]]>
            
one:OCRText >
            
< one:OCRToken  startPos ="0"  region ="0"  line ="0"  x ="4.251968383789062"  y ="3.685039281845092"  width ="31.18110275268555"  height ="7.370078563690185" />
            
< one:OCRToken  startPos ="7"  region ="0"  line ="0"  x ="39.40157318115234"  y ="3.685039281845092"  width ="13.32283401489258"  height ="8.78740119934082" />
            
< one:OCRToken  startPos ="12"  region ="0"  line ="1"  x ="4.251968383789062"  y ="17.85826683044434"  width ="23.52755928039551"  height ="6.803150177001953" />
            
< one:OCRToken  startPos ="18"  region ="0"  line ="1"  x ="32.031494140625"  y ="17.85826683044434"  width ="41.10236358642578"  height ="6.803150177001953" />
            
< one:OCRToken  startPos ="28"  region ="0"  line ="1"  x ="77.66928863525391"  y ="17.85826683044434"  width ="31.46456718444824"  height ="6.803150177001953" />
            
< one:OCRToken  startPos ="36"  region ="0"  line ="2"  x ="39.68503570556641"  y ="43.93700790405273"  width ="102.8976287841797"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="37"  region ="0"  line ="2"  x ="39.68503570556641"  y ="43.93700790405273"  width ="102.8976287841797"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="45"  region ="0"  line ="2"  x ="39.68503570556641"  y ="43.93700790405273"  width ="102.8976287841797"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="48"  region ="0"  line ="2"  x ="39.68503570556641"  y ="43.93700790405273"  width ="102.8976287841797"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="52"  region ="0"  line ="2"  x ="39.68503570556641"  y ="43.93700790405273"  width ="102.8976287841797"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="54"  region ="0"  line ="2"  x ="147.968505859375"  y ="43.93700790405273"  width ="35.71653366088867"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="55"  region ="0"  line ="2"  x ="147.968505859375"  y ="43.93700790405273"  width ="35.71653366088867"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="57"  region ="0"  line ="2"  x ="147.968505859375"  y ="43.93700790405273"  width ="35.71653366088867"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="59"  region ="0"  line ="2"  x ="185.1023712158203"  y ="43.93700790405273"  width ="34.86614227294922"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="63"  region ="0"  line ="2"  x ="232.4409332275391"  y ="43.93700790405273"  width ="50.45669174194336"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="65"  region ="0"  line ="2"  x ="232.4409332275391"  y ="43.93700790405273"  width ="50.45669174194336"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="69"  region ="0"  line ="2"  x ="232.4409332275391"  y ="43.93700790405273"  width ="50.45669174194336"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="71"  region ="0"  line ="2"  x ="284.0314636230468"  y ="43.93700790405273"  width ="55.84252166748047"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="76"  region ="0"  line ="2"  x ="284.0314636230468"  y ="43.93700790405273"  width ="55.84252166748047"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="80"  region ="0"  line ="3"  x ="120.4724426269531"  y ="57.54330444335937"  width ="21.54330825805664"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="81"  region ="0"  line ="3"  x ="120.4724426269531"  y ="57.54330444335937"  width ="21.54330825805664"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="83"  region ="0"  line ="3"  x ="147.968505859375"  y ="57.25984573364258"  width ="89.57480621337891"  height ="9.637796401977539" />
            
< one:OCRToken  startPos ="89"  region ="0"  line ="3"  x ="147.968505859375"  y ="57.25984573364258"  width ="89.57480621337891"  height ="9.637796401977539" />
            
< one:OCRToken  startPos ="91"  region ="0"  line ="3"  x ="147.968505859375"  y ="57.25984573364258"  width ="89.57480621337891"  height ="9.637796401977539" />
            
< one:OCRToken  startPos ="95"  region ="0"  line ="3"  x ="283.4645690917969"  y ="57.54330444335937"  width ="11.9055118560791"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="98"  region ="0"  line ="3"  x ="283.4645690917969"  y ="57.54330444335937"  width ="11.9055118560791"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="100"  region ="0"  line ="3"  x ="301.3228454589844"  y ="57.54330444335937"  width ="17.57480239868164"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="101"  region ="0"  line ="3"  x ="301.3228454589844"  y ="57.54330444335937"  width ="17.57480239868164"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="104"  region ="0"  line ="3"  x ="320.031494140625"  y ="58.39370346069336"  width ="6.803150177001953"  height ="8.22047233581543" />
            
< one:OCRToken  startPos ="106"  region ="0"  line ="3"  x ="328.2519836425781"  y ="57.54330444335937"  width ="44.50393676757812"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="108"  region ="0"  line ="3"  x ="328.2519836425781"  y ="57.54330444335937"  width ="44.50393676757812"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="110"  region ="0"  line ="3"  x ="328.2519836425781"  y ="57.54330444335937"  width ="44.50393676757812"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="112"  region ="0"  line ="3"  x ="328.2519836425781"  y ="57.54330444335937"  width ="44.50393676757812"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="115"  region ="0"  line ="3"  x ="374.7401428222656"  y ="61.22834777832031"  width ="3.685039281845092"  height ="3.401575088500976" />
            
< one:OCRToken  startPos ="117"  region ="0"  line ="3"  x ="382.9606323242187"  y ="58.11023330688476"  width ="25.22834587097168"  height ="7.08661413192749" />
            
< one:OCRToken  startPos ="123"  region ="0"  line ="4"  x ="3.401575088500976"  y ="70.86614227294922"  width ="66.61417388916015"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="127"  region ="0"  line ="4"  x ="3.401575088500976"  y ="70.86614227294922"  width ="66.61417388916015"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="128"  region ="0"  line ="4"  x ="3.401575088500976"  y ="70.86614227294922"  width ="66.61417388916015"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="131"  region ="0"  line ="4"  x ="75.68503570556641"  y ="70.86614227294922"  width ="66.33070373535156"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="133"  region ="0"  line ="4"  x ="75.68503570556641"  y ="70.86614227294922"  width ="66.33070373535156"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="134"  region ="0"  line ="4"  x ="75.68503570556641"  y ="70.86614227294922"  width ="66.33070373535156"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="137"  region ="0"  line ="4"  x ="75.68503570556641"  y ="70.86614227294922"  width ="66.33070373535156"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="140"  region ="0"  line ="4"  x ="316.346435546875"  y ="70.86614227294922"  width ="82.77165985107421"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="143"  region ="0"  line ="4"  x ="316.346435546875"  y ="70.86614227294922"  width ="82.77165985107421"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="146"  region ="0"  line ="5"  x ="121.3228302001953"  y ="84.47243499755859"  width ="35.43307113647461"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="152"  region ="0"  line ="5"  x ="170.0787506103516"  y ="84.47243499755859"  width ="35.43307113647461"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="155"  region ="0"  line ="5"  x ="170.0787506103516"  y ="84.47243499755859"  width ="35.43307113647461"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="157"  region ="0"  line ="5"  x ="220.2519683837891"  y ="84.47243499755859"  width ="82.77165985107421"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="167"  region ="0"  line ="5"  x ="220.2519683837891"  y ="84.47243499755859"  width ="82.77165985107421"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="169"  region ="0"  line ="5"  x ="309.5433044433594"  y ="84.47243499755859"  width ="105.1653442382812"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="175"  region ="0"  line ="5"  x ="309.5433044433594"  y ="84.47243499755859"  width ="105.1653442382812"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="176"  region ="0"  line ="5"  x ="309.5433044433594"  y ="84.47243499755859"  width ="105.1653442382812"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="178"  region ="0"  line ="5"  x ="309.5433044433594"  y ="84.47243499755859"  width ="105.1653442382812"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="179"  region ="0"  line ="5"  x ="309.5433044433594"  y ="84.47243499755859"  width ="105.1653442382812"  height ="9.070865631103515" />
            
< one:OCRToken  startPos ="181"  region ="0"  line ="6"  x ="104.031494140625"  y ="97.79527282714844"  width ="10.77165412902832"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="182"  region ="0"  line ="6"  x ="104.031494140625"  y ="97.79527282714844"  width ="10.77165412902832"  height ="9.35433006286621" />
            
< one:OCRToken  startPos ="184"  region ="0"  line ="6"  x ="123.5905456542969"  y ="97.79527282714844"  width ="13.60630035400391"  height ="9.637796401977539" />
            
< one:OCRToken  startPos ="187"  region ="0"  line ="6"  x ="304.4409484863281"  y ="101.7637786865234"  width ="3.118110418319702"  height ="3.118110418319702" />
        
one:OCRData >
    
one:Image >
one:Page >

 

 

  

2.5、Onenote的OCR机制是这样的:当我们插入一幅图片时,Onenote会自动进行OCR处理,并将OCR后的结果以XML的形式写入到页面结构中。因此我们的处理思路是,编程向Onenote中插入一幅图片,然后提取OCR后的结果。

即【OCRText】标签中的内容:

 

ExpandedBlockStart.gif OCRText
< one:OCRText >
                                    
ew features in One Note 14
Gather, organize, and search
. Improved organization inside sections
O Multi-level subpages
o Collapsing subpages
O Drag-dropto make a subpage
o In-place New Page button
. Updated Search that抯 faster than navigating
. Improved hyperlinkingof notes, wiki links
. Outlook and lE integration improvements
O Section picker when sendingtoOneNote
o Notes on Outlook tasks
. QuIck Styles for making headings
. Linked note-taking on Web pages and documents
. Math support
. Dock to Desktop mode
Sharing and universal access
. Access from everywhere
O Share on the Web
O Browser access
O OneNote Mobile- syncs with the Web
. Sharing enhancements:
O Unread highlighting
O Author marks
O Recent Edits
O Find by Author
o VersioningandRecycleBin
O Faster sync with SharePoint
. Improved OneNoteMobile for mobile devices
O Sync overtheair
O Sync selected notebooks or sections
]]>
                                
one:OCRText >

 

 

  

2.6、下面我们来动手一步步处理,关于界面搭建的XAML不再赘述,感兴趣的朋友请自行下载源代码,主要关注下业务代码。

图片在Onenote XML中是以Base64位编码格式存在的,故首先对插入的图片进行Base64编码:

 

ExpandedBlockStart.gif 图片 Base64 编码
             // 获取图片的Base64编码
            FileInfo file  =   new  FileInfo(v_strImgPath);

            
using  (MemoryStream ms  =   new  MemoryStream())
            {
                Bitmap bp 
=   new  Bitmap(v_strImgPath);

                
switch  (file.Extension.ToLower())
                {
                    
case   " .jpg " :
                        bp.Save(ms, ImageFormat.Jpeg);
                        
break ;
                    
case   " .jpeg " :
                        bp.Save(ms, ImageFormat.Jpeg);
                        
break ;
                    
case   " .gif " :
                        bp.Save(ms, ImageFormat.Gif);
                        
break ;
                    
case   " .bmp " :
                        bp.Save(ms, ImageFormat.Bmp);
                        
break ;
                    
case   " .tiff " :
                        bp.Save(ms, ImageFormat.Tiff);
                        
break ;
                    
case   " .png " :
                        bp.Save(ms, ImageFormat.Png);
                        
break ;
                    
case   " .emf " :
                        bp.Save(ms, ImageFormat.Emf);
                        
break ;
                    
default :
                        
this .labMsg.Content  =   " 不支持的图片格式。 " ;
                        
return ;
                }

                
byte [] buffer  =  ms.GetBuffer();
                
string  _Base64  =  Convert.ToBase64String(buffer);

 

 

  

2.7、构建插入图片后的Onenote XML代码:

 

ExpandedBlockStart.gif 准备工作
                var onenoteApp  =   new  Microsoft.Office.Interop.OneNote.Application();
                
string  notebookXml;

                onenoteApp.GetHierarchy(
null , Microsoft.Office.Interop.OneNote.HierarchyScope.hsPages,  out  notebookXml);

                var doc 
=  XDocument.Parse(notebookXml);
                var ns 
=  doc.Root.Name.Namespace;
                var pageNode 
=  doc.Descendants(ns  +   " Page " ).FirstOrDefault();
                var existingPageId 
=  pageNode.Attribute( " ID " ).Value;

 

 

  

2.8、这里有一处小细节,就是Onenote XML中图片格式只支持如下几种:auto|png|emf|jpg,故需要将图片格式做一下处理:

 

ExpandedBlockStart.gif 图片格式处理
                     string  ImgExtension  =  file.Extension.ToLower().Substring( 1 );
                    
switch  (ImgExtension)
                    {
                        
case   " jpg " :
                            ImgExtension 
=   " jpg " ;
                            
break ;
                        
case   " png " :
                            ImgExtension 
=   " png " ;
                            
break ;
                        
case   " emf " :
                            ImgExtension 
=   " emf " ;
                            
break ;
                        
default :
                            ImgExtension 
=   " auto " ;
                            
break ;
                    }

 

 

  

2.9、下面这段是关键代码了,使用Linq to XML构造出插入图片后的Onenote XML:

ExpandedBlockStart.gif 目标格式
                /*Onenote 2010 中图片的XML格式
                   
< one:Image  format =""  originalPageNumber ="0"  lastModifiedTime =""  objectID ="" >
                        
< one:Position  x =""  y =""  z ="" />
                        
< one:Size  width =""  height ="" />
                        
< one:Data > Base64 one:Data >
                  
                        //以下标签由Onenote 2010自动生成,不要在程序中处理,目标是获取OCRText中的内容。
                        
< one:OCRData  lang ="en-US" >
                        
< one:OCRText >
                            
   OCR后的文字    ]]>
                        
one:OCRText >
                        
< one:OCRToken  startPos ="0"  region ="0"  line ="0"  x ="4.251968383789062"  y ="3.685039281845092"  width ="31.18110275268555"  height ="7.370078563690185" />
                        
< one:OCRToken  startPos ="7"  region ="0"  line ="0"  x ="39.40157318115234"  y ="3.685039281845092"  width ="13.32283401489258"  height ="8.78740119934082" />
                        
< one:OCRToken  startPos ="12"  region ="0"  line ="1"  x ="4.251968383789062"  y ="17.85826683044434"  width ="23.52755928039551"  height ="6.803150177001953" />
                        
< one:OCRToken  startPos ="18"  region ="0"  line ="1"  x ="32.031494140625"  y ="17.85826683044434"  width ="41.10236358642578"  height ="6.803150177001953" />
                        
< one:OCRToken  startPos ="28"  region ="0"  line ="1"  x ="77.66928863525391"  y ="17.85826683044434"  width ="31.46456718444824"  height ="6.803150177001953" />
                        ................
                   
one:Image >       
                */


                /*ObjectID格式
                  The representation of an object to be used for identification of objects on a page. Not unique through OneNote, but unique on the page and the hierarchy. 
                   
< xsd:simpleType  name ="ObjectID"  " >
                      
< xsd:restriction  base ="xsd:string" >
                         
< xsd:pattern  value ="\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}\{[0-9]+\}\{[A-Z][0-9]+\}"   />
                      
xsd:restriction >
                   
xsd:simpleType >
                */

 

 

 

ExpandedBlockStart.gif Linq to XML构造图片所需XML
                    var page  =   new  XDocument( new  XElement(ns  +   " Page " ,
                                     
new  XElement(ns  +   " Outline " ,
                                       
new  XElement(ns  +   " OEChildren " ,
                                         
new  XElement(ns  +   " OE " ,
                                           
new  XElement(ns  +   " Image " ,
                                             
new  XAttribute( " format " , ImgExtension),  new  XAttribute( " originalPageNumber " " 0 " ),
                                             
new  XElement(ns  +   " Position " ,
                                                    
new  XAttribute( " x " " 0 " ),  new  XAttribute( " y " " 0 " ),  new  XAttribute( " z " " 0 " )),
                                             
new  XElement(ns  +   " Size " ,
                                                    
new  XAttribute( " width " , bp.Width.ToString()),  new  XAttribute( " height " , bp.Height.ToString())),
                                                
new  XElement(ns  +   " Data " , _Base64)))))));
                    page.Root.SetAttributeValue(
" ID " , existingPageId);
                    onenoteApp.UpdatePageContent(page.ToString(), DateTime.MinValue);

 

 

  

2.10、线程休眠几秒钟,等待OCR完成,Onenote OCR根据图片大小需要消耗一些时间:

 

                     // 线程休眠时间,单位毫秒,若图片很大,则延长休眠时间,保证Onenote OCR完毕
                    System.Threading.Thread.Sleep(Int32.Parse(System.Configuration.ConfigurationManager.AppSettings[ " WaitTIme " ]));

 

 

  

2.11、为了便于提取OCR后的结果,将构造好的Onenote XML代码写入一个临时的XML文件:

 

ExpandedBlockStart.gif 写入临时XML文件
                     string  pageXml;
                    onenoteApp.GetPageContent(existingPageId, 
out  pageXml, Microsoft.Office.Interop.OneNote.PageInfo.piAll);

                    
// 获取OCR后的内容
                    FileStream tmpXml  =   new  FileStream(System.Configuration.ConfigurationManager.AppSettings[ " tmpPath " +   @" \tmp.xml " , FileMode.Create, FileAccess.ReadWrite);
                    StreamWriter sw 
=   new  StreamWriter(tmpXml);
                    sw.Write(pageXml);
                    sw.Flush();
                    sw.Close();
                    tmpXml.Close();

 

 

  

2.12、使用Linq to XML和XPath表达式提取OCR后的结果:

 

ExpandedBlockStart.gif 提取 OCR 后的结果
                    FileStream tmpOnenote  =   new  FileStream(System.Configuration.ConfigurationManager.AppSettings[ " tmpPath " +   @" \tmp.xml " , FileMode.Open, FileAccess.ReadWrite);
                    XmlReader reader 
=  XmlReader.Create(tmpOnenote);
                    XElement rdlc 
=  XElement.Load(reader);

                    XmlNameTable nameTable 
=  reader.NameTable;
                    XmlNamespaceManager mgr 
=   new  XmlNamespaceManager(nameTable);
                    mgr.AddNamespace(
" one " , ns.ToString());

                    StringReader sr 
=   new  StringReader(pageXml);
                    XElement onenote 
=  XElement.Load(sr);

                    var xml 
=  from o  in  onenote.XPathSelectElements( " //one:Image " , mgr)
                              select o.XPathSelectElement(
" //one:OCRText " , mgr).Value;
                    
this .txtOCRed.Text  =  xml.First().ToString();

 

 

  

2.13、释放占用的资源:

 

                    sr.Close();
                    reader.Close();
                    tmpOnenote.Close();

 

 

  

2.14、最后将OCR后的结果写入到输出文件中:

 

ExpandedBlockStart.gif 写入输出文件
                FileStream fs  =   new  FileStream( this .__OutputFileName, FileMode.Create, FileAccess.ReadWrite);
                StreamWriter sw 
=   new  StreamWriter(fs);
                sw.Write(
this .txtOCRed.Text);
                sw.Flush();
                sw.Close();
                fs.Close();

                
this .labMsg.Content  =   " OCR成功。 " ;

 

 

  

由于我安装的是Onenote 2010 x64英文版,未找到中文语言包,故先测试下英文OCR。

2.15、本地图片测试结果:

 

2.16、网络图片测试结果:

网络图片是先下载到本地,后面步骤和本地图片一样。

 

小结

此方法的优点是效率很高,可扩展性强,只要改改配置文件、Linq to XML代码就可以完成很多附加工作。

缺点是,要求客户端必须要安装Onenote,且至少要有一个打开的Page,OCR时无法判断哪一个图片是正在OCR的,若连续操作则显示结果混乱。

此外,我没有找到编程建立Onenote文档的方法,以及对Onenote XML架构了解的还不够多,对一些元素不知道如何编程生成,如ObjectID等。

综上所述,Onenote 2010的OCR水平还是很高的,和Tesseract相比,OCR的准确率与效率均提高了不止一个档次,但是鉴于Onenote 2010 API十分简陋,远不及Word、Excel等操作方便,且官方文档对于Onenote 2010 XML架构的介绍还不是很详细,缺少示例。希望Office 15、Onenote 2014能有所改进吧。关于OCR的介绍到此告一段落,欢迎感兴趣的朋友继续讨论。

转载于:https://www.cnblogs.com/brooks-dotnet/archive/2010/10/07/1845313.html

你可能感兴趣的:(浅谈OCR之Onenote 2010)