diff --git a/Resources/Config/oolite-font.plist b/Resources/Config/oolite-font.plist
index 3f75edf4..b3dbb4aa 100644
--- a/Resources/Config/oolite-font.plist
+++ b/Resources/Config/oolite-font.plist
@@ -1,5 +1,16 @@
{
- encoding = 12; // NSWindowsCP1252StringEncoding, Windows Latin 1
+ /*
+ Currently, Oolite supports the following encodings for fonts:
+ windows-latin-1 (Windows code page 1252)
+ windows-latin-2 (Windows code page 1250)
+ windows-cyrillic (Windows code page 1251)
+ windows-greek (Windows code page 1253)
+ windows-turkish (Windows code page 1254)
+
+ OXPs with fonts in each encoding (using Helvetica) are available at:
+ http://svn.berlios.de/svnroot/repos/oolite-linux/trunk/tests/encodings/
+ */
+ encoding = "windows-latin-1";
texture = "oolite-font.png";
substitutions =
diff --git a/src/Core/OOEncodingConverter.h b/src/Core/OOEncodingConverter.h
index c3ccccaf..54c2a10f 100644
--- a/src/Core/OOEncodingConverter.h
+++ b/src/Core/OOEncodingConverter.h
@@ -49,6 +49,9 @@ SOFTWARE.
*/
+
+#ifndef OOENCODINGCONVERTER_EXCLUDE // For the convenience of fonttexgen
+
#import "OOCocoa.h"
@class OOCache;
@@ -67,3 +70,18 @@ SOFTWARE.
- (NSData *) convertString:(NSString *)string;
@end
+
+#endif OOENCODINGCONVERTER_EXCLUDE
+
+
+/*
+ There are a variety of overlapping naming schemes for text encoding.
+ We ignore them and use a fixed list:
+ "windows-latin-1" NSWindowsCP1252StringEncoding
+ "windows-latin-2" NSWindowsCP1250StringEncoding
+ "windows-cyrillic" NSWindowsCP1251StringEncoding
+ "windows-greek" NSWindowsCP1253StringEncoding
+ "windows-turkish" NSWindowsCP1254StringEncoding
+*/
+NSString *StringFromEncoding(NSStringEncoding encoding); // Returns nil for unknown
+NSStringEncoding EncodingFromString(NSString *name); // Returns (NSStringEncoding)NSNotFound for unknown
diff --git a/src/Core/OOEncodingConverter.m b/src/Core/OOEncodingConverter.m
index ba879222..22d41495 100644
--- a/src/Core/OOEncodingConverter.m
+++ b/src/Core/OOEncodingConverter.m
@@ -46,6 +46,8 @@ SOFTWARE.
*/
+#ifndef OOENCODINGCONVERTER_EXCLUDE
+
#import "OOEncodingConverter.h"
#import "OOCache.h"
#import "OOCollectionExtractors.h"
@@ -112,7 +114,7 @@ static unsigned sCacheMisses = 0;
- (id) initWithFontPList:(NSDictionary *)fontPList
{
- return [self initWithEncoding:[fontPList unsignedIntForKey:@"encoding"] substitutions:[fontPList dictionaryForKey:@"substitutions"]];
+ return [self initWithEncoding:EncodingFromString([fontPList stringForKey:@"encoding"]) substitutions:[fontPList dictionaryForKey:@"substitutions"]];
}
@@ -211,3 +213,58 @@ static unsigned sCacheMisses = 0;
#endif
@end
+
+#endif OOENCODINGCONVERTER_EXCLUDE
+
+
+/*
+ There are a variety of overlapping naming schemes for text encoding.
+ We ignore them and use a fixed list:
+ "windows-latin-1" NSWindowsCP1252StringEncoding
+ "windows-latin-2" NSWindowsCP1250StringEncoding
+ "windows-cyrillic" NSWindowsCP1251StringEncoding
+ "windows-greek" NSWindowsCP1253StringEncoding
+ "windows-turkish" NSWindowsCP1254StringEncoding
+*/
+
+#define kWindowsLatin1Str @"windows-latin-1"
+#define kWindowsLatin2Str @"windows-latin-2"
+#define kWindowsCyrillicStr @"windows-cyrillic"
+#define kWindowsGreekStr @"windows-greek"
+#define kWindowsTurkishStr @"windows-turkish"
+
+
+NSString *StringFromEncoding(NSStringEncoding encoding)
+{
+ switch (encoding)
+ {
+ case NSWindowsCP1252StringEncoding:
+ return kWindowsLatin1Str;
+
+ case NSWindowsCP1250StringEncoding:
+ return kWindowsLatin2Str;
+
+ case NSWindowsCP1251StringEncoding:
+ return kWindowsCyrillicStr;
+
+ case NSWindowsCP1253StringEncoding:
+ return kWindowsGreekStr;
+
+ case NSWindowsCP1254StringEncoding:
+ return kWindowsTurkishStr;
+
+ default:
+ return nil;
+ }
+}
+
+
+NSStringEncoding EncodingFromString(NSString *name)
+{
+ if ([name isEqualToString:kWindowsLatin1Str]) return NSWindowsCP1252StringEncoding;
+ if ([name isEqualToString:kWindowsLatin2Str]) return NSWindowsCP1250StringEncoding;
+ if ([name isEqualToString:kWindowsCyrillicStr]) return NSWindowsCP1251StringEncoding;
+ if ([name isEqualToString:kWindowsGreekStr]) return NSWindowsCP1253StringEncoding;
+ if ([name isEqualToString:kWindowsTurkishStr]) return NSWindowsCP1254StringEncoding;
+ return (NSStringEncoding)NSNotFound;
+}
diff --git a/src/Core/OOWeakReference.m b/src/Core/OOWeakReference.m
index d223c0bc..10749289 100644
--- a/src/Core/OOWeakReference.m
+++ b/src/Core/OOWeakReference.m
@@ -96,8 +96,8 @@ This code is hereby placed in the public domain.
if (__builtin_expect(
selector != @selector(weakRefDrop) &&
- selector != @selector(weakRefObjectStillExists)
- && selector != @selector(weakRefUnderlyingObject), 1))
+ selector != @selector(weakRefObjectStillExists) &&
+ selector != @selector(weakRefUnderlyingObject), 1))
{
// Not a proxy method; get signature from _object if it exists, otherwise generic signature for nil calls.
if (__builtin_expect(_object != nil, 1)) result = [(id)_object methodSignatureForSelector:selector];
diff --git a/tools/fonttexgen/English.lproj/MainMenu.nib/designable.nib b/tools/fonttexgen/English.lproj/MainMenu.nib/designable.nib
index 0ee24f52..5a77c07e 100644
--- a/tools/fonttexgen/English.lproj/MainMenu.nib/designable.nib
+++ b/tools/fonttexgen/English.lproj/MainMenu.nib/designable.nib
@@ -9,12 +9,11 @@
@@ -602,182 +470,35 @@
-
-
-
-
_NSMainMenu
-
- 411
-
-
- YES
-
-
-
-
-
- 412
-
-
-
413
@@ -2162,6 +1627,76 @@ aW4gdGhlIEFwcGVhcmFuY2UKc3lzdGVtIHByZWZlcmVuY2VzIHBhbmUuA
+
+ 421
+
+
+ YES
+
+
+
+
+
+ 422
+
+
+
+
+ 423
+
+
+ YES
+
+
+
+
+
+ 424
+
+
+ YES
+
+
+
+
+
+ 425
+
+
+ YES
+
+
+
+
+
+
+
+
+
+ 426
+
+
+
+
+ 427
+
+
+
+
+ 428
+
+
+
+
+ 429
+
+
+
+
+ 430
+
+
+
@@ -2171,24 +1706,6 @@ aW4gdGhlIEFwcGVhcmFuY2UKc3lzdGVtIHByZWZlcmVuY2VzIHBhbmUuA
-1.IBPluginDependency
-2.IBPluginDependency
-3.IBPluginDependency
- 103.IBPluginDependency
- 103.ImportedFromIB2
- 106.IBPluginDependency
- 106.ImportedFromIB2
- 106.editorWindowContentRectSynchronizationRect
- 111.IBPluginDependency
- 111.ImportedFromIB2
- 112.IBPluginDependency
- 112.ImportedFromIB2
- 124.IBPluginDependency
- 124.ImportedFromIB2
- 125.IBPluginDependency
- 125.ImportedFromIB2
- 125.editorWindowContentRectSynchronizationRect
- 126.IBPluginDependency
- 126.ImportedFromIB2
- 129.IBPluginDependency
- 129.ImportedFromIB2
130.IBPluginDependency
130.ImportedFromIB2
130.editorWindowContentRectSynchronizationRect
@@ -2208,8 +1725,6 @@ aW4gdGhlIEFwcGVhcmFuY2UKc3lzdGVtIHByZWZlcmVuY2VzIHBhbmUuA
149.ImportedFromIB2
150.IBPluginDependency
150.ImportedFromIB2
- 19.IBPluginDependency
- 19.ImportedFromIB2
195.IBPluginDependency
195.ImportedFromIB2
196.IBPluginDependency
@@ -2268,29 +1783,10 @@ aW4gdGhlIEFwcGVhcmFuY2UKc3lzdGVtIHByZWZlcmVuY2VzIHBhbmUuA
220.editorWindowContentRectSynchronizationRect
221.IBPluginDependency
221.ImportedFromIB2
- 23.IBPluginDependency
- 23.ImportedFromIB2
- 236.IBPluginDependency
- 236.ImportedFromIB2
- 239.IBPluginDependency
- 239.ImportedFromIB2
- 24.IBPluginDependency
- 24.ImportedFromIB2
- 24.editorWindowContentRectSynchronizationRect
29.IBPluginDependency
29.ImportedFromIB2
29.WindowOrigin
29.editorWindowContentRectSynchronizationRect
- 295.IBPluginDependency
- 296.IBPluginDependency
- 296.editorWindowContentRectSynchronizationRect
- 297.IBPluginDependency
- 298.IBPluginDependency
- 299.IBPluginDependency
- 300.IBPluginDependency
- 300.editorWindowContentRectSynchronizationRect
- 344.IBPluginDependency
- 345.IBPluginDependency
346.IBPluginDependency
346.ImportedFromIB2
348.IBPluginDependency
@@ -2308,6 +1804,8 @@ aW4gdGhlIEFwcGVhcmFuY2UKc3lzdGVtIHByZWZlcmVuY2VzIHBhbmUuA
371.IBWindowTemplateEditedContentRect
371.NSWindowTemplate.visibleAtLaunch
371.editorWindowContentRectSynchronizationRect
+ 371.windowTemplate.hasMinSize
+ 371.windowTemplate.minSize
372.IBPluginDependency
375.IBPluginDependency
376.IBPluginDependency
@@ -2322,14 +1820,21 @@ aW4gdGhlIEFwcGVhcmFuY2UKc3lzdGVtIHByZWZlcmVuY2VzIHBhbmUuA
398.IBPluginDependency
399.IBPluginDependency
400.IBPluginDependency
- 411.IBPluginDependency
- 412.IBPluginDependency
413.IBPluginDependency
414.IBPluginDependency
416.IBPluginDependency
417.IBPluginDependency
- 5.IBPluginDependency
- 5.ImportedFromIB2
+ 421.IBPluginDependency
+ 422.IBPluginDependency
+ 423.IBPluginDependency
+ 424.IBPluginDependency
+ 425.IBPluginDependency
+ 425.editorWindowContentRectSynchronizationRect
+ 426.IBPluginDependency
+ 427.IBPluginDependency
+ 428.IBPluginDependency
+ 429.IBPluginDependency
+ 430.IBPluginDependency
56.IBPluginDependency
56.ImportedFromIB2
57.IBPluginDependency
@@ -2337,227 +1842,161 @@ aW4gdGhlIEFwcGVhcmFuY2UKc3lzdGVtIHByZWZlcmVuY2VzIHBhbmUuA
57.editorWindowContentRectSynchronizationRect
58.IBPluginDependency
58.ImportedFromIB2
- 72.IBPluginDependency
- 72.ImportedFromIB2
- 73.IBPluginDependency
- 73.ImportedFromIB2
- 74.IBPluginDependency
- 74.ImportedFromIB2
- 75.IBPluginDependency
- 75.ImportedFromIB2
- 77.IBPluginDependency
- 77.ImportedFromIB2
- 78.IBPluginDependency
- 78.ImportedFromIB2
- 79.IBPluginDependency
- 79.ImportedFromIB2
80.IBPluginDependency
80.ImportedFromIB2
81.IBPluginDependency
81.ImportedFromIB2
81.editorWindowContentRectSynchronizationRect
- 82.IBPluginDependency
- 82.ImportedFromIB2
83.IBPluginDependency
83.ImportedFromIB2
- 92.IBPluginDependency
- 92.ImportedFromIB2
YES
-
+
-
+
-
-
- {{596, 852}, {216, 23}}
-
-
-
-
-
-
-
-
- {{522, 812}, {146, 23}}
-
-
-
-
-
-
{{436, 809}, {64, 6}}
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
+
{{608, 612}, {275, 83}}
-
+
-
+
-
+
-
+
-
+
{{187, 434}, {243, 243}}
-
+
-
+
-
+
-
+
-
+
-
+
-
+
{{608, 612}, {167, 43}}
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
{{608, 612}, {241, 103}}
-
+
-
-
-
-
-
-
-
-
- {{525, 802}, {197, 73}}
-
+
{74, 862}
- {{6, 978}, {478, 20}}
-
-
- {{475, 832}, {234, 43}}
-
-
-
-
- {{231, 634}, {176, 43}}
-
-
-
+ {{593, 1006}, {297, 20}}
+
-
+
-
+
{{608, 612}, {215, 63}}
-
-
-
-
-
-
-
- {{35, 512}, {552, 624}}
-
- {{35, 512}, {552, 624}}
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
+
-
+
- {{23, 794}, {245, 183}}
-
+
+ {{35, 47}, {1210, 1089}}
-
+ {{35, 47}, {1210, 1089}}
+
+ {314, 193}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ com.apple.InterfaceBuilder.CocoaPlugin
+
+ com.apple.InterfaceBuilder.CocoaPlugin
+
+
+ {{1085, 907}, {132, 103}}
+
+
+
+ com.apple.InterfaceBuilder.CocoaPlugin
+ com.apple.InterfaceBuilder.CocoaPlugin
+
-
+
-
+ {{605, 853}, {298, 153}}
+
-
+
-
+
-
-
-
-
-
-
-
-
- {{145, 474}, {199, 203}}
-
-
-
-
-
+ {{737, 983}, {142, 23}}
+
@@ -2581,7 +2020,7 @@ aW4gdGhlIEFwcGVhcmFuY2UKc3lzdGVtIHByZWZlcmVuY2VzIHBhbmUuA
- 419
+ 432
@@ -2590,18 +2029,22 @@ aW4gdGhlIEFwcGVhcmFuY2UKc3lzdGVtIHByZWZlcmVuY2VzIHBhbmUuA
FontTextureView
NSView
- saveImage:
- id
-
-
YES
-
+
YES
+ saveImage:
+ takeEncodingFromTag:
YES
+ id
+
+
+
+ NSPopUpButton
+
IBProjectSource
FontTextureView.h
@@ -2614,412 +2057,345 @@ aW4gdGhlIEFwcGVhcmFuY2UKc3lzdGVtIHByZWZlcmVuY2VzIHBhbmUuA
3
YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA
-AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEClQALAAwAMQA1ADYAPAA9
-AEIAVgBXAFgAWQALAGYAcwB8AH0AfgCDAI0AjgCgAKEAqQCqAK0AtwC4ALkAvgDAAMUAxgDJAM0A0QDZ
-ANoA4gDjAOgA6QDsAPEA8gD6APsBCAELAQ4BFgEXARsBIwEkASsBLAE0ATUBPQFFAUYBTgFPAVcBWAFr
-AWwBbwFyAXoBewGIAYkBjgGPAZABkwGPAZcBmgGeAAsBnwGhAaIBpQGpAdkB3wHvAfUB9gH3AfsB/AIA
-AgECBAIFAgkCDQIWAhoCGwIcAh0CIwIqAisCLAIwAjgCPAI9Aj4CPwJDAkoCTgJPAlACUQJVAl4CYgJj
-AmQCZQJpAnACcQJyAnMCdwJ+AoICgwKEAoUCiQKQApQClQKWApoCoQKiAqMCpAKoAq8CsAKxArICtgK9
-Ar4CvwLDAsoCywLMAs0C0QLYAtkC2gLbAt8C5gLnAugC6QLtAvQC9QL2AvcC+wMCAwcDCAMJAw0DFQMW
-AxcDGAMcAyMDJAMlAykDMAM1AzYDNwM7A0IDRgNHA0gDSQNNAWsDVANVA1YDWgNhA2IDYwNnA24DcgNz
-A3QDdQN5A4ADgQOCA4YDjQOOA48DkwOaA5sDnAOgA6cDqAOpA60DtAO1A7YDugPBA8IDwwPEA8gDzwPQ
-A9ED0gPXA9gD3APjA+QD5QPmA+oD8QP1A/YD9wP4A/wEAwQEBAUEBgQKBBEEEgQTBBQEGAQfBCAEIQQi
-BCYELQQuBC8EMwQ6BDsEPAQ9BEEESARJBEoEVARaBGAEYQRiBGMEZwRoBGkEagRtBGcEaQR0BHsEfAR9
-BHsEfASEBIsEjASNBPcFAgUDBREFHAUdBR4FIgUjBSUFLgU3BTgFPQVGBR0FRwVPBVYFVwVeBV8FZgVn
-BWgFaQVuBXcFHQV8BX0FgwWEBZIFmwWiBaMFpAWtBbYFHQW3BbwFvwXABckFygXLBc8F0AXXBR0F4AXp
-BR0F6gXvBfYF9wUdBgAGBwYQBhEFHQYaBR0GIwYkBi4FHQY3BkAFHQZBBlEGWgZjBR0GbAUdBnUGdgZ5
-BnsG5QdQB7sHvAe9B74HvwfAB8EHwgfDB8QHxQfGB8cHyAfJB8oHywfMB80HzgfPB9AH0QfSB9MH1AfV
-B9YH1wfYB9kH2gfbB9wH3QfeB98H4AfhB+IH4wfkB+UH5gfnB+gH6QfqB+sH7AftB+4H7wfwB/EH8gfz
-B/QH9Qf2B/cH+Af5B/oH+wf8B/0H/gf/CAAIAQgCCAMIBAgFCAYIBwgICAkICggLCAwIDQgOCA8IEAgR
-CBIIEwgUCBUIFggXCBgIGQgaCBsIHAgdCB4IHwggCCEIIggjCCYIKQjBCVkJWglbCVwJXQleCV8JYAlh
-CWIJYwlkCWUJZglnCWgJaQlqCWsJbAltCW4JbwlwCXEJcglzCXQJdQl2CXcJeAl5CXoJewl8CX0Jfgl/
-CYAJgQmCCYMJhAFoCYUJhgmHCYgJiQmKCYsJjAmNCY4JjwmQCZEJkgmTCZQJlQmWCZcJmAmZCZoJmwmc
-CZ0JngmfCaAJoQFjCaIJowmkCaUJpgmnCagJqQmqCasJrAmtCa4JrwmwCbEJsgmzCbQJtQm2CbcJuAm5
-CboJuwm8Cb0Jvgm/CcAJwQnCCcMJxAnFCcYJxwnICckJygnLCcwJzQnOCc8J0AnRCdIJ0wnUCdUJ1gnX
-CdgJ2QnaCdsJ3AndCd4J3wngCeEJ4gnjCeQJ5QnmCecJ6AnpCeoJ6wnsCe8J8gn1VSRudWxs3xASAA0A
-DgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsA
-LAAtAC4ALwAwVk5TUm9vdFYkY2xhc3NdTlNPYmplY3RzS2V5c18QD05TQ2xhc3Nlc1ZhbHVlc18QGU5T
-QWNjZXNzaWJpbGl0eU9pZHNWYWx1ZXNdTlNDb25uZWN0aW9uc1tOU05hbWVzS2V5c1tOU0ZyYW1ld29y
-a11OU0NsYXNzZXNLZXlzWk5TT2lkc0tleXNdTlNOYW1lc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eUNv
-bm5lY3RvcnNdTlNGb250TWFuYWdlcl8QEE5TVmlzaWJsZVdpbmRvd3NfEA9OU09iamVjdHNWYWx1ZXNf
-EBdOU0FjY2Vzc2liaWxpdHlPaWRzS2V5c1lOU05leHRPaWRcTlNPaWRzVmFsdWVzgAKBApSBATiBAfmB
-ApOAV4EBjoAFgQH4gQH6gQGPgQKRgACABoEBjYECkhEBpYEB+9IADgAyADMANFtOU0NsYXNzTmFtZYAE
-gANdTlNBcHBsaWNhdGlvbtIANwA4ADkAOlgkY2xhc3Nlc1okY2xhc3NuYW1logA6ADteTlNDdXN0b21P
-YmplY3RYTlNPYmplY3RfEBBJQkNvY29hRnJhbWV3b3Jr0gAOAD4APwBAWk5TLm9iamVjdHOAVqEAQYAH
-2gBDAA4ARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUACtcTlNXaW5kb3dWaWV3XE5TU2Ny
-ZWVuUmVjdF1OU1dpbmRvd1RpdGxlWU5TV1RGbGFnc11OU1dpbmRvd0NsYXNzXE5TV2luZG93UmVjdF8Q
-D05TV2luZG93QmFja2luZ18QEU5TV2luZG93U3R5bGVNYXNrW05TVmlld0NsYXNzgAuAVYBUgAkSdAAA
-AIAKgAgQAhAHgABfEBd7ezM1LCA1MTJ9LCB7NTUyLCA2MjR9fVZXaW5kb3dYTlNXaW5kb3fXAFoADgBb
-AFwAXQBYAF4AXwBgAGEAYgBjAF8AZV8QD05TTmV4dFJlc3BvbmRlclpOU1N1YnZpZXdzWE5TdkZsYWdz
-W05TRnJhbWVTaXplW05TU3VwZXJ2aWV3gAyAU4ANEQEAgFGADIBS0gAOAD4AZwBogFCqAGkAagBrAGwA
-bQBuAG8AcABxAHKADoASgCOALIAxgDSAOIA7gD+ARdcAWgAOAHQAXABYADIAXgBMAHYAdwB4AF8AegBM
-V05TRnJhbWWAC4ARgA8RAQyADIAQgAtfEBZ7ezIwLCA1Mn0sIHs1MTIsIDUxMn19XxAPRm9udFRleHR1
-cmVWaWV30gA3ADgAfwCApACAAIEAggA7XE5TQ3VzdG9tVmlld1ZOU1ZpZXdbTlNSZXNwb25kZXLYAFoA
-DgB0AIQAXACFAFgAXgBMAIcAiACJAHgAigBfAExWTlNDZWxsWU5TRW5hYmxlZIALgCKAE4AUCYAMgAtf
-EBR7ezc5LCAyMX0sIHs0NiwgMjJ9fdkAjwAOAJAAkQCSAJMAlACVAJYAlwCYAJkAmgCbAGoAnQCKAJ9b
-TlNDZWxsRmxhZ3NfEBFOU0JhY2tncm91bmRDb2xvclpOU0NvbnRlbnRzWU5TU3VwcG9ydF1OU0NvbnRy
-b2xWaWV3XE5TQ2VsbEZsYWdzMl8QEU5TRHJhd3NCYWNrZ3JvdW5kW05TVGV4dENvbG9yE/////+Ucf5B
-gCGAGYAVgBaAEhIQQAQACYAeUNQADgCiAKMApAClAKYApwCoVk5TU2l6ZVZOU05hbWVYTlNmRmxhZ3OA
-GCNAKgAAAAAAAIAXEQQUXEx1Y2lkYUdyYW5kZdIANwA4AKsArKIArAA7Vk5TRm9udNUADgCuAK8AsACx
-ALIAswC0ALUAtldOU0NvbG9yXE5TQ29sb3JTcGFjZVtOU0NvbG9yTmFtZV1OU0NhdGFsb2dOYW1lgB2A
-HBAGgBuAGlZTeXN0ZW1fEBN0ZXh0QmFja2dyb3VuZENvbG9y0wAOAK8AugCyALwAvVdOU1doaXRlgB0Q
-A0IxANIANwA4AL8ArqIArgA71QAOAK4ArwCwALEAsgDCALQAwwC2gB2AIIAfgBpZdGV4dENvbG9y0wAO
-AK8AugCyALwAyIAdQjAA0gA3ADgAygDLpADLAMwAhAA7XxAPTlNUZXh0RmllbGRDZWxsXE5TQWN0aW9u
-Q2VsbNIANwA4AM4Az6UAzwDQAIEAggA7W05TVGV4dEZpZWxkWU5TQ29udHJvbNgAWgAOAHQAhABcAIUA
-WABeAEwAhwDUANUAeACKAF8ATIALgCKAJIAlCYAMgAtfEBR7ezE3LCAyM30sIHs1NywgMTd9fdgAjwAO
-AJAAkQCSAJMAlACWANsAmADdAN4AmwBrAJ0A4RIEAf5AgCGAJ4AmgBaAI4AqWVggb2Zmc2V0OtUADgCu
-AK8AsACxALIA5QC0AOYAtoAdgCmAKIAaXGNvbnRyb2xDb2xvctMADgCvALoAsgC8AOuAHUswLjY2NjY2
-NjY5ANUADgCuAK8AsACxALIAwgC0AO8AtoAdgCCAK4AaXxAQY29udHJvbFRleHRDb2xvctgAWgAOAHQA
-hABcAIUAWABeAEwA9AD1APYAeACKAF8ATIALgDCALYAuCYAMgAtfEBV7ezEzMCwgMTd9LCB7MTksIDI3
-fX3YAI8ADgD8AP0A/gCTAJQA/wEAAQEBAgEDAQQAbAEGAIpbTlNJbmNyZW1lbnRaTlNNYXhWYWx1ZVpO
-U01pblZhbHVlXE5TQXV0b3JlcGVhdBIADf4ggC8jP/AAAAAAAAAjQIAAAAAAAAAjwIAAAAAAAACALBAA
-CdIANwA4AQkBCqQBCgDMAIQAO11OU1N0ZXBwZXJDZWxs0gA3ADgBDAENpQENANAAgQCCADtZTlNTdGVw
-cGVy2ABaAA4AdACEAFwAhQBYAF4ATAD0AREBEgB4AIoAXwBMgAuAMIAygDMJgAyAC18QFXt7Mjc2LCAx
-OH0sIHsxOSwgMjd9fdgAjwAOAPwA/QD+AJMAlAD/AQABAQECAQMBBABtAQYAioAvgDEJ2ABaAA4AdACE
-AFwAhQBYAF4ATACHAR4BHwB4AIoAXwBMgAuAIoA1gDYJgAyAC18QFXt7MTYzLCAyNH0sIHs1NywgMTd9
-fdgAjwAOAJAAkQCSAJMAlACWANsAmADdAScAmwBuAJ0A4YAhgCeAN4AWgDSAKllZIG9mZnNldDrYAFoA
-DgB0AIQAXACFAFgAXgBMAIcBLwEwAHgAigBfAEyAC4AigDmAOgmADIALXxAVe3syMjUsIDIyfSwgezQ2
-LCAyMn192QCPAA4AkACRAJIAkwCUAJUAlgCXAJgAmQCaAJsAbwCdAIoAn4AhgBmAFYAWgDgJgB7YAFoA
-DgB0AIQAXACFAFgAXgBMAIcBQAFBAHgAigBfAEyAC4AigDyAPQmADIALXxAWe3sxNywgNTcyfSwgezUx
-OCwgMzR9fdgAjwAOAJAAkQCSAJMAlACWANsAmADdAUkAmwBwAUwA4YAhgCeAPoAWgDsSAEAEAIAqbxBe
-AEkAbQBwAG8AcgB0AGEAbgB0ADoAIABzAGUAdAAgIBwARgBvAG4AdAAgAHMAbQBvAG8AdABoAGkAbgBn
-ACAAcwB0AHkAbABlIB0AIAB0AG8AICAcAFMAdABhAG4AZABhAHIAZCAdACAAaQBuACAAdABoAGUAIABB
-AHAAcABlAGEAcgBhAG4AYwBlAAoAcwB5AHMAdABlAG0AIABwAHIAZQBmAGUAcgBlAG4AYwBlAHMAIABw
-AGEAbgBlAC7YAFoADgB0AIQAXACFAFgAXgBMAVEBUgFTAHgAigBfAEyAC4BEgECAQQmADIALXxAVe3s0
-NDIsIDEzfSwgezk2LCAzMn193ACPAA4BWQFaAVsBXACRAJIAkwFdAJQBXgFfAWAAmgFiAWMAmgFlAJsA
-cQFoAWkBal8QE05TQWx0ZXJuYXRlQ29udGVudHNfEBJOU1BlcmlvZGljSW50ZXJ2YWxeTlNCdXR0b25G
-bGFnczJfEA9OU0tleUVxdWl2YWxlbnRfEA9OU1BlcmlvZGljRGVsYXldTlNCdXR0b25GbGFncxIEAf4A
-gEOAFRAZEIGAFYBCgBaAPxDIEggAAAAT/////4aCQP9UU2F2ZdIANwA4AW0BbqQBbgDMAIQAO1xOU0J1
-dHRvbkNlbGzSADcAOAFwAXGlAXEA0ACBAIIAO1hOU0J1dHRvbtgAWgAOAHQAhABcAIUAWABeAEwBUQF1
-AXYAeACKAF8ATIALgESARoBHCYAMgAtfEBZ7ezMxMCwgMjN9LCB7MTEwLCAxOH193gCPAA4BWQF8AVoB
-WwF9AVwAkQCSAJMBXQCUAV4BfgFgAJoBgQFiAFMBggCaAYQAmwByAWgBBgGHXU5TTm9ybWFsSW1hZ2Vf
-EBBOU0FsdGVybmF0ZUltYWdlE/////+EAf4AgEOAFYBJgE2AFYBIgBaARRJIPFH/XENoZWNrZXJib2Fy
-ZNMADgAyAYoBiwGMAY1eTlNSZXNvdXJjZU5hbWWATIBKgEtXTlNJbWFnZVhOU1N3aXRjaNIANwA4AZEB
-kqIBkgA7XxAQTlNDdXN0b21SZXNvdXJjZdIADgGUAZUBlltOU0ltYWdlTmFtZYBPgE7SADcAOAGYAZmi
-AZkAO18QE05TQnV0dG9uSW1hZ2VTb3VyY2XSADcAOAGbAZyjAZwBnQA7Xk5TTXV0YWJsZUFycmF5V05T
-QXJyYXlaezU1MiwgNjI0fdIANwA4AaAAgaMAgQCCADtfEBZ7ezAsIDB9LCB7MTkyMCwgMTE3OH190gA3
-ADgBowGkogGkADtfEBBOU1dpbmRvd1RlbXBsYXRl0gA3ADgBpgGnowGnAagAO1xOU011dGFibGVTZXRV
-TlNTZXTSAA4APgBnAauAUK8QLQGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8B
-wAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2IBYgGSAaoBugHSA
-eoCAgIWAi4CQgJWAmoCegKOAqICtgLKAt4C8gMCAxYDLgNCA1IDagN6A4oDmgOqA7oDzgPiA+oD/gQEF
-gQEKgQEPgQEUgQEYgQEdgQEhgQEsgQEvgQEygQE10wAOAdoB2wHcAd0B3lhOU1NvdXJjZVdOU0xhYmVs
-gGOAWYBi2AAOAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuV05TVGl0bGVfEBFOU0tleUVxdWl2
-TW9kTWFza1pOU0tleUVxdWl2XU5TTW5lbW9uaWNMb2NZTlNPbkltYWdlXE5TTWl4ZWRJbWFnZVZOU01l
-bnWAYYBbEgAYAACAXBJ/////gF2AX4Ba1AAOAeAAowHwAfEB8gHzAfRbTlNNZW51SXRlbXOBAUGBAViB
-AWaBAVlbSGlkZSBPdGhlcnNRaNMADgAyAYoBiwGMAfqATIBKgF5fEA9OU01lbnVDaGVja21hcmvTAA4A
-MgGKAYsBjAH/gEyASoBgXxAQTlNNZW51TWl4ZWRTdGF0ZdIANwA4AgICA6ICAwA7Wk5TTWVudUl0ZW1f
-EBZoaWRlT3RoZXJBcHBsaWNhdGlvbnM60gA3ADgCBgIHowIHAggAO18QFU5TTmliQ29udHJvbENvbm5l
-Y3Rvcl5OU05pYkNvbm5lY3RvctMADgHaAdsB3AILAgyAY4BlgGnZAA4B4AHhAeIB4wHkAeUB5gIOAecC
-EAIRAhIB6wHsAe0CFQC8VU5TVGFngGGAZxIAEgAAgGiAXYBfgGbTAA4B4AHwAfECGAIZgQFBgQFWgQFX
-W1NtYXJ0IExpbmtzUUdfEB10b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uOtQADgIeAdoB2wHcAB8C
-IQIiXU5TRGVzdGluYXRpb26AY4ACgGuAbdcADgHgAeIB4wHkAeUB5gHnAiUAmgHrAewB7QHugGGAbIAV
-gF2AX4BaXxAUQWJvdXQgTmV3QXBwbGljYXRpb25fEB1vcmRlckZyb250U3RhbmRhcmRBYm91dFBhbmVs
-OtMADgHaAdsB3AIuAi+AY4BvgHPYAA4B4AHhAeIB4wHkAeUB5gHnAjICMwI0AesB7AHtAjeAYYBxEgAQ
-AACAcoBdgF+AcNMADgHgAfAB8QI6AjuBAUGBAYGBAYNUQ29weVFjVWNvcHk60wAOAdoB2wHcAkECQoBj
-gHWAedgADgHgAeEB4gHjAeQB5QHmAecCRQIzAkYB6wHsAe0CSYBhgHeAeIBdgF+AdtMADgHgAfAB8QJM
-Ak2BAUGBAUeBAUlfEBFKdW1wIHRvIFNlbGVjdGlvblFqXxAdY2VudGVyU2VsZWN0aW9uSW5WaXNpYmxl
-QXJlYTrTAA4B2gHbAdwCUwJUgGOAe4B/2QAOAlYB4AHhAeIB4wHkAeUB5gHnAJoCWQIRAloB6wHsAe0C
-XVlOU1Rvb2xUaXCAYYAVgH2AfoBdgF+AfNMADgHgAfAB8QJgAmGBAUGBATqBATtdUGFnZSBTZXR1cC4u
-LlFQXnJ1blBhZ2VMYXlvdXQ60wAOAdoB2wHcAmcCaIBjgIGAhNgADgHgAeEB4gHjAeQB5QHmAecCawIR
-AmwB6wHsAe0CXYBhgIKAg4BdgF+AfGgAUwBhAHYAZQAgAEEAcyAmUVNfEA9zYXZlRG9jdW1lbnRBczrT
-AA4B2gHbAdwCdQJ2gGOAhoCK2AAOAeAB4QHiAeMB5AHlAeYB5wJ5AjMCegHrAewB7QJ9gGGAiICJgF2A
-X4CH0wAOAeAB8AHxAoACgYEBQYEBaYEBal5DaGVjayBTcGVsbGluZ1E7XmNoZWNrU3BlbGxpbmc60wAO
-AdoB2wHcAocCiIBjgIyAj9gADgHgAeEB4gHjAeQB5QHmAecCiwIzAJoB6wHsAe0Cj4BhgI6AFYBdgF+A
-jdMADgHgAfAB8QKSApOBAUGBAUSBAUVdU3RvcCBTcGVha2luZ11zdG9wU3BlYWtpbmc60wAOAdoB2wHc
-ApgCmYBjgJGAlNgADgHgAeEB4gHjAeQB5QHmAecCnAIzAp0B6wHsAe0CfYBhgJKAk4BdgF+Ah24AUwBo
-AG8AdwAgAFMAcABlAGwAbABpAG4AZyAmUTpfEA9zaG93R3Vlc3NQYW5lbDrTAA4B2gHbAdwCpgKngGOA
-loCZ2AAOAeAB4QHiAeMB5AHlAeYB5wKqAjMCqwHrAewB7QHugGGAl4CYgF2AX4BaXxATUXVpdCBOZXdB
-cHBsaWNhdGlvblFxWnRlcm1pbmF0ZTrTAA4B2gHbAdwCtAK1gGOAm4Cd1wAOAeAB4gHjAeQB5QHmAecC
-uACaAesB7AHtAl2AYYCcgBWAXYBfgHxfEA9SZXZlcnQgdG8gU2F2ZWRfEBZyZXZlcnREb2N1bWVudFRv
-U2F2ZWQ60wAOAdoB2wHcAsECwoBjgJ+AotkADgHgAeEB4gHjAeQB5QHmAg4B5wLFAjMCxgHrAewB7QIV
-AFOAYYCggKGAXYBfgGZcU21hcnQgUXVvdGVzUWdfECF0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1
-dGlvbjrTAA4B2gHbAdwCzwLQgGOApICn2AAOAeAB4QHiAeMB5AHlAeYB5wLTAjMC1AHrAewB7QI3gGGA
-pYCmgF2AX4BwVVBhc3RlUXZWcGFzdGU60wAOAdoB2wHcAt0C3oBjgKmArNgADgHgAeEB4gHjAeQB5QHm
-AecC4QIzAuIB6wHsAe0CXYBhgKqAq4BdgF+AfGYAUAByAGkAbgB0ICZRcFZwcmludDrTAA4B2gHbAdwC
-6wLsgGOAroCx2AAOAeAB4QHiAeMB5AHlAeYB5wLvAjMC8AHrAewB7QJdgGGAr4CwgF2AX4B8ZQBPAHAA
-ZQBuICZRb11vcGVuRG9jdW1lbnQ60wAOAdoB2wHcAvkC+oBjgLOAttgADgHgAeEB4gHjAeQB5QHmAecC
-/QIzAJoB6wHsAe0DAYBhgLWAFYBdgF+AtNQADgHgAKMB8AHxAE8DBQMGgQFBgAmBAXeBAXVfEBJCcmlu
-ZyBBbGwgdG8gRnJvbnRfEA9hcnJhbmdlSW5Gcm9udDrTAA4B2gHbAdwDCwMMgGOAuIC72QAOAeAB4QHi
-AeMB5AHlAeYCDgHnAw8CMwMQAesB7AHtAhUDFIBhgLmAuoBdgF+AZhABXxAQU21hcnQgQ29weS9QYXN0
-ZVFmXxAYdG9nZ2xlU21hcnRJbnNlcnREZWxldGU60wAOAdoB2wHcAxoDG4BjgL2Av9gADgHgAeEB4gHj
-AeQB5QHmAecDHgIzAJoB6wHsAe0DAYBhgL6AFYBdgF+AtFRab29tXHBlcmZvcm1ab29tOtMADgHaAdsB
-3AMnAyiAY4DBgMTYAA4B4AHhAeIB4wHkAeUB5gHnAysCMwCaAesB7AHtAy+AYYDDgBWAXYBfgMLUAA4B
-4ACjAfAB8QMyAzMDNIEBQYEBPYEBQIEBP1pDbGVhciBNZW51XxAVY2xlYXJSZWNlbnREb2N1bWVudHM6
-0wAOAdoB2wHcAzkDOoBjgMaAytgADgHgAeEB4gHjAeQB5QHmAecDPQIRAz4B6wHsAe0DQYBhgMiAyYBd
-gF+Ax9MADgHgAfAB8QNEA0WBAUGBAW6BAXBbU2hvdyBDb2xvcnNRQ18QFW9yZGVyRnJvbnRDb2xvclBh
-bmVsOtMADgHaAdsB3ANLA0yAY4DMgM/YAA4B4AHhAeIB4wHkAeUB5gHnA08CMwNQAesB7AHtAl2AYYDN
-gM6AXYBfgHxRc11zYXZlRG9jdW1lbnQ60wAOAdoB2wHcA1gDWYBjgNGA09gADgHgAeEB4gHjAeQB5QHm
-AecDXAIzAJoB6wHsAe0CN4BhgNKAFYBdgF+AcFZEZWxldGVXZGVsZXRlOtMADgHaAdsB3ANlA2aAY4DV
-gNnYAA4B4AHhAeIB4wHkAeUB5gHnA2kB6QNqAesB7AHtA22AYYDXgNiAXYBfgNbTAA4B4AHwAfEDcANx
-gQFBgQFRgQFSXFNob3cgVG9vbGJhclF0XxATdG9nZ2xlVG9vbGJhclNob3duOtMADgHaAdsB3AN3A3iA
-Y4DbgN3YAA4B4AHhAeIB4wHkAeUB5gHnA3sCMwCaAesB7AHtAo+AYYDcgBWAXYBfgI1eU3RhcnQgU3Bl
-YWtpbmdec3RhcnRTcGVha2luZzrTAA4B2gHbAdwDhAOFgGOA34Dh2AAOAeAB4QHiAeMB5AHlAeYB5wOI
-AjMAmgHrAewB7QJ9gGGA4IAVgF2AX4CHXxAbQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nXxAedG9n
-Z2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmc60wAOAdoB2wHcA5EDkoBjgOOA5dgADgHgAeEB4gHjAeQB
-5QHmAecDlQIzAeoB6wHsAe0B7oBhgOSAXIBdgF+AWl8QE0hpZGUgTmV3QXBwbGljYXRpb25VaGlkZTrT
-AA4B2gHbAdwDngOfgGOA54Dp2QAOAeAB4QHiAeMB5AHlAeYCDgHnA6ICMwMQAesB7AHtAkkDFIBhgOiA
-uoBdgF+AdmUARgBpAG4AZCAmXxAXcGVyZm9ybUZpbmRQYW5lbEFjdGlvbjrTAA4B2gHbAdwDqwOsgGOA
-64Dt2AAOAeAB4QHiAeMB5AHlAeYB5wOvAjMAmgHrAewB7QJ9gGGA7IAVgF2AX4CHXxAbQ2hlY2sgR3Jh
-bW1hciBXaXRoIFNwZWxsaW5nXxAWdG9nZ2xlR3JhbW1hckNoZWNraW5nOtMADgHaAdsB3AO4A7mAY4Dv
-gPLYAA4B4AHhAeIB4wHkAeUB5gHnA7wCMwO9AesB7AHtAwGAYYDwgPGAXYBfgLRYTWluaW1pemVRbV8Q
-E3BlcmZvcm1NaW5pYXR1cml6ZTrTAA4B2gHbAdwDxgPHgGOA9ID32AAOAeAB4QHiAeMB5AHlAeYB5wPK
-AjMDywHrAewB7QI3gGGA9YD2gF2AX4BwWlNlbGVjdCBBbGxRYVpzZWxlY3RBbGw61AAOAh4B2gHbAdwA
-aQBxA9aAY4AOgD+A+VpzYXZlSW1hZ2U60wAOAdoB2wHcA9oD24BjgPuA/tgADgHgAeEB4gHjAeQB5QHm
-AecD3gIzA98B6wHsAe0CXYBhgPyA/YBdgF+AfFNOZXdRblxuZXdEb2N1bWVudDrTAA4B2gHbAdwD6APp
-gGOBAQCBAQTYAA4B4AHhAeIB4wHkAeUB5gHnA+wCMwPtAesB7AHtA/CAYYEBAoEBA4BdgF+BAQHTAA4B
-4AHwAfED8wP0gQFBgQFngQFoXxATTmV3QXBwbGljYXRpb24gSGVscFE/WXNob3dIZWxwOtMADgHaAdsB
-3AP6A/uAY4EBBoEBCdgADgHgAeEB4gHjAeQB5QHmAecD/gIzA/8B6wHsAe0CXYBhgQEHgQEIgF2AX4B8
-VUNsb3NlUXddcGVyZm9ybUNsb3NlOtMADgHaAdsB3AQIBAmAY4EBC4EBDtgADgHgAeEB4gHjAeQB5QHm
-AecEDAIRBA0B6wHsAe0CN4BhgQEMgQENgF2AX4BwVFJlZG9RWlVyZWRvOtMADgHaAdsB3AQWBBeAY4EB
-EIEBE9gADgHgAeEB4gHjAeQB5QHmAecEGgIzBBsB6wHsAe0CN4BhgQERgQESgF2AX4BwVFVuZG9RelV1
-bmRvOtMADgHaAdsB3AQkBCWAY4EBFYEBF9gADgHgAeEB4gHjAeQB5QHmAecEKAIzAJoB6wHsAe0DbYBh
-gQEWgBWAXYBfgNZvEBIAQwB1AHMAdABvAG0AaQB6AGUAIABUAG8AbwBsAGIAYQByICZfEB9ydW5Ub29s
-YmFyQ3VzdG9taXphdGlvblBhbGV0dGU60wAOAdoB2wHcBDEEMoBjgQEZgQEc2AAOAeAB4QHiAeMB5AHl
-AeYB5wQ1AjMENgHrAewB7QI3gGGBARqBARuAXYBfgHBTQ3V0UXhUY3V0OtMADgHaAdsB3AQ/BECAY4EB
-HoEBINgADgHgAeEB4gHjAeQB5QHmAecEQwIzAJoB6wHsAe0B7oBhgQEfgBWAXYBfgFpYU2hvdyBBbGxf
-EBZ1bmhpZGVBbGxBcHBsaWNhdGlvbnM61wAOAh4ESwRMAdoB2wRNBE4ETwRQBFEAbwRTAFNZTlNLZXlQ
-YXRoWU5TQmluZGluZ18QHE5TTmliQmluZGluZ0Nvbm5lY3RvclZlcnNpb26BASuBASKBASqBASmAOIEB
-KNMADgRVBFYEVwRYAIpeTlNEZWNsYXJlZEtleXNfEBBOU1NoYXJlZEluc3RhbmNlgQEngQEjCdIADgA+
-AGcEXIBQowRdBF4EX4EBJIEBJYEBJldvZmZzZXRYV29mZnNldFlfEBFhbHRlcm5hdGluZ0NvbG9yc9IA
-NwA4BGQEZaMEZQRmADtfEBhOU1VzZXJEZWZhdWx0c0NvbnRyb2xsZXJcTlNDb250cm9sbGVyXxAVdmFs
-dWU6IHZhbHVlcy5vZmZzZXRZVXZhbHVlXnZhbHVlcy5vZmZzZXRZ0gA3ADgEawRsowRsAggAO18QFU5T
-TmliQmluZGluZ0Nvbm5lY3RvctcADgIeBEsETAHaAdsETQROBE8EcARRAG0EcwBTgQErgQEigQEugQEp
-gDGBAS3XAA4CHgRLBEwB2gHbBE0ETgRPBHcEUQBqBHoAU4EBK4EBIoEBMYEBKYASgQEwXxAVdmFsdWU6
-IHZhbHVlcy5vZmZzZXRYXnZhbHVlcy5vZmZzZXRY1wAOAh4ESwRMAdoB2wRNBE4ETwSABFEAbASDAFOB
-ASuBASKBATSBASmALIEBM9cADgIeBEsETAHaAdsETQROBE8EhwRRAHIEigBTgQErgQEigQE3gQEpgEWB
-ATZfEB92YWx1ZTogdmFsdWVzLmFsdGVybmF0aW5nQ29sb3JzXxAYdmFsdWVzLmFsdGVybmF0aW5nQ29s
-b3Jz0gAOAD4EjgSPgQGMrxBnAHICwQSSAl0CjwSVAG0DbQBvAGkEmgFTA6sETwN3A1gBHwOEAHAEFgIV
-ApgATAHuA/ACzwIuAEECpgJ1AlMAbAJ9A8YA1QL5BLQDLwORBLcEuAS5BLoDGgPaAwEEvgOeAGsEwQTC
-AmcCIQTFBMYAagTIBMkCQQTLAjcCtANBAocCSQTRBDEDCwBuBNUECATXBNgB3QESBD8E3ATdAt0E3wF2
-AHEE4gEwAUEE5QTmA0sE6ATpA+gE6wMnA/oDuANlAPYDOQCJAgsC6wT1BCSARYCfgQE5gHyAjYEBRoAx
-gNaAOIAOgQFTgEGA64EBIoDbgNGANoDfgDuBARCAZoCRgAuAWoEBAYCkgG+AB4CWgIaAe4AsgIeA9IAl
-gLOBAUqAwoDjgQFrgQFtgQFegQFzgL2A+4C0gQFMgOeAI4EBW4EBX4CBgGuBATyBAXiAEoEBQoEBeoB1
-gQFUgHCAm4DHgIyAdoEBhYEBGYC4gDSBAWWBAQuBAU6BAWKAWYAzgQEegQGGgQGEgKmBAXGAR4A/gQGA
-gDqAPYEBQ4EBfoDMgQFagQGIgQEAgQGLgMGBAQaA74DVgC6AxoAUgGWAroEBdoEBFdoADgHgAeEE+AHi
-BPkB4wHkAeUB5gHnAJoCMwCKAJoAigHrAewB7QHuXU5TSXNTZXBhcmF0b3JcTlNJc0Rpc2FibGVkgGGA
-FQmAFQmAXYBfgFpURmlsZdIADgA+AGcFBYBQqwPaAusExQTIA/oDSwJnArQE5QJTAt2A+4CugQE8gQFC
-gQEGgMyAgYCbgQFDgHuAqdoADgUSAeAB4QHiAeMB5AHlAeYFEwHnAy8DMgIzAJoB6wHsAe0CXQUbWU5T
-U3VibWVudVhOU0FjdGlvboBhgMKBAT2AFYBdgF+AfIEBPltPcGVuIFJlY2VudF5zdWJtZW51QWN0aW9u
-OtIADgA+AGcFIIBQoQMngMFfEBZfTlNSZWNlbnREb2N1bWVudHNNZW510gA3ADgFJAHmogHmADvaAA4B
-4AHhBPgB4gT5AeMB5AHlAeYB5wCaAjMAigCaAIoB6wHsAe0CXYBhgBUJgBUJgF2AX4B82gAOAeAB4QT4
-AeIE+QHjAeQB5QHmAecAmgIzAIoAmgCKAesB7AHtAl2AYYAVCYAVCYBdgF+AfFZTcGVlY2jSAA4APgBn
-BTqAUKIDdwKHgNuAjNoADgUSAeAB4QHiAeMB5AHlAeYFEwHnAkkCTAIzAJoB6wHsAe0CNwVFgGGAdoEB
-R4AVgF2AX4BwgQFIVEZpbmTSAA4APgBnBUmAUKUDngS0BL4E1wJBgOeBAUqBAUyBAU6AddkADgHgAeEB
-4gHjAeQB5QHmAg4B5wVRAjMCxgHrAewB7QJJAFOAYYEBS4ChgF2AX4B2WUZpbmQgTmV4dNkADgHgAeEB
-4gHjAeQB5QHmAg4B5wVZAhECEgHrAewB7QJJALyAYYEBTYBogF2AX4B2XUZpbmQgUHJldmlvdXPZAA4B
-4AHhAeIB4wHkAeUB5gIOAecFYQIzBWIB6wHsAe0CSQBUgGGBAU+BAVCAXYBfgHZfEBZVc2UgU2VsZWN0
-aW9uIGZvciBGaW5kUWVUVmlld9IADgA+AGcFa4BQogNlBCSA1YEBFdoADgUSAeAB4QHiAeMB5AHlAeYF
-EwHnA20DcAIzAJoB6wHsAe0EywV2gGGA1oEBUYAVgF2AX4EBVIEBVdQADgHgAKMB8AHxBXkFegV7gQFB
-gQF8gQGKgQF9XVN1YnN0aXR1dGlvbnPSAA4APgBnBX+AUKMDCwLBAguAuICfgGVeTmV3QXBwbGljYXRp
-b27SAA4APgBnBYaAUKsCIQToBMEEuQTCBNUDkQHdBD8EkgKmgGuBAVqBAVuBAV6BAV+BAWWA44BZgQEe
-gQE5gJbaAA4B4AHhBPgB4gT5AeMB5AHlAeYB5wCaAjMAigCaAIoB6wHsAe0B7oBhgBUJgBUJgF2AX4Ba
-2AAOAeAB4QHiAeMB5AHlAeYB5wWdAjMFngHrAewB7QHugGGBAVyBAV2AXYBfgFpsAFAAcgBlAGYAZQBy
-AGUAbgBjAGUAcyAmUSzaAA4B4AHhBPgB4gT5AeMB5AHlAeYB5wCaAjMAigCaAIoB6wHsAe0B7oBhgBUJ
-gBUJgF2AX4Ba2gAOBRIB4AHhAeIB4wHkAeUB5gUTAecE2AWwAjMAmgHrAewB7QHuBbWAYYEBYoEBYIAV
-gF2AX4BagQFhWFNlcnZpY2Vz1AAOAeAAowHwAfEFsAW6BbuBAUGBAWCBAWSBAWPSAA4APgBnBb6AUKBf
-EA9fTlNTZXJ2aWNlc01lbnXaAA4B4AHhBPgB4gT5AeMB5AHlAeYB5wCaAjMAigCaAIoB6wHsAe0B7oBh
-gBUJgBUJgF2AX4BaXF9OU0FwcGxlTWVudVRIZWxw0gAOAD4AZwXNgFChA+iBAQBfEBRTcGVsbGluZyBh
-bmQgR3JhbW1hctIADgA+AGcF0oBQpAKYAnUDhAOrgJGAhoDfgOvaAA4FEgHgAeEB4gHjAeQB5QHmBRMB
-5wIVAhgCMwCaAesB7AHtAjcF34BhgGaBAVaAFYBdgF+AcIEBbNoADgUSAeAB4QHiAeMB5AHlAeYFEwHn
-A0EDRAIzAJoB6wHsAe0EywXogGGAx4EBboAVgF2AX4EBVIEBb1ZGb3JtYXTSAA4APgBnBeyAUKIE3wM5
-gQFxgMbYAA4B4AHhAeIB4wHkAeUB5gHnBfECMwNqAesB7AHtA0GAYYEBcoDYgF2AX4DHWlNob3cgRm9u
-dHPaAA4FEgHgAeEB4gHjAeQB5QHmBRMB5wJ9AoACMwCaAesB7AHtAjcF/4BhgIeBAWmAFYBdgF+AcIEB
-dNIADgA+AGcGAoBQpAO4AxoE9QL5gO+AvYEBdoCz2gAOAeAB4QT4AeIE+QHjAeQB5QHmAecAmgIzAIoA
-mgCKAesB7AHtAwGAYYAVCYAVCYBdgF+AtF5fTlNXaW5kb3dzTWVuddoADgUSAeAB4QHiAeMB5AHlAeYF
-EwHnAe4B8gIzAJoB6wHsAe0EywYZgGGAWoEBWIAVgF2AX4EBVIEBedoADgUSAeAB4QHiAeMB5AHlAeYF
-EwHnAo8CkgIzAJoB6wHsAe0CNwYigGGAjYEBRIAVgF2AX4BwgQF7WUFNYWluTWVuddIADgA+AGcGJoBQ
-pwTGBOYE4gS4BJoE3ATpgQF4gQF+gQGAgQFtgQFTgQGGgQGI2gAOBRIB4AHhAeIB4wHkAeUB5gUTAecC
-XQJgAjMAmgHrAewB7QTLBjaAYYB8gQE6gBWAXYBfgQFUgQF/2gAOBRIB4AHhAeIB4wHkAeUB5gUTAecC
-NwI6AjMAmgHrAewB7QTLBj+AYYBwgQGBgBWAXYBfgQFUgQGCVEVkaXTSAA4APgBnBkOAUK0EFgQIBN0E
-MQIuAs8DWAPGBNEElQS6BLcEyYEBEIEBC4EBhIEBGYBvgKSA0YD0gQGFgQFGgQFzgQFrgQF62gAOAeAB
-4QT4AeIE+QHjAeQB5QHmAecAmgIzAIoAmgCKAesB7AHtAjeAYYAVCYAVCYBdgF+AcNoADgHgAeEE+AHi
-BPkB4wHkAeUB5gHnAJoCMwCKAJoAigHrAewB7QI3gGGAFQmAFQmAXYBfgHDaAA4FEgHgAeEB4gHjAeQB
-5QHmBRMB5wMBAE8CMwCaAesB7AHtBMsGa4BhgLSACYAVgF2AX4EBVIEBh9oADgUSAeAB4QHiAeMB5AHl
-AeYFEwHnA/AD8wIzAJoB6wHsAe0EywZ0gGGBAQGBAWeAFYBdgF+BAVSBAYlbX05TTWFpbk1lbnXSAA4A
-MgAzADSABIAD0gA3ADgGegGdogGdADvSAA4APgSOBn2BAYyvEGcATAIVAe4E5gTJAjcATASaAEwATATL
-AHECfQAfAo8CNwBuAn0ATAI3BLcCfQBBBMYE6QI3AjcAHwHuAn0CXQBMBLoCNwBrAwECSQTFAe4CNwTL
-Ae4CNwMBAl0E3AJJAkkATAHuAe4CXQHuAl0EywBMAl0CNwJJAB8E4gJdBLgCjwSVAjcCNwIVAEwB7gI3
-AkkEwgHuAG0B7gTLAjcCXQNBAHIATATLAG8AcAJdBMsCXQHuBMsD8AAfAy8CXQMBA20AbANBAGoCFQJd
-AwEDbYALgGaAWoEBfoEBeoBwgAuBAVOAC4ALgQFUgD+Ah4ACgI2AcIA0gIeAC4BwgQFrgIeAB4EBeIEB
-iIBwgHCAAoBagIeAfIALgQFzgHCAI4C0gHaBATyAWoBwgQFUgFqAcIC0gHyBAYaAdoB2gAuAWoBagHyA
-WoB8gQFUgAuAfIBwgHaAAoEBgIB8gQFtgI2BAUaAcIBwgGaAC4BagHCAdoEBX4BagDGAWoEBVIBwgHyA
-x4BFgAuBAVSAOIA7gHyBAVSAfIBagQFUgQEBgAKAwoB8gLSA1oAsgMeAEoBmgHyAtIDW0gAOAD4Ejgbn
-gQGMrxBoAHICwQSSAl0CjwSVAG0DbQBvAGkEmgFTA6sETwN3A1gBHwAfA4QAcAQWAhUCmABMAe4D8ALP
-AEECLgKmAlMAbAJ1An0DxgDVAvkEtAMvA5EEuAS3BLkEugMaA9oDAQS+A54AawTBBMICZwIhBMUExgBq
-BMgEyQJBBMsCNwK0A0EChwJJAG4E0QQxAwsE1QQIARIB3QTYBNcEPwTcBN0C3QTfAXYAcQTiATABQQTl
-BOYDSwToBOkDZQTrA/oD6AO4APYDJwM5AIkCCwLrBPUEJIBFgJ+BATmAfICNgQFGgDGA1oA4gA6BAVOA
-QYDrgQEigNuA0YA2gAKA34A7gQEQgGaAkYALgFqBAQGApIAHgG+AloB7gCyAhoCHgPSAJYCzgQFKgMKA
-44EBbYEBa4EBXoEBc4C9gPuAtIEBTIDngCOBAVuBAV+AgYBrgQE8gQF4gBKBAUKBAXqAdYEBVIBwgJuA
-x4CMgHaANIEBhYEBGYC4gQFlgQELgDOAWYEBYoEBToEBHoEBhoEBhICpgQFxgEeAP4EBgIA6gD2BAUOB
-AX6AzIEBWoEBiIDVgQGLgQEGgQEAgO+ALoDBgMaAFIBlgK6BAXaBARXSAA4APgSOB1KBAYyvEGgHUwdU
-B1UHVgdXB1gHWQdaB1sHXAddB14HXwdgB2EHYgdjB2QHZQdmB2cHaAdpB2oHawdsB20HbgdvB3AHcQdy
-B3MHdAd1B3YHdwd4B3kHegd7B3wHfQd+B38HgAeBB4IHgweEB4UHhgeHB4gHiQeKB4sHjAeNB44HjweQ
-B5EHkgeTB5QHlQeWB5cHmAeZB5oHmwecB50HngefB6AHoQeiB6MHpAelB6YHpweoB6kHqgerB6wHrQeu
-B68HsAexB7IHswe0B7UHtge3B7gHuQe6gQGQgQGRgQGSgQGTgQGUgQGVgQGWgQGXgQGYgQGZgQGagQGb
-gQGcgQGdgQGegQGfgQGggQGhgQGigQGjgQGkgQGlgQGmgQGngQGogQGpgQGqgQGrgQGsgQGtgQGugQGv
-gQGwgQGxgQGygQGzgQG0gQG1gQG2gQG3gQG4gQG5gQG6gQG7gQG8gQG9gQG+gQG/gQHAgQHBgQHCgQHD
-gQHEgQHFgQHGgQHHgQHIgQHJgQHKgQHLgQHMgQHNgQHOgQHPgQHQgQHRgQHSgQHTgQHUgQHVgQHWgQHX
-gQHYgQHZgQHagQHbgQHcgQHdgQHegQHfgQHggQHhgQHigQHjgQHkgQHlgQHmgQHngQHogQHpgQHqgQHr
-gQHsgQHtgQHugQHvgQHwgQHxgQHygQHzgQH0gQH1gQH2gQH3XxAYQ2hlY2sgQm94IChDaGVja2VyYm9h
-cmQpXxAYTWVudSBJdGVtIChTbWFydCBRdW90ZXMpWVNlcGFyYXRvcltNZW51IChGaWxlKV1NZW51IChT
-cGVlY2gpXxAQTWVudSBJdGVtIChGaW5kKVdTdGVwcGVyW01lbnUgKFZpZXcpWlRleHQgRmllbGRfEBFG
-b250IFRleHR1cmUgVmlld18QEE1lbnUgSXRlbSAoVmlldylfEBJCdXR0b24gQ2VsbCAoU2F2ZSlfECdN
-ZW51IEl0ZW0gKENoZWNrIEdyYW1tYXIgV2l0aCBTcGVsbGluZylfEB9TaGFyZWQgVXNlciBEZWZhdWx0
-cyBDb250cm9sbGVyXxAaTWVudSBJdGVtIChTdGFydCBTcGVha2luZylfEBJNZW51IEl0ZW0gKERlbGV0
-ZSlfEBtUZXh0IEZpZWxkIENlbGwgKFkgb2Zmc2V0OilcRmlsZSdzIE93bmVyXxAnTWVudSBJdGVtIChD
-aGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmcpbxBsAFMAdABhAHQAaQBjACAAVABlAHgAdAAgACgASQBt
+AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxECBwALAAwAMQA1ADYAPAA9
+AEIAWgBbAFwAXQBeAAsAawB5AIEAggCDAIgAkwCUAKYApwCvALAAswC9AL4AvwDEAMYAywDMAM8A0wDX
+AN8A4ADoAOkA7gDvAPIA9wD4AQABAQEOAREBFAEcAR0BIQEpASoBMQEyAToBOwFDAUsBTAFfAWABYwFm
+AW4BbwF8AX0BggGDAYQBhwGDAYsBjgGXAZgBnwGgAagBqQHBAdcB3AHdAeEB4gHmAecB6AHqAesB8wH8
+AecB/QIHAecCCAISAecCEwIdAecCHgIiAiQCKAIrAAsCLAIuAi8CMAIzAjcCWgJgAmcCawJsAm0CbgJy
+AnYCfQJ+An8CgAKEAosCjwKQApECkgKWAp0CoQKiAqMCpwKuAq8CsAKxArUCvAK9Ar4CvwLDAsoCywLM
+As0C0QLYAt0C3gLfAuAC5ALrAuwC7QLxAvgC/AL9Av4DAgMJAwoDCwMMAxADGAMZAxoDGwMhAyIDJQMp
+AzADNAM1AzYDNwM8Az0DQgNKA04DTwNQA1EDVQNdA14DXwNjA2oDawNsA3EDeAN5A3oDfgOFA4YDhwOI
+A1ADjQORA5gDmQOaA5sDnwOmA6cDqAOpA60DtAO1A7YDugPBA8IDwwPEA8gDzwPQA9ED1QPcA90D3gPo
+A+wD8APxA/ID8wP2A/0EBAQFBAYEDQQOBA8EFgRpBGoEbwR6BH8EgASGBJAEkQSSBJ4EpwSRBKgErQSw
+BLEEugTDBMQEzQSRBM4E0gTbBJEE3ATsBPUE/gUHBJEFCAUQBRcFGAUfBSAFKAUpBSoFMwSRBTQFOwVE
+BJEFRQVLBJEFVAVVBVgFWgWtBgEGVQZWBlcGWAZZBloGWwZcBl0GXgZfBmAGYQZiBmMGZAZlBmYGZwZo
+BmkGagZrBmwGbQZuBm8GcAZxBnIGcwZ0BnUGdgZ3BngGeQZ6BnsGfAZ9Bn4GfwaABoEGggaDBoQGhQaG
+BocGiAaJBooGiwaMBo0GjgaPBpAGkQaSBpMGlAaVBpYGlwaYBpkGmgabBpwGnQaeBp8GoAahBqIGowak
+BqUGpgapBqwHIAeUB5UHlgeXB5gHmQeaB5sHnAedB54HnwegB6EHogejB6QHpQemB6cHqAepB6oHqwes
+B60HrgevB7AHsQeyB7MHtAe1B7YHtwe4B7kHuge7B7wHvQe+B78HwAfBB8IHwwfEB8UHxgfHB8gHyQfK
+B8sHzAfNB84HzwfQB9EH0gfTB9QH1QfWB9cH2AfZB9oH2wfcB90H3gffB+AH4QG9B+IH4wfkB+UH5gFc
+B+cH6AfpB+oH6wfsB+0H7gfvB/AH8QfyB/MH9Af1B/YH9wf4B/kH+gf7B/wH/Qf+B/8IAAgBCAIIAwgG
+CAkIDFUkbnVsbN8QEgANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMA
+JAAlACYAJwAoACkAKgArACwALQAuAC8AMFZOU1Jvb3RWJGNsYXNzXU5TT2JqZWN0c0tleXNfEA9OU0Ns
+YXNzZXNWYWx1ZXNfEBlOU0FjY2Vzc2liaWxpdHlPaWRzVmFsdWVzXU5TQ29ubmVjdGlvbnNbTlNOYW1l
+c0tleXNbTlNGcmFtZXdvcmtdTlNDbGFzc2VzS2V5c1pOU09pZHNLZXlzXU5TTmFtZXNWYWx1ZXNfEBlO
+U0FjY2Vzc2liaWxpdHlDb25uZWN0b3JzXU5TRm9udE1hbmFnZXJfEBBOU1Zpc2libGVXaW5kb3dzXxAP
+TlNPYmplY3RzVmFsdWVzXxAXTlNBY2Nlc3NpYmlsaXR5T2lkc0tleXNZTlNOZXh0T2lkXE5TT2lkc1Zh
+bHVlc4ACgQIGgQEEgQGPgQIFgHaBATuABYEBjoEBkIEBPIECA4AAgAaBATqBAgQRAbKBAZHSAA4AMgAz
+ADRbTlNDbGFzc05hbWWABIADXU5TQXBwbGljYXRpb27SADcAOAA5ADpYJGNsYXNzZXNaJGNsYXNzbmFt
+ZaIAOgA7Xk5TQ3VzdG9tT2JqZWN0WE5TT2JqZWN0XxAQSUJDb2NvYUZyYW1ld29ya9IADgA+AD8AQFpO
+Uy5vYmplY3RzgHWhAEGAB9wAQwAOAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYA
+VwBYACtcTlNXaW5kb3dWaWV3XE5TU2NyZWVuUmVjdF1OU1dpbmRvd1RpdGxlWU5TV1RGbGFnc11OU1dp
+bmRvd0NsYXNzXxAWTlNXaW5kb3dDb250ZW50TWluU2l6ZVxOU1dpbmRvd1JlY3RfEA9OU1dpbmRvd0Jh
+Y2tpbmdfEBFOU1dpbmRvd1N0eWxlTWFza1lOU01pblNpemVbTlNWaWV3Q2xhc3OADIB0gHKACRJ0AAAA
+gAqAC4AIEAIQD4BzgABfEBh7ezM1LCA0N30sIHsxMjEwLCAxMDg5fX1WV2luZG93WE5TV2luZG93Wnsz
+MTQsIDE5M33XAF8ADgBgAGEAYgBcAGMAZABlAGYAZwBoAGQAal8QD05TTmV4dFJlc3BvbmRlclpOU1N1
+YnZpZXdzWE5TdkZsYWdzW05TRnJhbWVTaXplW05TU3VwZXJ2aWV3gA2AcYAOEQESgG+ADYBw0gAOAD4A
+bABtgGurAG4AbwBwAHEAcgBzAHQAdQB2AHcAeIAPgBOAJIAtgDKANYA5gDyAQoBNgFHXAF8ADgB6AGEA
+XAAyAGMATgB8AH0AZwBkAH8ATldOU0ZyYW1lgAyAEoAQgA2AEYAMXxAYe3syMCwgMjB9LCB7MTAyNCwg
+MTAyNH19XxAPRm9udFRleHR1cmVWaWV30gA3ADgAhACFpACFAIYAhwA7XE5TQ3VzdG9tVmlld1ZOU1Zp
+ZXdbTlNSZXNwb25kZXLYAF8ADgB6AIkAYQCKAFwAYwBOAIwAjQCOAI8AkABkAE5WTlNDZWxsWU5TRW5h
+YmxlZIAMgCOAFIAVEQEJCYANgAxfEBh7ezExMjMsIDEwMjJ9LCB7NDYsIDIyfX3ZAJUADgCWAJcAmACZ
+AJoAmwCcAJ0AngCfAKAAoQBvAKMAkAClW05TQ2VsbEZsYWdzXxARTlNCYWNrZ3JvdW5kQ29sb3JaTlND
+b250ZW50c1lOU1N1cHBvcnRdTlNDb250cm9sVmlld1xOU0NlbGxGbGFnczJfEBFOU0RyYXdzQmFja2dy
+b3VuZFtOU1RleHRDb2xvchP/////lHH+QYAigBqAFoAXgBMSEEAEAAmAH1DUAA4AqACpAKoAqwCsAK0A
+rlZOU1NpemVWTlNOYW1lWE5TZkZsYWdzgBkjQCoAAAAAAACAGBEEFFxMdWNpZGFHcmFuZGXSADcAOACx
+ALKiALIAO1ZOU0ZvbnTVAA4AtAC1ALYAtwC4ALkAugC7ALxXTlNDb2xvclxOU0NvbG9yU3BhY2VbTlND
+b2xvck5hbWVdTlNDYXRhbG9nTmFtZYAegB0QBoAcgBtWU3lzdGVtXxATdGV4dEJhY2tncm91bmRDb2xv
+ctMADgC1AMAAuADCAMNXTlNXaGl0ZYAeEANCMQDSADcAOADFALSiALQAO9UADgC0ALUAtgC3ALgAyAC6
+AMkAvIAegCGAIIAbWXRleHRDb2xvctMADgC1AMAAuADCAM6AHkIwANIANwA4ANAA0aQA0QDSAIkAO18Q
+D05TVGV4dEZpZWxkQ2VsbFxOU0FjdGlvbkNlbGzSADcAOADUANWlANUA1gCGAIcAO1tOU1RleHRGaWVs
+ZFlOU0NvbnRyb2zYAF8ADgB6AIkAYQCKAFwAYwBOAIwA2gDbAI8AkABkAE6ADIAjgCWAJgmADYAMXxAY
+e3sxMDYxLCAxMDI0fSwgezU3LCAxN3192ACVAA4AlgCXAJgAmQCaAJwA4QCeAOMA5AChAHAAowDnEgQB
+/kCAIoAogCeAF4AkgCtZWCBvZmZzZXQ61QAOALQAtQC2ALcAuADrALoA7AC8gB6AKoApgBtcY29udHJv
+bENvbG9y0wAOALUAwAC4AMIA8YAeSzAuNjY2NjY2NjkA1QAOALQAtQC2ALcAuADIALoA9QC8gB6AIYAs
+gBtfEBBjb250cm9sVGV4dENvbG9y2ABfAA4AegCJAGEAigBcAGMATgD6APsA/ACPAJAAZABOgAyAMYAu
+gC8JgA2ADF8QGHt7MTE3NCwgMTAxOH0sIHsxOSwgMjd9fdgAlQAOAQIBAwEEAJkAmgEFAQYBBwEIAQkB
+CgBxAQwAkFtOU0luY3JlbWVudFpOU01heFZhbHVlWk5TTWluVmFsdWVcTlNBdXRvcmVwZWF0EgAN/iCA
+MCM/8AAAAAAAACNAgAAAAAAAACPAgAAAAAAAAIAtEAAJ0gA3ADgBDwEQpAEQANIAiQA7XU5TU3RlcHBl
+ckNlbGzSADcAOAESAROlARMA1gCGAIcAO1lOU1N0ZXBwZXLYAF8ADgB6AIkAYQCKAFwAYwBOAPoBFwEY
+AI8AkABkAE6ADIAxgDOANAmADYAMXxAXe3sxMTc0LCA5ODd9LCB7MTksIDI3fX3YAJUADgECAQMBBACZ
+AJoBBQEGAQcBCAEJAQoAcgEMAJCAMIAyCdgAXwAOAHoAiQBhAIoAXABjAE4AjAEkASUAjwCQAGQAToAM
+gCOANoA3CYANgAxfEBd7ezEwNjEsIDk5M30sIHs1NywgMTd9fdgAlQAOAJYAlwCYAJkAmgCcAOEAngDj
+AS0AoQBzAKMA54AigCiAOIAXgDWAK1lZIG9mZnNldDrYAF8ADgB6AIkAYQCKAFwAYwBOAIwBNQE2AI8A
+kABkAE6ADIAjgDqAOwmADYAMXxAXe3sxMTIzLCA5OTF9LCB7NDYsIDIyfX3ZAJUADgCWAJcAmACZAJoA
+mwCcAJ0AngCfAKAAoQB0AKMAkAClgCKAGoAWgBeAOQmAH9gAXwAOAHoAiQBhAIoAXABjAE4BRQFGAUcA
+jwCQAGQAToAMgEGAPYA+CYANgAxfEBd7ezEwNTgsIDg5M30sIHs5NiwgMzJ9fdwAlQAOAU0BTgFPAVAA
+lwCYAJkBUQCaAVIBUwFUAKABVgFXAKABWQChAHUBXAFdAV5fEBNOU0FsdGVybmF0ZUNvbnRlbnRzXxAS
+TlNQZXJpb2RpY0ludGVydmFsXk5TQnV0dG9uRmxhZ3MyXxAPTlNLZXlFcXVpdmFsZW50XxAPTlNQZXJp
+b2RpY0RlbGF5XU5TQnV0dG9uRmxhZ3MSBAH+AIBAgBYQGRCBgBaAP4AXgDwQyBIIAAAAE/////+GgkD/
+VFNhdmXSADcAOAFhAWKkAWIA0gCJADtcTlNCdXR0b25DZWxs0gA3ADgBZAFlpQFlANYAhgCHADtYTlNC
+dXR0b27YAF8ADgB6AIkAYQCKAFwAYwBOAUUBaQFqAI8AkABkAE6ADIBBgEOARAmADYAMXxAYe3sxMDYy
+LCA5Njd9LCB7MTEwLCAxOH193gCVAA4BTQFwAU4BTwFxAVAAlwCYAJkBUQCaAVIBcgFUAKABdQFWAFYB
+dgCgAXgAoQB2AVwBDAF7XU5TTm9ybWFsSW1hZ2VfEBBOU0FsdGVybmF0ZUltYWdlE/////+EAf4AgECA
+FoBGgEqAFoBFgBeAQhJIPFH/XENoZWNrZXJib2FyZNMADgAyAX4BfwGAAYFeTlNSZXNvdXJjZU5hbWWA
+SYBHgEhXTlNJbWFnZVhOU1N3aXRjaNIANwA4AYUBhqIBhgA7XxAQTlNDdXN0b21SZXNvdXJjZdIADgGI
+AYkBiltOU0ltYWdlTmFtZYBMgEvSADcAOAGMAY2iAY0AO18QE05TQnV0dG9uSW1hZ2VTb3VyY2XYAF8A
+DgB6AIkAYQCKAFwAYwBOAIwBkQGSAZMAkABkAE6ADIAjgE6ATxEBDAmADYAMXxAXe3sxNywgMTA1Mn0s
+IHs2MTMsIDE3fX3YAJUADgCWAJcAmACZAJoAnADhAJ4A4wGbAKEAdwCjAOeAIoAogFCAF4BNgCtvEF4A
+SQBtAHAAbwByAHQAYQBuAHQAOgAgAHMAZQB0ACAgHABGAG8AbgB0ACAAcwBtAG8AbwB0AGgAaQBuAGcA
+IABzAHQAeQBsAGUgHQAgAHQAbwAgIBwAUwB0AGEAbgBkAGEAcgBkIB0AIABpAG4AIAB0AGgAZQAgAEEA
+cABwAGUAYQByAGEAbgBjAGUAIABzAHkAcwB0AGUAbQAgAHAAcgBlAGYAZQByAGUAbgBjAGUAcwAgAHAA
+YQBuAGUALtgAXwAOAHoAiQBhAIoAXABjAE4BogGjAaQAjwCQAGQAToAMgG6AUoBTCYANgAxfEBh7ezEw
+NjEsIDkzN30sIHsxMzIsIDI2fX3fEBIAlQGqAasBTQFOAA4BTwFQAJgBrACZAa0BrgGvAVEAmgGwAVIB
+sQCQAFYAoAG0AbUBtgCgAKEBuQB4AbYAkACQAb0BvgG/AcBfEBpOU01lbnVJdGVtUmVzcGVjdEFsaWdu
+bWVudF8QD05TQXJyb3dQb3NpdGlvblpOU01lbnVJdGVtXxAPTlNQcmVmZXJyZWRFZGdlXxASTlNVc2Vz
+SXRlbUZyb21NZW51XU5TQWx0ZXJzU3RhdGVWTlNNZW51E/////+EQf5ACYAWEEuAbRABgBaAF4BUgFEJ
+CREBkBEIAIBVEgaCQP/cAcIADgHDAcQBxQHGAccByAGwAckBygHLAaQBzQHOAc8AoAHRAdIB0wG/AdUB
+1gG2WE5TVGFyZ2V0V05TVGl0bGVfEBFOU0tleUVxdWl2TW9kTWFza1pOU0tleUVxdWl2XU5TTW5lbW9u
+aWNMb2NZTlNPbkltYWdlXE5TTWl4ZWRJbWFnZVhOU0FjdGlvblVOU1RhZ1dOU1N0YXRlgFOAXIBWEgAQ
+AACAFhJ/////gFeAWYBVgFsQDNMADgHDAdgB2QHaAdtbTlNNZW51SXRlbXOAbIBdgF5XTGF0aW4tMdMA
+DgAyAX4BfwGAAeCASYBHgFhfEA9OU01lbnVDaGVja21hcmvTAA4AMgF+AX8BgAHlgEmAR4BaXxAQTlNN
+ZW51TWl4ZWRTdGF0ZV8QEV9wb3BVcEl0ZW1BY3Rpb2460gA3ADgB6QGsogGsADtaT3RoZXJWaWV3c9IA
+DgA+AGwB7YBrpQG5Ae8B8AHxAfKAVIBfgGKAZYBo2wHCAA4BwwHEAcUBxgHHAcgBsAHJAcoBpAHNAfYB
+zwCgAdEB0gHTAb8B+wBXgFOAXIBggBaAV4BZgFWAYVdMYXRpbi0y2wHCAA4BwwHEAcUBxgHHAcgBsAHJ
+AcoBpAHNAgABzwCgAdEB0gHTAb8CBQIGgFOAXIBjgBaAV4BZgFWAZBALWEN5cmlsbGlj2wHCAA4BwwHE
+AcUBxgHHAcgBsAHJAcoBpAHNAgsBzwCgAdEB0gHTAb8CEAIRgFOAXIBmgBaAV4BZgFWAZxANVUdyZWVr
+2wHCAA4BwwHEAcUBxgHHAcgBsAHJAcoBpAHNAhYBzwCgAdEB0gHTAb8CGwIcgFOAXIBpgBaAV4BZgFWA
+ahAOV1R1cmtpc2jSADcAOAIfAiCjAiACIQA7Xk5TTXV0YWJsZUFycmF5V05TQXJyYXnSADcAOAIjAbCi
+AbAAO9IANwA4AiUCJqYCJgInAWIA0gCJADtfEBFOU1BvcFVwQnV0dG9uQ2VsbF5OU01lbnVJdGVtQ2Vs
+bNIANwA4AikCKqYCKgFlANYAhgCHADtdTlNQb3BVcEJ1dHRvblx7MTIxMCwgMTA4OX3SADcAOAItAIaj
+AIYAhwA7XxAWe3swLCAwfSwgezE5MjAsIDExNzh9fVp7MzE0LCAyMTV90gA3ADgCMQIyogIyADtfEBBO
+U1dpbmRvd1RlbXBsYXRl0gA3ADgCNAI1owI1AjYAO1xOU011dGFibGVTZXRVTlNTZXTSAA4APgBsAjmA
+a68QIAI6AjsCPAI9Aj4CPwJAAkECQgJDAkQCRQJGAkcCSAJJAkoCSwJMAk0CTgJPAlACUQJSAlMCVAJV
+AlYCVwJYAlmAd4B+gIOAiYCOgJOAmICdgKOAp4CsgLGAtoC5gL+AwYDHgMuAz4DTgNiA2oDfgOSA6IDt
+gPGA9YD8gP2BAQCBAQPTAA4CWwJcAl0CXgJfWE5TU291cmNlV05TTGFiZWyAfYB4gHzYAA4BwwHEAcUB
+xgHHAcgBsAHNAmIBzwJjAdEB0gHTAmaAXIB6gHuAV4BZgHnTAA4BwwHYAdkCaQJqgGyBAR2BAR9UVW5k
+b1F6VXVuZG860gA3ADgCbwJwowJwAnEAO18QFU5TTmliQ29udHJvbENvbm5lY3Rvcl5OU05pYkNvbm5l
+Y3RvctMADgJbAlwCXQJ0AnWAfYB/gILYAA4BwwHEAcUBxgHHAcgBsAHNAngBzwJ5AdEB0gHTAmaAXICA
+gIGAV4BZgHlUQ29weVFjVWNvcHk60wAOAlsCXAJdAoICg4B9gISAiNkADgHDAcQBxQHGAccByAGwAcoB
+zQKGAc8ChwHRAdIB0wKKAbaAXICGgIeAV4BZgIXTAA4BwwHYAdkCjQKOgGyBASOBASVlAEYAaQBuAGQg
+JlFmXxAXcGVyZm9ybUZpbmRQYW5lbEFjdGlvbjrTAA4CWwJcAl0ClAKVgH2AioCN2AAOAcMBxAHFAcYB
+xwHIAbABzQKYAc8AoAHRAdIB0wKcgFyAjIAWgFeAWYCL0wAOAcMB2AHZAp8CoIBsgQEugQEwXxAbQ2hl
+Y2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nXxAedG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmc60wAO
+AlsCXAJdAqUCpoB9gI+AktgADgHDAcQBxQHGAccByAGwAc0CqQHPAqoB0QHSAdMCnIBcgJCAkYBXgFmA
+i24AUwBoAG8AdwAgAFMAcABlAGwAbABpAG4AZyAmUTpfEA9zaG93R3Vlc3NQYW5lbDrTAA4CWwJcAl0C
+swK0gH2AlICX2AAOAcMBxAHFAcYBxwHIAbABzQK3Ac8CuAHRAdIB0wKcgFyAlYCWgFeAWYCLXkNoZWNr
+IFNwZWxsaW5nUTteY2hlY2tTcGVsbGluZzrTAA4CWwJcAl0CwQLCgH2AmYCc2AAOAcMBxAHFAcYBxwHI
+AbABzQLFAc8CxgHRAdIB0wJmgFyAmoCbgFeAWYB5VVBhc3RlUXZWcGFzdGU60wAOAlsCXAJdAs8C0IB9
+gJ6AotgADgHDAcQBxQHGAccByAGwAc0C0wHPAtQB0QHSAdMC14BcgKCAoYBXgFmAn9QADgHDAKkB2AHZ
+AtoC2wLcgGyBAQyBAReBAQ5fEBtIaWRlIEZvbnQgVGV4dHVyZSBHZW5lcmF0b3JRaFVoaWRlOtMADgJb
+AlwCXQLiAuOAfYCkgKbYAA4BwwHEAcUBxgHHAcgBsAHNAuYBzwCgAdEB0gHTAteAXIClgBaAV4BZgJ9Y
+U2hvdyBBbGxfEBZ1bmhpZGVBbGxBcHBsaWNhdGlvbnM60wAOAlsCXAJdAu8C8IB9gKiAq9gADgHDAcQB
+xQHGAccByAGwAc0C8wHPAKAB0QHSAdMC94BcgKqAFoBXgFmAqdMADgHDAdgB2QL6AvuAbIEBBYEBBl1T
+dG9wIFNwZWFraW5nXXN0b3BTcGVha2luZzrTAA4CWwJcAl0DAAMBgH2ArYCw2AAOAcMBxAHFAcYBxwHI
+AbABzQMEAc8DBQHRAdIB0wJmgFyAroCvgFeAWYB5U0N1dFF4VGN1dDrTAA4CWwJcAl0DDgMPgH2AsoC1
+2AAOAcMBxAHFAcYBxwHIAbABzQMSAxMDFAHRAdIB0wJmgFyAsxIAEgAAgLSAV4BZgHlUUmVkb1FaVXJl
+ZG861AAOAxwCWwJcAx0AeABuAyBdTlNEZXN0aW5hdGlvboC4gFGAD4C3XWVuY29kaW5nUG9wVXDSADcA
+OAMjAySjAyQCcQA7XxAUTlNOaWJPdXRsZXRDb25uZWN0b3LTAA4CWwJcAl0DJwMogH2AuoC+2QAOAcMB
+xAHFAcYBxwHIAbABygHNAysBzwMsAdEB0gHTAy8AVoBcgLyAvYBXgFmAu9MADgHDAdgB2QMyAzOAbIEB
+MoEBNFxTbWFydCBRdW90ZXNRZ18QIXRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uOtQADgMc
+AlsCXAJdAG4AeAM7gH2AD4BRgMBfEBR0YWtlRW5jb2RpbmdGcm9tVGFnOtQADgMcAlsCXAJdAG4DQANB
+gH2AD4DCgMbYAA4BwwHEAcUBxgHHAcgBsAHNA0QDRQNGAdEB0gHTA0mAXIDEEgAQAQiAxYBXgFmAw9MA
+DgHDAdgB2QNMA02AbIEBGYEBG2gAUwBhAHYAZQAgAEEAcyAmUXNac2F2ZUltYWdlOtMADgJbAlwCXQNT
+A1SAfYDIgMrYAA4BwwHEAcUBxgHHAcgBsAHNA1cDWALUAdEB0gHTAteAXIDJEgAYAACAoYBXgFmAn1tI
+aWRlIE90aGVyc18QFmhpZGVPdGhlckFwcGxpY2F0aW9uczrTAA4CWwJcAl0DYQNigH2AzIDO2AAOAcMB
+xAHFAcYBxwHIAbABzQNlAc8AoAHRAdIB0wL3gFyAzYAWgFeAWYCpXlN0YXJ0IFNwZWFraW5nXnN0YXJ0
+U3BlYWtpbmc61AAOAxwCWwJcAl0AHwNvA3CAfYACgNCA0tcADgHDAcUBxgHHAcgBsAHNA3MAoAHRAdIB
+0wLXgFyA0YAWgFeAWYCfXxAcQWJvdXQgRm9udCBUZXh0dXJlIEdlbmVyYXRvcl8QHW9yZGVyRnJvbnRT
+dGFuZGFyZEFib3V0UGFuZWw60wAOAlsCXAJdA3wDfYB9gNSA19kADgHDAcQBxQHGAccByAGwAcoBzQOA
+AxMDgQHRAdIB0wMvAMKAXIDVgNaAV4BZgLtbU21hcnQgTGlua3NRR18QHXRvZ2dsZUF1dG9tYXRpY0xp
+bmtEZXRlY3Rpb2461AAOAxwCWwJcAl0AbgB1A4yAfYAPgDyA2dMADgJbAlwCXQOPA5CAfYDbgN7YAA4B
+wwHEAcUBxgHHAcgBsAHNA5MBzwOUAdEB0gHTAoqAXIDcgN2AV4BZgIVfEBFKdW1wIHRvIFNlbGVjdGlv
+blFqXxAdY2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYTrTAA4CWwJcAl0DnQOegH2A4IDj2AAOAcMB
+xAHFAcYBxwHIAbABzQOhAc8DogHRAdIB0wJmgFyA4YDigFeAWYB5WlNlbGVjdCBBbGxRYVpzZWxlY3RB
+bGw60wAOAlsCXAJdA6sDrIB9gOWA59kADgHDAcQBxQHGAccByAGwAcoBzQOvAc8ChwHRAdIB0wMvAbaA
+XIDmgIeAV4BZgLtfEBBTbWFydCBDb3B5L1Bhc3RlXxAYdG9nZ2xlU21hcnRJbnNlcnREZWxldGU60wAO
+AlsCXAJdA7gDuYB9gOmA7NgADgHDAcQBxQHGAccByAGwAc0DvAHPA70B0QHSAdMC14BcgOqA64BXgFmA
+n18QG1F1aXQgRm9udCBUZXh0dXJlIEdlbmVyYXRvclFxWnRlcm1pbmF0ZTrTAA4CWwJcAl0DxgPHgH2A
+7oDw2AAOAcMBxAHFAcYBxwHIAbABzQPKAc8AoAHRAdIB0wJmgFyA74AWgFeAWYB5VkRlbGV0ZVdkZWxl
+dGU60wAOAlsCXAJdA9MD1IB9gPKA9NgADgHDAcQBxQHGAccByAGwAc0D1wHPAKAB0QHSAdMCnIBcgPOA
+FoBXgFmAi18QG0NoZWNrIEdyYW1tYXIgV2l0aCBTcGVsbGluZ18QFnRvZ2dsZUdyYW1tYXJDaGVja2lu
+ZzrXAA4DHAPfA+ACWwJcA+ED4gPjA+QD5QBxA+cAVllOU0tleVBhdGhZTlNCaW5kaW5nXxAcTlNOaWJC
+aW5kaW5nQ29ubmVjdG9yVmVyc2lvboD7gPaA+oD5gC2A+NIADgPpA+oAkF8QEE5TU2hhcmVkSW5zdGFu
+Y2WA9wnSADcAOAPtA+6jA+4D7wA7XxAYTlNVc2VyRGVmYXVsdHNDb250cm9sbGVyXE5TQ29udHJvbGxl
+cl8QFXZhbHVlOiB2YWx1ZXMub2Zmc2V0WFV2YWx1ZV52YWx1ZXMub2Zmc2V0WNIANwA4A/QD9aMD9QJx
+ADtfEBVOU05pYkJpbmRpbmdDb25uZWN0b3LXAA4DHAPfA+ACWwJcA+ED4gPjA+QD5QBvA+cAVoD7gPaA
++oD5gBOA+NcADgMcA98D4AJbAlwD4QPiA+MEAAPlAHYEAwBWgPuA9oD/gPmAQoD+XxAfdmFsdWU6IHZh
+bHVlcy5hbHRlcm5hdGluZ0NvbG9yc18QGHZhbHVlcy5hbHRlcm5hdGluZ0NvbG9yc9cADgMcA98D4AJb
+AlwD4QPiA+MECQPlAHIEDABWgPuA9oEBAoD5gDKBAQFfEBV2YWx1ZTogdmFsdWVzLm9mZnNldFledmFs
+dWVzLm9mZnNldFnXAA4DHAPfA+ACWwJcA+ED4gPjBAkD5QB0BAwAVoD7gPaBAQKA+YA5gQEB0gAOAD4E
+FwQYgQE5rxBQA48AcwL3AUcAeABBASUBpAQhBCID0wKUAWoAbgByBCgDYQNAAl4A2wG5BC4ELwLXBDEE
+MgEYBDQENQPGBDcEOAB2AZICnAD8AsEBNgHxBEACggB1AnQDLwNTAs8ERwBvAHEC4gN8BEwD4wG/AwAD
+qwRRA7gEUwB3AooEVgKlAycDDgNvBFsC7wNJBF4AjgHvAfIB8AOdAE4CZgBwAHQCs4DbgDWAqYA+gFGA
+B4A3gFOBAQeBAQiA8oCKgESAD4AygQELgMyAwoB4gCaAVIEBIYEBEoCfgQEtgQEigDSBAQ+BARWA7oEB
+JoEBKoBCgE+Ai4AvgJmAO4BlgQEYgISAPIB/gLuAyICegQExgBOALYCkgNSBASCA9oBVgK2A5YEBOIDp
+gQEogE2AhYEBFoCPgLqAsoDQgQEcgKiAw4EBNYAVgF+AaIBigOCADIB5gCSAOYCUVlNwZWVjaNIADgA+
+AGwEbIBrogNhAu+AzICo2gAOAcMBxARwAcUEcQHGAccByAGwAc0AoAHPAJAAoACQAdEB0gHTAtddTlNJ
+c1NlcGFyYXRvclxOU0lzRGlzYWJsZWSAXIAWCYAWCYBXgFmAn9QADgHDAKkB2AHZBHwEfQR+gGyBAQmB
+ATeBAQpZQU1haW5NZW510gAOAD4AbASCgGujBCgEQARbgQELgQEYgQEc2gAOBIcBwwHEAcUBxgHHAcgB
+sAHJAc0C1wLaAc8AoAHRAdIB0wQiBI9ZTlNTdWJtZW51gFyAn4EBDIAWgFeAWYEBCIEBDV8QFkZvbnQg
+VGV4dHVyZSBHZW5lcmF0b3Jec3VibWVudUFjdGlvbjrSAA4APgBsBJSAa6kDbwQhBDQENQLPA1MC4gRW
+A7iA0IEBB4EBD4EBFYCegMiApIEBFoDp2gAOBIcBwwHEAcUBxgHHAcgBsAHJAc0ELwShAc8AoAHRAdIB
+0wLXBKaAXIEBEoEBEIAWgFeAWYCfgQERWFNlcnZpY2Vz1AAOAcMAqQHYAdkEoQSrBKyAbIEBEIEBFIEB
+E9IADgA+AGwEr4BroF8QD19OU1NlcnZpY2VzTWVuddoADgHDAcQEcAHFBHEBxgHHAcgBsAHNAKABzwCQ
+AKAAkAHRAdIB0wLXgFyAFgmAFgmAV4BZgJ/aAA4BwwHEBHABxQRxAcYBxwHIAbABzQCgAc8AkACgAJAB
+0QHSAdMC14BcgBYJgBYJgFeAWYCfXF9OU0FwcGxlTWVuddoADgSHAcMBxAHFAcYBxwHIAbAByQHNA0kD
+TAHPAKAB0QHSAdMEIgTMgFyAw4EBGYAWgFeAWYEBCIEBGlRGaWxl0gAOAD4AbATQgGuhA0CAwtoADgSH
+AcMBxAHFAcYBxwHIAbAByQHNAmYCaQHPAKAB0QHSAdMEIgTagFyAeYEBHYAWgFeAWYEBCIEBHlRFZGl0
+0gAOAD4AbATegGutAl4DDgRMAwACdALBA8YDnQQuBDIEMQRHBF6AeICygQEggK2Af4CZgO6A4IEBIYEB
+IoEBLYEBMYEBNdoADgHDAcQEcAHFBHEBxgHHAcgBsAHNAKABzwCQAKAAkAHRAdIB0wJmgFyAFgmAFgmA
+V4BZgHnaAA4BwwHEBHABxQRxAcYBxwHIAbABzQCgAc8AkACgAJAB0QHSAdMCZoBcgBYJgBYJgFeAWYB5
+2gAOBIcBwwHEAcUBxgHHAcgBsAHJAc0CigKNAc8AoAHRAdIB0wJmBQaAXICFgQEjgBaAV4BZgHmBASRU
+RmluZNIADgA+AGwFCoBrpQKCBDcEUwQ4A4+AhIEBJoEBKIEBKoDb2QAOAcMBxAHFAcYBxwHIAbABygHN
+BRIBzwMsAdEB0gHTAooAVoBcgQEngL2AV4BZgIVZRmluZCBOZXh02QAOAcMBxAHFAcYBxwHIAbABygHN
+BRoDEwOBAdEB0gHTAooAwoBcgQEpgNaAV4BZgIVdRmluZCBQcmV2aW91c9kADgHDAcQBxQHGAccByAGw
+AcoBzQUiAc8FIwHRAdIB0wKKBSeAXIEBK4EBLIBXgFmAhRAHXxAWVXNlIFNlbGVjdGlvbiBmb3IgRmlu
+ZFFl2gAOBIcBwwHEAcUBxgHHAcgBsAHJAc0CnAKfAc8AoAHRAdIB0wJmBTKAXICLgQEugBaAV4BZgHmB
+AS9fEBRTcGVsbGluZyBhbmQgR3JhbW1hctIADgA+AGwFNoBrpAKlArMClAPTgI+AlICKgPLaAA4EhwHD
+AcQBxQHGAccByAGwAckBzQMvAzIBzwCgAdEB0gHTAmYFQ4BcgLuBATKAFoBXgFmAeYEBM11TdWJzdGl0
+dXRpb25z0gAOAD4AbAVHgGujA6sDJwN8gOWAuoDU2gAOBIcBwwHEAcUBxgHHAcgBsAHJAc0C9wL6Ac8A
+oAHRAdIB0wJmBVOAXICpgQEFgBaAV4BZgHmBATZbX05TTWFpbk1lbnXSAA4AMgAzADSABIAD0gA3ADgF
+WQIhogIhADvSAA4APgQXBVyBATmvEFACigBOBF4AdQBOAB8AcwB4AtcAHwKcApwAdgBOAE4EIgL3A0kC
+ZgBwAb8CZgQ0BCgCZgJmAHIC1wLXAmYCigKKAE4AdwQxAHECZgB0Ab8EIgKKAE4CZgRHAtcC1wJmAE4A
+TgLXAy8CZgAfAaQCZgMvAB8C1wKKAE4EMgLXApwDLwJmAtcEIgL3BEACZgBvAb8BvwG/AmYAQQRbAE4A
+TgKcgIWADIEBNYA8gAyAAoA1gFGAn4ACgIuAi4BCgAyADIEBCICpgMOAeYAkgFWAeYEBD4EBC4B5gHmA
+MoCfgJ+AeYCFgIWADIBNgQEtgC2AeYA5gFWBAQiAhYAMgHmBATGAn4CfgHmADIAMgJ+Au4B5gAKAU4B5
+gLuAAoCfgIWADIEBIoCfgIuAu4B5gJ+BAQiAqYEBGIB5gBOAVYBVgFWAeYAHgQEcgAyADICL0gAOAD4E
+FwWvgQE5rxBRAHMBRwL3ArMDjwBBASUBpAQhBCID0wKUAWoAbgByBCgDQANhAl4A2wG5BC4ELwLXBDEE
+MgEYBDQENQPGBDcEOAAfAHYA/AGSAsEBNgKcAfEEQAKCAHUCdABxA1MAbwLPBEcDLwLiA3wD4wRMAb8D
+AAOrBFEDuAB3BFMCigRWAqUDJwNJBFsDbwMOAI4EXgLvAe8B8gHwA50AeABOAHACZgB0gDWAPoCpgJSA
+24AHgDeAU4EBB4EBCIDygIqARIAPgDKBAQuAwoDMgHiAJoBUgQEhgQESgJ+BAS2BASKANIEBD4EBFYDu
+gQEmgQEqgAKAQoAvgE+AmYA7gIuAZYEBGICEgDyAf4AtgMiAE4CegQExgLuApIDUgPaBASCAVYCtgOWB
+ATiA6YBNgQEogIWBARaAj4C6gMOBARyA0ICygBWBATWAqIBfgGiAYoDggFGADIAkgHmAOdIADgA+BBcG
+A4EBOa8QUQYEBgUGBgYHBggGCQYKBgsGDAYNBg4GDwYQBhEGEgYTBhQGFQYWBhcGGAYZBhoGGwYcBh0G
+HgYfBiAGIQYiBiMGJAYlBiYGJwYoBikGKgYrBiwGLQYuBi8GMAYxBjIGMwY0BjUGNgY3BjgGOQY6BjsG
+PAY9Bj4GPwZABkEGQgZDBkQGRQZGBkcGSAZJBkoGSwZMBk0GTgZPBlAGUQZSBlMGVIEBPYEBPoEBP4EB
+QIEBQYEBQoEBQ4EBRIEBRYEBRoEBR4EBSIEBSYEBSoEBS4EBTIEBTYEBToEBT4EBUIEBUYEBUoEBU4EB
+VIEBVYEBVoEBV4EBWIEBWYEBWoEBW4EBXIEBXYEBXoEBX4EBYIEBYYEBYoEBY4EBZIEBZYEBZoEBZ4EB
+aIEBaYEBaoEBa4EBbIEBbYEBboEBb4EBcIEBcYEBcoEBc4EBdIEBdYEBdoEBd4EBeIEBeYEBeoEBe4EB
+fIEBfYEBfoEBf4EBgIEBgYEBgoEBg4EBhIEBhYEBhoEBh4EBiIEBiYEBioEBi4EBjIEBjV8QF1N0YXRp
+YyBUZXh0IChZIG9mZnNldDopXxASQnV0dG9uIENlbGwgKFNhdmUpXU1lbnUgKFNwZWVjaClfEBpNZW51
+IEl0ZW0gKENoZWNrIFNwZWxsaW5nKV8QHU1lbnUgSXRlbSAoSnVtcCB0byBTZWxlY3Rpb24pXxAPV2lu
+ZG93IChXaW5kb3cpXxAbVGV4dCBGaWVsZCBDZWxsIChZIG9mZnNldDopXxAcUG9wIFVwIEJ1dHRvbiBD
+ZWxsIChMYXRpbi0xKVlTZXBhcmF0b3JYTWFpbk1lbnVfECdNZW51IEl0ZW0gKENoZWNrIEdyYW1tYXIg
+V2l0aCBTcGVsbGluZylfECdNZW51IEl0ZW0gKENoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZylfEBpC
+dXR0b24gQ2VsbCAoQ2hlY2tlcmJvYXJkKV8QEUZvbnQgVGV4dHVyZSBWaWV3V1N0ZXBwZXJfECJNZW51
+IEl0ZW0gKEZvbnQgVGV4dHVyZSBHZW5lcmF0b3IpUThfEBpNZW51IEl0ZW0gKFN0YXJ0IFNwZWFraW5n
+KV8QEE1lbnUgSXRlbSAoVW5kbylfEBtUZXh0IEZpZWxkIENlbGwgKFggb2Zmc2V0OilfEBNNZW51IEl0
+ZW0gKExhdGluLTEpW1NlcGFyYXRvci0zXxAPTWVudSAoU2VydmljZXMpXxAdTWVudSAoRm9udCBUZXh0
+dXJlIEdlbmVyYXRvcilfECBNZW51IEl0ZW0gKFNwZWxsaW5nIGFuZCBHcmFtbWFyKV8QEE1lbnUgSXRl
+bSAoRmluZClcU3RlcHBlciBDZWxsXxAUTWVudSBJdGVtIChTZXJ2aWNlcylbU2VwYXJhdG9yLTFfEBJN
+ZW51IEl0ZW0gKERlbGV0ZSlfEBVNZW51IEl0ZW0gKEZpbmQgTmV4dClfECJNZW51IEl0ZW0gKFVzZSBT
+ZWxlY3Rpb24gZm9yIEZpbmQpXEZpbGUncyBPd25lcl8QGENoZWNrIEJveCAoQ2hlY2tlcmJvYXJkKV5T
+dGVwcGVyIENlbGwtMW8QcABUAGUAeAB0ACAARgBpAGUAbABkACAAQwBlAGwAbAAgACgASQBtAHAAbwBy
+AHQAYQBuAHQAOgAgAHMAZQB0ACAgHABGAG8AbgB0ACAAcwBtAG8AbwB0AGgAaQBuAGcAIABzAHQAeQBs
+AGUgHQAgAHQAbwAgIBwAUwB0AGEAbgBkAGEAcgBkIB0AIABpAG4AIAB0AGgAZQAgAEEAcABwAGUAYQBy
+AGEAbgBjAGUAIABzAHkAcwB0AGUAbQAgAHAAcgBlAGYAZQByAGUAbgBjAGUAcwAgAHAAYQBuAGUALgAp
+XxARTWVudSBJdGVtIChQYXN0ZSlfEBFUZXh0IEZpZWxkIENlbGwtMV8QG01lbnUgKFNwZWxsaW5nIGFu
+ZCBHcmFtbWFyKV8QEU1lbnUgSXRlbSAoR3JlZWspXxAQTWVudSBJdGVtIChGaWxlKW8QEQBNAGUAbgB1
+ACAASQB0AGUAbQAgACgARgBpAG4AZCAmAClfEBJQdXNoIEJ1dHRvbiAoU2F2ZSlfEBBNZW51IEl0ZW0g
+KENvcHkpWVN0ZXBwZXItMV8QF01lbnUgSXRlbSAoSGlkZSBPdGhlcnMpWlRleHQgRmllbGRfECdNZW51
+IEl0ZW0gKEhpZGUgRm9udCBUZXh0dXJlIEdlbmVyYXRvcilfEBlNZW51IEl0ZW0gKFN1YnN0aXR1dGlv
+bnMpXxAUTWVudSAoU3Vic3RpdHV0aW9ucylfEBRNZW51IEl0ZW0gKFNob3cgQWxsKV8QF01lbnUgSXRl
+bSAoU21hcnQgTGlua3MpXxAfU2hhcmVkIFVzZXIgRGVmYXVsdHMgQ29udHJvbGxlcltTZXBhcmF0b3It
+NF8QEU1lbnUgKE90aGVyVmlld3MpXxAPTWVudSBJdGVtIChDdXQpXxAcTWVudSBJdGVtIChTbWFydCBD
+b3B5L1Bhc3RlKVtBcHBsaWNhdGlvblQxMTExbxBsAFMAdABhAHQAaQBjACAAVABlAHgAdAAgACgASQBt
AHAAbwByAHQAYQBuAHQAOgAgAHMAZQB0ACAgHABGAG8AbgB0ACAAcwBtAG8AbwB0AGgAaQBuAGcAIABz
AHQAeQBsAGUgHQAgAHQAbwAgIBwAUwB0AGEAbgBkAGEAcgBkIB0AIABpAG4AIAB0AGgAZQAgAEEAcABw
-AGUAYQByAGEAbgBjAGUACgBzAHkAcwB0AGUAbQAgAHAAcgBlAGYAZQByAGUAbgBjAGUAcwAgAHAAYQBu
-AGUALgApXxAQTWVudSBJdGVtIChVbmRvKV8QFE1lbnUgKFN1YnN0aXR1dGlvbnMpbxAaAE0AZQBuAHUA
-IABJAHQAZQBtACAAKABTAGgAbwB3ACAAUwBwAGUAbABsAGkAbgBnICYAKVxDb250ZW50IFZpZXdfEBVN
-ZW51IChOZXdBcHBsaWNhdGlvbilRMl8QEU1lbnUgSXRlbSAoUGFzdGUpXxAPV2luZG93IChXaW5kb3cp
-XxAQTWVudSBJdGVtIChDb3B5KVQxMTExUTVZU3RlcHBlci0xXxAaTWVudSBJdGVtIChDaGVjayBTcGVs
-bGluZylfEBtNZW51IChTcGVsbGluZyBhbmQgR3JhbW1hcilfEBZNZW51IEl0ZW0gKFNlbGVjdCBBbGwp
-XxAbVGV4dCBGaWVsZCBDZWxsIChYIG9mZnNldDopXxAeTWVudSBJdGVtIChCcmluZyBBbGwgdG8gRnJv
-bnQpXxAVTWVudSBJdGVtIChGaW5kIE5leHQpXxASTWVudSAoT3BlbiBSZWNlbnQpXxAfTWVudSBJdGVt
-IChIaWRlIE5ld0FwcGxpY2F0aW9uKV8QEk1lbnUgSXRlbSAoRm9ybWF0KV8QGU1lbnUgSXRlbSAoU3Vi
-c3RpdHV0aW9ucylbU2VwYXJhdG9yLTFfECBNZW51IEl0ZW0gKFNwZWxsaW5nIGFuZCBHcmFtbWFyKV8Q
-EE1lbnUgSXRlbSAoWm9vbSlROV1NZW51IChXaW5kb3cpXxAZTWVudSBJdGVtIChGaW5kIFByZXZpb3Vz
-KW8QEQBNAGUAbgB1ACAASQB0AGUAbQAgACgARgBpAG4AZCAmAClfEBdTdGF0aWMgVGV4dCAoWCBvZmZz
-ZXQ6KVMxMjFfEBRNZW51IEl0ZW0gKFNlcnZpY2VzKVE4XxAgTWVudSBJdGVtIChBYm91dCBOZXdBcHBs
-aWNhdGlvbilfEBdNZW51IEl0ZW0gKE9wZW4gUmVjZW50KV8QGk1lbnUgSXRlbSAoTmV3QXBwbGljYXRp
-b24pXFRleHQgRmllbGQtMVE3XxASTWVudSBJdGVtIChTcGVlY2gpXxAdTWVudSBJdGVtIChKdW1wIHRv
-IFNlbGVjdGlvbilYTWFpbk1lbnVbTWVudSAoRWRpdClSMTBdTWVudSAoRm9ybWF0KV8QGU1lbnUgSXRl
-bSAoU3RvcCBTcGVha2luZylbTWVudSAoRmluZClfEBdTdGF0aWMgVGV4dCAoWSBvZmZzZXQ6KVtTZXBh
-cmF0b3ItNV8QD01lbnUgSXRlbSAoQ3V0KV8QHE1lbnUgSXRlbSAoU21hcnQgQ29weS9QYXN0ZSlbU2Vw
-YXJhdG9yLTJfEBBNZW51IEl0ZW0gKFJlZG8pXFN0ZXBwZXIgQ2VsbF8QF01lbnUgSXRlbSAoSGlkZSBP
-dGhlcnMpXxAPTWVudSAoU2VydmljZXMpXxAiTWVudSBJdGVtIChVc2UgU2VsZWN0aW9uIGZvciBGaW5k
-KV8QFE1lbnUgSXRlbSAoU2hvdyBBbGwpXxASTWVudSBJdGVtIChXaW5kb3cpW1NlcGFyYXRvci02UTZf
-EBZNZW51IEl0ZW0gKFNob3cgRm9udHMpXxAaQnV0dG9uIENlbGwgKENoZWNrZXJib2FyZClfEBJQdXNo
-IEJ1dHRvbiAoU2F2ZSlfEBBNZW51IEl0ZW0gKEVkaXQpXxAPVGV4dCBGaWVsZCBDZWxsbxBwAFQAZQB4
-AHQAIABGAGkAZQBsAGQAIABDAGUAbABsACAAKABJAG0AcABvAHIAdABhAG4AdAA6ACAAcwBlAHQAICAc
-AEYAbwBuAHQAIABzAG0AbwBvAHQAaABpAG4AZwAgAHMAdAB5AGwAZSAdACAAdABvACAgHABTAHQAYQBu
-AGQAYQByAGQgHQAgAGkAbgAgAHQAaABlACAAQQBwAHAAZQBhAHIAYQBuAGMAZQAKAHMAeQBzAHQAZQBt
-ACAAcAByAGUAZgBlAHIAZQBuAGMAZQBzACAAcABhAG4AZQAuAClTMi0xXxAQTWVudSBJdGVtIChGaWxl
-KVEzW1NlcGFyYXRvci0zUTFfEBhNZW51IEl0ZW0gKFNob3cgVG9vbGJhcilbQXBwbGljYXRpb25TMS0x
-XxAfTWVudSBJdGVtIChOZXdBcHBsaWNhdGlvbiBIZWxwKV8QFE1lbnUgSXRlbSAoTWluaW1pemUpXlN0
-ZXBwZXIgQ2VsbC0xXxAWTWVudSBJdGVtIChDbGVhciBNZW51KV8QF01lbnUgSXRlbSAoU2hvdyBDb2xv
-cnMpXxARVGV4dCBGaWVsZCBDZWxsLTFfEBdNZW51IEl0ZW0gKFNtYXJ0IExpbmtzKW8QEQBNAGUAbgB1
-ACAASQB0AGUAbQAgACgATwBwAGUAbiAmAClbU2VwYXJhdG9yLTRvEB4ATQBlAG4AdQAgAEkAdABlAG0A
-IAAoAEMAdQBzAHQAbwBtAGkAegBlACAAVABvAG8AbABiAGEAciAmACnSAA4APgSOCCWBAYyg0gAOAD4E
-jggogQGMoNIADgA+BI4IK4EBjK8QlQHBAHIB0ALBBJICXQGsAdYCjwSVAG0DbQBvAGkEmgFTA6sBuwHC
-BE8DdwHMA1gBHwAfAcMDhAG5AdEAcAQWAhUCmABMAe4D8ALPAi4AQQKmAnUCUwBsAc0CfQPGANUC+QGv
-AdUB0gS0AdcBtgMvAbIDkQS3BLgB0wS5BLoDGgPaAwEBywS+A54BrgGtAbABvwBrAc8EwQTCAmcCIQTF
-BMYBygBqBMgEyQHHAbcCQQHEBMsCNwK0AcADQQKHAdQCSQTRBDEDCwBuAbwBvQHFBNUECAGxAcgBswG1
-BNcE2AHdARIEPwHOAckE3ATdAt0E3wF2AHEE4gEwAcYBugFBBOUE5gNLBOgE6QPoBOsDJwP6A7gDZQD2
-AdgDOQCJAb4CCwLrBPUEJAG0AbiAy4BFgQEPgJ+BATmAfIBYgQEvgI2BAUaAMYDWgDiADoEBU4BBgOuA
-rYDQgQEigNuA+oDRgDaAAoDUgN+Ao4EBFIA7gQEQgGaAkYALgFqBAQGApIBvgAeAloCGgHuALID/gIeA
-9IAlgLOAboEBLIEBGIEBSoEBMoCVgMKAgIDjgQFrgQFtgQEdgQFegQFzgL2A+4C0gPiBAUyA54BqgGSA
-dIDAgCOBAQqBAVuBAV+AgYBrgQE8gQF4gPOAEoEBQoEBeoDmgJqAdYDagQFUgHCAm4DFgMeAjIEBIYB2
-gQGFgQEZgLiANICygLeA3oEBZYEBC4B6gOqAhYCQgQFOgQFigFmAM4EBHoEBBYDugQGGgQGEgKmBAXGA
-R4A/gQGAgDqA4oCogD2BAUOBAX6AzIEBWoEBiIEBAIEBi4DBgQEGgO+A1YAugQE1gMaAFIC8gGWAroEB
-doEBFYCLgJ7SAA4APgSOCMOBAYyvEJUIxAjFCMYIxwjICMkIygjLCMwIzQjOCM8I0AjRCNII0wjUCNUI
-1gjXCNgI2QjaCNsI3AjdCN4I3wjgCOEI4gjjCOQI5QjmCOcI6AjpCOoI6wjsCO0I7gjvCPAI8QjyCPMI
-9Aj1CPYI9wj4CPkI+gj7CPwI/Qj+CP8JAAkBCQIJAwkECQUJBgkHCQgJCQkKCQsJDAkNCQ4JDwkQCREJ
-EgkTCRQJFQkWCRcJGAkZCRoJGwkcCR0JHgkfCSAJIQkiCSMJJAklCSYJJwkoCSkJKgkrCSwJLQkuCS8J
-MAkxCTIJMwk0CTUJNgk3CTgJOQk6CTsJPAk9CT4JPwlACUEJQglDCUQJRQlGCUcJSAlJCUoJSwlMCU0J
-TglPCVAJUQlSCVMJVAlVCVYJVwlYgQH8gQH9gQH+gQH/gQIAgQIBgQICgQIDgQIEgQIFgQIGgQIHgQII
-gQIJgQIKgQILgQIMgQINgQIOgQIPgQIQgQIRgQISgQITgQIUgQIVgQIWgQIXgQIYgQIZgQIagQIbgQIc
-gQIdgQIegQIfgQIggQIhgQIigQIjgQIkgQIlgQImgQIngQIogQIpgQIqgQIrgQIsgQItgQIugQIvgQIw
-gQIxgQIygQIzgQI0gQI1gQI2gQI3gQI4gQI5gQI6gQI7gQI8gQI9gQI+gQI/gQJAgQJBgQJCgQJDgQJE
-gQJFgQJGgQJHgQJIgQJJgQJKgQJLgQJMgQJNgQJOgQJPgQJQgQJRgQJSgQJTgQJUgQJVgQJWgQJXgQJY
-gQJZgQJagQJbgQJcgQJdgQJegQJfgQJggQJhgQJigQJjgQJkgQJlgQJmgQJngQJogQJpgQJqgQJrgQJs
-gQJtgQJugQJvgQJwgQJxgQJygQJzgQJ0gQJ1gQJ2gQJ3gQJ4gQJ5gQJ6gQJ7gQJ8gQJ9gQJ+gQJ/gQKA
-gQKBgQKCgQKDgQKEgQKFgQKGgQKHgQKIgQKJgQKKgQKLgQKMgQKNgQKOgQKPgQKQEQFqEQGgEN8RAV8Q
-lRBREQFwEQGIENQQ2hEBixEBKBEBjREBdxEBJxEBnhEBWhEBdhDrEQGGEMQRAXUQyhEBjxEBpBEBbhDb
-EOIRAW0RAZsQzxEBXRDMEQF0EDkQahDLEMURAXMQiBDJEE0RAXwRAWgQxhEBexAFEOARAZQQ5BDQEQGK
-EQFxEH0RAWsQhhEBXBEBKxEBchCPENgQ7xBSEBgRAZ8Q1RDREI4RAWUQ9RB/EQF6EOcQgxBQEDoQfBA4
-EOgRAXgQTxDTEPERAWwQ0hDpEB0QzRBwEQFpEQEsEMMRAZIQ3BDWEMcRAV4RAYwQJxEBYxDeEJAQ1xBX
-EQFbEOEQ5hDdEIIQkREBkBCWEMEQJRATEM4QThEBWBEBoREBnRDZEQGOEQFvEFYRAZwQShBTEEsQ7BBn
-EG8T//////////0QfhBJEBcRASkRAX0RAaMRAVkRAXkQ8BEBYhBIEFwRASoQ4xEBZNIADgA+AGcJ7oBQ
-oNIADgA+BI4J8YEBjKDSAA4APgSOCfSBAYyg0gA3ADgJ9gn3ogn3ADteTlNJQk9iamVjdERhdGEACAAZ
-ACIAJwAxADoAPwBEAFIAVABmBZQFmgXlBewF8wYBBhMGLwY9BkkGVQZjBm4GfAaYBqYGuQbLBuUG7wb8
-Bv4HAQcEBwcHCgcMBw8HEQcUBxcHGgcdBx8HIQckBycHKgctBzYHQgdEB0YHVAddB2YHcQd2B4UHjgeh
-B6oHtQe3B7oHvAflB/IH/wgNCBcIJQgyCEQIWAhkCGYIaAhqCGwIcQhzCHUIdwh5CHsIlQicCKUIwgjU
-CN8I6Aj0CQAJAgkECQYJCQkLCQ0JDwkYCRoJLwkxCTMJNQk3CTkJOwk9CT8JQQlDCWAJaAlqCWwJbglx
-CXMJdQl3CZAJogmrCbQJwQnICdQJ9Qn8CgYKCAoKCgwKDgoPChEKEwoqCk8KWwpvCnoKhAqSCp8Kswq/
-CsgKygrMCs4K0ArSCtcK2AraCtsK7ArzCvoLAwsFCw4LEAsTCyALKQsuCzULSgtSC18Lawt5C3sLfQt/
-C4ELgwuKC6ALrQu1C7cLuQu8C8ULygvfC+EL4wvlC+cL8Qv+DAAMAwwMDBUMJww0DD0MSAxUDF4MfwyB
-DIMMhQyHDIgMigyMDKMMxAzJDMsMzQzPDNEM0wzVDN8M9Az2DPgM+gz8DQkNFg0YDSQNOQ07DT0NPw1B
-DVQNdQ13DXkNew19DX4NgA2CDZoNuw3HDdIN3Q3qDe8N8Q36DgMODA4ODhAOEQ4aDiMOMQ46DkUOTw5w
-DnIOdA52DngOeQ57Dn0OlQ62DrgOug67DtwO3g7gDuIO5A7lDucO6Q8BDyIPJA8mDygPKg8sDy4POA9Z
-D1sPXQ9fD2EPYg9kD2YPfg+jD6UPpw+pD6sPrQ+uD7AP0Q/TD9UP1w/ZD9oP3A/eD/cQGBAaEBwQHhAg
-ECIQJxApEOgRCRELEQ0RDxERERIRFBEWES4RXxF1EYoRmRGrEb0RyxHQEdIR1BHWEdgR2hHcEd4R4BHi
-EecR8BH1Ef4SBxIUEh0SKBIxElISVBJWElgSWhJbEl0SXxJ4ErESvxLSEtsS3RLfEuES4xLlEucS6RLr
-EvAS/RMKExkTGxMdEx8TJxMwEzkTPhNRE1oTZhNoE2oTcxN4E44TlxOeE60TtRPAE8kT0BPpE/IT9xQK
-FBMUGhQnFC0UNhQ4FJUUlxSZFJsUnRSfFKEUoxSlFKcUqRSrFK0UrxSxFLMUtRS3FLkUuxS9FL8UwRTD
-FMUUxxTJFMsUzRTPFNEU0xTVFNcU2RTcFN8U4hTlFOgU6xTuFPEU9BT3FPoVBxUQFRgVGhUcFR4VPxVH
-FVsVZhV0FX4VixWSFZQVlhWbFZ0VohWkFaYVqBW5FcUVyBXLFc4V0RXdFd8V7BXuFfAV8hYEFhEWExYV
-FhcWKhYzFjgWQxZcFmUWbBaEFpMWoBaiFqQWphbLFtEW0xbVFtoW3BbeFuAW4hbvFvIW9Rb4FwQXBhcm
-FzcXRRdHF0kXSxdNF2oXbBduF3AXchd0F3YXjRetF7oXvBe+F8AX4RfjF+UX6hfsF+4X8BfyF/8YAhgF
-GAgYDRgPGBUYIhgkGCYYKBhJGEsYTRhPGFEYUxhVGGIYZRhoGGsYfxiBGKEYrhiwGLIYtBjZGOMY5Rjn
-GOkY6xjtGO8Y8Rj+GQEZBBkHGRUZFxkmGTMZNRk3GTkZWhlcGV4ZYBliGWQZZhl3GXkZixmYGZoZnBme
-Gb8ZwRnDGcUZxxnJGcsZ2BnbGd4Z4RnwGfIaARoOGhAaEhoUGjUaNxo5GjsaPRo/GkEaThpRGlQaVxpl
-GnMagBqCGoQahhqnGqkaqxqtGq8asRqzGtAa0hrkGvEa8xr1GvcbGBsaGxwbHhsgGyIbJBs6GzwbRxtU
-G1YbWBtaG3cbeRt7G30bfxuBG4MblRuuG7sbvRu/G8Eb5hvoG+ob7BvuG/Ab8hv/HAEcJRwyHDQcNhw4
-HFkcWxxdHF8cYRxjHGUcaxxtHHQcgRyDHIUchxyoHKocrByuHLAcshy0HMEcwxzKHNcc2RzbHN0c/h0A
-HQIdBB0GHQgdCh0VHRcdJR0yHTQdNh04HVkdWx1dHV8dYR1jHWUddh15HXsdfh2BHZYdqB21HbcduR27
-HeAd4h3kHeYd6B3qHewd7h4BHgMeHh4rHi0eLx4xHlIeVB5WHlgeWh5cHl4eYx5wHn0efx6BHoMepB6m
-Hqgeqh6sHq4esB7BHsQexx7KHs0e2B7wHv0e/x8BHwMfJB8mHygfKh8sHy4fMB89H0AfQx9GH1IfVB9s
-H3kfex99H38foB+iH6Qfph+oH6ofrB+uH7wfyR/LH80fzx/wH/If9B/2H/gf+h/8IAMgCyAYIBogHCAe
-ID8gQSBDIEUgRyBJIEsgWCBbIF4gYSBuIHAghiCTIJUglyCZILogvCC+IMAgwiDEIMYg1SDkIPEg8yD1
-IPchGCEaIRwhHiEgISIhJCFCIWMhcCFyIXQhdiGXIZkhmyGdIZ8hoSGjIbkhvyHMIc4h0CHSIfch+SH7
-If0h/yIBIgMiDiIoIjUiNyI5IjsiXCJeImAiYiJkImYiaCKGIp8irCKuIrAisiLTItUi1yLZItsi3SLf
-Iugi6iMAIw0jDyMRIxMjNCM2IzgjOiM8Iz4jQCNLI00jWCNpI2sjbSNvI3EjfCOJI4sjjSOPI7AjsiO0
-I7YjuCO6I7wjwCPCI88j3CPeI+Ej5CQFJAckCiQNJA8kESQUJCEkJCQnJCokQCRCJEwkWSRbJF4kYSSC
-JIQkhySKJIwkjiSQJJYkmCSmJLMktSS4JLsk3CTeJOEk5CTmJOgk6iTvJPEk9yUEJQYlCSUMJS0lLyUy
-JTUlNyU5JTslQCVCJUglVSVXJVolXSV+JYAlgyWFJYcliSWLJbIl1CXhJeMl5iXpJgomDCYPJhImFCYW
-JhgmHCYeJiMmMCYyJjUmOCZZJlsmXiZgJmImZCZmJm8miCalJq8muSbYJtsm3ibhJuQm5ibpJvYnBScY
-JxsnHicfJygnKicxJzQnNyc6J0InSideJ2cnbieJJ5Ynrie0J8MnzCfTJ+soCCgLKA4oESgUKBYoGSg2
-KDkoPCg/KEIoRChHKF8obiiLKI4okSiUKJcomSicKLkovCi/KMIoxSjHKMoo7CkHKRApEynkKeYp6Cnr
-Ke0p7ynyKfQp9in4Kfop/Sn/KgEqBCoGKggqCioMKg4qESoTKhUqFyoZKhwqHiogKiIqJComKigqKios
-Ki4qMCoyKjUqNyo5KjwqPypCKkUqRypJKksqTipQKlIqVSpYKloqXCpfKmIqZCpnKmoqbCpvKnEqcyp1
-KncqeSp8Kn8qgSqDKoYqiSqMKo8qkSqTKpYqmSqcKp4qoSqjKqUqqCqqKqwqryqyKrQqtyq6Kr0qwCrC
-KsUqxyrJKssqzSrPKtEq0yrWKtkrAisQKx0rHyshKyIrJCslKycrKSsrKzArOSs7K1IrVCtWK1krXCtf
-K2ErYytlK2graitsK5UrnyuoK6orrCuvK7Ersyu1K7cruivGK9Ur3ivgK+Mr5Sv+LAcsDCw1LDcsOSw6
-LDwsPSw/LEEsQyxsLG4scCxxLHMsdCx2LHgseiyBLIosjCyRLJMslSy+LMAswizFLMcsySzLLM0s0CzV
-LN4s4CzrLO0s8CzzLPYs+C0dLR8tIi0kLSYtKC0qLTQtWS1bLV4tYC1iLWQtZi10LZktmy2eLaEtoy2l
-LactwC3CLcct0C3SLdct2S3cLgUuBy4JLgwuDi4QLhIuFS4YLikuLC4vLjIuNS5DLkwuTi5VLlcuWS5b
-Lmoucy51Lowuji6RLpQuly6aLp0uny6hLqQupy6pLtIu1C7WLtcu2S7aLtwu3i7gLwEvAy8GLwkvCy8N
-Lw8vKC8qL1MvVS9XL1gvWi9bL10vXy9hL4ovjC+PL5IvlC+WL5gvmi+dL6Yvty+6L70vwC/DL8wvzi/P
-L+EwCjAMMA4wDzARMBIwFDAWMBgwJTAqMDMwNTA4MDswUjBbMF0wZjBoMGowbDBuMJcwmTCbMJ4woDCi
-MKQwpjCpMNIw1DDWMNkw2zDdMN8w4jDlMOww9TD3MPww/zEBMSIxJDEnMSkxKzEtMS8xOjFjMWUxZzFq
-MWwxbjFwMXIxdTF+MYAxiTGLMY0xkDGSMbsxvTG/McAxwjHDMcUxxzHJMdgyATIDMgUyCDIKMgwyDjIR
-MhQyPTI/MkEyRDJGMkgySjJMMk8yWTJiMmQyczJ2MnkyfDJ/MoIyhTKIMrEyszK1MrgyujK8Mr4ywTLE
-Mu0y7zLxMvQy9jL4Mvoy/TMAMwUzDjMQMyszLjMxMzQzNzM5MzszPTM/M0IzRTNIM0szTjN3M3kzezN8
-M34zfzOBM4MzhTOuM7AzsjOzM7UztjO4M7ozvDPlM+cz6TPrM+0z7zPxM/Qz9zQgNCI0JTQoNCo0LDQu
-NDE0NDRANEk0SzRNNFY0WzRkNGc1ODU6NTw1PjVBNUQ1RjVINUs1TTVPNVI1VDVWNVg1WjVcNV41YDVi
-NWQ1ZzVpNWs1bjVxNXM1dTV3NXk1ezV9NX81gjWENYY1iDWKNY01jzWRNZQ1ljWYNZo1nDWfNaE1ozWl
-Nac1qTWrNa01rzWyNbQ1tjW4Nbo1vDW/NcE1xDXGNck1yzXNNc810TXTNdU11zXaNdw13jXgNeM15TXn
-Nek16zXtNfA18jX0NfY1+TX7Nf02ADYDNgU2BzYJNgs2DTYPNhE2EzYVNhc2GTYbNiQ2Jzb6Nvw2/jcB
-NwM3BTcINwo3DDcONxA3EzcVNxc3GjccNx43IDciNyQ3JjcpNys3LTcvNzE3NDc2Nzg3Ojc8Nz43QDdC
-N0Q3RjdIN0o3TTdPN1E3VDdXN1o3XTdfN2E3YzdmN2g3ajdtN3A3cjd0N3c3ejd8N383gjeEN4c3iTeL
-N403jzeRN5M3ljeZN5s3njehN6M3pTeoN6s3rjexN7Q3tje5N7s3vTfAN8I3xDfHN8o3zDfPN9I31DfX
-N9o33TffN+E34zflN+c36TfrN+438Tf6N/040DjTONY42TjcON844jjlOOg46zjuOPE49Dj3OPo4/TkA
-OQM5BjkJOQw5DzkSORU5GDkbOR45ITkkOSc5KjktOTA5Mzk2OTk5PDk/OUI5RTlIOUs5TjlROVQ5Vzla
-OV05YDljOWY5aTlsOW85cjl1OXg5ezl+OYE5hDmHOYo5jTmQOZM5ljmZOZw5nzmiOaU5qDmrOa45sTm0
-Obc5ujm9OcA5wznGOck5zDnPOdI51TnYOds53jnhOeQ55znqOe058DnzOfY5+Tn8Of86AjoFOgg6Izo+
-Okg6VDpiOnU6fTqJOpQ6qDq7OtA6+jscOzk7TjtsO3k7ozx+PJE8qDzfPOw9BD0GPRo9LD0/PUQ9Rj1Q
-PW09iz2kPcI94z37PhA+Mj5HPmM+bz6SPqU+pz61PtE+9j8QPxQ/Kz8tP1A/aj+HP5Q/lj+rP8s/1D/g
-P+M/8UANQBlAM0A/QFFAcEB8QI9AnEC2QMhA7UEEQRlBJUEnQUBBXUFyQYVBl0J6Qn5CkUKTQp9CoUK8
-QshCzELuQwVDFEMtQ0dDW0N1Q5pDpkPlQ+5D8UPyQ/tD/kP/RAhEC0U4RTpFPEU/RUFFREVGRUhFS0VN
-RVBFUkVURVZFWEVbRV1FX0VhRWNFZkVoRWpFbEVuRXBFckV0RXZFeUV7RX5FgEWCRYRFhkWJRYtFjUWP
-RZFFk0WVRZdFmUWbRZ1Fn0WhRaNFpkWpRaxFr0WxRbNFtUW3RbpFvUXARcNFxkXIRcpFzEXORdFF00XV
-RddF2UXbRd1F4EXjReZF6EXqRe1F8EXyRfRF90X6RfxF/kYARgJGBUYHRglGC0YNRg9GEkYURhdGGkYc
-Rh5GIEYiRiRGJ0YqRixGLkYwRjJGNUY4RjpGPEY/RkJGREZHRkpGTEZPRlFGU0ZWRlhGWkZcRl5GYUZk
-RmZGaUZsRm9GckZ0RndGeUZ7Rn1GgEaCRoRGhkaIRopGjUaQRpJGlEadRqBHzUfQR9NH1kfZR9xH30fi
-R+VH6EfrR+5H8Uf0R/dH+kf9SABIA0gGSAlIDEgPSBJIFUgYSBtIHkghSCRIJ0gqSC1IMEgzSDZIOUg8
-SD9IQkhFSEhIS0hOSFFIVEhXSFpIXUhgSGNIZkhpSGxIb0hySHVIeEh7SH5IgUiESIdIikiNSJBIk0iW
-SJlInEifSKJIpUioSKtIrkixSLRIt0i6SL1IwEjDSMZIyUjMSM9I0kjVSNhI20jeSOFI5EjnSOpI7Ujw
-SPNI9kj5SPxI/0kCSQVJCEkLSQ5JEUkUSRdJGkkdSSBJI0kmSSlJLEkvSTJJNUk4STtJPklBSURJR0lK
-SU1JUElTSVZJWUlcSV9JYkllSWhJa0luSXFJdEl3SXpJfUmASYNJhkmJSYxJj0mSSZRJl0mZSZtJnkmh
-SaNJpUmoSatJrkmxSbRJt0m6Sb1Jv0nCScRJx0nJScxJz0nSSdRJ1knZSdxJ3knhSeNJ5knoSepJ7Enu
-SfFJ80n1SfdJ+kn9Sf9KAkoESgZKCUoLSg1KEEoTShVKGEoaSh1KIEojSiVKJ0opSitKLUowSjJKNEo2
-SjlKO0o9SkBKQkpESkZKSEpKSkxKTkpRSlNKVUpXSlpKXEpeSmBKYkpkSmdKakpsSm9KcUpzSnVKeEp7
-Sn1KgEqCSoRKhkqISotKjUqPSpFKk0qVSphKmkqcSp5KoEqiSqRKp0qqSq1Kr0qySrVKt0q6SrxKvkrA
-SsJKxErGSs9K0UrTStVK2ErbSt5K4UrkSuZK6UrrSu1K8ErySvVK/ksASwFLCksNSw5LF0saSxtLJEsp
-AAAAAAAAAgIAAAAAAAAJ+AAAAAAAAAAAAAAAAAAASzg
+AGUAYQByAGEAbgBjAGUAIABzAHkAcwB0AGUAbQAgAHAAcgBlAGYAZQByAGUAbgBjAGUAcwAgAHAAYQBu
+AGUALgApXxAZTWVudSBJdGVtIChGaW5kIFByZXZpb3VzKVtNZW51IChGaW5kKVtTZXBhcmF0b3ItMm8Q
+GgBNAGUAbgB1ACAASQB0AGUAbQAgACgAUwBoAG8AdwAgAFMAcABlAGwAbABpAG4AZyAmAClfEBhNZW51
+IEl0ZW0gKFNtYXJ0IFF1b3RlcylbTWVudSAoRmlsZSlfEBBNZW51IEl0ZW0gKEVkaXQpXxAoTWVudSBJ
+dGVtIChBYm91dCBGb250IFRleHR1cmUgR2VuZXJhdG9yKV8QEE1lbnUgSXRlbSAoUmVkbylfEA9UZXh0
+IEZpZWxkIENlbGxfEBJNZW51IEl0ZW0gKFNwZWVjaClfEBlNZW51IEl0ZW0gKFN0b3AgU3BlYWtpbmcp
+XxATTWVudSBJdGVtIChMYXRpbi0yKV8QE01lbnUgSXRlbSAoVHVya2lzaClfEBRNZW51IEl0ZW0gKEN5
+cmlsbGljKV8QFk1lbnUgSXRlbSAoU2VsZWN0IEFsbClfEBZQb3B1cCBCdXR0b24gKExhdGluLTEpXENv
+bnRlbnQgVmlld18QF1N0YXRpYyBUZXh0IChYIG9mZnNldDopW01lbnUgKEVkaXQpXFRleHQgRmllbGQt
+MdIADgA+BBcGqIEBOaDSAA4APgQXBquBATmg0gAOAD4EFwaugQE5rxBxAvcBJQJIApQBagBuAHIDQAJE
+AbkCVgQvAjsC1wQxBDICQQQ3BDgAHwGSAPwBNgLBAlgCSwRAAj4AdQMvA1MCzwRHAuID4wJNA6sDuAB3
+Aj8CigKlAfIDDgNvA0kC7wCOBF4CTAHvAlACRgFHAmYAcAB0AjoDjwBzArMCVQBBAaQCUwQhBCID0wJS
+AkoEKANhAl4A2wQuAlECPQJFARgENAQ1A8YCPAB2ApwB8QJOAoICWQJ0AHEAbwJXAlQCQwN8BEwCQAG/
+AkkDAAJHBFEEUwRWAycCTwRbAfAAeAOdAE4CQoCpgDeAv4CKgESAD4AygMKArIBUgPyBARKAfoCfgQEt
+gQEigJ2BASaBASqAAoBPgC+AO4CZgQEAgMuBARiAjoA8gLuAyICegQExgKSA9oDTgOWA6YBNgJOAhYCP
+gGiAsoDQgMOAqIAVgQE1gM+AX4DfgLaAPoB5gCSAOYB3gNuANYCUgPWAB4BTgO2BAQeBAQiA8oDogMeB
+AQuAzIB4gCaBASGA5ICJgLGANIEBD4EBFYDugIOAQoCLgGWA2ICEgQEDgH+ALYATgP2A8YCngNSBASCA
+mIBVgMGArYC5gQE4gQEogQEWgLqA2oEBHIBigFGA4IAMgKPSAA4APgQXByKBATmvEHEHIwckByUHJgcn
+BygHKQcqBysHLActBy4HLwcwBzEHMgczBzQHNQc2BzcHOAc5BzoHOwc8Bz0HPgc/B0AHQQdCB0MHRAdF
+B0YHRwdIB0kHSgdLB0wHTQdOB08HUAdRB1IHUwdUB1UHVgdXB1gHWQdaB1sHXAddB14HXwdgB2EHYgdj
+B2QHZQdmB2cHaAdpB2oHawdsB20HbgdvB3AHcQdyB3MHdAd1B3YHdwd4B3kHegd7B3wHfQd+B38HgAeB
+B4IHgweEB4UHhgeHB4gHiQeKB4sHjAeNB44HjweQB5EHkgeTgQGSgQGTgQGUgQGVgQGWgQGXgQGYgQGZ
+gQGagQGbgQGcgQGdgQGegQGfgQGggQGhgQGigQGjgQGkgQGlgQGmgQGngQGogQGpgQGqgQGrgQGsgQGt
+gQGugQGvgQGwgQGxgQGygQGzgQG0gQG1gQG2gQG3gQG4gQG5gQG6gQG7gQG8gQG9gQG+gQG/gQHAgQHB
+gQHCgQHDgQHEgQHFgQHGgQHHgQHIgQHJgQHKgQHLgQHMgQHNgQHOgQHPgQHQgQHRgQHSgQHTgQHUgQHV
+gQHWgQHXgQHYgQHZgQHagQHbgQHcgQHdgQHegQHfgQHggQHhgQHigQHjgQHkgQHlgQHmgQHngQHogQHp
+gQHqgQHrgQHsgQHtgQHugQHvgQHwgQHxgQHygQHzgQH0gQH1gQH2gQH3gQH4gQH5gQH6gQH7gQH8gQH9
+gQH+gQH/gQIAgQIBgQICENQRAY8RAa8Q2xEBoREBdxEBixBQEOQRAaoRAYgQghDgEDkQ2BDaEQFvENAQ
+3REBsREBphEBfREBjhDLEQGUEOkQUxDmEQGdEQFdEJEQhhEBXBCWEQGGEQFlEQFeEIgRAaUQ4RDcEMwR
+Aa4Q1xA6EFEQwxEBeRDTEI4RAasQ6BEBsBEBnhDNEQF6EQGNEN8Q0hEBjBDJEQGKEQFzEQGoEOsQjxAd
+EQFaEQFxEQFwEDgQxBDPEQF7ENYRAWMQ3hDnEIMQkBDKEPERAaARAa0RAZ8Q0REBkhDFEQF8EQF4EQGj
+EQFbEOMRAWIQzhDiEQGpEQGkEMcRAWQT//////////0Q1RCVEQFfEPUQ2REBrBEBpxDGEQF0EQFy0gAO
+AD4AbAgFgGug0gAOAD4EFwgIgQE5oNIADgA+BBcIC4EBOaDSADcAOAgNCA6iCA4AO15OU0lCT2JqZWN0
+RGF0YQAIABkAIgAnADEAOgA/AEQAUgBUAGYEeAR+BMkE0ATXBOUE9wUTBSEFLQU5BUcFUgVgBXwFigWd
+Ba8FyQXTBeAF4gXlBegF6wXuBfAF8wX1BfgF+wX+BgEGAwYFBggGCwYOBhEGGgYmBigGKgY4BkEGSgZV
+BloGaQZyBoUGjgaZBpsGngagBtEG3gbrBvkHAwcRByoHNwdJB10HZwdzB3UHdwd5B3sHgAeCB4QHhgeI
+B4oHjAeOB6kHsAe5B8QH4QfzB/4IBwgTCB8IIQgjCCUIKAgqCCwILgg3CDkIUAhSCFQIVghYCFoIXAhe
+CGAIYghkCGYIgwiLCI0IjwiRCJMIlQiXCLIIxAjNCNYI4wjqCPYJFwkeCSgJKgksCS4JMAkzCTQJNgk4
+CVMJeAmECZgJowmtCbsJyAncCegJ8QnzCfUJ9wn5CfsKAAoBCgMKBAoVChwKIwosCi4KNwo5CjwKSQpS
+ClcKXgpzCnsKiAqUCqIKpAqmCqgKqgqsCrMKyQrWCt4K4AriCuUK7grzCwgLCgsMCw4LEAsaCycLKQss
+CzULPgtQC10LZgtxC30LhwuoC6oLrAuuC7ALsQuzC7UL0AvxC/YL+Av6C/wL/gwADAIMDAwhDCMMJQwn
+DCkMNgxDDEUMUQxmDGgMagxsDG4MgQyiDKQMpgyoDKoMqwytDK8MygzrDPcNAg0NDRoNHw0hDSoNMw08
+DT4NQA1BDUoNUw1hDWoNdQ1/DaANog2kDaYNqA2pDasNrQ3HDegN6g3sDe0ODg4QDhIOFA4WDhcOGQ4b
+DjUOVg5YDloOXA5eDmAOYg5sDo0Ojw6RDpMOlQ6WDpgOmg60DtkO2w7dDt8O4Q7jDuQO5g8HDwkPCw8N
+Dw8PEA8SDxQPLg9fD3UPig+ZD6sPvQ/LD9AP0g/UD9YP2A/aD9wP3g/gD+IP5w/wD/UP/hAHEBQQHRAo
+EDEQUhBUEFYQWBBaEFsQXRBfEHoQsxDBENQQ3RDfEOEQ4xDlEOcQ6RDrEO0Q8hD/EQwRGxEdER8RIREp
+ETIROxFAEVMRXBFoEWoRbBF1EXoRkBGxEbMRtRG3EbkRvBG9Eb8RwRHbEfwR/hIAEgISBBIGEggSxxLo
+EuoS7BLuEvAS8RLzEvUTEBNbE3gTihOVE6cTvBPKE9ET2hPbE90T3xPhE+MT5RPnE+kT6xPsE+0T8BPz
+E/UT+hQrFDQUPBRQFFsUaRRzFIAUiRSPFJcUmRSbFJ0UohSkFKkUqxStFK8UsRSzFMAUzBTOFNAU0hTa
+FOcU6RTrFO0U/xUMFQ4VEBUSFSUVORVCFUcVUhVbFV0VaBVqFWwVbhVwFXIVnxWhFaMVpRWnFakVqxWt
+Fa8VtxXkFeYV6BXqFewV7hXwFfIV9BX2Ff8WLBYuFjAWMhY0FjYWOBY6FjwWPhZEFnEWcxZ1FncWeRZ7
+Fn0WfxaBFoMWixaUFpsWqhayFrsWwBbJFtYW6hb5FwIXDxcdFyoXMxc6F1MXXhdnF2wXfxeIF48XnBei
+F6sXrRfwF/IX9Bf2F/gX+hf8F/4YABgCGAQYBhgIGAoYDBgOGBAYEhgUGBYYGBgaGBwYHhggGCIYJBgm
+GCgYKhgsGC8YMhg/GEgYUBhSGFQYVhh3GHkYexh9GH8YgRiDGJAYkhiVGJgYnRifGKUYrhi1GM0Y3Bjp
+GOsY7RjvGRAZEhkUGRYZGBkaGRwZIRkjGSkZNhk4GToZPBlhGWMZZRlnGWkZaxltGXoZfBl/GYIZjRmP
+GakZthm4GboZvBndGd8Z4RnjGeUZ5xnpGfYZ+Bn7Gf4aHBo9GkoaTBpOGlAacRpzGnUadxp5GnsafRqa
+Gpwarhq7Gr0avxrBGuIa5BrmGuga6hrsGu4a/Rr/Gw4bGxsdGx8bIRtCG0QbRhtIG0obTBtOG1QbVhtd
+G2obbBtuG3AbkRuTG5UblxuZG5sbnRuuG7Absxu2G7kb1xvZG98b7BvuG/Ab8hwTHBUcFxwZHBscHRwf
+HCgcQRxOHFAcUhxUHHUcdxx5HHscfRx/HIEcjhyQHJMclhykHLIcvxzBHMMcxRzmHOgc6hzsHO4c8Bzy
+HPYc+Bz9HQodDB0OHRAdMR0zHTUdOh08HT4dQB1CHUcdSR1PHWAdbh1wHXIddB12HYQdjR2UHasduB26
+Hbwdvh3jHeUd5x3pHesd7R3vHfwd/h4BHgQeER4THjceSB5KHkweTh5QHmceeB56Hnwefh6AHqEeox6l
+HqoerB6uHrAesh6/HsEexB7HHtge2h7lHvIe9B72HvgfGR8bHx0fIh8kHyYfKB8qHzYfTx9cH14fYB9i
+H4MfhR+HH4kfix+NH48fnh+tH74fwB/CH8Qfxh/jH+Uf5x/pH+sf7R/vIA4gLiA7ID0gPyBBIGYgaCBq
+IGwgbiBwIHIgfiCAIKAgsSCzILUgtyC5IMYgyCDKIMwg7SDvIPEg8yD1IPcg+SENIQ8hLyE8IT4hQCFC
+IWMhZSFnIWkhayFtIW8heiF8IYchlCGWIZghmiG/IcEhwyHFIcchySHLId4h+SIGIggiCiIMIi0iLyIx
+IjMiNSI3IjkiVyJZImQicSJzInUidyKYIpoinCKeIqAioiKkIqsisyLAIsIixCLGIuci6SLrIu0i7yLx
+IvMjESMqI0cjUSNbI3ojfCN+I4AjgiOEI4YjjyOiI6QjpSOuI7Uj0CPdI/Uj+yQKJBMkGiQyJE8kUSRT
+JFUkVyRZJFskeCR6JHwkfiSAJIIkhCSmJMEk3iTgJOIk5STnJOkk7CUEJRMlMCUyJTQlNyU5JTslPiVH
+JUol7SXvJfEl8yX1Jfcl+SX7Jf0mACYDJgUmByYJJgsmDSYQJhImFCYWJhgmGiYdJiAmIiYlJigmKiYt
+JjAmMiY1JjgmOiY8Jj4mQCZCJkQmRiZJJksmTSZPJlEmUyZVJlgmWiZcJl4mYCZjJmUmZyZpJmsmbiZw
+JnMmdSZ3JnomfCZ+JoAmgiaFJocmiSaMJo4mkCaSJpQmliaYJpomnCaeJqAmpyawJrImtya5Jrsm5Cby
+Jv8nAScDJwQnBicHJwknCycNJx4nICcjJyYnKSczJzwnPidFJ0gnSydOJ3cngSeDJ4UniCeKJ4wnjieR
+J5QnrSe8J8UnxyfaJ9wn3yfiJ+Un5yfpJ+sn7ifwKBkoGygeKCEoIyglKCcoKSgsKDUoRihIKEsoTihR
+KFooXChdKG8omCiaKJwonSifKKAooiikKKYozyjRKNMo1CjWKNco2SjbKN0o6ikTKRUpFykaKRwpHikg
+KSMpJikrKTQpNik5KTspZClmKWgpayltKW8pcSl0KXcpfCmFKYcpoimkKaYpqSmrKa0prymxKbMptim5
+KbwpvynCKesp7SnvKfAp8inzKfUp9yn5KiIqJComKicqKSoqKiwqLiowKlkqWypdKmAqYipkKmYqaCpr
+KnAqeSp7KoYqiCqLKo4qkSqTKrgquiq9Kr8qwSrDKsUqzyr0KvYq+Sr7Kv0q/ysBKw8rNCs2KzkrPCs+
+K0ArQitEK10rXyuIK4orjCuPK5ErkyuVK5crmiuxK7orvCvFK8crySvLK80r9iv4K/or/Sv/LAEsAywF
+LAgsFiwfLCEsKCwqLCwsLixXLFksWyxeLGAsYixkLGYsaSx1LH4sgCyCLIsskCyZLJwtPy1BLUMtRi1I
+LUotTC1OLVAtUi1ULVYtWC1aLVwtXi1hLWMtZS1nLWktay1tLXAtcy11LXcteS17LX0tfy2BLYMthS2H
+LYotjC2OLZAtki2VLZctmS2bLZ4toC2iLaQtpi2oLaotrC2uLbAtsi20LbYtuC26Lbwtvi3BLcMtxS3H
+Lcktyy3OLdAt0y3VLdct2S3bLd0t3y3hLeQt5i3oLeot8y32LpsunS6fLqEuoy6lLqcuqS6rLq4usS6z
+LrUuty65Lrsuvi7ALsIuxC7GLsguyy7OLtAu0y7WLtgu2y7eLuAu4y7mLugu6i7sLu4u8C7yLvQu9i75
+Lvsu/S7/LwEvAy8FLwcvCi8MLw4vEC8SLxUvFy8ZLxsvHi8gLyIvJS8nLyovLC8uLzAvMy81LzcvOS88
+Lz4vQC9CL0QvRi9IL0ovTC9OL1AvWS9cMAEwBDAHMAowDTAQMBMwFjAZMBwwHzAiMCUwKDArMC4wMTA0
+MDcwOjA9MEAwQzBGMEkwTDBPMFIwVTBYMFswXjBhMGQwZzBqMG0wcDBzMHYweTB8MH8wgjCFMIgwizCO
+MJEwlDCXMJownTCgMKMwpjCpMKwwrzCyMLUwuDC7ML4wwTDEMMcwyjDNMNAw0zDWMNkw3DDfMOIw5TDo
+MOsw7jDxMPQxDjEjMTExTjFuMYAxnjG9Mccx0DH6MiQyQTJVMl0ygjKEMqEytDLSMugy9DMGMyYzSTNc
+M2kzgDOMM6EzuTPeM+s0BjQVNPg1DDUgNT41UjVlNYo1nzWyNbw11jXhNgs2JzY+NlU2bzaRNp02sTbD
+NuI27jbzN8436jf2OAI4OThUOGA4czieOLE4wzjYOPQ5CjkgOTc5UDlpOXY5kDmcOak5sjm1ObY5vznC
+OcM5zDnPOrQ6tjq4Oro6vDq+OsA6wjrEOsY6yDrKOs06zzrROtQ61zrZOtw63zrhOuM65TrnOuk67Dru
+OvE68zr1Ovc6+Tr7Ov47ADsCOwQ7BjsIOwo7DDsOOxA7EjsUOxY7GDsaOxw7HzshOyM7JTsnOyk7Kzst
+Oy87MTszOzU7Nzs5Ozs7PTs/O0I7RTtHO0k7SztOO1A7UjtUO1c7WTtbO107XztiO2U7ZztpO2s7bTtv
+O3E7czt2O3g7ejt8O347gDuCO4Q7hzuJO4s7jTuPO5E7lDuXO5o7nDueO6E7ozulO6c7qTurO7Q7tzyc
+PJ88ojylPKg8qzyuPLE8tDy3PLo8vTzAPMM8xjzJPMw8zzzSPNU82DzbPN484TzkPOc86jztPPA88zz2
+PPk8/Dz/PQI9BT0IPQs9Dj0RPRQ9Fz0aPR09ID0jPSY9KT0sPS89Mj01PTg9Oz0+PUE9RD1HPUo9TT1Q
+PVM9Vj1ZPVw9Xz1iPWU9aD1rPW49cT10PXc9ej19PYA9gz2GPYk9jD2PPZI9lT2YPZs9nj2hPaQ9pz2q
+Pa09sD2zPbY9uT28Pb89wj3FPcg9yz3OPdE91D3XPdo93T3gPeM95j3pPew97z3xPfQ99z35Pfw9/z4C
+PgQ+Bj4JPgw+Dj4QPhI+FD4WPhk+Gz4dPiA+Iz4mPik+Kz4uPjA+Mj40Pjc+Oj48Pj4+QT5DPkY+ST5M
+Pk4+UT5TPlU+Vz5aPlw+Xj5gPmI+ZT5nPmk+bD5uPnE+dD52Pnk+fD5+PoA+gz6FPog+iz6OPpA+kj6U
+Ppc+mj6dPp8+oT6jPqY+qD6rPq0+rz6xPrM+tT63Pro+vT7APsI+xT7HPso+zT7QPtM+1T7YPto+3D7f
+PuI+5D7nPvA+8j70Pvc++T77Pv4/AT8DPwY/CT8SPxQ/FT8ePyE/Ij8rPy4/Lz84Pz0AAAAAAAACAgAA
+AAAAAAgPAAAAAAAAAAAAAAAAAAA/TA
diff --git a/tools/fonttexgen/English.lproj/MainMenu.nib/keyedobjects.nib b/tools/fonttexgen/English.lproj/MainMenu.nib/keyedobjects.nib
index d0ae65a8..ba6ec170 100644
Binary files a/tools/fonttexgen/English.lproj/MainMenu.nib/keyedobjects.nib and b/tools/fonttexgen/English.lproj/MainMenu.nib/keyedobjects.nib differ
diff --git a/tools/fonttexgen/FontTextureView.h b/tools/fonttexgen/FontTextureView.h
index a88d9c40..5e1eb224 100644
--- a/tools/fonttexgen/FontTextureView.h
+++ b/tools/fonttexgen/FontTextureView.h
@@ -11,17 +11,20 @@
@interface FontTextureView: NSView
{
- int _offsetX, _offsetY;
- BOOL _alternatingColors;
- NSImage *_topRows;
- NSImage *_credits;
- NSArray *_widths;
- NSDictionary *_template;
+ int _offsetX, _offsetY;
+ BOOL _alternatingColors;
+ NSImage *_topRows;
+ NSArray *_widths;
+ NSDictionary *_template;
+ NSStringEncoding _encoding;
+
+ IBOutlet NSPopUpButton *encodingPopUp;
}
@property (nonatomic) int offsetX, offsetY;
@property (nonatomic) BOOL alternatingColors;
- (IBAction) saveImage:(id)sender;
+- (IBAction) takeEncodingFromTag:(id)sender;
@end
diff --git a/tools/fonttexgen/FontTextureView.m b/tools/fonttexgen/FontTextureView.m
index d773ef0d..76d7d9f8 100644
--- a/tools/fonttexgen/FontTextureView.m
+++ b/tools/fonttexgen/FontTextureView.m
@@ -9,9 +9,37 @@
// Hackerific: it's a view that thinks it's a controller.
#import "FontTextureView.h"
+#import
+#import "OOEncodingConverter.h"
-#define ENCODING 11//NSWindowsCP1252StringEncoding
+@interface NSImage ()
+@property (setter=setFlipped:, getter=isFlipped) BOOL flipped;
+@end
+
+
+static inline NSPoint ScalePoint(NSPoint point, NSPoint scale)
+{
+ point.x *= scale.x;
+ point.y *= scale.y;
+ return point;
+}
+
+
+static inline NSSize ScaleSize(NSSize size, NSPoint scale)
+{
+ size.width *= scale.x;
+ size.height *= scale.y;
+ return size;
+}
+
+
+static inline NSRect ScaleRect(NSRect rect, NSPoint scale)
+{
+ rect.origin = ScalePoint(rect.origin, scale);
+ rect.size = ScaleSize(rect.size, scale);
+ return rect;
+}
@interface NSString (StringWithCharacter)
@@ -36,6 +64,7 @@
[[NSUserDefaults standardUserDefaults] registerDefaults:
[NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:4], @"offsetX",
+ [NSNumber numberWithInt:NSWindowsCP1252StringEncoding], @"encoding",
nil]];
}
@@ -79,8 +108,11 @@
withKeyPath:@"values.alternatingColors"
options:nil];
+ _encoding = [[NSUserDefaults standardUserDefaults] integerForKey:@"encoding"];
+ [encodingPopUp selectItemWithTag:_encoding];
+
_topRows = [NSImage imageNamed:@"toprows"];
- _credits = [NSImage imageNamed:@"credits"];
+ _topRows.flipped = YES;
_template = [[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"template" ofType:@"plist"]] copy];
}
@@ -99,7 +131,10 @@
[[NSColor blackColor] set];
[NSBezierPath fillRect:rect];
- NSFont *font = [NSFont fontWithName:@"Helvetica Bold" size:25.0];
+ // Originally hard-coded at 512x512 pixels, scale is used to transform magic numbers as appropriate.
+ NSPoint scale = { self.bounds.size.width / 512, self.bounds.size.height / 512 };
+
+ NSFont *font = [NSFont fontWithName:@"Helvetica Bold" size:25.0 * scale.y];
if (font == nil) NSLog(@"Failed to find font!");
NSDictionary *attrs = [NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName, [NSColor whiteColor], NSForegroundColorAttributeName, nil];
@@ -112,41 +147,47 @@
{
if (_alternatingColors && ((x % 2) == (y % 2)))
{
- NSRect frame = {{ x * 32, y * 32 }, { 32, 32 }};
+ NSRect frame = {{ x * 32.0 * scale.x, y * 32.0 * scale.y }, { 32.0 * scale.x, 32.0 * scale.y }};
[[NSColor darkGrayColor] set];
[NSBezierPath fillRect:frame];
}
uint8_t value = y * 16 + x;
- if (value < 32 && value != '\t' && value != 0x08 && value != 0x18) continue;
- if (value == 0x7F) value = '?'; // Substitution glyph for unknown characters
- NSString *string = [[NSString alloc] initWithBytes:&value length:1 encoding:ENCODING];
-
- if (value == 0x08) string = [NSString stringWithCharacter:0x2605]; // Black Star
- if (value == 0x18) string = [NSString stringWithCharacter:0x2606]; // White Star
-
- // Replace Euro sign with Cruzeiro sign.
- if ([string characterAtIndex:0] == 0x20AC) string = [NSString stringWithCharacter:0x20A2];
- // Replace tab with space.
- if ([string characterAtIndex:0] == '\t') string = [NSString stringWithCharacter:' '];
-
- NSPoint point = NSMakePoint(x * 32 + self.offsetX, y * 32 + self.offsetY);
- [string drawAtPoint:point withAttributes:attrs];
-
- NSNumber *width = [NSNumber numberWithFloat:[string sizeWithAttributes:attrs].width / 4.0];
- if (value < 32)
+ if (y >= 2 || value == '\t' || value == 0x08 || value == 0x18)
{
- [widths replaceObjectAtIndex:value withObject:width];
- }
- else
- {
- [widths addObject:width];
+ // if (value == 0x7F) value = '?'; // Substitution glyph for unknown characters -- not used
+ NSString *string = [[NSString alloc] initWithBytes:&value length:1 encoding:_encoding];
+
+ if (value == 0x08) string = [NSString stringWithCharacter:0x2605]; // Black Star
+ if (value == 0x18) string = [NSString stringWithCharacter:0x2606]; // White Star
+
+ // Replace Euro sign with Cruzeiro sign.
+ if ([string characterAtIndex:0] == 0x20AC) string = [NSString stringWithCharacter:0x20A2];
+ // Replace tab with space.
+ if ([string characterAtIndex:0] == '\t') string = [NSString stringWithCharacter:' '];
+
+ NSPoint point = NSMakePoint((x * 32.0 + self.offsetX) * scale.x, (y * 32.0 + self.offsetY) * scale.y);
+ [string drawAtPoint:point withAttributes:attrs];
+
+ NSNumber *width = [NSNumber numberWithFloat:[string sizeWithAttributes:attrs].width / 4.0];
+ if (value < 32)
+ {
+ [widths replaceObjectAtIndex:value withObject:width];
+ }
+ else
+ {
+ [widths addObject:width];
+ }
}
}
}
- [_topRows compositeToPoint:NSMakePoint(0, _topRows.size.height) operation:NSCompositePlusLighter];
+ [NSGraphicsContext currentContext].imageInterpolation = NSImageInterpolationHigh;
+ NSRect srcRect = {{0, 0}, _topRows.size};
+ NSRect dstRect = {{0, 0}, {32.0 * scale.x * 8.0, 32.0 * scale.y * 2.0}};
+ [_topRows drawInRect:dstRect fromRect:srcRect operation:NSCompositePlusLighter fraction:1.0];
+
_widths = [widths copy];
}
@@ -166,13 +207,21 @@
NSMutableDictionary *plist = [_template mutableCopy];
[plist setObject:_widths forKey:@"widths"];
- [plist setObject:[NSNumber numberWithInt:ENCODING] forKey:@"encoding"];
+ [plist setObject:StringFromEncoding(_encoding) forKey:@"encoding"];
path = [[path stringByDeletingPathExtension] stringByAppendingPathExtension:@"plist"];
[plist writeToFile:path atomically:YES];
}
}
+
+- (IBAction) takeEncodingFromTag:(id)sender
+{
+ _encoding = [[sender selectedItem] tag];
+ [[NSUserDefaults standardUserDefaults] setInteger:_encoding forKey:@"encoding"];
+ [self setNeedsDisplay:YES];
+}
+
@end
diff --git a/tools/fonttexgen/fonttexgen.xcodeproj/project.pbxproj b/tools/fonttexgen/fonttexgen.xcodeproj/project.pbxproj
index e8bb55c9..79c3a644 100644
--- a/tools/fonttexgen/fonttexgen.xcodeproj/project.pbxproj
+++ b/tools/fonttexgen/fonttexgen.xcodeproj/project.pbxproj
@@ -7,9 +7,11 @@
objects = {
/* Begin PBXBuildFile section */
+ 1A88FF7C0D5E393A002E5344 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A88FF7B0D5E393A002E5344 /* QuartzCore.framework */; };
1AC544440D4D01DE00C90E5B /* FontTextureView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AC544430D4D01DE00C90E5B /* FontTextureView.m */; };
1AC544AB0D4D175B00C90E5B /* toprows.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AC544A90D4D175B00C90E5B /* toprows.png */; };
1AC545680D4D362C00C90E5B /* template.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1AC545670D4D362C00C90E5B /* template.plist */; };
+ 1AD3DA280D5F62E700AB473C /* OOEncodingConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AD3DA270D5F62E700AB473C /* OOEncodingConverter.m */; };
8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; };
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
@@ -20,10 +22,13 @@
089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; };
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; };
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; };
+ 1A88FF7B0D5E393A002E5344 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = SDKs/MacOSX10.5.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; };
1AC544420D4D01DE00C90E5B /* FontTextureView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontTextureView.h; sourceTree = ""; };
1AC544430D4D01DE00C90E5B /* FontTextureView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FontTextureView.m; sourceTree = ""; };
1AC544A90D4D175B00C90E5B /* toprows.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toprows.png; sourceTree = ""; };
1AC545670D4D362C00C90E5B /* template.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = template.plist; sourceTree = ""; };
+ 1AD3DA260D5F62E700AB473C /* OOEncodingConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OOEncodingConverter.h; path = ../../src/Core/OOEncodingConverter.h; sourceTree = SOURCE_ROOT; };
+ 1AD3DA270D5F62E700AB473C /* OOEncodingConverter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OOEncodingConverter.m; path = ../../src/Core/OOEncodingConverter.m; sourceTree = SOURCE_ROOT; };
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
29B97319FDCFA39411CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = ""; };
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; };
@@ -39,6 +44,7 @@
buildActionMask = 2147483647;
files = (
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
+ 1A88FF7C0D5E393A002E5344 /* QuartzCore.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -50,6 +56,8 @@
children = (
1AC544420D4D01DE00C90E5B /* FontTextureView.h */,
1AC544430D4D01DE00C90E5B /* FontTextureView.m */,
+ 1AD3DA260D5F62E700AB473C /* OOEncodingConverter.h */,
+ 1AD3DA270D5F62E700AB473C /* OOEncodingConverter.m */,
);
name = Classes;
sourceTree = "";
@@ -58,6 +66,7 @@
isa = PBXGroup;
children = (
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
+ 1A88FF7B0D5E393A002E5344 /* QuartzCore.framework */,
);
name = "Linked Frameworks";
sourceTree = "";
@@ -181,6 +190,7 @@
files = (
8D11072D0486CEB800E47090 /* main.m in Sources */,
1AC544440D4D01DE00C90E5B /* FontTextureView.m in Sources */,
+ 1AD3DA280D5F62E700AB473C /* OOEncodingConverter.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -210,12 +220,18 @@
isa = XCBuildConfiguration;
buildSettings = {
COPY_PHASE_STRIP = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"$(DEVELOPER_DIR)/SDKs/MacOSX10.5.sdk/System/Library/Frameworks\"",
+ );
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = fonttexgen_Prefix.pch;
+ GCC_PREPROCESSOR_DEFINITIONS = "NS_BUILD_32_LIKE_64=1";
+ GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = OOENCODINGCONVERTER_EXCLUDE;
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(HOME)/Applications";
PRODUCT_NAME = fonttexgen;
@@ -228,6 +244,10 @@
isa = XCBuildConfiguration;
buildSettings = {
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"$(DEVELOPER_DIR)/SDKs/MacOSX10.5.sdk/System/Library/Frameworks\"",
+ );
GCC_ENABLE_OBJC_GC = required;
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
diff --git a/tools/fonttexgen/main.m b/tools/fonttexgen/main.m
index c0c4cb2f..52f7eb2a 100644
--- a/tools/fonttexgen/main.m
+++ b/tools/fonttexgen/main.m
@@ -10,5 +10,13 @@
int main(int argc, char *argv[])
{
- return NSApplicationMain(argc, (const char **) argv);
+ @try
+ {
+ return NSApplicationMain(argc, (const char **) argv);
+ }
+ @catch (id e)
+ {
+ NSLog(@"*** Root exception handler: %@: %@", [e name], [e reason]);
+ }
+ return -1;
}
diff --git a/tools/fonttexgen/oolite-gov-symbols.pdf b/tools/fonttexgen/oolite-gov-symbols.pdf
new file mode 100644
index 00000000..523a1628
Binary files /dev/null and b/tools/fonttexgen/oolite-gov-symbols.pdf differ
diff --git a/tools/fonttexgen/toprows-big.png b/tools/fonttexgen/toprows-big.png
new file mode 100644
index 00000000..ba5c619a
Binary files /dev/null and b/tools/fonttexgen/toprows-big.png differ
diff --git a/tools/fonttexgen/toprows.png b/tools/fonttexgen/toprows.png
index db44b9f8..d8d7a001 100644
Binary files a/tools/fonttexgen/toprows.png and b/tools/fonttexgen/toprows.png differ