diff --git a/macosx/English.lproj/InfoPlist.strings b/macosx/English.lproj/InfoPlist.strings deleted file mode 100644 index 97e75150..00000000 Binary files a/macosx/English.lproj/InfoPlist.strings and /dev/null differ diff --git a/macosx/English.lproj/Main.nib/designable.nib b/macosx/English.lproj/Main.nib/designable.nib deleted file mode 100644 index 6af5a06a..00000000 --- a/macosx/English.lproj/Main.nib/designable.nib +++ /dev/null @@ -1,11373 +0,0 @@ - - - - 1050 - 9B17 - 629 - 949 - 343.00 - - YES - - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - - - YES - - - NSApplication - - - - FirstResponder - - - NSApplication - - - SDLMain - - YES - - - Visual Boy Advance-M - - 1048576 - 2147483647 - - NSImage - NSMenuCheckmark - - - - NSMenuMixedState - - submenuAction: - - - - YES - - - About VisualBoyAdvance - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Preferences... - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Visit EmuScene Software... - - 1048576 - 2147483647 - - - - - - Donate... - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Hide VisualBoyAdvance - h - 1048576 - 2147483647 - - - - - - Hide Others - - 1048576 - 2147483647 - - - - - - Show All - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Quit VisualBoyAdvance - q - 1048576 - 2147483647 - - - - - _NSAppleMenu - - - - - File - - 1048576 - 2147483647 - - - submenuAction: - - - File - - - YES - - - Open Rom... - o - 1048576 - 2147483647 - - - - - - Close Rom - w - 1048576 - 2147483647 - - - - - - - - - Edit - - 1048576 - 2147483647 - - - submenuAction: - - - Edit - - - YES - - - Cut - x - 1048576 - 2147483647 - - - - - - Copy - c - 1048576 - 2147483647 - - - - - - Paste - v - 1048576 - 2147483647 - - - - - - Delete - - 1048576 - 2147483647 - - - - - - Select All - a - 1048576 - 2147483647 - - - - - - - - - Control - - 1048576 - 2147483647 - - - submenuAction: - - - - YES - - - Toggle Fullscreen - f - 262144 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Pause Emulation - p - 1048576 - 2147483647 - - - - - - Reset Emulation - r - 1048576 - 2147483647 - - - - - - Advance Frame - n - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Freeze Game State - - 1048576 - 2147483647 - - - - - - Defrost Game State - d - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Add CodeBreakerAdvance Cheats... - - 1048576 - 2147483647 - - - - - - Add GameSharkAdvance Cheats... - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Configure Keys... - - 1048576 - 2147483647 - - - - - - - - - Window - - 1048576 - 2147483647 - - - submenuAction: - - - Window - - - YES - - - Minimize - m - 1048576 - 2147483647 - - - - - _NSWindowsMenu - - - - _NSMainMenu - - - - - - NSFontManager - - - 3 - 2 - {{694, 666}, {289, 274}} - 1886912512 - About - NSWindow - - View - - - - 256 - - YES - - - 256 - {{158, 12}, {84, 32}} - - YES - - 67239424 - 134217728 - OK - - LucidaGrande - 1.300000e+01 - 1044 - - - -2038284033 - 1 - - - DQ - 200 - 25 - - - - - 256 - {{63, 232}, {165, 22}} - - YES - - 67239424 - 138412032 - VisualBoyAdvance - - - 1.800000e+01 - 16 - - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2OQA - - - - 6 - - controlTextColor - - 3 - MAA - - - - - - - 256 - - YES - - YES - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple PNG pasteboard type - NSFilenamesPboardType - NeXT Encapsulated PostScript v1.2 pasteboard type - NeXT TIFF v4.0 pasteboard type - - - {{87, 143}, {112, 82}} - - YES - - 130560 - 33554432 - - - NSApplicationIcon - - 0 - 0 - 0 - NO - - YES - - - - 256 - {{89, 55}, {118, 96}} - - YES - - 69336577 - 138412032 - Ck9yaWdpbmFsIFZlcnNpb246CkZvcmdvdHRlbgoKTWFjIE9TIFggVmVyc2lvbjoKQWRhbSBHcmVlbg - - - 1.100000e+01 - 3100 - - - - - - - - - 256 - {{51, 12}, {87, 32}} - - YES - - 67239424 - 134217728 - License - - - -2038284033 - 1 - - - - - - 200 - 25 - - - - {{1, 9}, {289, 274}} - - {{0, 0}, {2560, 1578}} - {213, 129} - {3.40282e+38, 3.40282e+38} - - - 3 - 2 - {{588, 455}, {516, 415}} - 1886912512 - GNU Public License - - - View - - - - 256 - - YES - - - 256 - - YES - - - 2304 - - YES - - - 2322 - - YES - - YES - Apple HTML pasteboard type - - - CorePasteboardFlavorType 0x6D6F6F76 - NSColor pasteboard type - - NSStringPboardType - - NeXT RTFD pasteboard type - NeXT Rich Text Format v1.0 pasteboard type - - - - {{0, 24}, {459, 4046}} - - - - - - CQkgICAgCQkgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQoJCSAgICAgIAkJIFZlcnNpb24gMiwg -SnVuZSAxOTkxCgogQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv -biwgSW5jLgogICAgICAgICAgICAgICAgICAgICAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBC -b3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFu -ZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQg -Y2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgoJCQkgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2Vz -IGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRv -IHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpM -aWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNo -YW5nZSBmcmVlCnNvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFs -bCBpdHMgdXNlcnMuICBUaGlzCkdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBtb3N0IG9m -IHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHBy -b2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KdXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNv -ZnR3YXJlIEZvdW5kYXRpb24gc29mdHdhcmUgaXMgY292ZXJlZCBieQp0aGUgR05VIExpYnJhcnkgR2Vu -ZXJhbCBQdWJsaWMgTGljZW5zZSBpbnN0ZWFkLikgIFlvdSBjYW4gYXBwbHkgaXQgdG8KeW91ciBwcm9n -cmFtcywgdG9vLgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJp -bmcgdG8gZnJlZWRvbSwgbm90CnByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBk -ZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKaGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRl -IGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvcgp0aGlzIHNlcnZpY2UgaWYgeW91 -IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQKaWYgeW91IHdh -bnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQK -aW4gbmV3IGZyZWUgcHJvZ3JhbXM7IGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhp -bmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25z -IHRoYXQgZm9yYmlkCmFueW9uZSB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0 -byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4KVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0 -YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yIHlvdSBpZiB5b3UKZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhl -IHNvZnR3YXJlLCBvciBpZiB5b3UgbW9kaWZ5IGl0LgoKICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3Ry -aWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCmdyYXRpcyBvciBmb3IgYSBmZWUs -IHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRoZSByaWdodHMgdGhhdAp5b3UgaGF2ZS4g -IFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZQpz -b3VyY2UgY29kZS4gIEFuZCB5b3UgbXVzdCBzaG93IHRoZW0gdGhlc2UgdGVybXMgc28gdGhleSBrbm93 -IHRoZWlyCnJpZ2h0cy4KCiAgV2UgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczogKDEp -IGNvcHlyaWdodCB0aGUgc29mdHdhcmUsIGFuZAooMikgb2ZmZXIgeW91IHRoaXMgbGljZW5zZSB3aGlj -aCBnaXZlcyB5b3UgbGVnYWwgcGVybWlzc2lvbiB0byBjb3B5LApkaXN0cmlidXRlIGFuZC9vciBtb2Rp -ZnkgdGhlIHNvZnR3YXJlLgoKICBBbHNvLCBmb3IgZWFjaCBhdXRob3IncyBwcm90ZWN0aW9uIGFuZCBv -dXJzLCB3ZSB3YW50IHRvIG1ha2UgY2VydGFpbgp0aGF0IGV2ZXJ5b25lIHVuZGVyc3RhbmRzIHRoYXQg -dGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZQpzb2Z0d2FyZS4gIElmIHRoZSBzb2Z0d2Fy -ZSBpcyBtb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgd2UKd2FudCBpdHMgcmVj -aXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbCwgc28K -dGhhdCBhbnkgcHJvYmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0 -aGUgb3JpZ2luYWwKYXV0aG9ycycgcmVwdXRhdGlvbnMuCgogIEZpbmFsbHksIGFueSBmcmVlIHByb2dy -YW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlCnBhdGVudHMuICBXZSB3aXNoIHRv -IGF2b2lkIHRoZSBkYW5nZXIgdGhhdCByZWRpc3RyaWJ1dG9ycyBvZiBhIGZyZWUKcHJvZ3JhbSB3aWxs -IGluZGl2aWR1YWxseSBvYnRhaW4gcGF0ZW50IGxpY2Vuc2VzLCBpbiBlZmZlY3QgbWFraW5nIHRoZQpw -cm9ncmFtIHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB3ZSBoYXZlIG1hZGUgaXQgY2xlYXIg -dGhhdCBhbnkKcGF0ZW50IG11c3QgYmUgbGljZW5zZWQgZm9yIGV2ZXJ5b25lJ3MgZnJlZSB1c2Ugb3Ig -bm90IGxpY2Vuc2VkIGF0IGFsbC4KCiAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9y -IGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKbW9kaWZpY2F0aW9uIGZvbGxvdy4KCgoJCSAgICBHTlUg -R0VORVJBTCBQVUJMSUMgTElDRU5TRQogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgQ09QWUlORywg -RElTVFJJQlVUSU9OIEFORCBNT0RJRklDQVRJT04KCiAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8g -YW55IHByb2dyYW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucwphIG5vdGljZSBwbGFjZWQgYnkg -dGhlIGNvcHlyaWdodCBob2xkZXIgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZAp1bmRlciB0aGUg -dGVybXMgb2YgdGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3cs -CnJlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBhICJ3b3JrIGJhc2VkIG9uIHRo -ZSBQcm9ncmFtIgptZWFucyBlaXRoZXIgdGhlIFByb2dyYW0gb3IgYW55IGRlcml2YXRpdmUgd29yayB1 -bmRlciBjb3B5cmlnaHQgbGF3Ogp0aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFBy -b2dyYW0gb3IgYSBwb3J0aW9uIG9mIGl0LAplaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRp -b25zIGFuZC9vciB0cmFuc2xhdGVkIGludG8gYW5vdGhlcgpsYW5ndWFnZS4gIChIZXJlaW5hZnRlciwg -dHJhbnNsYXRpb24gaXMgaW5jbHVkZWQgd2l0aG91dCBsaW1pdGF0aW9uIGluCnRoZSB0ZXJtICJtb2Rp -ZmljYXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgoKQWN0aXZpdGll -cyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QK -Y292ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiAgVGhlIGFj -dCBvZgpydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91dHB1dCBm -cm9tIHRoZSBQcm9ncmFtCmlzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBh -IHdvcmsgYmFzZWQgb24gdGhlClByb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUg -YnkgcnVubmluZyB0aGUgUHJvZ3JhbSkuCldoZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hh -dCB0aGUgUHJvZ3JhbSBkb2VzLgoKICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0 -aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3MKc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGlu -IGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91CmNvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRl -bHkgcHVibGlzaCBvbiBlYWNoIGNvcHkgYW4gYXBwcm9wcmlhdGUKY29weXJpZ2h0IG5vdGljZSBhbmQg -ZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZQpub3RpY2VzIHRoYXQgcmVm -ZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7CmFuZCBn -aXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFtIGEgY29weSBvZiB0aGlzIExpY2Vu -c2UKYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KCllvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5 -c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksIGFuZAp5b3UgbWF5IGF0IHlvdXIgb3B0aW9u -IG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLgoKICAyLiBZb3Ug -bWF5IG1vZGlmeSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRoZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9u -Cm9mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQgY29weSBh -bmQKZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2Yg -U2VjdGlvbiAxCmFib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNv -bmRpdGlvbnM6CgogICAgYSkgWW91IG11c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5 -IHByb21pbmVudCBub3RpY2VzCiAgICBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZpbGVzIGFu -ZCB0aGUgZGF0ZSBvZiBhbnkgY2hhbmdlLgoKICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRo -YXQgeW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgogICAgd2hvbGUgb3IgaW4gcGFydCBj -b250YWlucyBvciBpcyBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0gb3IgYW55CiAgICBwYXJ0IHRoZXJl -b2YsIHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZAogICAg -cGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgoKICAgIGMpIElmIHRoZSBtb2Rp -ZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkKICAgIHdoZW4g -cnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBzdGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2gKICAgIGlu -dGVyYWN0aXZlIHVzZSBpbiB0aGUgbW9zdCBvcmRpbmFyeSB3YXksIHRvIHByaW50IG9yIGRpc3BsYXkg -YW4KICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGlj -ZSBhbmQgYQogICAgbm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWlu -ZyB0aGF0IHlvdSBwcm92aWRlCiAgICBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2VycyBtYXkgcmVkaXN0 -cmlidXRlIHRoZSBwcm9ncmFtIHVuZGVyCiAgICB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0 -aGUgdXNlciBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcwogICAgTGljZW5zZS4gIChFeGNlcHRpb246 -IGlmIHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKICAgIGRvZXMgbm90IG5vcm1h -bGx5IHByaW50IHN1Y2ggYW4gYW5ub3VuY2VtZW50LCB5b3VyIHdvcmsgYmFzZWQgb24KICAgIHRoZSBQ -cm9ncmFtIGlzIG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQoKClRoZXNlIHJl -cXVpcmVtZW50cyBhcHBseSB0byB0aGUgbW9kaWZpZWQgd29yayBhcyBhIHdob2xlLiAgSWYKaWRlbnRp -ZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3Jh -bSwKYW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRl -IHdvcmtzIGluCnRoZW1zZWx2ZXMsIHRoZW4gdGhpcyBMaWNlbnNlLCBhbmQgaXRzIHRlcm1zLCBkbyBu -b3QgYXBwbHkgdG8gdGhvc2UKc2VjdGlvbnMgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFy -YXRlIHdvcmtzLiAgQnV0IHdoZW4geW91CmRpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFy -dCBvZiBhIHdob2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZApvbiB0aGUgUHJvZ3JhbSwgdGhlIGRpc3Ry -aWJ1dGlvbiBvZiB0aGUgd2hvbGUgbXVzdCBiZSBvbiB0aGUgdGVybXMgb2YKdGhpcyBMaWNlbnNlLCB3 -aG9zZSBwZXJtaXNzaW9ucyBmb3Igb3RoZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUKZW50aXJlIHdo -b2xlLCBhbmQgdGh1cyB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hvIHdyb3Rl -IGl0LgoKVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJp -Z2h0cyBvciBjb250ZXN0CnlvdXIgcmlnaHRzIHRvIHdvcmsgd3JpdHRlbiBlbnRpcmVseSBieSB5b3U7 -IHJhdGhlciwgdGhlIGludGVudCBpcyB0bwpleGVyY2lzZSB0aGUgcmlnaHQgdG8gY29udHJvbCB0aGUg -ZGlzdHJpYnV0aW9uIG9mIGRlcml2YXRpdmUgb3IKY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUg -UHJvZ3JhbS4KCkluIGFkZGl0aW9uLCBtZXJlIGFnZ3JlZ2F0aW9uIG9mIGFub3RoZXIgd29yayBub3Qg -YmFzZWQgb24gdGhlIFByb2dyYW0Kd2l0aCB0aGUgUHJvZ3JhbSAob3Igd2l0aCBhIHdvcmsgYmFzZWQg -b24gdGhlIFByb2dyYW0pIG9uIGEgdm9sdW1lIG9mCmEgc3RvcmFnZSBvciBkaXN0cmlidXRpb24gbWVk -aXVtIGRvZXMgbm90IGJyaW5nIHRoZSBvdGhlciB3b3JrIHVuZGVyCnRoZSBzY29wZSBvZiB0aGlzIExp -Y2Vuc2UuCgogIDMuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYSB3 -b3JrIGJhc2VkIG9uIGl0LAp1bmRlciBTZWN0aW9uIDIpIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFi -bGUgZm9ybSB1bmRlciB0aGUgdGVybXMgb2YKU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0 -aGF0IHlvdSBhbHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgoKICAgIGEpIEFjY29tcGFueSBpdCB3 -aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nIG1hY2hpbmUtcmVhZGFibGUKICAgIHNvdXJjZSBj -b2RlLCB3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucwog -ICAgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBp -bnRlcmNoYW5nZTsgb3IsCgogICAgYikgQWNjb21wYW55IGl0IHdpdGggYSB3cml0dGVuIG9mZmVyLCB2 -YWxpZCBmb3IgYXQgbGVhc3QgdGhyZWUKICAgIHllYXJzLCB0byBnaXZlIGFueSB0aGlyZCBwYXJ0eSwg -Zm9yIGEgY2hhcmdlIG5vIG1vcmUgdGhhbiB5b3VyCiAgICBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9y -bWluZyBzb3VyY2UgZGlzdHJpYnV0aW9uLCBhIGNvbXBsZXRlCiAgICBtYWNoaW5lLXJlYWRhYmxlIGNv -cHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIHRvIGJlCiAgICBkaXN0cmlidXRlZCB1 -bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bQogICAgY3Vz -dG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAoKICAgIGMpIEFjY29tcGFu -eSBpdCB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgcmVjZWl2ZWQgYXMgdG8gdGhlIG9mZmVyCiAgICB0 -byBkaXN0cmlidXRlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUuICAoVGhpcyBhbHRlcm5hdGl2ZSBp -cwogICAgYWxsb3dlZCBvbmx5IGZvciBub25jb21tZXJjaWFsIGRpc3RyaWJ1dGlvbiBhbmQgb25seSBp -ZiB5b3UKICAgIHJlY2VpdmVkIHRoZSBwcm9ncmFtIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUg -Zm9ybSB3aXRoIHN1Y2gKICAgIGFuIG9mZmVyLCBpbiBhY2NvcmQgd2l0aCBTdWJzZWN0aW9uIGIgYWJv -dmUuKQoKVGhlIHNvdXJjZSBjb2RlIGZvciBhIHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9m -IHRoZSB3b3JrIGZvcgptYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gIEZvciBhbiBleGVjdXRhYmxl -IHdvcmssIGNvbXBsZXRlIHNvdXJjZQpjb2RlIG1lYW5zIGFsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFs -bCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueQphc3NvY2lhdGVkIGludGVyZmFjZSBkZWZpbml0 -aW9uIGZpbGVzLCBwbHVzIHRoZSBzY3JpcHRzIHVzZWQgdG8KY29udHJvbCBjb21waWxhdGlvbiBhbmQg -aW5zdGFsbGF0aW9uIG9mIHRoZSBleGVjdXRhYmxlLiAgSG93ZXZlciwgYXMgYQpzcGVjaWFsIGV4Y2Vw -dGlvbiwgdGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQgbm90IGluY2x1ZGUKYW55dGhpbmcg -dGhhdCBpcyBub3JtYWxseSBkaXN0cmlidXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBvciBiaW5hcnkKZm9y -bSkgd2l0aCB0aGUgbWFqb3IgY29tcG9uZW50cyAoY29tcGlsZXIsIGtlcm5lbCwgYW5kIHNvIG9uKSBv -ZiB0aGUKb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSBydW5zLCB1bmxlc3Mg -dGhhdCBjb21wb25lbnQKaXRzZWxmIGFjY29tcGFuaWVzIHRoZSBleGVjdXRhYmxlLgoKSWYgZGlzdHJp -YnV0aW9uIG9mIGV4ZWN1dGFibGUgb3Igb2JqZWN0IGNvZGUgaXMgbWFkZSBieSBvZmZlcmluZwphY2Nl -c3MgdG8gY29weSBmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgdGhlbiBvZmZlcmluZyBlcXVpdmFsZW50 -CmFjY2VzcyB0byBjb3B5IHRoZSBzb3VyY2UgY29kZSBmcm9tIHRoZSBzYW1lIHBsYWNlIGNvdW50cyBh -cwpkaXN0cmlidXRpb24gb2YgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVz -IGFyZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3Qg -Y29kZS4KCgogIDQuIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgb3IgZGlzdHJp -YnV0ZSB0aGUgUHJvZ3JhbQpleGNlcHQgYXMgZXhwcmVzc2x5IHByb3ZpZGVkIHVuZGVyIHRoaXMgTGlj -ZW5zZS4gIEFueSBhdHRlbXB0Cm90aGVyd2lzZSB0byBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2Ugb3Ig -ZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBpcwp2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1p -bmF0ZSB5b3VyIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UuCkhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhh -dmUgcmVjZWl2ZWQgY29waWVzLCBvciByaWdodHMsIGZyb20geW91IHVuZGVyCnRoaXMgTGljZW5zZSB3 -aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzIHRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoCnBhcnRp -ZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KCiAgNS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8g -YWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90CnNpZ25lZCBpdC4gIEhvd2V2ZXIs -IG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCmRpc3RyaWJ1dGUg -dGhlIFByb2dyYW0gb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQpwcm9o -aWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUs -IGJ5Cm1vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2Vk -IG9uIHRoZQpQcm9ncmFtKSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vu -c2UgdG8gZG8gc28sIGFuZAphbGwgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBk -aXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nCnRoZSBQcm9ncmFtIG9yIHdvcmtzIGJhc2VkIG9uIGl0LgoK -ICA2LiBFYWNoIHRpbWUgeW91IHJlZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFz -ZWQgb24gdGhlClByb2dyYW0pLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBs -aWNlbnNlIGZyb20gdGhlCm9yaWdpbmFsIGxpY2Vuc29yIHRvIGNvcHksIGRpc3RyaWJ1dGUgb3IgbW9k -aWZ5IHRoZSBQcm9ncmFtIHN1YmplY3QgdG8KdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3Ug -bWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBl -eGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgpZb3UgYXJlIG5vdCByZXNwb25zaWJs -ZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB0bwp0aGlzIExpY2Vuc2Uu -CgogIDcuIElmLCBhcyBhIGNvbnNlcXVlbmNlIG9mIGEgY291cnQganVkZ21lbnQgb3IgYWxsZWdhdGlv -biBvZiBwYXRlbnQKaW5mcmluZ2VtZW50IG9yIGZvciBhbnkgb3RoZXIgcmVhc29uIChub3QgbGltaXRl -ZCB0byBwYXRlbnQgaXNzdWVzKSwKY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIg -YnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgpvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUg -Y29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90CmV4Y3VzZSB5b3UgZnJvbSB0aGUg -Y29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90CmRpc3RyaWJ1dGUgc28gYXMg -dG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMKTGljZW5z -ZSBhbmQgYW55IG90aGVyIHBlcnRpbmVudCBvYmxpZ2F0aW9ucywgdGhlbiBhcyBhIGNvbnNlcXVlbmNl -IHlvdQptYXkgbm90IGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gYXQgYWxsLiAgRm9yIGV4YW1wbGUsIGlm -IGEgcGF0ZW50CmxpY2Vuc2Ugd291bGQgbm90IHBlcm1pdCByb3lhbHR5LWZyZWUgcmVkaXN0cmlidXRp -b24gb2YgdGhlIFByb2dyYW0gYnkKYWxsIHRob3NlIHdobyByZWNlaXZlIGNvcGllcyBkaXJlY3RseSBv -ciBpbmRpcmVjdGx5IHRocm91Z2ggeW91LCB0aGVuCnRoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0aXNm -eSBib3RoIGl0IGFuZCB0aGlzIExpY2Vuc2Ugd291bGQgYmUgdG8KcmVmcmFpbiBlbnRpcmVseSBmcm9t -IGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbS4KCklmIGFueSBwb3J0aW9uIG9mIHRoaXMgc2VjdGlv -biBpcyBoZWxkIGludmFsaWQgb3IgdW5lbmZvcmNlYWJsZSB1bmRlcgphbnkgcGFydGljdWxhciBjaXJj -dW1zdGFuY2UsIHRoZSBiYWxhbmNlIG9mIHRoZSBzZWN0aW9uIGlzIGludGVuZGVkIHRvCmFwcGx5IGFu -ZCB0aGUgc2VjdGlvbiBhcyBhIHdob2xlIGlzIGludGVuZGVkIHRvIGFwcGx5IGluIG90aGVyCmNpcmN1 -bXN0YW5jZXMuCgpJdCBpcyBub3QgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzZWN0aW9uIHRvIGluZHVjZSB5 -b3UgdG8gaW5mcmluZ2UgYW55CnBhdGVudHMgb3Igb3RoZXIgcHJvcGVydHkgcmlnaHQgY2xhaW1zIG9y -IHRvIGNvbnRlc3QgdmFsaWRpdHkgb2YgYW55CnN1Y2ggY2xhaW1zOyB0aGlzIHNlY3Rpb24gaGFzIHRo -ZSBzb2xlIHB1cnBvc2Ugb2YgcHJvdGVjdGluZyB0aGUKaW50ZWdyaXR5IG9mIHRoZSBmcmVlIHNvZnR3 -YXJlIGRpc3RyaWJ1dGlvbiBzeXN0ZW0sIHdoaWNoIGlzCmltcGxlbWVudGVkIGJ5IHB1YmxpYyBsaWNl -bnNlIHByYWN0aWNlcy4gIE1hbnkgcGVvcGxlIGhhdmUgbWFkZQpnZW5lcm91cyBjb250cmlidXRpb25z -IHRvIHRoZSB3aWRlIHJhbmdlIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkCnRocm91Z2ggdGhhdCBzeXN0 -ZW0gaW4gcmVsaWFuY2Ugb24gY29uc2lzdGVudCBhcHBsaWNhdGlvbiBvZiB0aGF0CnN5c3RlbTsgaXQg -aXMgdXAgdG8gdGhlIGF1dGhvci9kb25vciB0byBkZWNpZGUgaWYgaGUgb3Igc2hlIGlzIHdpbGxpbmcK -dG8gZGlzdHJpYnV0ZSBzb2Z0d2FyZSB0aHJvdWdoIGFueSBvdGhlciBzeXN0ZW0gYW5kIGEgbGljZW5z -ZWUgY2Fubm90CmltcG9zZSB0aGF0IGNob2ljZS4KClRoaXMgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBt -YWtlIHRob3JvdWdobHkgY2xlYXIgd2hhdCBpcyBiZWxpZXZlZCB0bwpiZSBhIGNvbnNlcXVlbmNlIG9m -IHRoZSByZXN0IG9mIHRoaXMgTGljZW5zZS4KCgogIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29y -IHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGluCmNlcnRhaW4gY291bnRyaWVzIGVpdGhl -ciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQpvcmlnaW5hbCBjb3B5 -cmlnaHQgaG9sZGVyIHdobyBwbGFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlCm1heSBh -ZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGlu -Zwp0aG9zZSBjb3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGlu -IG9yIGFtb25nCmNvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gIEluIHN1Y2ggY2FzZSwgdGhpcyBM -aWNlbnNlIGluY29ycG9yYXRlcwp0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5 -IG9mIHRoaXMgTGljZW5zZS4KCiAgOS4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVi -bGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMKb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vu -c2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4g -c3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwph -ZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCkVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRp -c3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIFByb2dyYW0Kc3BlY2lmaWVzIGEgdmVy -c2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kICJhbnkKbGF0 -ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQg -Y29uZGl0aW9ucwplaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1 -Ymxpc2hlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dyYW0gZG9l -cyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mCnRoaXMgTGljZW5zZSwgeW91IG1heSBjaG9v -c2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlv -bi4KCiAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGlu -dG8gb3RoZXIgZnJlZQpwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgZGlm -ZmVyZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCnRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0 -d2FyZSB3aGljaCBpcyBjb3B5cmlnaHRlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3 -cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKbWFrZSBleGNl -cHRpb25zIGZvciB0aGlzLiAgT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29h -bHMKb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMgb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBm -cmVlIHNvZnR3YXJlIGFuZApvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3 -YXJlIGdlbmVyYWxseS4KCgkJCSAgICBOTyBXQVJSQU5UWQoKICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JB -TSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkKRk9SIFRIRSBQ -Uk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBX -SEVOCk9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09S -IE9USEVSIFBBUlRJRVMKUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkg -T0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQKT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9U -IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZIEFORCBG -SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUwpUTyBUSEUg -UVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQg -VEhFClBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GIEFMTCBORUNF -U1NBUlkgU0VSVklDSU5HLApSRVBBSVIgT1IgQ09SUkVDVElPTi4KCiAgMTIuIElOIE5PIEVWRU5UIFVO -TEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxM -IEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5E -L09SClJFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBU -TyBZT1UgRk9SIERBTUFHRVMsCklOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRB -TCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORwpPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJ -VFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEClRPIExPU1MgT0Yg -REFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBC -WQpZT1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFU -RSBXSVRIIEFOWSBPVEhFUgpQUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFS -VFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgoKCQkg -ICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUw - - - YES - - YES - NSFont - NSParagraphStyle - - - YES - - Monaco - 1.000000e+01 - 16 - - - 4 - - YES - - 2.800000e+01 - - - 5.600000e+01 - - - 8.400000e+01 - - - 1.120000e+02 - - - 1.400000e+02 - - - 1.680000e+02 - - - 1.960000e+02 - - - 2.240000e+02 - - - 2.520000e+02 - - - 2.800000e+02 - - - 3.080000e+02 - - - 3.360000e+02 - - - 1 - - - - - - - YES - - - 6 - - - - 4.590000e+02 - 1 - - - 2916 - - 3 - MQA - - - - YES - - YES - NSBackgroundColor - NSColor - - - YES - - 6 - - selectedTextBackgroundColor - - - - 6 - - selectedTextColor - - - - - - - YES - - YES - - NSCursor - NSUnderline - - - YES - - 1 - MCAwIDEAA - - - {8, -8} - 13 - - - - - - - 6 - {465, 1e+07} - {83, 333} - - - - {{1, 1}, {459, 333}} - {{0, 24}, {459, 333}} - - - - - - {1, -1} - 0 - - 4 - - - - 256 - {{460, 1}, {15, 333}} - - YES - - _doScroller: - 8.230351e-02 - - - - 256 - {{-100, -100}, {87, 18}} - - 1 - - - 1.000000e+00 - 9.456522e-01 - - - {{20, 60}, {476, 335}} - - - 82 - - - - - - - 256 - {{418, 12}, {84, 32}} - - YES - - 67239424 - 137887744 - - - - -2038284033 - 1 - - Helvetica - 1.300000e+01 - 16 - - - - 200 - 25 - - - - {{1, 9}, {516, 415}} - - {{0, 0}, {2560, 1578}} - {213, 129} - {3.40282e+38, 3.40282e+38} - - - 15 - 2 - {{621, 903}, {714, 439}} - 1886912512 - Preferences - - - View - - - - 256 - - YES - - - 256 - - YES - - - 256 - - YES - - - 256 - {{181, 14}, {119, 20}} - - YES - - -2080244224 - 4194304 - - - - 1.000000e+01 - 2843 - - - - 6 - - textBackgroundColor - - - - 6 - - textColor - - - - - - - 256 - {{181, 224}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - Enabled - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - Disabled - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - - 1 - 3 - YES - YES - 1 - - - - - 256 - {{61, 229}, {96, 17}} - - YES - - 67239424 - 71303168 - Limit Speed: - - - 1.200000e+01 - 16 - - - - - - - - - 256 - {{181, 48}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 256 - {{14, 54}, {143, 16}} - - YES - - 67239424 - 71303168 - Change Type/Creator: - - - - - - - - - 256 - {{181, 123}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 256 - {{61, 128}, {96, 17}} - - YES - - 67239424 - 71303168 - Skip Bios Intro: - - - - - - - - - 256 - {{181, 98}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 256 - {{30, 103}, {127, 17}} - - YES - - 67239424 - 71303168 - Pause When Inactive: - - - - - - - - - 256 - {{181, 73}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 256 - {{30, 78}, {127, 17}} - - YES - - 67239424 - 71303168 - Real Time Clock: - - - - - - - - {{2, 2}, {329, 357}} - - - - {{364, 56}, {333, 377}} - - {0, 0} - - 67239424 - 0 - Emulator - - - - 3 - MCAwLjgwMDAwMDAxAA - - - - 3 - 0 - 2 - NO - - - - 256 - {{413, 364}, {108, 16}} - - YES - - 67239424 - 71303168 - GB Frame Skip: - - - - - 1 - MCAwIDAAA - - - - - - 256 - {{547, 206}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 256 - {{547, 383}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - 2 - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - 0 - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 1 - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - - 3 - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 4 - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 5 - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 2 - 3 - YES - YES - 1 - - - - - 256 - {{407, 261}, {114, 17}} - - YES - - 67239424 - 71303168 - Flash Size: - - - - - - - - - 256 - {{407, 313}, {114, 17}} - - YES - - 67239424 - 71303168 - Show Speed: - - - - - - - - - 256 - {{381, 212}, {140, 16}} - - YES - - 67239424 - 71303168 - Use Bios File: - - - - - - - - - 256 - {{547, 308}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - - 1 - 3 - YES - YES - 1 - - - - - 256 - {{407, 236}, {114, 17}} - - YES - - 67239424 - 71303168 - Remove Intros: - - - - - - - - - 256 - {{407, 338}, {114, 17}} - - YES - - 67239424 - 71303168 - Auto Frame Skip: - - - - - - - - - 256 - {{547, 358}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 256 - {{547, 231}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 256 - {{547, 333}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 256 - {{407, 388}, {114, 17}} - - YES - - 67239424 - 71303168 - GBA Frame Skip: - - - - - - - - - 256 - {{547, 256}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - 64k - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 128k - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 256 - {{393, 70}, {133, 28}} - - YES - - 67239424 - 138018816 - Select Bios File - - - -2038284033 - 1 - - - 1.100000e+01 - 16 - - - - - - 200 - 25 - - - - - 256 - {{48, 362}, {114, 17}} - - YES - - 67239424 - 71303168 - Sound Quality: - - - - - - - - - 256 - {{48, 337}, {114, 17}} - - YES - - 67239424 - 71303168 - Sound Echo: - - - - - - - - - 256 - - YES - - - 256 - {{2, 2}, {317, 140}} - - - - {{17, 272}, {321, 160}} - - - - 67239424 - 0 - Sound - - - - 3 - MCAwLjgwMDAwMDAxAA - - - - 3 - 0 - 2 - NO - - - - 256 - {{190, 332}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 256 - {{12, 312}, {150, 17}} - - YES - - 67239424 - 71303168 - Sound Low Pass Filter: - - - - - - - - - 256 - {{48, 287}, {114, 17}} - - YES - - 67239424 - 71303168 - Reverse Stereo: - - - - - - - - - 256 - {{190, 282}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 256 - {{190, 382}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - - 1 - 3 - YES - YES - 1 - - - - - 256 - {{190, 307}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 256 - {{48, 387}, {114, 17}} - - YES - - 67239424 - 71303168 - Sound: - - - - - - - - - 256 - {{190, 357}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - 22Khz - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - 44Khz - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - - 11Khz - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 1 - 3 - YES - YES - 1 - - - - - 256 - - YES - - - 256 - - YES - - - 256 - {{171, 5}, {128, 22}} - - YES - - -2076049856 - 132096 - - - -2038284033 - 1 - - - - - - 400 - 75 - - - None - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - Motion Blur - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Smart - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 256 - {{18, 10}, {126, 17}} - - YES - - 67239424 - 71303168 - Interframe Blending: - - - - - - - - {{2, 2}, {316, 158}} - - - - {{17, 92}, {320, 178}} - - - - 67239424 - 0 - Video - - - - 3 - MCAwLjgwMDAwMDAxAA - - - - 3 - 0 - 2 - NO - - - - 256 - {{190, 224}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - 1x - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - 2x - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3x - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 4x - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 256 - {{190, 149}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - Automatic - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - - 2 - 3 - YES - YES - 1 - - - - - 256 - {{190, 174}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 256 - {{48, 204}, {114, 17}} - - YES - - 67239424 - 71303168 - Video Filter: - - - - - - - - - 256 - {{190, 124}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 256 - {{48, 229}, {114, 17}} - - YES - - 67239424 - 71303168 - Video Size: - - - - - - - - - 256 - {{48, 154}, {114, 17}} - - YES - - 67239424 - 71303168 - GameBoy Border: - - - - - - - - - 256 - {{48, 179}, {114, 17}} - - YES - - 67239424 - 71303168 - Fullscreen: - - - - - - - - - 256 - {{190, 199}, {128, 22}} - - YES - - -2076049856 - 132096 - - - 109199615 - 1 - - - - - - - - 400 - 75 - - - Plain - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - OtherViews - - - YES - - - - TV Mode - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 2xSAI - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Super 2xSAI - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Super Eagle - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Pixelate - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - AdvanceMAME Scale 2x - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Simple Smoothing - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Bilinear - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Bilinear Plus - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Scanlines - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - High Quality 2x - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Low Quality 2x - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - 3 - YES - YES - 1 - - - - - 256 - {{48, 129}, {114, 17}} - - YES - - 67239424 - 71303168 - Washed Colors: - - - - - - - - - 256 - {{616, 12}, {84, 32}} - - YES - - 67239424 - 137887744 - - - - -2038284033 - 1 - - - - 200 - 25 - - - - - 256 - {{532, 12}, {84, 32}} - - YES - - 67239424 - 137887744 - Cancel - - - -2038284033 - 1 - - - - - - - - 200 - 25 - - - - - 256 - {{426, 12}, {86, 32}} - - YES - - 67239424 - 137887744 - Default - - - -2038284033 - 1 - - - - - - - - 200 - 25 - - - - - 256 - - YES - - - 256 - - YES - - - 256 - {{33, 8}, {251, 14}} - - YES - - 67239424 - 138412032 - Changes Take Effect On Next Rom Launched - - - - - - - - {{2, 2}, {317, 26}} - - - - {{17, 56}, {321, 30}} - - - - 67239424 - 0 - Box - - - - 3 - MCAwLjgwMDAwMDAxAA - - - - 3 - 0 - 0 - NO - - - {{1, 9}, {714, 439}} - - {{0, 0}, {2560, 1578}} - {213, 129} - {3.40282e+38, 3.40282e+38} - - - 15 - 2 - {{705, 577}, {313, 240}} - 1886912512 - Add Cheats... - - - View - - - - 256 - - YES - - - 256 - {{20, 200}, {273, 20}} - - YES - - -1804468671 - 4195328 - - - - YES - 1 - - - - - - - 256 - {{20, 172}, {273, 20}} - - YES - - -1804468671 - 4195328 - - - - YES - 1 - - - - - - - 256 - {{20, 144}, {273, 20}} - - YES - - -1804468671 - 4195328 - - - - YES - 1 - - - - - - - 256 - {{215, 12}, {84, 32}} - - YES - - 67239424 - 137887744 - - - - -2038284033 - 1 - - - - - - - - 200 - 25 - - - - - 256 - {{20, 116}, {273, 20}} - - YES - - -1804468671 - 4195328 - - - - YES - 1 - - - - - - - 256 - {{20, 88}, {273, 20}} - - YES - - -1804468671 - 4195328 - - - - YES - 1 - - - - - - - 256 - {{20, 60}, {273, 20}} - - YES - - -1804468671 - 4195328 - - - - YES - 1 - - - - - - {{1, 9}, {313, 240}} - - {{0, 0}, {2560, 1578}} - {213, 129} - {3.40282e+38, 3.40282e+38} - - - 15 - 2 - {{705, 577}, {313, 240}} - 1886912512 - - - - View - - - - 256 - - YES - - - 256 - {{20, 200}, {273, 20}} - - YES - - -1804468671 - 4195328 - - - - YES - 1 - - - - - - - 256 - {{20, 172}, {273, 20}} - - YES - - -1804468671 - 4195328 - - - - YES - 1 - - - - - - - 256 - {{20, 144}, {273, 20}} - - YES - - -1804468671 - 4195328 - - - - YES - 1 - - - - - - - 256 - {{215, 12}, {84, 32}} - - YES - - 67239424 - 137887744 - - - - -2038284033 - 1 - - - - - - - - 200 - 25 - - - - - 256 - {{20, 116}, {273, 20}} - - YES - - -1804468671 - 4195328 - - - - YES - 1 - - - - - - - 256 - {{20, 88}, {273, 20}} - - YES - - -1804468671 - 4195328 - - - - YES - 1 - - - - - - - 256 - {{20, 60}, {273, 20}} - - YES - - -1804468671 - 4195328 - - - - YES - 1 - - - - - - {{1, 9}, {313, 240}} - - {{0, 0}, {2560, 1578}} - {213, 129} - {3.40282e+38, 3.40282e+38} - - - CheatClass - - - MenuClass - - - 1 - 2 - {{665, 560}, {334, 305}} - 1886912512 - Configure Keys - - - View - - - - 256 - - YES - - - 256 - {{14, 216}, {84, 30}} - - YES - - 67239424 - 134217728 - Up - - - -2038284033 - 2 - - - - - - 200 - 25 - - - - - 256 - {{14, 184}, {84, 30}} - - YES - - 67239424 - 134217728 - Down - - - -2038284033 - 2 - - - - - - 200 - 25 - - - - - 256 - {{14, 152}, {84, 30}} - - YES - - 67239424 - 134217728 - Left - - - -2038284033 - 2 - - - - - - 200 - 25 - - - - - 256 - {{14, 120}, {84, 30}} - - YES - - 67239424 - 134217728 - Right - - - -2038284033 - 2 - - - - - - 200 - 25 - - - - - 256 - {{14, 88}, {84, 30}} - - YES - - 67239424 - 134217728 - A - - - -2038284033 - 2 - - - - - - 200 - 25 - - - - - 256 - {{14, 56}, {84, 30}} - - YES - - 67239424 - 134217728 - B - - - -2038284033 - 2 - - - - - - 200 - 25 - - - - - 256 - {{164, 88}, {84, 30}} - - YES - - 67239424 - 134217728 - Speed - - - -2038284033 - 2 - - - - - - 200 - 25 - - - - - 256 - {{164, 120}, {84, 30}} - - YES - - 67239424 - 134217728 - Select - - - -2038284033 - 2 - - - - - - 200 - 25 - - - - - 256 - {{164, 56}, {84, 30}} - - YES - - 67239424 - 134217728 - Capture - - - -2038284033 - 2 - - - - - - 200 - 25 - - - - - 256 - {{164, 216}, {84, 30}} - - YES - - 67239424 - 134217728 - L - - - -2038284033 - 2 - - - - - - 200 - 25 - - - - - 256 - {{164, 184}, {84, 30}} - - YES - - 67239424 - 134217728 - R - - - -2038284033 - 2 - - - - - - 200 - 25 - - - - - 256 - {{164, 152}, {84, 30}} - - YES - - 67239424 - 134217728 - Start - - - -2038284033 - 2 - - - - - - 200 - 25 - - - - - 256 - {{107, 223}, {46, 19}} - - YES - - 71433728 - 138412032 - - - - YES - - - - - - - 256 - {{107, 191}, {46, 19}} - - YES - - 71433728 - 138412032 - - - - YES - - - - - - - 256 - {{107, 159}, {46, 19}} - - YES - - 71433728 - 138412032 - - - - YES - - - - - - - 256 - {{107, 127}, {46, 19}} - - YES - - 71433728 - 138412032 - - - - YES - - - - - - - 256 - {{107, 95}, {46, 19}} - - YES - - 71433728 - 138412032 - - - - YES - - - - - - - 256 - {{107, 63}, {46, 19}} - - YES - - 71433728 - 138412032 - - - - YES - - - - - - - 256 - {{152, 12}, {84, 32}} - - YES - - 67239424 - 137887744 - - - - -2038284033 - 1 - - - - - - - - 200 - 25 - - - - - 256 - {{236, 12}, {84, 32}} - - YES - - 67239424 - 137887744 - - - - -2038284033 - 1 - - - - - - - - 200 - 25 - - - - - 256 - {{94, 260}, {149, 29}} - - YES - - 67239424 - 134217728 - Calibrate Joystick - - - -2038038273 - 2 - - - 1.300000e+01 - 16 - - - - - - 200 - 25 - - - - - 256 - {{10, 12}, {86, 32}} - - YES - - 67239424 - 134217728 - - - - -2038284033 - 1 - - - - - - 200 - 25 - - - - - 256 - {{257, 95}, {46, 19}} - - YES - - 71433728 - 138412032 - - - - YES - - - - - - - 256 - {{257, 63}, {46, 19}} - - YES - - 71433728 - 138412032 - - - - YES - - - - - - - 256 - {{257, 127}, {46, 19}} - - YES - - 71433728 - 138412032 - - - - YES - - - - - - - 256 - {{257, 223}, {46, 19}} - - YES - - 71433728 - 138412032 - - - - YES - - - - - - - 256 - {{257, 191}, {46, 19}} - - YES - - 71433728 - 138412032 - - - - YES - - - - - - - 256 - {{257, 159}, {46, 19}} - - YES - - 71433728 - 138412032 - - - - YES - - - - - - {{1, 9}, {334, 305}} - - {{0, 0}, {2560, 1578}} - {213, 129} - {3.40282e+38, 3.40282e+38} - - - ConfigClass - - - - - YES - - - hideOtherApplications: - - - - 146 - - - - hide: - - - - 152 - - - - unhideAllApplications: - - - - 153 - - - - delegate - - - - 195 - - - - performMiniaturize: - - - - 288 - - - - makeKeyAndOrderFront: - - - - 298 - - - - orderOut: - - - - 300 - - - - quit: - - - - 331 - - - - openPrefs: - - - - 473 - - - - openRomFromMenu: - - - - 591 - - - - - - - - 600 - - - - - - - - 601 - - - - useBios - - - - 1001 - - - - soundOn - - - - 1003 - - - - soundQuality - - - - 1004 - - - - soundEcho - - - - 1005 - - - - soundLowPass - - - - 1006 - - - - soundReverseStereo - - - - 1007 - - - - videoSize - - - - 1080 - - - - videoFilter - - - - 1081 - - - - autoFrameSkip - - - - 1082 - - - - biosFilePath - - - - 1083 - - - - flashSize - - - - 1084 - - - - gbaFrameSkip - - - - 1085 - - - - gbFrameSkip - - - - 1086 - - - - prefsWindow - - - - 1087 - - - - removeIntros - - - - 1088 - - - - showSpeed - - - - 1089 - - - - videoBorder - - - - 1090 - - - - videoFullscreen - - - - 1091 - - - - videoWashedColors - - - - 1092 - - - - closePrefs: - - - - 1094 - - - - closePrefsNull: - - - - 1096 - - - - selectBiosFile: - - - - 1097 - - - - throttle - - - - 1104 - - - - changeFileType - - - - 1176 - - - - paste: - - - - 1250 - - - - delete: - - - - 1251 - - - - cut: - - - - 1252 - - - - copy: - - - - 1253 - - - - selectAll: - - - - 1258 - - - - readCheatCBA: - - - - 1272 - - - - readCheatGSA: - - - - 1273 - - - - cheatWindow - - - - 1274 - - - - cheatWindowGSA - - - - 1275 - - - - cheatField - - - - 1279 - - - - cheatField2 - - - - 1280 - - - - cheatField3 - - - - 1281 - - - - cheatField4 - - - - 1282 - - - - cheatField5 - - - - 1283 - - - - cheatField6 - - - - 1284 - - - - cheatFieldGSA - - - - 1285 - - - - cheatFieldGSA2 - - - - 1286 - - - - cheatFieldGSA3 - - - - 1287 - - - - cheatFieldGSA4 - - - - 1288 - - - - cheatFieldGSA5 - - - - 1289 - - - - cheatFieldGSA6 - - - - 1290 - - - - closeRom: - - - - 1295 - - - - openHomepage: - - - - 1306 - - - - defaultPrefs: - - - - 1308 - - - - upField - - - - 1344 - - - - downField - - - - 1345 - - - - leftField - - - - 1346 - - - - rightField - - - - 1347 - - - - aField - - - - 1348 - - - - bField - - - - 1349 - - - - configWindow - - - - 1356 - - - - calibrate: - - - - 1359 - - - - pollUp: - - - - 1360 - - - - pollDown: - - - - 1361 - - - - pollLeft: - - - - 1362 - - - - pollRight: - - - - 1363 - - - - pollA: - - - - 1364 - - - - pollB: - - - - 1365 - - - - pollL: - - - - 1366 - - - - pollR: - - - - 1367 - - - - pollStart: - - - - 1368 - - - - pollSelect: - - - - 1369 - - - - pollSpeed: - - - - 1370 - - - - pollCapture: - - - - 1371 - - - - - - - - 1372 - - - - endConfig: - - - - 1374 - - - - nextKeyView - - - - 1394 - - - - - - - - 1395 - - - - - - - - 1396 - - - - - - - - 1397 - - - - - - - - 1398 - - - - - - - - 1399 - - - - - - - - 1400 - - - - - - - - 1401 - - - - - - - - 1402 - - - - - - - - 1403 - - - - interframe - - - - 1435 - - - - realtimeClock - - - - 1436 - - - - pauseWhenInactive - - - - 1437 - - - - skipBios - - - - 1438 - - - - donate: - - - - 1449 - - - - defaultKeys: - - - - 1452 - - - - calibrateButton - - - - 1459 - - - - captureField - - - - 1460 - - - - speedField - - - - 1461 - - - - selectField - - - - 1462 - - - - lField - - - - 1463 - - - - rField - - - - 1464 - - - - startField - - - - 1465 - - - - CancelButton - - - - 1469 - - - - OKButton - - - - 1470 - - - - defaultButton - - - - 1473 - - - - pauseEmulation: - - - - 200603 - - - - resetEmulation: - - - - 200604 - - - - advanceFrame: - - - - 200605 - - - - freezeState: - - - - 200608 - - - - defrostState: - - - - 200610 - - - - openCheatCBA: - - - - 200613 - - - - openCheatGSA: - - - - 200615 - - - - beginConfig: - - - - 200618 - - - - - YES - - 0 - - YES - - - - - - -2 - - - RmlsZSdzIE93bmVyA - - - -1 - - - First Responder - - - 29 - - - YES - - - - - - - - MainMenu - - - 56 - - - YES - - - - - - 57 - - - YES - - - - - - - - - - - - - - - - - 58 - - - - - 134 - - - - - 136 - - - - - 145 - - - - - 149 - - - - - 150 - - - - - 196 - - - - - 471 - - - - - 472 - - - - - 1304 - - - - - 1305 - - - - - 1448 - - - - - 284 - - - YES - - - - - - 285 - - - YES - - - - - - 283 - - - - - 317 - - - YES - - - - - - 323 - - - YES - - - - - - - 590 - - - - - 602 - - - - - 1224 - - - YES - - - - - - 1226 - - - YES - - - - - - - - - - 1231 - - - - - 1233 - - - - - 1242 - - - - - 1243 - - - - - 1248 - - - - - 194 - - - - - - 253 - - - Font Manager - - - 292 - - - YES - - - - - - - 293 - - - YES - - - - - - - - - - 294 - - - YES - - - - - - 295 - - - YES - - - - - - 525 - - - YES - - - - - - 526 - - - YES - - - - - - 594 - - - YES - - - - - - 595 - - - YES - - - - - - - 596 - - - YES - - - - - - - 597 - - - YES - - - - - - - - 598 - - - - - 599 - - - YES - - - - - - 604 - - - YES - - - - - - - 605 - - - YES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 790 - - - YES - - - - - - - - - - - - - - - - 793 - - - YES - - - - - - 800 - - - YES - - - - - - 801 - - - YES - - - - - - 805 - - - YES - - - - - - 806 - - - YES - - - - - - 807 - - - YES - - - - - - 808 - - - YES - - - - - - 809 - - - YES - - - - - - 815 - - - YES - - - - - - 819 - - - YES - - - - - - 821 - - - YES - - - - - - 822 - - - YES - - - - - - 823 - - - YES - - - - - - 830 - - - YES - - - - - - 831 - - - YES - - - - - - 869 - - - YES - - - - - - 871 - - - YES - - - - - - 872 - - - YES - - - - - 876 - - - YES - - - - - - 877 - - - YES - - - - - - 879 - - - YES - - - - - - 881 - - - YES - - - - - - 882 - - - YES - - - - - - 887 - - - YES - - - - - - 891 - - - YES - - - - - - 894 - - - YES - - - - - - 1044 - - - YES - - - - - - - 1047 - - - YES - - - - - - 1050 - - - YES - - - - - - 1052 - - - YES - - - - - - 1056 - - - YES - - - - - - 1057 - - - YES - - - - - - 1062 - - - YES - - - - - - 1071 - - - YES - - - - - - 1076 - - - YES - - - - - - 1077 - - - YES - - - - - - 1078 - - - YES - - - - - - 1093 - - - YES - - - - - - 1095 - - - YES - - - - - - 1307 - - - YES - - - - - - 1446 - - - YES - - - - - - 1184 - - - YES - - - - CheatCBA - - - 1185 - - - YES - - - - - - - - - - - - 1186 - - - YES - - - - - - 1188 - - - YES - - - - - - 1189 - - - YES - - - - - - 1191 - - - YES - - - - - - 1197 - - - YES - - - - - - 1198 - - - YES - - - - - - 1199 - - - YES - - - - - - 1210 - - - YES - - - - CheatGSA - - - 1209 - - - YES - - - - - - - - - - - - 1204 - - - YES - - - - - - 1205 - - - YES - - - - - - 1206 - - - YES - - - - - - 1207 - - - YES - - - - - - 1208 - - - YES - - - - - - 1211 - - - YES - - - - - - 1212 - - - YES - - - - - - 1268 - - - - - - 1294 - - - - - - 1330 - - - YES - - - - Configure - - - 1312 - - - YES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1309 - - - YES - - - - - - 1310 - - - YES - - - - - - 1311 - - - YES - - - - - - 1315 - - - YES - - - - - - 1316 - - - YES - - - - - - 1317 - - - YES - - - - - - 1318 - - - YES - - - - - - 1320 - - - YES - - - - - - 1321 - - - YES - - - - - - 1323 - - - YES - - - - - - 1324 - - - YES - - - - - - 1325 - - - YES - - - - - - 1326 - - - YES - - - - - - 1327 - - - YES - - - - - - 1329 - - - YES - - - - - - 1331 - - - YES - - - - - - 1332 - - - YES - - - - - - 1333 - - - YES - - - - - - 1334 - - - YES - - - - - - 1335 - - - YES - - - - - - 1337 - - - YES - - - - - - 1451 - - - YES - - - - - - 1453 - - - YES - - - - - - 1454 - - - YES - - - - - - 1455 - - - YES - - - - - - 1456 - - - YES - - - - - - 1457 - - - YES - - - - - - 1458 - - - YES - - - - - - 1343 - - - - - - 100294 - - - - - 100295 - - - - - 100525 - - - - - 100526 - - - - - 100594 - - - - - 100599 - - - - - 100793 - - - - - 100800 - - - YES - - - - - - 100801 - - - YES - - - - - - 100805 - - - - - 100806 - - - - - 100807 - - - - - 100808 - - - YES - - - - - - 100809 - - - - - 100815 - - - - - 100819 - - - YES - - - - - - 100821 - - - YES - - - - - - 100822 - - - YES - - - - - - 100823 - - - - - 100830 - - - YES - - - - - - 100831 - - - - - 100869 - - - - - 100871 - - - - - 100876 - - - YES - - - - - - 100877 - - - - - 100879 - - - - - 100881 - - - YES - - - - - - 100882 - - - YES - - - - - - 100887 - - - YES - - - - - - 100891 - - - - - 100894 - - - YES - - - - - - 101047 - - - YES - - - - - - 101050 - - - YES - - - - - - 101052 - - - YES - - - - - - 101056 - - - - - 101057 - - - YES - - - - - - 101062 - - - - - 101071 - - - - - 101076 - - - - - 101077 - - - YES - - - - - - 101078 - - - - - 101093 - - - - - 101095 - - - - - 101307 - - - - - 101186 - - - - - 101188 - - - - - 101189 - - - - - 101191 - - - - - 101197 - - - - - 101198 - - - - - 101199 - - - - - 101204 - - - - - 101205 - - - - - 101206 - - - - - 101207 - - - - - 101208 - - - - - 101211 - - - - - 101212 - - - - - 101309 - - - - - 101310 - - - - - 101311 - - - - - 101315 - - - - - 101316 - - - - - 101317 - - - - - 101318 - - - - - 101320 - - - - - 101321 - - - - - 101323 - - - - - 101324 - - - - - 101325 - - - - - 101326 - - - - - 101327 - - - - - 101329 - - - - - 101331 - - - - - 101332 - - - - - 101333 - - - - - 101334 - - - - - 101335 - - - - - 101337 - - - - - 101451 - - - - - 101453 - - - - - 101454 - - - - - 101455 - - - - - 101456 - - - - - 101457 - - - - - 101458 - - - - - 803 - - - YES - - - - - - - 818 - - - - - 811 - - - - - 797 - - - YES - - - - - - - - - - - 833 - - - - - 832 - - - - - 829 - - - - - 804 - - - - - 794 - - - - - 788 - - - - - 810 - - - YES - - - - - - - 827 - - - - - 825 - - - - - 802 - - - YES - - - - - - - - - - - 828 - - - - - 824 - - - - - 820 - - - - - 817 - - - - - 812 - - - - - 796 - - - - - 795 - - - YES - - - - - - - 816 - - - - - 798 - - - - - 791 - - - YES - - - - - - - 834 - - - - - 814 - - - - - 799 - - - YES - - - - - - - 813 - - - - - 792 - - - - - 870 - - - YES - - - - - - - 884 - - - - - 880 - - - - - 889 - - - YES - - - - - - - 888 - - - - - 868 - - - - - 893 - - - YES - - - - - - - 886 - - - - - 878 - - - - - 873 - - - YES - - - - - - - 875 - - - - - 867 - - - - - 885 - - - YES - - - - - - - - 892 - - - - - 890 - - - - - 874 - - - - - 1048 - - - YES - - - - - - - - - 1474 - - - - - 1067 - - - - - 1065 - - - - - 1055 - - - - - 1063 - - - YES - - - - - - - - 1411 - - - - - 1079 - - - - - 1073 - - - - - 1064 - - - YES - - - - - - - 1075 - - - - - 1069 - - - - - 1049 - - - YES - - - - - - - 1072 - - - - - 1054 - - - - - 1070 - - - YES - - - - - - - - - - - - - - - - - - - 1467 - - - - - 1466 - - - - - 1428 - - - - - 1427 - - - - - 1074 - - - - - 1068 - - - - - 1066 - - - - - 1061 - - - - - 1060 - - - - - 1059 - - - - - 1058 - - - - - 1053 - - - - - 1051 - - - - - 1046 - - - - - 100597 - - - - - 200597 - - - - - -3 - - - Application - - - 1002 - - - YES - - - - - - 101002 - - - - - 1098 - - - YES - - - - - - 101098 - - - YES - - - - - - 1099 - - - YES - - - - - - - 1100 - - - - - 1102 - - - - - 1103 - - - YES - - - - - - 101103 - - - - - 1171 - - - YES - - - - - - 101171 - - - YES - - - - - - 1173 - - - YES - - - - - - - 1172 - - - - - 1174 - - - - - 1175 - - - YES - - - - - - 101175 - - - - - 1407 - - - YES - - - - - - 101407 - - - YES - - - - - - 1405 - - - YES - - - - - - - 1408 - - - - - 1409 - - - - - 1410 - - - YES - - - - - - 101410 - - - - - 1418 - - - YES - - - - - - 101418 - - - YES - - - - - - 1417 - - - YES - - - - - - - 1419 - - - - - 1420 - - - - - 1421 - - - YES - - - - - - 101421 - - - - - 1424 - - - YES - - - - - - 101424 - - - YES - - - - - - 1423 - - - YES - - - - - - - 1422 - - - - - 1425 - - - - - 1426 - - - YES - - - - - - 101426 - - - - - 1431 - - - YES - - - - - - 101431 - - - YES - - - - - - 1432 - - - YES - - - - - - - - 1429 - - - - - 1430 - - - - - 1434 - - - - - 1433 - - - YES - - - - - - 101433 - - - - - 1447 - - - YES - - - - - - 101447 - - - - - 200598 - - - YES - - - - - - 200599 - - - YES - - - - - - - - - - - - - - - - - - 200600 - - - - - 200601 - - - - - 200602 - - - - - 200606 - - - - - 200607 - - - - - 200609 - - - - - 200611 - - - - - 200612 - - - - - 200614 - - - - - 200616 - - - - - 200617 - - - - - 200619 - - - - - 200620 - - - - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - 1002.IBPluginDependency - 1002.ImportedFromIB2 - 100597.IBShouldRemoveOnLegacySave - 1044.IBPluginDependency - 1044.ImportedFromIB2 - 1046.IBPluginDependency - 1046.ImportedFromIB2 - 1047.IBPluginDependency - 1047.ImportedFromIB2 - 1048.IBPluginDependency - 1048.ImportedFromIB2 - 1049.IBPluginDependency - 1049.ImportedFromIB2 - 1050.IBPluginDependency - 1050.ImportedFromIB2 - 1051.IBPluginDependency - 1051.ImportedFromIB2 - 1052.IBPluginDependency - 1052.ImportedFromIB2 - 1053.IBPluginDependency - 1053.ImportedFromIB2 - 1054.IBPluginDependency - 1054.ImportedFromIB2 - 1055.IBPluginDependency - 1055.ImportedFromIB2 - 1056.IBPluginDependency - 1056.ImportedFromIB2 - 1057.IBPluginDependency - 1057.ImportedFromIB2 - 1058.IBPluginDependency - 1058.ImportedFromIB2 - 1059.IBPluginDependency - 1059.ImportedFromIB2 - 1060.IBPluginDependency - 1060.ImportedFromIB2 - 1061.IBPluginDependency - 1061.ImportedFromIB2 - 1062.IBPluginDependency - 1062.ImportedFromIB2 - 1063.IBPluginDependency - 1063.ImportedFromIB2 - 1064.IBPluginDependency - 1064.ImportedFromIB2 - 1065.IBPluginDependency - 1065.ImportedFromIB2 - 1066.IBPluginDependency - 1066.ImportedFromIB2 - 1067.IBPluginDependency - 1067.ImportedFromIB2 - 1068.IBPluginDependency - 1068.ImportedFromIB2 - 1069.IBPluginDependency - 1069.ImportedFromIB2 - 1070.IBPluginDependency - 1070.ImportedFromIB2 - 1071.IBPluginDependency - 1071.ImportedFromIB2 - 1072.IBPluginDependency - 1072.ImportedFromIB2 - 1073.IBPluginDependency - 1073.ImportedFromIB2 - 1074.IBPluginDependency - 1074.ImportedFromIB2 - 1075.IBPluginDependency - 1075.ImportedFromIB2 - 1076.IBPluginDependency - 1076.ImportedFromIB2 - 1077.IBPluginDependency - 1077.ImportedFromIB2 - 1078.IBPluginDependency - 1078.ImportedFromIB2 - 1079.IBPluginDependency - 1079.ImportedFromIB2 - 1093.IBPluginDependency - 1093.ImportedFromIB2 - 1095.IBPluginDependency - 1095.ImportedFromIB2 - 1098.IBPluginDependency - 1098.ImportedFromIB2 - 1099.IBPluginDependency - 1099.ImportedFromIB2 - 1100.IBPluginDependency - 1100.ImportedFromIB2 - 1102.IBPluginDependency - 1102.ImportedFromIB2 - 1103.IBPluginDependency - 1103.ImportedFromIB2 - 1171.IBPluginDependency - 1171.ImportedFromIB2 - 1172.IBPluginDependency - 1172.ImportedFromIB2 - 1173.IBPluginDependency - 1173.ImportedFromIB2 - 1174.IBPluginDependency - 1174.ImportedFromIB2 - 1175.IBPluginDependency - 1175.ImportedFromIB2 - 1184.IBPluginDependency - 1184.ImportedFromIB2 - 1184.windowTemplate.hasMaxSize - 1184.windowTemplate.hasMinSize - 1184.windowTemplate.maxSize - 1184.windowTemplate.minSize - 1185.IBPluginDependency - 1185.ImportedFromIB2 - 1186.IBPluginDependency - 1186.ImportedFromIB2 - 1188.IBPluginDependency - 1188.ImportedFromIB2 - 1189.IBPluginDependency - 1189.ImportedFromIB2 - 1191.IBPluginDependency - 1191.ImportedFromIB2 - 1197.IBPluginDependency - 1197.ImportedFromIB2 - 1198.IBPluginDependency - 1198.ImportedFromIB2 - 1199.IBPluginDependency - 1199.ImportedFromIB2 - 1204.IBPluginDependency - 1204.ImportedFromIB2 - 1205.IBPluginDependency - 1205.ImportedFromIB2 - 1206.IBPluginDependency - 1206.ImportedFromIB2 - 1207.IBPluginDependency - 1207.ImportedFromIB2 - 1208.IBPluginDependency - 1208.ImportedFromIB2 - 1209.IBPluginDependency - 1209.ImportedFromIB2 - 1210.IBPluginDependency - 1210.ImportedFromIB2 - 1210.windowTemplate.hasMaxSize - 1210.windowTemplate.hasMinSize - 1210.windowTemplate.maxSize - 1210.windowTemplate.minSize - 1211.IBPluginDependency - 1211.ImportedFromIB2 - 1212.IBPluginDependency - 1212.ImportedFromIB2 - 1224.IBPluginDependency - 1224.ImportedFromIB2 - 1226.IBPluginDependency - 1226.ImportedFromIB2 - 1226.editorWindowContentRectSynchronizationRect - 1231.IBPluginDependency - 1231.ImportedFromIB2 - 1233.IBPluginDependency - 1233.ImportedFromIB2 - 1242.IBPluginDependency - 1242.ImportedFromIB2 - 1243.IBPluginDependency - 1243.ImportedFromIB2 - 1248.IBPluginDependency - 1248.ImportedFromIB2 - 1268.IBPluginDependency - 1268.ImportedFromIB2 - 1294.IBPluginDependency - 1294.ImportedFromIB2 - 1304.IBPluginDependency - 1304.ImportedFromIB2 - 1305.IBPluginDependency - 1305.ImportedFromIB2 - 1307.IBPluginDependency - 1307.ImportedFromIB2 - 1309.IBPluginDependency - 1309.ImportedFromIB2 - 1310.IBPluginDependency - 1310.ImportedFromIB2 - 1311.IBPluginDependency - 1311.ImportedFromIB2 - 1312.IBPluginDependency - 1312.ImportedFromIB2 - 1315.IBPluginDependency - 1315.ImportedFromIB2 - 1316.IBPluginDependency - 1316.ImportedFromIB2 - 1317.IBPluginDependency - 1317.ImportedFromIB2 - 1318.IBPluginDependency - 1318.ImportedFromIB2 - 1320.IBPluginDependency - 1320.ImportedFromIB2 - 1321.IBPluginDependency - 1321.ImportedFromIB2 - 1323.IBPluginDependency - 1323.ImportedFromIB2 - 1324.IBPluginDependency - 1324.ImportedFromIB2 - 1325.IBPluginDependency - 1325.ImportedFromIB2 - 1326.IBPluginDependency - 1326.ImportedFromIB2 - 1327.IBPluginDependency - 1327.ImportedFromIB2 - 1329.IBPluginDependency - 1329.ImportedFromIB2 - 1330.IBPluginDependency - 1330.ImportedFromIB2 - 1330.windowTemplate.hasMaxSize - 1330.windowTemplate.hasMinSize - 1330.windowTemplate.maxSize - 1330.windowTemplate.minSize - 1331.IBPluginDependency - 1331.ImportedFromIB2 - 1332.IBPluginDependency - 1332.ImportedFromIB2 - 1333.IBPluginDependency - 1333.ImportedFromIB2 - 1334.IBPluginDependency - 1334.ImportedFromIB2 - 1335.IBPluginDependency - 1335.ImportedFromIB2 - 1337.IBPluginDependency - 1337.ImportedFromIB2 - 134.IBPluginDependency - 134.ImportedFromIB2 - 1343.IBPluginDependency - 1343.ImportedFromIB2 - 136.IBPluginDependency - 136.ImportedFromIB2 - 1405.IBPluginDependency - 1405.ImportedFromIB2 - 1407.IBPluginDependency - 1407.ImportedFromIB2 - 1408.IBPluginDependency - 1408.ImportedFromIB2 - 1409.IBPluginDependency - 1409.ImportedFromIB2 - 1410.IBPluginDependency - 1410.ImportedFromIB2 - 1411.IBPluginDependency - 1411.ImportedFromIB2 - 1417.IBPluginDependency - 1417.ImportedFromIB2 - 1418.IBPluginDependency - 1418.ImportedFromIB2 - 1419.IBPluginDependency - 1419.ImportedFromIB2 - 1420.IBPluginDependency - 1420.ImportedFromIB2 - 1421.IBPluginDependency - 1421.ImportedFromIB2 - 1422.IBPluginDependency - 1422.ImportedFromIB2 - 1423.IBPluginDependency - 1423.ImportedFromIB2 - 1424.IBPluginDependency - 1424.ImportedFromIB2 - 1425.IBPluginDependency - 1425.ImportedFromIB2 - 1426.IBPluginDependency - 1426.ImportedFromIB2 - 1427.IBPluginDependency - 1427.ImportedFromIB2 - 1428.IBPluginDependency - 1428.ImportedFromIB2 - 1429.IBPluginDependency - 1429.ImportedFromIB2 - 1430.IBPluginDependency - 1430.ImportedFromIB2 - 1431.IBPluginDependency - 1431.ImportedFromIB2 - 1432.IBPluginDependency - 1432.ImportedFromIB2 - 1433.IBPluginDependency - 1433.ImportedFromIB2 - 1434.IBPluginDependency - 1434.ImportedFromIB2 - 1446.IBPluginDependency - 1446.ImportedFromIB2 - 1447.IBPluginDependency - 1447.ImportedFromIB2 - 1448.IBPluginDependency - 1448.ImportedFromIB2 - 145.IBPluginDependency - 145.ImportedFromIB2 - 1451.IBPluginDependency - 1451.ImportedFromIB2 - 1453.IBPluginDependency - 1453.ImportedFromIB2 - 1454.IBPluginDependency - 1454.ImportedFromIB2 - 1455.IBPluginDependency - 1455.ImportedFromIB2 - 1456.IBPluginDependency - 1456.ImportedFromIB2 - 1457.IBPluginDependency - 1457.ImportedFromIB2 - 1458.IBPluginDependency - 1458.ImportedFromIB2 - 1466.IBPluginDependency - 1466.ImportedFromIB2 - 1467.IBPluginDependency - 1467.ImportedFromIB2 - 1474.IBPluginDependency - 1474.ImportedFromIB2 - 149.IBPluginDependency - 149.ImportedFromIB2 - 150.IBPluginDependency - 150.ImportedFromIB2 - 194.IBPluginDependency - 194.ImportedFromIB2 - 196.IBPluginDependency - 196.ImportedFromIB2 - 200597.IBShouldRemoveOnLegacySave - 200598.IBPluginDependency - 200599.IBPluginDependency - 200599.editorWindowContentRectSynchronizationRect - 200600.IBPluginDependency - 200601.IBPluginDependency - 200601.ImportedFromIB2 - 200602.IBPluginDependency - 200602.ImportedFromIB2 - 200606.IBPluginDependency - 200607.IBPluginDependency - 200607.ImportedFromIB2 - 200609.IBPluginDependency - 200609.ImportedFromIB2 - 200611.IBPluginDependency - 200612.IBPluginDependency - 200612.ImportedFromIB2 - 200614.IBPluginDependency - 200614.ImportedFromIB2 - 200616.IBPluginDependency - 200617.IBPluginDependency - 200617.ImportedFromIB2 - 200619.IBPluginDependency - 200620.IBPluginDependency - 253.IBPluginDependency - 253.ImportedFromIB2 - 283.IBPluginDependency - 283.ImportedFromIB2 - 284.IBPluginDependency - 284.ImportedFromIB2 - 285.IBPluginDependency - 285.ImportedFromIB2 - 285.editorWindowContentRectSynchronizationRect - 29.IBPluginDependency - 29.ImportedFromIB2 - 29.editorWindowContentRectSynchronizationRect - 292.IBPluginDependency - 292.ImportedFromIB2 - 292.windowTemplate.hasMaxSize - 292.windowTemplate.hasMinSize - 292.windowTemplate.maxSize - 292.windowTemplate.minSize - 293.IBPluginDependency - 293.ImportedFromIB2 - 294.IBPluginDependency - 294.ImportedFromIB2 - 295.IBPluginDependency - 295.ImportedFromIB2 - 317.IBPluginDependency - 317.ImportedFromIB2 - 323.IBPluginDependency - 323.ImportedFromIB2 - 323.editorWindowContentRectSynchronizationRect - 471.IBPluginDependency - 471.ImportedFromIB2 - 472.IBPluginDependency - 472.ImportedFromIB2 - 525.IBPluginDependency - 525.ImportedFromIB2 - 526.IBPluginDependency - 526.ImportedFromIB2 - 56.IBPluginDependency - 56.ImportedFromIB2 - 57.IBPluginDependency - 57.ImportedFromIB2 - 57.editorWindowContentRectSynchronizationRect - 58.IBPluginDependency - 58.ImportedFromIB2 - 590.IBPluginDependency - 590.ImportedFromIB2 - 594.IBPluginDependency - 594.ImportedFromIB2 - 595.IBPluginDependency - 595.ImportedFromIB2 - 595.windowTemplate.hasMaxSize - 595.windowTemplate.hasMinSize - 595.windowTemplate.maxSize - 595.windowTemplate.minSize - 596.IBPluginDependency - 596.ImportedFromIB2 - 597.IBPluginDependency - 597.ImportedFromIB2 - 598.IBPluginDependency - 598.ImportedFromIB2 - 599.IBPluginDependency - 599.ImportedFromIB2 - 602.IBPluginDependency - 602.ImportedFromIB2 - 604.IBPluginDependency - 604.ImportedFromIB2 - 604.windowTemplate.hasMaxSize - 604.windowTemplate.hasMinSize - 604.windowTemplate.maxSize - 604.windowTemplate.minSize - 605.IBPluginDependency - 605.ImportedFromIB2 - 788.IBPluginDependency - 788.ImportedFromIB2 - 790.IBPluginDependency - 790.ImportedFromIB2 - 791.IBPluginDependency - 791.ImportedFromIB2 - 792.IBPluginDependency - 792.ImportedFromIB2 - 793.IBPluginDependency - 793.ImportedFromIB2 - 794.IBPluginDependency - 794.ImportedFromIB2 - 795.IBPluginDependency - 795.ImportedFromIB2 - 796.IBPluginDependency - 796.ImportedFromIB2 - 797.IBPluginDependency - 797.ImportedFromIB2 - 798.IBPluginDependency - 798.ImportedFromIB2 - 799.IBPluginDependency - 799.ImportedFromIB2 - 800.IBPluginDependency - 800.ImportedFromIB2 - 801.IBPluginDependency - 801.ImportedFromIB2 - 802.IBPluginDependency - 802.ImportedFromIB2 - 803.IBPluginDependency - 803.ImportedFromIB2 - 804.IBPluginDependency - 804.ImportedFromIB2 - 805.IBPluginDependency - 805.ImportedFromIB2 - 806.IBPluginDependency - 806.ImportedFromIB2 - 807.IBPluginDependency - 807.ImportedFromIB2 - 808.IBPluginDependency - 808.ImportedFromIB2 - 809.IBPluginDependency - 809.ImportedFromIB2 - 810.IBPluginDependency - 810.ImportedFromIB2 - 811.IBPluginDependency - 811.ImportedFromIB2 - 812.IBPluginDependency - 812.ImportedFromIB2 - 813.IBPluginDependency - 813.ImportedFromIB2 - 814.IBPluginDependency - 814.ImportedFromIB2 - 815.IBPluginDependency - 815.ImportedFromIB2 - 816.IBPluginDependency - 816.ImportedFromIB2 - 817.IBPluginDependency - 817.ImportedFromIB2 - 818.IBPluginDependency - 818.ImportedFromIB2 - 819.IBPluginDependency - 819.ImportedFromIB2 - 820.IBPluginDependency - 820.ImportedFromIB2 - 821.IBPluginDependency - 821.ImportedFromIB2 - 822.IBPluginDependency - 822.ImportedFromIB2 - 823.IBPluginDependency - 823.ImportedFromIB2 - 824.IBPluginDependency - 824.ImportedFromIB2 - 825.IBPluginDependency - 825.ImportedFromIB2 - 827.IBPluginDependency - 827.ImportedFromIB2 - 828.IBPluginDependency - 828.ImportedFromIB2 - 829.IBPluginDependency - 829.ImportedFromIB2 - 830.IBPluginDependency - 830.ImportedFromIB2 - 831.IBPluginDependency - 831.ImportedFromIB2 - 832.IBPluginDependency - 832.ImportedFromIB2 - 833.IBPluginDependency - 833.ImportedFromIB2 - 834.IBPluginDependency - 834.ImportedFromIB2 - 867.IBPluginDependency - 867.ImportedFromIB2 - 868.IBPluginDependency - 868.ImportedFromIB2 - 869.IBPluginDependency - 869.ImportedFromIB2 - 870.IBPluginDependency - 870.ImportedFromIB2 - 871.IBPluginDependency - 871.ImportedFromIB2 - 872.IBPluginDependency - 872.ImportedFromIB2 - 873.IBPluginDependency - 873.ImportedFromIB2 - 874.IBPluginDependency - 874.ImportedFromIB2 - 875.IBPluginDependency - 875.ImportedFromIB2 - 876.IBPluginDependency - 876.ImportedFromIB2 - 877.IBPluginDependency - 877.ImportedFromIB2 - 878.IBPluginDependency - 878.ImportedFromIB2 - 879.IBPluginDependency - 879.ImportedFromIB2 - 880.IBPluginDependency - 880.ImportedFromIB2 - 881.IBPluginDependency - 881.ImportedFromIB2 - 882.IBPluginDependency - 882.ImportedFromIB2 - 884.IBPluginDependency - 884.ImportedFromIB2 - 885.IBPluginDependency - 885.ImportedFromIB2 - 886.IBPluginDependency - 886.ImportedFromIB2 - 887.IBPluginDependency - 887.ImportedFromIB2 - 888.IBPluginDependency - 888.ImportedFromIB2 - 889.IBPluginDependency - 889.ImportedFromIB2 - 890.IBPluginDependency - 890.ImportedFromIB2 - 891.IBPluginDependency - 891.ImportedFromIB2 - 892.IBPluginDependency - 892.ImportedFromIB2 - 893.IBPluginDependency - 893.ImportedFromIB2 - 894.IBPluginDependency - 894.ImportedFromIB2 - - - YES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {3.40282e+38, 3.40282e+38} - {213, 107} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{871, 790}, {140, 103}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{915, 670}, {318, 223}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{984, 870}, {143, 23}} - - - {{663, 893}, {430, 20}} - - - - - - - - - - - - - - - - - {{829, 850}, {165, 43}} - - - - - - - - - - - - - {{675, 690}, {258, 203}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - YES - - YES - - - YES - - - - - YES - - YES - - - YES - - - - 200620 - - - - YES - - - - - YES - - YES - - - YES - - - - YES - - YES - - - YES - - - - IBUserSource - - - - - - NSObject - - YES - - YES - - - - - YES - id - - - - - YES - - YES - - - YES - - - - - - - - - MenuClass - - - YES - - YES - advanceFrame: - closeRom: - pauseEmulation: - resetEmulation: - toggleFullscreen: - - - YES - id - - - - - - - - YES - - YES - - - YES - - - - IBProjectSource - ../src/macosx/MainClass.h - - - - - - - YES - - YES - - - - - YES - - - - - - YES - - YES - - - YES - - - - - - - - - ConfigClass - - - YES - - YES - beginConfig: - calibrate: - endConfig: - pollA: - pollB: - pollCapture: - pollDown: - pollL: - pollLeft: - pollR: - pollRight: - pollSelect: - pollSpeed: - pollStart: - pollUp: - - - YES - - - - - - - - - - - - - - - - - - - YES - - YES - CancelButton - OKButton - aField - bField - calibrateButton - captureField - configWindow - defaultButton - downField - lField - leftField - noteWindow - rField - rightField - selectField - speedField - startField - upField - - - YES - NSButton - - NSTextField - - - - - - - - - - - - - - - - - - - - ../src/macosx/MainClass.h - - - - CheatClass - - - YES - - YES - openCheatCBA: - openCheatGSA: - readCheatCBA: - readCheatGSA: - - - YES - - - - - - - - YES - - YES - cheatField - cheatField2 - cheatField3 - cheatField4 - cheatField5 - cheatField6 - cheatFieldGSA - cheatFieldGSA2 - cheatFieldGSA3 - cheatFieldGSA4 - cheatFieldGSA5 - cheatFieldGSA6 - cheatMenu - cheatMenuCBA - cheatMenuGSA - cheatWindow - cheatWindowGSA - - - YES - - - - - - - - - - - - - NSMenu - NSMenuItem - - - - - - - - ../src/macosx/MainClass.h - - - - - - - YES - - YES - - - YES - - - - YES - - YES - - - YES - - - - - - - - - - - - YES - - YES - - - - - - - - YES - - - - - - - - - YES - - YES - - - YES - - - - - - - - - SDLMain - - - YES - - YES - changeCreator: - changeSaveCreator: - changeSgmCreator: - closePrefs: - closePrefsNull: - openPrefs: - openRomFromMenu: - quit: - selectBiosFile: - - - YES - char - char - char - - - - - - - - - - YES - - YES - autoFrameSkip - biosFilePath - changeFileType - flashSize - gbFrameSkip - gbaFrameSkip - interframe - pauseWhenInactive - prefsWindow - realtimeClock - removeIntros - showSpeed - skipBios - soundEcho - soundLowPass - soundOn - soundQuality - soundReverseStereo - throttle - useBios - videoBorder - videoFilter - videoFullscreen - videoSize - videoWashedColors - - - YES - NSPopUpButton - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ../src/macosx/MainClass.h - - - - - 0 - ../../VBA-M.xcodeproj - 3 - - YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA -AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEIKwALAAwAMQA1ADkAQABD -AEQASABMAMMAywDOAM8A3QDjAOQA+AD5AQEBAgEFAQ8BEAERARYBGAEcASABJgEnASsBMAE3ATgBQAFH -AUgBUAFRAVYBWQFaAWEBZgFnAYYBiwGNAY8BowGoAakBrgGvAbABswG3AbgBuQG7Ab4BwwHMAbgBzQHR -AdMB2AHcAd0B4gHpAOMB7gH2Af0B/gIGAgsCEgITAiACIQImAikCKgIsAi4CMAIyAjMCNgI7AkICRwJI -AlMCVAJXAlkCXAJdAl4CYwJ6AnsCfAJ9AoACigH9ApECmQKgAqECqQKwArECuQK6ArwCvQK+Ar8CwgLD -AscCzgLSAtMC1ALVAtkC4ALhAuIC4wLoAu8C8AL4AvkC+wL8AwEDCAMJAxMDGAMZAxwDIQMiAyUDJgMr -AywDMQM4AzkDRQNHA0kDUgG4A1YDWANdAbgDZgNnA2wBNwNzA3sDfAOBA4YDhwOMA40DkgOZA5oDogOk -A6YDpwOsA60DsgO5A70DvgO/A8IDwwPEA8kD0APVA9YD1wPcA+MD6QPqA/YD+AP6BAMBuAQHBAkEDgG4 -BBcEGAQdBCQEJQQtBC4EMwQ0BDkEQARBBEkESgRPBFYEVwRYBFkEXgRlBGYEbgRvBHEEcgR3BH4EfwSH -BIgEjQSUBJoEmwSnBKkEsgS2AbgEtwS5BL8EyAG4BMkE0gG4BNME1ATZBOAE4QTuBPAE8gT7AbgE/wUB -BQYBuAUPBRAFFAUbBSAFIQUpBSoFKwUwBTcFOAVEBUYFSAVRAbgFVQVXBVwBuAVlBWYFawVyBXMFdAV1 -BXoFgQWCBYoFiwWQBZcFmAWgBaEFpgWtBa4FugW8Bb4FxwXLAbgFzAXOBdQF3QG4Bd4F5wG4BegF6QXu -AUcF9QX9Bf4GAwYKBgsGFwYZBhsGJAG4BigGKgYvAbgGOAY5Bj4CegZIBkoGVAKgBlsGYwISBmoGcgZ0 -BnYCsAZ9ArkCvAK9Ar4GhQaGBosGkgaTBpQGlQaaBpsGoAalBqwGrQa1BrYGuAa5Br4GxQbGBs4GzwbR -BtIG1wbeBt8G5wbpBusG7AbwBvcG+Ab5BvoG/wcEBwkHEwcUBxUHFwdEB1YHWgdoB28HcAd5B34HgweE -B4sHjAeYB5oHnAelAbgHqQerB7ABuAe5B8AHwQfJB8oH0QfSB94H4AfiB+sBuAfvB/EH9gG4B/8IBggH -CA4IDwgWCBcIHggfCCYIJwgzCDUINwhAAbgIRAhGCEsBuAhUCFsIXAhjCGQIawhsCHgIegh8CIUBuAiJ -CIsIkAG4CJkIoAihCKgIqQiqCKsIrAiyCLMItgi5CMAIwQjICMkI0AjRCN0I3wjhCOoI7gG4CO8I8Qj6 -CQMBuAkECQ0BuAkOCRcBuAkYCSEBuAkiCSsBuAksCTMJNAk7CTwJQwlECUsJTAlTCVQJWwlcCWMJZAlw -CXIJdAl9AbgJgQmDCYgBuAmRCZgJmQmgCaEJqAmpCbAJsQm4CbkJxQnHCckJ0gG4CdYJ2AnhAbgJ6gG4 -CfMBuAn8AbgKBQG4Cg4KFQoWCh0KHgolCiYKMgo0CjYKPwpDAbgKRApGCksKVAG4ClUKXApdCmYKZwpq -CmwKcwp0CnsKfAqDCoQKiwqMCpYKmgqfCqAKoQqnCqgKqgqxCrIKvgrACsIKywG4Cs8K0QrWAbgK3wrm -CucK7grvCvYK9wr+Cv8LBgsHCxMLFQsXCyABuAskCyYLKwG4CzQLOws8C0MLRAtOC1ILVwteC18LZgtn -C2gLaQtvC3ALcgt5C3oLhguIC4oLkwuXAbgLmAuaC6ELqgG4C6sLtAG4C7ULvgG4C78LxgvHC9ML1QvX -C+AL5AG4C+UL5wvtAbgL9gG4C/8MBgwHDBMMFQwXDCABuAwkDCYMKwG4DDQMOww8DEMMRAxLDEwMWAxa -DFwMZQG4DGkMawxwAbgMeQyADIEMiAyJDJAMkQyYDJkMoAyhDKgMqQywDLEMvQy/DMEMygzOAbgMzwzR -DOIM6wG4DOwM9QG4DPYM/wG4DQANCQG4DQoNEwG4DRQBuA0dDSYBuA0nDTABuA0xDToBuA07DUQBuA1F -DU4BuA1PDVgBuA1ZDWIBuA1jDWoNaw1yDXMNeg17DYMNig2LDZMNlA2WDZgNog2mDawNsA23DbgNvw3A -DcENwg3IDckNywK8Ar0Cvg3MDc0N0g3ZDdoN2w3gDecN6A3pDe4N9Q32Df4N/w4BDgIOBw4IDg0OFA4V -Dh0OHw4hDiIOJw4oDi0OLg4zDjQOOQ5DDkQORQ5HDmYObQ5uDnYOdw55DoAOgQ6JDooOjA6TDpQOnA6d -Dp8Opg6nDq8OsA6yDrkOug7CDsMOxQ7MDs0O1Q7WDtgO3w7gDugO6Q7rDvIO8w77DvwO/g8FDwYPDg8V -DxYPHg8lDyYPLg81DzYPPg9FD0YPTg9VD1YPXgK8Ar0Cvg9fD2APZQ9mD2sPbA9wD3cPeA95D34Pfw+E -D4UPig+LD5APkQ+WD5cPmw+iD6MPpA+lD6oPqw+wD7EPtg+9D74Pvw/AD8UPxg/LD8wP0Q/SD9cP2A/d -D94P4w/kD+kP8A/0D/UP9g/3D/sQAhAHEAgQCRAKEA8QEBAVEBwQHRAeECMQKBApEC4QLxA0EDsQPBBG -EEcQSBBKEFIQWRBaEGEQYhBmEHEQehB7EHwQfRB+EH8QgBCBEIsQjxCQEJMQlhCdEJ4QphCnEK4QrxC3 -ELgQugK8Ar0CvhC7ELwQwRDCEMcQyBDNEM4Q0xDYEN8Q4BDhEOIQ5xDoEOwQ8xD4EPkRAREGEQ0RDhEP -ERARFREWERsRHBEhESYRLREuES8RNBE1EToROxFAEUcRSBFJEUoRTxFWEVcRWBFdEV4RYxFkEWkRbhFv -EXQRdRF6EXsRgBGHEYgRiRGOEZgRmRGaEZwRoRGwEbYRyBHMEd0R6xHsEe0R7hHvEfAR8RHyEfsSAxIJ -EgwSFQEEEhYSHBIrEi8SMhI1EjgSOxI+EkESRBJHEkoSTRJQElMSVRJXEloSWxJeEmISZhJoEmoSeQDm -AQYSgRKGEocSjBKNEpcRuAD1EpgSnhKfEqESpBKnEqgSqRKsEq0SrhKxErIStRK/EsASwRLEEs4SzxLQ -EtMCvAK9Ar4S1BLZEtoS3xLgEuUS5hLrEvAS8RL2EvcS/BMDEwQTBRMKEwsUehSFFIgUjRSXFJwUnRSe -FKAUpBSlFIcUnRSuFLcUuhTCADgUxRTOFNcUnRTYFOcU8BTxFPkU+hT7FQsVFBUdFSYVLxS5FJ0VOBVA -FJ0VSRVKABkVTRa8GCwZnBmdGZ4ZnxmgGaEZohmjGaQZpRmmGacZqBmpGaoZqxmsGa0ZrhmvGbAZsRmy -GbMZtBm1GbYZtxm4GbkZuhm7GbwZvRm+Gb8ZwBnBGcIZwxnEGcUZxhnHGcgZyRnKGcsZzBnNGc4ZzxnQ -GdEZ0hnTGdQZ1RnWGdcZ2BnZGdoZ2xncGd0Z3hnfGeAZ4RniGeMZ5BnlGeYZ5xnoGekZ6hnrGewZ7Rnu -Ge8Z8BnxGfIZ8xn0GfUZ9hn3GfgZ+Rn6GfsZ/Bn9Gf4Z/xoAGgEaAhoDGgQaBRoGGgcaCBoJGgoaCxoM -Gg0aDhoPGhAaERoSGhMaFBoVGhYaFxoYGhkaGhobGhwaHRoeGh8aIBohGiIaIxokGiUaJhonGigaKRoq -GisaLBotGi4aLxowGjEaMhozGjQaNRo2GjcaOBo5GjoaOxo8Gj0aPho/GkAaQRpCGkMaRBpFGkYaRxpI -GkkaShpLGkwaTRpOGk8aUBpRGlIaUxpUGlUaVhpXGlgaWRpaGlsaXBpdGl4aXxpgGmEaYhpjGmQaZRpm -GmcaaBppGmoaaxpsGm0abhpvGnAacRpyGnMadBp1GnYadxp4Gnkaehp7GnwafRp+Gn8agBqBGoIagxqE -GoUahhqHGogaiRqKGosajBqNGo4ajxqQGpEakhqTGpQalRqWGpcamBqZGpoamxqcGp0anhqfGqAaoRqi -GqMapBqlGqYapxqoGqkaqhqrGqwarRquGq8asBqxGrIasxq0GrUathq3GrgauRq6GrsavBq9Gr4avxrA -GsEawhrDGsQaxRrGGscayBrJGsoayxrMGs0azhrPGtAa0RrSGtMa1BrVGtYa1xrYGtka2hrbGtwa3Rre -Gt8a4BrhGuIa4xrkGuUa5hrnGuga6RrqGusa7BrtGu4a7xrwGvEa8hrzGvQa9Rr2Gvca+Br5Gvoa+xr8 -Gv0a/hr/GwAbARsCGwUbCBzsHtAe0R7SHtMe1B7VHtYe1x7YHtke2h7bHtwe3R7eHt8e4B7hHuIe4x7k -HuUe5h7nHuge6R7qHuse7B7tHu4e7x7wHvEe8h7zHvQe9R72Hvce+B75Hvoe+x78Hv0e/h7/HwAfAR8C -HwMfBB8FHwYfBx8IHwkfCh8LHwwfDR8OHw8fEB8RHxIfEx8UHxUfFh8XHxgfGR8aHxsfHB8dHx4fHx8g -HyEfIh8jHyQfJR8mHycfKB8pHyofKx8sHy0fLh8vHzAfMR8yHzMfNB81HzYfNx84HzkfOh87HzwfPR8+ -Hz8fQB9BH0IfQx9EH0UfRh9HH0gfSR9KH0sfTB9NH04fTx9QH1EfUh9TH1QfVR9WH1cfWB9ZH1ofWx9c -H10fXh9fH2AfYR9iH2MfZB9lH2YfZx9oH2kfah9rH2wfbR9uH28fcB9xH3Ifcx90H3Ufdh93H3gfeR96 -H3sffB99H34ffx+AH4Efgh+DH4QfhR+GH4cfiB+JH4ofix+MH40fjh+PH5AfkR+SH5MflB+VH5Yflx+Y -H5kfmh+bH5wfnR+eH58foB+hH6Ifox+kH6Ufph+nH6gfqR+qH6sfrB+tH64frx+wH7Efsh+zH7QftR+2 -H7cfuB+5H7ofux+8H70fvh+/H8AfwR/CH8MfxB/FH8Yfxx/IH8kfyh/LH8wfzR/OH88f0B/RH9If0x/U -H9Uf1h/XH9gf2R/aH9sf3B/dH94f3x/gH+Ef4h/jH+Qf5R/mH+cf6B/pH+of6x/sH+0f7h/vH/Af8R/y -H/Mf9B/1H/Yf9x/4H/kf+h/7H/wf/R/+H/8gACABIAIgAyAEIAUgBiAHIAggCSAKIAsgDCANIA4gDyAQ -IBEgEiATIBQgFSAWIBcgGCAZIBogGyAcIB0gHiAfICAgISAiICMgJCAlICYgJyAoICkgKiArICwgLSAu -IC8gMCAxIDIgMyA0IDUgNiA3IDgCJSA5IDogOyA8ID0gPiA/IEAgQSBCIEMgRCBFIEYgRyBIIEkgSiBL -IEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSBaIFsgXCBdIF4gXyBgIGEgYiBjIGQgZSBmIGcgaCBp -IGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgeiB7IHwgfSB+IH8ggCCBIIIggyCEIIUghiCH -IIggiSCKIIsgjCCNII4gjyCQIJEgkiCTIJQglSCWIJcgmCCZIJogmyCcIJ0gniCfIKAgoSCiIKMgpCCl -IKYgpyCoIKkgqiCrIKwgrSCuIK8gsCCzILYguVUkbnVsbN8QEgANAA4ADwAQABEAEgATABQAFQAWABcA -GAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMFZOU1Jvb3RWJGNs -YXNzXU5TT2JqZWN0c0tleXNfEA9OU0NsYXNzZXNWYWx1ZXNfEBlOU0FjY2Vzc2liaWxpdHlPaWRzVmFs -dWVzXU5TQ29ubmVjdGlvbnNbTlNOYW1lc0tleXNbTlNGcmFtZXdvcmtdTlNDbGFzc2VzS2V5c1pOU09p -ZHNLZXlzXU5TTmFtZXNWYWx1ZXNfEBlOU0FjY2Vzc2liaWxpdHlDb25uZWN0b3JzXU5TRm9udE1hbmFn -ZXJfEBBOU1Zpc2libGVXaW5kb3dzXxAPTlNPYmplY3RzVmFsdWVzXxAXTlNBY2Nlc3NpYmlsaXR5T2lk -c0tleXNZTlNOZXh0T2lkXE5TT2lkc1ZhbHVlc4ACgQgqgQSugQZDgQgpgAmBBNqABoEGQoEGRIEE24EI -J4AAgAeBBNmBCCgSAAMProEGRdIADgAyADMANFtOU0NsYXNzTmFtZYAFgAPSAA4ANgA3ADhZTlMuc3Ry -aW5ngARdTlNBcHBsaWNhdGlvbtIAOgA7ADwAPVgkY2xhc3Nlc1okY2xhc3NuYW1lowA9AD4AP18QD05T -TXV0YWJsZVN0cmluZ1hOU1N0cmluZ1hOU09iamVjdNIAOgA7AEEAQqIAQgA/Xk5TQ3VzdG9tT2JqZWN0 -XxAQSUJDb2NvYUZyYW1ld29ya9IADgBFAEYAR1pOUy5vYmplY3RzgAig0gA6ADsASQBKowBKAEsAP1xO -U011dGFibGVTZXRVTlNTZXTSAA4ARQBNAE6AQa8QdABPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwA -XQBeAF8AYABhAGIAYwBkAGUAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAcgBzAHQAdQB2AHcAeAB5AHoA -ewB8AH0AfgB/AIAAgQCCAIMAhACFAIYAhwCIAIkAigCLAIwAjQCOAI8AkACRAJIAkwCUAJUAlgCXAJgA -mQCaAJsAnACdAJ4AnwCgAKEAogCjAKQApQCmAKcAqACpAKoAqwCsAK0ArgCvALAAsQCyALMAtAC1ALYA -twC4ALkAugC7ALwAvQC+AL8AwADBAMKACoAfgCeARoBOgFyAZ4B+gISAiYCQgJuAnYCrgLCAsYCzgLWA -vIC+gMaAy4DagN+A4YDmgOuA8oD3gQEKgQEYgQEfgQEtgQEygQE3gQE8gQFPgQFUgQFigQF3gQF8gQF+ -gQF/gQGGgQGNgQGUgQGZgQGagQGbgQM6gQM+gQNCgQNJgQNLgQNSgQNUgQNWgQNYgQOdgQOfgQOhgQOl -gQOngQOpgQOrgQOtgQOvgQO0gQO2gQO4gQO9gQO/gQPBgQPDgQPFgQPHgQPJgQPPgQPVgQPXgQPbgQPc -gQPegQPggQQJgQQLgQQNgQQPgQQQgQQVgQQXgQQcgQQhgQQjgQQlgQQmgQQqgQQsgQQugQQzgQQ3gQQ5 -gQQ7gQQ8gQQ+gQRAgQRCgQRGgQSdgQSfgQShgQSjgQSkgQSmgQSogQSs1AAOAMQAxQDGAMcAyADJAMpd -TlNEZXN0aW5hdGlvblhOU1NvdXJjZVdOU0xhYmVsgB6ADYALgB3SAA4AMgAzAM2ABYAMWkNoZWF0Q2xh -c3PXANAADgDRANIA0wDUANUA1gDXANgA2QDaANsA1l8QD05TTmV4dFJlc3BvbmRlcldOU0ZyYW1lVk5T -Q2VsbFhOU3ZGbGFnc1lOU0VuYWJsZWRbTlNTdXBlcnZpZXeADoAcgA+AEBEBAAmADtUA0AAOANEA3gDT -ACsA4ADhAOIA2lpOU1N1YnZpZXdzgACAeIB3gG1fEBZ7ezIwLCAyMDB9LCB7MjczLCAyMH192gDlAA4A -5gDnAOgA6QDqAOsA7ADtAO4A7wDwAPEA8gDIAPQA9QDbAPdbTlNDZWxsRmxhZ3NfEBFOU0JhY2tncm91 -bmRDb2xvclpOU0NvbnRlbnRzWU5TU3VwcG9ydF1OU0NvbnRyb2xWaWV3XE5TQ2VsbEZsYWdzMl8QEE5T -VGV4dEJlemVsU3R5bGVfEBFOU0RyYXdzQmFja2dyb3VuZFtOU1RleHRDb2xvchP/////lHH+QYAbgBWA -EYASgA0SAEAEABABCYAaUNQADgD6APsA/AD9AP4A/wEAVk5TU2l6ZVZOU05hbWVYTlNmRmxhZ3OAFCNA -KAAAAAAAAIATEBBcTHVjaWRhR3JhbmRl0gA6ADsBAwEEogEEAD9WTlNGb2501QAOAQYBBwEIAQkBCgEL -AQwBDQEOV05TQ29sb3JcTlNDb2xvclNwYWNlW05TQ29sb3JOYW1lXU5TQ2F0YWxvZ05hbWWAGYAYEAaA -F4AWVlN5c3RlbV8QE3RleHRCYWNrZ3JvdW5kQ29sb3LTAA4BBwESAQoBFAEVV05TV2hpdGWAGRADQjEA -0gA6ADsBFwEGogEGAD/TAA4BBwEZAQoA9QEbVU5TUkdCgBlGMCAwIDAA0gA6ADsBHQEepAEeAR8A0gA/ -XxAPTlNUZXh0RmllbGRDZWxsXE5TQWN0aW9uQ2VsbNIAOgA7ASEBIqUBIgEjASQBJQA/W05TVGV4dEZp -ZWxkWU5TQ29udHJvbFZOU1ZpZXdbTlNSZXNwb25kZXJdY2hlYXRGaWVsZEdTQdIAOgA7ASgBKaMBKQEq -AD9fEBROU05pYk91dGxldENvbm5lY3Rvcl5OU05pYkNvbm5lY3RvctQADgDEAMUAxgDHAS0BLgEvgB6A -I4AggCbXANAADgDRANIA0wDUANUA1gDXATMBNADaANsA1oAOgByAIYAiCYAOXxAWe3syMCwgMTE2fSwg -ezI3MywgMjB9fdoA5QAOAOYA5wDoAOkA6gDrAOwA7QDuAO8A8ADxAPIBLgD0APUA2wD3gBuAFYARgBKA -IAmAGtcA0AAOANEA0gDTANQA1QDWANcBQwFEANoA2wDWgA6AHIAkgCUJgA5fEBV7ezIwLCA4OH0sIHsy -NzMsIDIwfX3aAOUADgDmAOcA6ADpAOoA6wDsAO0A7gDvAPAA8QDyAS0A9AD1ANsA94AbgBWAEYASgCMJ -gBpbbmV4dEtleVZpZXfUAA4AxADFAMYAxwFTAVQBVYAegCqAKIBF0gAOADIAMwFYgAWAKVdTRExNYWlu -1wDQAA4A0QDSANMA1ADVAVsBXAFdAV4A2gDbAVuAK4BEgCyALQmAK9UA0AAOANEA3gDTACsA4AFkAWUA -2oAAgHiBAzWBAaBfEBd7ezU0NywgMjA2fSwgezEyOCwgMjJ9fd8QEwDlAWgBaQFqAWsADgFsAW0BbgDo -AW8A6QFwAXEBcgFzAOoBdAF1AXYA2wD1AXgBeQF6APUBewF8AXsBfgFTARQA2wDbAYIBgwGEAYVfEBpO -U01lbnVJdGVtUmVzcGVjdEFsaWdubWVudF8QD05TQXJyb3dQb3NpdGlvbl8QE05TQWx0ZXJuYXRlQ29u -dGVudHNfEBJOU1BlcmlvZGljSW50ZXJ2YWxeTlNCdXR0b25GbGFnczJfEBBOU0FsdGVybmF0ZUltYWdl -XxAPTlNLZXlFcXVpdmFsZW50Wk5TTWVudUl0ZW1fEA9OU1ByZWZlcnJlZEVkZ2VfEBJOU1VzZXNJdGVt -RnJvbU1lbnVdTlNBbHRlcnNTdGF0ZV8QD05TUGVyaW9kaWNEZWxheVZOU01lbnVdTlNCdXR0b25GbGFn -cxP/////hEH+QAmALxBLgEOALoAwgC6AMYAqCQkRAZASAAIEAIAyEgaCQP/UAA4A+gD7APwA/QGIAP8B -ioAUI0AmAAAAAAAAgBMRDBzSAA4ANgA3APiABNIADgA2ADcA+IAE2wGQAA4BkQGSAZMBlAGVAZYBdAGX -AZgBXgGaAZsBnADxAZ4BnwGgAYQBogD1WE5TVGFyZ2V0V05TVGl0bGVfEBFOU0tleUVxdWl2TW9kTWFz -a1pOU0tleUVxdWl2XU5TTW5lbW9uaWNMb2NZTlNPbkltYWdlXE5TTWl4ZWRJbWFnZVhOU0FjdGlvbldO -U1N0YXRlgC2AO4AzEgAQAACAERJ/////gDSAOIAygDrTAA4BkQGkAaUBpgGnW05TTWVudUl0ZW1zgEKA -PIA9WERpc2FibGVk0wAOADIBqgGrAawBrV5OU1Jlc291cmNlTmFtZYA3gDWANldOU0ltYWdlXxAPTlNN -ZW51Q2hlY2ttYXJr0gA6ADsBsQGyogGyAD9fEBBOU0N1c3RvbVJlc291cmNl0wAOADIBqgGrAawBtoA3 -gDWAOV8QEE5TTWVudU1peGVkU3RhdGVfEBFfcG9wVXBJdGVtQWN0aW9uOtIAOgA7AboBb6IBbwA/0gAO -ADYANwG9gARaT3RoZXJWaWV3c9IADgBFAE0BwIBBogF+AcKAMYA+2gGQAA4BkQGSAZMBlAGVAZYBdAGX -AV4BmgHGAZwA8QGeAZ8BoAGEAcuALYA7gD+AEYA0gDiAMoBAV0VuYWJsZWTSADoAOwHOAc+jAc8B0AA/ -Xk5TTXV0YWJsZUFycmF5V05TQXJyYXnSADoAOwHSAXSiAXQAP9IAOgA7AdQB1aYB1QHWAdcBHwDSAD9f -EBFOU1BvcFVwQnV0dG9uQ2VsbF5OU01lbnVJdGVtQ2VsbFxOU0J1dHRvbkNlbGzSADoAOwHZAdqmAdoB -2wEjASQBJQA/XU5TUG9wVXBCdXR0b25YTlNCdXR0b25XdXNlQmlvc9QADgDEAMUAxgDHAd8B4AEvgB6A -S4BHgCbXANAADgDRANIA0wDUANUB4wDXAeUB5gDaANsB44BIgByASYBKCYBI1QDQAA4A0QDeANMAKwDg -AewB7QDagACAeIEBcoEBZtoA5QAOAOYA5wDoAOkA6gDrAOwA7QDuAO8A8ADxAPIB4AD0APUA2wD3gBuA -FYARgBKARwmAGtcA0AAOANEA0gDTANQA1QHjANcB+QH6ANoA2wHjgEiAHIBMgE0JgEhfEBZ7ezIwLCAx -NzJ9LCB7MjczLCAyMH192gDlAA4A5gDnAOgA6QDqAOsA7ADtAO4A7wDwAPEA8gHfAPQA9QDbAPeAG4AV -gBGAEoBLCYAa1AAOAMQAxQDGAgcAyQIJAgqAW4ALgE+AWtcA0AAOANEA0gDTANQA1QDWAg0CDgIPANoA -2wDWgA6AWYBQgFEJgA5fEBV7ezIxNSwgMTJ9LCB7ODQsIDMyfX3dAOUADgFqAWsBbAFtAW4A5wDoAOkB -cwDqAXUCFAIVAhYCFwD1AhgCGQIaAhsCCQIdAh4CHxIEAf4AgFiAVhAZgFSAV4BSgFOATxDIEgg4AAAT -/////4aCQP9ST0vUAA4A+gD7APwA/QIjAP8CJYAUI0AqAAAAAAAAgBMRBBTUAA4A+gD7APwA/QIjAigB -AIAUgFVZSGVsdmV0aWNh0gAOADYANwD4gATSAA4ANgA3APiABNIAOgA7Ai8B16QB1wEfANIAP9IAOgA7 -AjEB26UB2wEjASQBJQA/XXJlYWRDaGVhdEdTQTrSADoAOwI0AjWjAjUBKgA/XxAVTlNOaWJDb250cm9s -Q29ubmVjdG9y1AAOAMQAxQDGAgcCOAI5AjqAW4BkgF2AZtcA0AAOANEA0gDTANQA1QI8Ag0CPgI/ANoA -2wI8gF6AWYBfgGAJgF7VANAADgDRAN4A0wArAOACRQJGANqAAIB4gQOYgQNdXxAWe3s5NCwgMjYwfSwg -ezE0OSwgMjl9fd0A5QAOAWoBawFsAW0BbgDnAOgA6QFzAOoBdQIUAhUA8QIXAksCTAJNAk4CGwI5Ah0C -UQJSgFiAERACgGKAY4BhgFOAXRIIAAAAE/////+GhgD/XxASQ2FsaWJyYXRlIEpveXN0aWNr1AAOAPoA -+wD8AP0CIwD/AQCAFIAT0gAOADYANwD4gATSAA4AMgAzAluABYBlW0NvbmZpZ0NsYXNzWmNhbGlicmF0 -ZTrUAA4AxADFAMYAxwJgAMkCYoAegGiAC4B93AJkAA4CZQJmAmcCaAJpAmoCawJsAm0CbgDWAnACcQJy -AnMCdAJ1AnYCSwJ3AngCeVxOU1dpbmRvd1ZpZXdcTlNTY3JlZW5SZWN0XU5TV2luZG93VGl0bGVZTlNX -VEZsYWdzXU5TV2luZG93Q2xhc3NcTlNXaW5kb3dSZWN0WU5TTWF4U2l6ZV8QD05TV2luZG93QmFja2lu -Z18QEU5TV2luZG93U3R5bGVNYXNrWU5TTWluU2l6ZVtOU1ZpZXdDbGFzc4AOgHyAeYBqEnB4AACAa4Bp -gHsQD4B6gGxfEBh7ezcwNSwgNTc3fSwgezMxMywgMjQwfX1dQWRkIENoZWF0cy4uLlhOU1dpbmRvd9IA -DgA2ADcCf4AEVFZpZXfSAA4ARQBNAoKAQacAyAKEAoUCCQEuAS0CiYANgG6AcYBPgCCAI4B01wDQAA4A -0QDSANMA1ADVANYA1wKNAo4A2gDbANaADoAcgG+AcAmADtoA5QAOAOYA5wDoAOkA6gDrAOwA7QDuAO8A -8ADxAPIChAD0APUA2wD3gBuAFYARgBKAbgmAGtcA0AAOANEA0gDTANQA1QDWANcCnAKdANoA2wDWgA6A -HIBygHMJgA5fEBZ7ezIwLCAxNDR9LCB7MjczLCAyMH192gDlAA4A5gDnAOgA6QDqAOsA7ADtAO4A7wDw -APEA8gKFAPQA9QDbAPeAG4AVgBGAEoBxCYAa1wDQAA4A0QDSANMA1ADVANYA1wKsAq0A2gDbANaADoAc -gHWAdgmADl8QFXt7MjAsIDYwfSwgezI3MywgMjB9fdoA5QAOAOYA5wDoAOkA6gDrAOwA7QDuAO8A8ADx -APICiQD0APUA2wD3gBuAFYARgBKAdAmAGl8QFHt7MSwgOX0sIHszMTMsIDI0MH190gA6ADsCuwEkowEk -ASUAP18QFnt7MCwgMH0sIHsyNTYwLCAxNTc4fX1aezIxMywgMTI5fV8QGnszLjQwMjgyZSszOCwgMy40 -MDI4MmUrMzh90gA6ADsCwALBogLBAD9fEBBOU1dpbmRvd1RlbXBsYXRlXmNoZWF0V2luZG93R1NB0wAO -AMUAxgIHAsUCxoBbgH+Ag9gADgGRAZIBkwGUAZUBlgF0AZoCyQGcAsoBngGfAaACzYA7gIGAgoA0gDiA -gNMADgGRAaQBpQLQAtGAQoEEvYEEvlRDb3B5UWNVY29weTrTAA4AxQDGAgcC1wLYgFuAhYCI2AAOAZEB -kgGTAZQBlQGWAXQBmgLbAZwC3AGeAZ8BoALNgDuAhoCHgDSAOICAU0N1dFF4VGN1dDrUAA4AxADFAMYC -BwI4AuYC54BbgGSAioCP1wDQAA4A0QDSANMA1ADVAjwCDQLrAuwA2gDbAjyAXoBZgIuAjAmAXl8QFnt7 -MTY0LCAxODR9LCB7ODQsIDMwfX3dAOUADgFqAWsBbAFtAW4A5wDoAOkBcwDqAXUCFAIVAPECFwJLAhgC -9AL1AhsC5gIdAlECH4BYgBGAVICOgI2AU4CKUVLSAA4ANgA3APiABFZwb2xsUjrUAA4AxADFAMYAxwL+ -AjgDAIAegJGAZICa1wDQAA4A0QDSANMA1ADVAjwA1wMEAwUA2gDbAjyAXoAcgJKAkwmAXl8QFXt7MTA3 -LCA5NX0sIHs0NiwgMTl9fdkA5QAOAOYA5wDoAOkA6gDsAO0DCgDvAwwA8QF7Av4DEADbAxISBEH+AIAb -gJSAEYAugJESCEAAAAmAl9UADgEGAQcBCAEJAQoDFQEMAxYBDoAZgJaAlYAWXGNvbnRyb2xDb2xvctMA -DgEHARIBCgEUAxuAGUswLjY2NjY2NjY5ANUADgEGAQcBCAEJAQoDHgEMAx8BDoAZgJmAmIAWXxAQY29u -dHJvbFRleHRDb2xvctMADgEHARIBCgEUAySAGUIwAFZhRmllbGTUAA4AxADFAMYAxwEuAMkDKoAegCCA -C4CcXmNoZWF0RmllbGRHU0E01AAOAMQAxQDGAMcDLgFUAzCAHoCegCiAqtcA0AAOANEA0gDTANQA1QFb -AVwDNAM1ANoA2wFbgCuARICfgKAJgCtfEBd7ezE5MCwgMzA3fSwgezEyOCwgMjJ9fd8QEwDlAWgBaQFq -AWsADgFsAW0BbgDoAW8A6QFwAXEBcgFzAOoBdAF1AXYA2wD1AzsBeQF6APUBewM+AXsDQAMuARQA2wDb -AYIBgwNEAYUJgKGAQ4AugKKALoCjgJ4JCYCk0gAOADYANwD4gATSAA4ANgA3APiABNsBkAAOAZEBkgGT -AZQBlQGWAXQBlwGYAzUBmgGbAZwA8QGeAZ8BoANEA1EA9YCggDuAM4ARgDSAOICkgKXTAA4BkQGkAaUD -VANVgEKApoCn0gAOADYANwG9gATSAA4ARQBNA1qAQaIDQANcgKOAqNoBkAAOAZEBkgGTAZQBlQGWAXQB -lwM1AZoBxgGcAPEBngGfAaADRANlgKCAO4A/gBGANIA4gKSAqVxzb3VuZExvd1Bhc3PUAA4AxADFAMYA -xwNpAMkDa4AegKyAC4Cv1wDQAA4A0QDSANMA1ADVAeMA1wNvA3AA2gDbAeOASIAcgK2ArgmASNoA5QAO -AOYA5wDoAOkA6gDrAOwA7QDuAO8A8ADxAPIDaQD0APUA2wD3gBuAFYARgBKArAmAGltjaGVhdEZpZWxk -NNQADgDEAMUAxgDHAoQAyAEvgB6AboANgCbUAA4AxADFAMYAxwHgAMkDhYAegEeAC4CyWmNoZWF0Rmll -bGTUAA4AxADFAMYAxwI5AjgDi4AegF2AZIC0XxAPY2FsaWJyYXRlQnV0dG9u1AAOAMQAxQDGAgcCOAOQ -A5GAW4BkgLaAu9cA0AAOANEA0gDTANQA1QI8Ag0DlQOWANoA2wI8gF6AWYC3gLgJgF5fEBV7ezIzNiwg -MTJ9LCB7ODQsIDMyfX3dAOUADgFqAWsBbAFtAW4A5wDoAOkBcwDqAXUCFAIVA5wCFwD1AhgDngIaAhsD -kAIdAh4CH4BYgLmAVIC6gFKAU4C20gAOADYANwD4gATSAA4ANgA3APiABFplbmRDb25maWc61AAOAMQA -xQDGAMcDkAI4A6uAHoC2gGSAvVhPS0J1dHRvbtQADgDEAMUAxgIHA68DsAOxgFuAw4C/gMXYAA4BkQGS -AZMBlAGVAZYBdAGaA7QBnAO1AZ4BnwGgA7iAO4DBgMKANIA4gMDTAA4BkQGkAaUDuwO8gEKBBMqBBMtf -EBJEZWZyb3N0IEdhbWUgU3RhdGVRZNIADgAyADMDwYAFgMRZTWVudUNsYXNzXWRlZnJvc3RTdGF0ZTrU -AA4AxADFAMYCBwFUA8cDyIBbgCiAx4DK2AAOAZEBkgGTAZQBlQGWAXQBmgPLAZwA8QGeAZ8BoAPPgDuA -yYARgDSAOIDI1AAOAZEA+wGkAaUD0gPTA9SAQoEEw4EEx4EExVlEb25hdGUuLi5XZG9uYXRlOtQADgDE -AMUAxgDHA9kBVAPbgB6AzIAogNnXANAADgDRANIA0wDUANUD3QFcA98D4ADaANsD3YDNgESAzoDPCYDN -1gDQAA4A0QDeANMA1QPkAOAD5gPnANoD5IEBoYB4gQHugQGjgQGhXxAXe3sxODEsIDEyM30sIHsxMjgs -IDIyfX3fEBMA5QFoAWkBagFrAA4BbAFtAW4A6AFvAOkBcAFxAXIBcwDqAXQBdQF2ANsA9QPsAXkBegD1 -AXsD7wF7A/ED2QEUANsA2wGCAYMD9QGFCYDQgEOALoDRgC6A0oDMCQmA09IADgA2ADcA+IAE0gAOADYA -NwD4gATbAZAADgGRAZIBkwGUAZUBlgF0AZcBmAPgAZoBmwGcAPEBngGfAaAD9QQCAPWAz4A7gDOAEYA0 -gDiA04DU0wAOAZEBpAGlBAUEBoBCgNWA1tIADgA2ADcBvYAE0gAOAEUATQQLgEGiA/EEDYDSgNfaAZAA -DgGRAZIBkwGUAZUBlgF0AZcD4AGaAcYBnADxAZ4BnwGgA/UEFoDPgDuAP4ARgDSAOIDTgNhYc2tpcEJp -b3PUAA4AxADFAMYAxwQaAjgEHIAegNuAZIDe1wDQAA4A0QDSANMA1ADVAjwA1wQgBCEA2gDbAjyAXoAc -gNyA3QmAXl8QFnt7MTA3LCAxNTl9LCB7NDYsIDE5fX3ZAOUADgDmAOcA6ADpAOoA7ADtAwoA7wMMAPEB -ewQaAxAA2wMSgBuAlIARgC6A2wmAl1lsZWZ0RmllbGTUAA4AxADFAMYAxwFUAB8EMoAegCiAAoDgWGRl -bGVnYXRl1AAOAMQAxQDGAMcENgI4BDiAHoDigGSA5dcA0AAOANEA0gDTANQA1QI8ANcEPAQ9ANoA2wI8 -gF6AHIDjgOQJgF5fEBV7ezI1NywgOTV9LCB7NDYsIDE5fX3ZAOUADgDmAOcA6ADpAOoA7ADtAwoA7wMM -APEBewQ2AxAA2wMSgBuAlIARgC6A4gmAl1pzcGVlZEZpZWxk1AAOAMQAxQDGAgcBVARNBE6AW4AogOeA -6tgADgGRAZIBkwGUAZUBlgF0AZoEUQGcBFIBngGfAaADz4A7gOiA6YA0gDiAyF8QFVF1aXQgVmlzdWFs -Qm95QWR2YW5jZVFxVXF1aXQ61AAOAMQAxQDGAgcCOARcBF2AW4BkgOyA8dcA0AAOANEA0gDTANQA1QI8 -Ag0EYQRiANoA2wI8gF6AWYDtgO4JgF5fEBV7ezE0LCAxNTJ9LCB7ODQsIDMwfX3dAOUADgFqAWsBbAFt -AW4A5wDoAOkBcwDqAXUCFAIVAPECFwJLAhgEagRrAhsEXAIdAlECH4BYgBGAVIDwgO+AU4DsVExlZnTS -AA4ANgA3APiABFlwb2xsTGVmdDrUAA4AxADFAMYAxwR0AjgEdoAegPOAZID21wDQAA4A0QDSANMA1ADV -AjwA1wR6BHsA2gDbAjyAXoAcgPSA9QmAXl8QFnt7MTA3LCAxMjd9LCB7NDYsIDE5fX3ZAOUADgDmAOcA -6ADpAOoA7ADtAwoA7wMMAPEBewR0AxAA2wMSgBuAlIARgC6A8wmAl1pyaWdodEZpZWxk1AAOAMQAxQDG -AMcEigFUBIyAHoD4gCiBAQnXANAADgDRANIA0wDUANUEjgFcBJAEkQDaANsEjoD5gESA+oD7CYD51gDQ -AA4A0QDeANMA1QSVAOAElwSYANoElYECk4B4gQKagQKVgQKTXxAVe3sxNzEsIDV9LCB7MTI4LCAyMn19 -3xATAOUBaAFpAWoBawAOAWwBbQFuAOgBbwDpAXABcQFyAXMA6gF0AXUBdgDbAPUA8QF5AXoA9QF7BKAB -ewSiBIoBFADbANsBggGDBKYCHwmAEYBDgC6A/IAugP2A+AkJgP7SAA4ANgA3APiABNsBkAAOAZEBkgGT -AZQBlQGWAXQBlwGYBJEBmgSsAZwA8QGeAZ8BoASmBLEA9YD7gDuA/4ARgDSAOID+gQEA0wAOAZEBpAGl -BLQEtYBCgQEBgQECVE5vbmXSAA4ANgA3Ab2ABNIADgBFAE0Eu4BBowSiBL0EvoD9gQEDgQEG2gGQAA4B -kQGSAZMBlAGVAZYBdAGXBJEBmgTCAZwA8QGeAZ8BoASmBMeA+4A7gQEEgBGANIA4gP6BAQVbTW90aW9u -IEJsdXLaAZAADgGRAZIBkwGUAZUBlgF0AZcEkQGaBMwBnADxAZ4BnwGgBKYE0YD7gDuBAQeAEYA0gDiA -/oEBCFVTbWFydFppbnRlcmZyYW1l1AAOAMQAxQDGAMcE1gFUBNiAHoEBC4AogQEX1wDQAA4A0QDSANMA -1ADVAVsBXATcBN0A2gDbAVuAK4BEgQEMgQENCYArXxAXe3sxOTAsIDM4Mn0sIHsxMjgsIDIyfX3fEBQA -5QFoAWkBagFrAA4BbAFtAW4A6AFvAOkBcAFxAXIBcwDqAXQBdQTiAXYA2wD1BOQBeQF6APUBewTnAXsE -6QTWARQA2wDbAYIBgwTtAYUA9V8QD05TU2VsZWN0ZWRJbmRleAmBAQ6AQ4AugQEPgC6BARCBAQsJCYEB -EdIADgA2ADcA+IAE0gAOADYANwD4gATbAZAADgGRAZIBkwGUAZUBlgF0AZcBmATdAZoBxgGcAPEBngGf -AaAE7QT6APWBAQ2AO4A/gBGANIA4gQERgQES0wAOAZEBpAGlBP0E/oBCgQETgQEU0gAOADYANwG9gATS -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 -BwDaANsBW4ArgESBAVaBAVcJgCtfEBd7ezU0NywgMjMxfSwgezEyOCwgMjJ9fd8QEwDlAWgBaQFqAWsA -DgFsAW0BbgDoAW8A6QFwAXEBcgFzAOoBdAF1AXYA2wD1Bg0BeQF6APUBewYQAXsGEgYAARQA2wDbAYIB -gwYWAYUJgQFYgEOALoEBWYAugQFagQFVCQmBAVvSAA4ANgA3APiABNIADgA2ADcA+IAE2wGQAA4BkQGS -AZMBlAGVAZYBdAGXAZgGBwGaAZsBnADxAZ4BnwGgBhYGIwD1gQFXgDuAM4ARgDSAOIEBW4EBXNMADgGR -AaQBpQYmBieAQoEBXYEBXtIADgA2ADcBvYAE0gAOAEUATQYsgEGiBhIGLoEBWoEBX9oBkAAOAZEBkgGT -AZQBlQGWAXQBlwYHAZoBxgGcAPEBngGfAaAGFgY3gQFXgDuAP4ARgDSAOIEBW4EBYFxyZW1vdmVJbnRy -b3PUAA4AxADFAMYAxwY7AMkGPYAegQFjgAuBAXbcAmQADgJlAmYCZwJoAmkCagJrAmwCbQJuAeMCcAZB -AnICcwJ0BkQGRQJLAncGRgZHgEiAfIEBc4BqgGuBAWSBAXWBAXSBAWXSAA4ANgA3An+ABNIADgBFAE0G -TIBBpwHgAd8GTwZQA2kF6wZTgEeAS4EBZ4EBaoCsgQFQgQFv1wDQAA4A0QDSANMA1ADVAeMA1wZXBlgA -2gDbAeOASIAcgQFogQFpCYBI2gDlAA4A5gDnAOgA6QDqAOsA7ADtAO4A7wDwAPEA8gZPAPQA9QDbAPeA -G4AVgBGAEoEBZwmAGtcA0AAOANEA0gDTANQA1QHjAg0GZgZnANoA2wHjgEiAWYEBa4EBbAmASN0A5QAO -AWoBawFsAW0BbgDnAOgA6QFzAOoBdQIUAhUGbAIXAPUCGAZuAhoCGwZQAh0CHgIfgFiBAW2AVIEBboBS -gFOBAWrSAA4ANgA3APiABNIADgA2ADcA+IAE1wDQAA4A0QDSANMA1ADVAeMA1wZ5BnoA2gDbAeOASIAc -gQFwgQFxCYBI2gDlAA4A5gDnAOgA6QDqAOsA7ADtAO4A7wDwAPEA8gZTAPQA9QDbAPeAG4AVgBGAEoEB -bwmAGltjaGVhdFdpbmRvd9QADgDEAMUAxgIHA68GiQaKgFuAw4EBeIEBe9gADgGRAZIBkwGUAZUBlgF0 -AZoGjQGcBo4BngGfAaADuIA7gQF5gQF6gDSAOIDAXxAPUGF1c2UgRW11bGF0aW9uUXBfEA9wYXVzZUVt -dWxhdGlvbjrUAA4AxADFAMYCBwDJBlAGmYBbgAuBAWqBAX1dcmVhZENoZWF0Q0JBOtQADgDEAMUAxgDH -Bk8B3wEvgB6BAWeAS4Am1AAOAMQAxQDGAMcGogI4BqSAHoEBgIBkgQGF1wDQAA4A0QDSANMA1ADVAjwC -DQaoBqkA2gDbAjyAXoBZgQGBgQGCCYBeXxAUe3sxMCwgMTJ9LCB7ODYsIDMyfX3dAOUADgFqAWsBbAFt -AW4A5wDoAOkBcwDqAXUCFAIVAPECFwD1AhsGsQayAhsGogIdAlECH4BYgBGAU4EBhIEBg4BTgQGAV0Rl -ZmF1bHTSAA4ANgA3APiABF1kZWZhdWx0QnV0dG9u1AAOAMQAxQDGAgcCOAa8Br2AW4BkgQGHgQGM1wDQ -AA4A0QDSANMA1ADVAjwCDQbBBsIA2gDbAjyAXoBZgQGIgQGJCYBeXxAVe3sxNCwgMTIwfSwgezg0LCAz -MH193QDlAA4BagFrAWwBbQFuAOcA6ADpAXMA6gF1AhQCFQDxAhcCSwIYBsoGywIbBrwCHQJRAh+AWIAR -gFSBAYuBAYqAU4EBh1VSaWdodNIADgA2ADcA+IAEWnBvbGxSaWdodDrUAA4AxADFAMYCBwFUBtUG1oBb -gCiBAY6BAZPXANAADgDRANIA0wDUANUBWwINBtoG2wDaANsBW4ArgFmBAY+BAZAJgCtfEBV7ezQyNiwg -MTJ9LCB7ODYsIDMyfX3dAOUADgFqAWsBbAFtAW4A5wDoAOkBcwDqAXUCFAIVBuECFwD1AhgG4wayAhsG -1QIdAh4CH4BYgQGRgFSBAZKBAYOAU4EBjtIADgA2ADcA+IAE0gAOADYANwD4gARdZGVmYXVsdFByZWZz -OtMADgDFAMYCBwbuBu+AW4EBlYEBmNgADgGRAZIBkwGUAZUBlgF0AZoG8gGcBvMBngGfAaACzYA7gQGW -gQGXgDSAOICAVVBhc3RlUXZWcGFzdGU61AAOAMQAxQDGAMcF6wNpAS+AHoEBUICsgCbUAA4AxADFAMYA -xwKFAoQBL4AegHGAboAm1AAOAMQAxQDGAMcHBgFUBwiAHoEBnIAogQM53AJkAA4CZQJmAmcCaAJpAmoC -awJsAm0CbgFbAnAHDAcNAnMCdAcPBxACSwJ3BxEHEoArgHyBAzaBAZ6Aa4EBnYEDOIEDN4EBn18QGHt7 -NjIxLCA5MDN9LCB7NzE0LCA0Mzl9fVtQcmVmZXJlbmNlc9IADgA2ADcCf4AE0gAOAEUATQcZgEGvECoD -5AcbAVMHHQceBx8HIAchByIHIwckBgAFLQcnBygHKQcqBysHLActBy4HLwcwBNYDLgczBaMElQc2BzcH -OAc5BzoHOwc8Bz0HPgc/B0AHQQbVB0OBAaGBAfWAKoEB+YECE4ECF4ECG4ECH4ECK4ECL4ECM4EBVYEB -IIECR4ECS4ECWYECX4ECY4ECZ4ECb4ECe4ECf4ECg4EBC4CegQKPgQE9gQKTgQKfgQKzgQLCgQLOgQLS -gQLegQLigQLmgQLqgQMbgQMfgQMigQGOgQMo3QDQB0UADgdGANEHRwDeANMHSAdJB0oA1QdLAVsHTQdO -B08HUAdRB1IA2gEUB1MCSwFbA91ZTlNCb3hUeXBlW05TVGl0bGVDZWxsXU5TVHJhbnNwYXJlbnRcTlNC -b3JkZXJUeXBlWU5TT2Zmc2V0c18QD05TVGl0bGVQb3NpdGlvbl1OU0NvbnRlbnRWaWV3gCsQAIEB9IEB -8YEB7wiBAaKBAfCAK4DN0gAOAEUATQdYgEGhA92AzdIADgBFAE0HXIBBqwddB14HXwdgB2ED2QdjB2QH -ZQdmB2eBAaSBAaqBAbaBAbqBAcaAzIEByoEBzoEB2oEB3oEB6tcA0AAOANEA0gDTANQA1QPdANcHawds -ANoA2wPdgM2AHIEBpYEBpgmAzV8QFnt7MTgxLCAxNH0sIHsxMTksIDIwfX3YAOUADgDmAOcA6ADpAOoA -7QdxAO8A8ADxB3UHXQd3B3gT/////4QB/gCAG4AVgBGBAaeBAaQSAEAAAIEBqNQADgD6APsA/AD9B3sA -/wd9gBQjQCQAAAAAAACAExELG9UADgEGAQcBCAEJAQoDHgEMB4EBDoAZgJmBAamAFll0ZXh0Q29sb3LX -ANAADgDRANIA0wDUANUD3QFcB4cHiADaANsD3YDNgESBAauBAawJgM1fEBd7ezE4MSwgMjI0fSwgezEy -OCwgMjJ9fd8QFADlAWgBaQFqAWsADgFsAW0BbgDoAW8A6QFwAXEBcgFzAOoBdAF1BOIBdgDbAPUHjgF5 -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 -cmZyYW1lIEJsZW5kaW5nOl8QFHt7MiwgMn0sIHszMTYsIDE1OH19XxAWe3sxNywgOTJ9LCB7MzIwLCAx -Nzh9fdcA5QAOAOYA5wDoAOoA7QIUAO8A8AtsAhsHTQtugBuAFYECnYBTgQKeVVZpZGVv0wAOAQcBEgEK -ARQItYAZ1wDQAA4A0QDSANMA1ADVAVsBXAt1C3YA2gDbAVuAK4BEgQKggQKhCYArXxAXe3sxOTAsIDIy -NH0sIHsxMjgsIDIyfX3fEBMA5QFoAWkBagFrAA4BbAFtAW4A6AFvAOkBcAFxAXIBcwDqAXQBdQF2ANsA -9Qt8AXkBegD1AXsLfwF7C4EHNgEUANsA2wGCAYMLhQGFCYECooBDgC6BAqOALoECpIECnwkJgQKl0gAO -ADYANwD4gATSAA4ANgA3APiABNsBkAAOAZEBkgGTAZQBlQGWAXQBlwGYC3YBmguNAZwA8QGeAZ8BoAuF -C5IA9YECoYA7gQKmgBGANIA4gQKlgQKn0wAOAZEBpAGlC5ULloBCgQKogQKpUjF40gAOADYANwG9gATS -AA4ARQBNC5yAQaQLgQueC58LoIECpIECqoECrYECsNoBkAAOAZEBkgGTAZQBlQGWAXQBlwt2AZoLpAGc -APEBngGfAaALhQupgQKhgDuBAquAEYA0gDiBAqWBAqxSMnjaAZAADgGRAZIBkwGUAZUBlgF0AZcLdgGa -C64BnADxAZ4BnwGgC4ULs4ECoYA7gQKugBGANIA4gQKlgQKvUjN42gGQAA4BkQGSAZMBlAGVAZYBdAGX -C3YBmgu4AZwA8QGeAZ8BoAuFC72BAqGAO4ECsYARgDSAOIECpYECslI0eNcA0AAOANEA0gDTANQA1QFb -AVwLwgvDANoA2wFbgCuARIECtIECtQmAK18QF3t7MTkwLCAxNDl9LCB7MTI4LCAyMn193xAUAOUBaAFp -AWoBawAOAWwBbQFuAOgBbwDpAXABcQFyAXMA6gF0AXUE4gF2ANsA9QvJAXkBegD1AXsLzAF7C84HNwEU -ANsA2wGCAYML0gGFAksJgQK2gEOALoECt4AugQK4gQKzCQmBArnSAA4ANgA3APiABNIADgA2ADcA+IAE -2wGQAA4BkQGSAZMBlAGVAZYBdAGXAZgLwwGaC9oBnADxAZ4BnwGgC9IL3wD1gQK1gDuBArqAEYA0gDiB -ArmBArvTAA4BkQGkAaUL4gvjgEKBAryBAr1ZQXV0b21hdGlj0gAOADYANwG9gATSAA4ARQBNC+mAQaML -6gvrC86BAr6BAsCBArjaAZAADgGRAZIBkwGUAZUBlgF0AZcLwwGaAZsBnADxAZ4BnwGgC9IL9YECtYA7 -gDOAEYA0gDiBArmBAr/aAZAADgGRAZIBkwGUAZUBlgF0AZcLwwGaAcYBnADxAZ4BnwGgC9IL/oECtYA7 -gD+AEYA0gDiBArmBAsHXANAADgDRANIA0wDUANUBWwFcDAIMAwDaANsBW4ArgESBAsOBAsQJgCtfEBd7 -ezE5MCwgMTc0fSwgezEyOCwgMjJ9fd8QEwDlAWgBaQFqAWsADgFsAW0BbgDoAW8A6QFwAXEBcgFzAOoB -dAF1AXYA2wD1DAkBeQF6APUBewwMAXsMDgc4ARQA2wDbAYIBgwwSAYUJgQLFgEOALoECxoAugQLHgQLC -CQmBAsjSAA4ANgA3APiABNIADgA2ADcA+IAE2wGQAA4BkQGSAZMBlAGVAZYBdAGXAZgMAwGaAZsBnADx -AZ4BnwGgDBIMHwD1gQLEgDuAM4ARgDSAOIECyIECydMADgGRAaQBpQwiDCOAQoECyoECy9IADgA2ADcB -vYAE0gAOAEUATQwogEGiDA4MKoECx4ECzNoBkAAOAZEBkgGTAZQBlQGWAXQBlwwDAZoBxgGcAPEBngGf -AaAMEgwzgQLEgDuAP4ARgDSAOIECyIECzdcA0AAOANEA0gDTANQA1QFbANcMNww4ANoA2wFbgCuAHIEC -z4EC0AmAK18QFnt7NDgsIDIwNH0sIHsxMTQsIDE3fX3YAOUADgDmAOcA6ADpAOoA7QIUAO8DDAw/APIH -OQfHAxKAG4CUgQLRgBKBAs6Al11WaWRlbyBGaWx0ZXI61wDQAA4A0QDSANMA1ADVAVsBXAxHDEgA2gDb -AVuAK4BEgQLTgQLUCYArXxAXe3sxOTAsIDEyNH0sIHsxMjgsIDIyfX3fEBMA5QFoAWkBagFrAA4BbAFt -AW4A6AFvAOkBcAFxAXIBcwDqAXQBdQF2ANsA9QxOAXkBegD1AXsMUQF7DFMHOgEUANsA2wGCAYMMVwGF -CYEC1YBDgC6BAtaALoEC14EC0gkJgQLY0gAOADYANwD4gATSAA4ANgA3APiABNsBkAAOAZEBkgGTAZQB -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 -eNMADgEHARIBCgEUCLWAGV8QFHt7MSwgOX0sIHs3MTQsIDQzOX19W3ByZWZzV2luZG931AAOAMQAxQDG -AgcCOA3QDdGAW4BkgQM7gQM92AAOAZEBkgGTAZQBlQGWAXQBmg3UAZwA8QGeAZ8BoAO4gDuBAzyAEYA0 -gDiAwF8QEUNvbmZpZ3VyZSBLZXlzLi4uXGJlZ2luQ29uZmlnOtQADgDEAMUAxgIHAB8N3g3fgFuAAoED -P4EDQdgADgGRAZIBkwGUAZUBlgF0AZoN4gGcAPEBngGfAaADz4A7gQNAgBGANIA4gMhYU2hvdyBBbGxf -EBZ1bmhpZGVBbGxBcHBsaWNhdGlvbnM61AAOAMQAxQDGAgcCOA3sDe2AW4BkgQNDgQNI1wDQAA4A0QDS -ANMA1ADVAjwCDQ3xDfIA2gDbAjyAXoBZgQNEgQNFCYBeXxAVe3sxNjQsIDU2fSwgezg0LCAzMH193QDl -AA4BagFrAWwBbQFuAOcA6ADpAXMA6gF1AhQCFQDxAhcCSwIYDfoN+wIbDewCHQJRAh+AWIARgFSBA0eB -A0aAU4EDQ1dDYXB0dXJl0gAOADYANwD4gARccG9sbENhcHR1cmU61AAOAMQAxQDGAMcHLQFUDgaAHoEC -b4AogQNKWXNvdW5kRWNob9QADgDEAMUAxgIHAjgOCw4MgFuAZIEDTIEDUdcA0AAOANEA0gDTANQA1QI8 -Ag0OEA4RANoA2wI8gF6AWYEDTYEDTgmAXl8QFXt7MTUyLCAxMn0sIHs4NCwgMzJ9fd0A5QAOAWoBawFs -AW0BbgDnAOgA6QFzAOoBdQIUAhUOFwIXAPUCGA4ZDZACGw4LAh0CHgIfgFiBA0+AVIEDUIEDJYBTgQNM -0gAOADYANwD4gATSAA4ANgA3APiABF8QD2Nsb3NlUHJlZnNOdWxsOtQADgDEAMUAxgDHBygBVA4mgB6B -AkuAKIEDU1lmbGFzaFNpemXUAA4AxADFAMYAxwHfAMkOLIAegEuAC4EDVVtjaGVhdEZpZWxkMtQADgDE -AMUAxgDHAS0AyQ4ygB6AI4ALgQNXXmNoZWF0RmllbGRHU0E11AAOAMQAxQDGAMcONgI4DjiAHoEDWYBk -gQOc3AJkAA4CZQJmAmcCaAJpAmoCawJsAm0CbgI8AnAOPA49AnMCdA4/DkACSwD1DkEOQoBegHyBA5mB -A1uAa4EDWoEDm4EDmoEDXF8QGHt7NjY1LCA1NjB9LCB7MzM0LCAzMDV9fV5Db25maWd1cmUgS2V5c9IA -DgA2ADcCf4AE0gAOAEUATQ5JgEGvEBwOSg5LBFwGvA5ODk8OUA5RDewOUwLmDlUOVg5XBBoEdAL+BXcO -CwOQAjkGogQ2DmEOYg5jBY0OZYEDXoEDY4DsgQGHgQNogQNtgQNygQN3gQNDgQN8gIqBA4GBA4aBA4mA -24DzgJGBATOBA0yAtoBdgQGAgOKBA4yBA4+BA5KBATiBA5XXANAADgDRANIA0wDUANUCPAINDmkOagDa -ANsCPIBegFmBA1+BA2AJgF5fEBV7ezE0LCAyMTZ9LCB7ODQsIDMwfX3dAOUADgFqAWsBbAFtAW4A5wDo -AOkBcwDqAXUCFAIVAPECFwJLAhgOcg5zAhsOSgIdAlECH4BYgBGAVIEDYoEDYYBTgQNeUlVw0gAOADYA -NwD4gATXANAADgDRANIA0wDUANUCPAINDnwOfQDaANsCPIBegFmBA2SBA2UJgF5fEBV7ezE0LCAxODR9 -LCB7ODQsIDMwfX3dAOUADgFqAWsBbAFtAW4A5wDoAOkBcwDqAXUCFAIVAPECFwJLAhgOhQ6GAhsOSwId -AlECH4BYgBGAVIEDZ4EDZoBTgQNjVERvd27SAA4ANgA3APiABNcA0AAOANEA0gDTANQA1QI8Ag0Ojw6Q -ANoA2wI8gF6AWYEDaYEDagmAXl8QFHt7MTQsIDg4fSwgezg0LCAzMH193QDlAA4BagFrAWwBbQFuAOcA -6ADpAXMA6gF1AhQCFQDxAhcCSwIYDpgOmQIbDk4CHQJRAh+AWIARgFSBA2yBA2uAU4EDaFFB0gAOADYA -NwD4gATXANAADgDRANIA0wDUANUCPAINDqIOowDaANsCPIBegFmBA26BA28JgF5fEBR7ezE0LCA1Nn0s -IHs4NCwgMzB9fd0A5QAOAWoBawFsAW0BbgDnAOgA6QFzAOoBdQIUAhUA8QIXAksCGA6rDqwCGw5PAh0C -UQIfgFiAEYBUgQNxgQNwgFOBA21RQtIADgA2ADcA+IAE1wDQAA4A0QDSANMA1ADVAjwCDQ61DrYA2gDb -AjyAXoBZgQNzgQN0CYBeXxAVe3sxNjQsIDg4fSwgezg0LCAzMH193QDlAA4BagFrAWwBbQFuAOcA6ADp -AXMA6gF1AhQCFQDxAhcCSwIYDr4OvwIbDlACHQJRAh+AWIARgFSBA3aBA3WAU4EDclVTcGVlZNIADgA2 -ADcA+IAE1wDQAA4A0QDSANMA1ADVAjwCDQ7IDskA2gDbAjyAXoBZgQN4gQN5CYBeXxAWe3sxNjQsIDEy -MH0sIHs4NCwgMzB9fd0A5QAOAWoBawFsAW0BbgDnAOgA6QFzAOoBdQIUAhUA8QIXAksCGA7RDtICGw5R -Ah0CUQIfgFiAEYBUgQN7gQN6gFOBA3dWU2VsZWN00gAOADYANwD4gATXANAADgDRANIA0wDUANUCPAIN -DtsO3ADaANsCPIBegFmBA32BA34JgF5fEBZ7ezE2NCwgMjE2fSwgezg0LCAzMH193QDlAA4BagFrAWwB -bQFuAOcA6ADpAXMA6gF1AhQCFQDxAhcCSwIYDuQO5QIbDlMCHQJRAh+AWIARgFSBA4CBA3+AU4EDfFFM -0gAOADYANwD4gATXANAADgDRANIA0wDUANUCPAINDu4O7wDaANsCPIBegFmBA4KBA4MJgF5fEBZ7ezE2 -NCwgMTUyfSwgezg0LCAzMH193QDlAA4BagFrAWwBbQFuAOcA6ADpAXMA6gF1AhQCFQDxAhcCSwIYDvcO -+AIbDlUCHQJRAh+AWIARgFSBA4WBA4SAU4EDgVVTdGFydNIADgA2ADcA+IAE1wDQAA4A0QDSANMA1ADV -AjwA1w8BDwIA2gDbAjyAXoAcgQOHgQOICYBeXxAWe3sxMDcsIDIyM30sIHs0NiwgMTl9fdkA5QAOAOYA -5wDoAOkA6gDsAO0DCgDvAwwA8QF7DlYDEADbAPeAG4CUgBGALoEDhgmAGtcA0AAOANEA0gDTANQA1QI8 -ANcPEQ8SANoA2wI8gF6AHIEDioEDiwmAXl8QFnt7MTA3LCAxOTF9LCB7NDYsIDE5fX3ZAOUADgDmAOcA -6ADpAOoA7ADtAwoA7wMMAPEBew5XAxAA2wMSgBuAlIARgC6BA4kJgJfXANAADgDRANIA0wDUANUCPADX -DyEPIgDaANsCPIBegByBA42BA44JgF5fEBV7ezI1NywgNjN9LCB7NDYsIDE5fX3ZAOUADgDmAOcA6ADp -AOoA7ADtAwoA7wMMAPEBew5hAxAA2wMSgBuAlIARgC6BA4wJgJfXANAADgDRANIA0wDUANUCPADXDzEP -MgDaANsCPIBegByBA5CBA5EJgF5fEBZ7ezI1NywgMTI3fSwgezQ2LCAxOX192QDlAA4A5gDnAOgA6QDq -AOwA7QMKAO8DDADxAXsOYgMQANsDEoAbgJSAEYAugQOPCYCX1wDQAA4A0QDSANMA1ADVAjwA1w9BD0IA -2gDbAjyAXoAcgQOTgQOUCYBeXxAWe3syNTcsIDIyM30sIHs0NiwgMTl9fdkA5QAOAOYA5wDoAOkA6gDs -AO0DCgDvAwwA8QF7DmMDEADbAPeAG4CUgBGALoEDkgmAGtcA0AAOANEA0gDTANQA1QI8ANcPUQ9SANoA -2wI8gF6AHIEDloEDlwmAXl8QFnt7MjU3LCAxNTl9LCB7NDYsIDE5fX3ZAOUADgDmAOcA6ADpAOoA7ADt -AwoA7wMMAPEBew5lAxAA2wMSgBuAlIARgC6BA5UJgJdfEBR7ezEsIDl9LCB7MzM0LCAzMDV9fVxjb25m -aWdXaW5kb3fUAA4AxADFAMYAxwcdAVQPZIAegQH5gCiBA55cZ2JhRnJhbWVTa2lw1AAOAMQAxQDGAgcC -OA5QD2qAW4BkgQNygQOgWnBvbGxTcGVlZDrTAA4AxQDGAgcPbg9vgFuBA6KBA6TYAA4BkQGSAZMBlAGV -AZYBdAGaD3IBnADxAZ4BnwGgAs2AO4EDo4ARgDSAOICAVkRlbGV0ZVdkZWxldGU61AAOAMQAxQDGAMcO -YwI4D32AHoEDkoBkgQOmVmxGaWVsZNQADgDEAMUAxgDHBlMAyQ+DgB6BAW+AC4EDqFtjaGVhdEZpZWxk -NtQADgDEAMUAxgIHAjgOVQ+JgFuAZIEDgYEDqlpwb2xsU3RhcnQ61AAOAMQAxQDGAMcHXgFUD4+AHoEB -qoAogQOsWHRocm90dGxl1AAOAMQAxQDGAgcCOAaiD5WAW4BkgQGAgQOuXGRlZmF1bHRLZXlzOtMADgDF -AMYCBw+ZD5qAW4EDsIEDs9gADgGRAZIBkwGUAZUBlgF0AZoPnQGcD54BngGfAaACzYA7gQOxgQOygDSA -OICAWlNlbGVjdCBBbGxRYVpzZWxlY3RBbGw61AAOAMQAxQDGAMcOVwI4D6mAHoEDiYBkgQO1WWRvd25G -aWVsZNQADgDEAMUAxgIHAjgOSw+vgFuAZIEDY4EDt1lwb2xsRG93bjrUAA4AxADFAMYCBwOvD7QPtYBb -gMOBA7mBA7zYAA4BkQGSAZMBlAGVAZYBdAGaD7gBnA+5AZ4BnwGgA7iAO4EDuoEDu4A0gDiAwF8QD1Jl -c2V0IEVtdWxhdGlvblFyXxAPcmVzZXRFbXVsYXRpb2461AAOAMQAxQDGAMcOZQI4D8SAHoEDlYBkgQO+ -WnN0YXJ0RmllbGTUAA4AxADFAMYCBwI4DkoPyoBbgGSBA16BA8BXcG9sbFVwOtQADgDEAMUAxgIHAjgO -UQ/QgFuAZIEDd4EDwltwb2xsU2VsZWN0OtQADgDEAMUAxgDHBk8AyQ/WgB6BAWeAC4EDxFtjaGVhdEZp -ZWxkM9QADgDEAMUAxgIHAVQHKQ/cgFuAKIECWYEDxl8QD3NlbGVjdEJpb3NGaWxlOtQADgDEAMUAxgDH -DmECOA/igB6BA4yAZIEDyFxjYXB0dXJlRmllbGTUAA4AxADFAMYCBwOvD+cP6IBbgMOBA8qBA87YAA4B -kQGSAZMBlAGVAZYBdAGaD+sBnA/sAZ4BnwGgD++AO4EDzIEDzYA0gDiBA8vTAA4BkQGkAaUP8g/zgEKB -BLCBBLFZQ2xvc2UgUm9tUXdZY2xvc2VSb2060wAOAMUAxgIHD/kP+oBbgQPQgQPU2AAOAZEBkgGTAZQB -lQGWAXQBmg/9AZwP/gGeAZ8BoBABgDuBA9KBA9OANIA4gQPR1AAOAZEA+wGkAaUQBBAFEAaAQoEEtoEE -uIEEt1hNaW5pbWl6ZVFtXxATcGVyZm9ybU1pbmlhdHVyaXplOtQADgDEAMUAxgDHBz4BVBAOgB6BAuqA -KIED1lt2aWRlb0ZpbHRlctQADgDEAMUAxgIHAMkQExAUgFuAC4ED2IED2tgADgGRAZIBkwGUAZUBlgF0 -AZoQFwGcAPEBngGfAaADuIA7gQPZgBGANIA4gMBfECBBZGQgQ29kZUJyZWFrZXJBZHZhbmNlIENoZWF0 -cy4uLl1vcGVuQ2hlYXRDQkE61AAOAMQAxQDGAMcGUwXrAS+AHoEBb4EBUIAm1AAOAMQAxQDGAMcHZAFU -ECeAHoEBzoAogQPdXxARcGF1c2VXaGVuSW5hY3RpdmXUAA4AxADFAMYAxwchAVQQLYAegQIfgCiBA99Z -c2hvd1NwZWVk1AAOAMQAxQDGAgcQMRAyEDOAW4ED44ED4YEECNcADgGRAZMBlAGVAZYBdAGaEDYA8QGe -AZ8BoAPPgDuBA+KAEYA0gDiAyF8QFkFib3V0IFZpc3VhbEJveUFkdmFuY2XcAmQADgJlAmYCZwJoAmkC -agJrAmwCbQJuBRUCcBA/EEACcwJ0EEIQQwJLARQQRBBFgQEagHyBBAWBA+WAa4ED5IEEB4EEBoED5l8Q -GHt7Njk0LCA2NjZ9LCB7Mjg5LCAyNzR9fVVBYm91dNIADgA2ADcCf4AE0gAOAEUATRBMgEGlBRIQThBP -EFAQUYEBGYED6IED7YED+4ED/9cA0AAOANEA0gDTANQA1QUVANcQVRBWANoA2wUVgQEagByBA+mBA+oJ -gQEaXxAWe3s2MywgMjMyfSwgezE2NSwgMjJ9fdgA5QAOAOYA5wDoAOkA6gDtAhQA7wMMEF0QXhBOAxAD -EoAbgJSBA+uBA+yBA+iAl18QEFZpc3VhbEJveUFkdmFuY2XUAA4A+gD7APwA/RBkAP8BAIAUI0AyAAAA -AAAAgBPZANAADgDREGcA0hBoANMA1ADVBRUQahBrANsQbRBuANoA2wUVWk5TRWRpdGFibGVbTlNEcmFn -VHlwZXOBARqBA/qBA/UJgQP2gQPuCYEBGtIADgBFAEYQc4AIphB0EHUQdhB3EHgQeYED74ED8IED8YED -8oED84ED9F8QGUFwcGxlIFBERiBwYXN0ZWJvYXJkIHR5cGVfEBlBcHBsZSBQTkcgcGFzdGVib2FyZCB0 -eXBlXxAVTlNGaWxlbmFtZXNQYm9hcmRUeXBlXxAxTmVYVCBFbmNhcHN1bGF0ZWQgUG9zdFNjcmlwdCB2 -MS4yIHBhc3RlYm9hcmQgdHlwZV8QHk5lWFQgVElGRiB2NC4wIHBhc3RlYm9hcmQgdHlwZV8QGkFwcGxl -IFBJQ1QgcGFzdGVib2FyZCB0eXBlXxAWe3s4NywgMTQzfSwgezExMiwgODJ9fdgA5QAOEIIA5xCDEIQA -6hCFEIYQhwdNEIgHTQdNEIkHUVdOU1N0eWxlV05TQWxpZ25XTlNTY2FsZVpOU0FuaW1hdGVzEgAB/gCB -A/mBA/cSAgAAAAjTAA4AMgGqAasBrBCOgDeANYED+F8QEU5TQXBwbGljYXRpb25JY29u0gA6ADsQkRCS -oxCSANIAP1tOU0ltYWdlQ2VsbNIAOgA7EJQQlaUQlQEjASQBJQA/W05TSW1hZ2VWaWV31wDQAA4A0QDS -ANMA1ADVBRUA1xCZEJoA2gDbBRWBARqAHIED/IED/QmBARpfEBV7ezg5LCA1NX0sIHsxMTgsIDk2fX3Y -AOUADgDmAOcA6ADpAOoA7RCfAO8DDBCiAXsQUAMQAxISBCH+AYAbgJSBA/6ALoED+4CXXxA6Ck9yaWdp -bmFsIFZlcnNpb246CkZvcmdvdHRlbgoKTWFjIE9TIFggVmVyc2lvbjoKQWRhbSBHcmVlbtcA0AAOANEA -0gDTANQA1QUVAg0QqhCrANoA2wUVgQEagFmBBACBBAEJgQEaXxAUe3s1MSwgMTJ9LCB7ODcsIDMyfX3d -AOUADgFqAWsBbAFtAW4A5wDoAOkBcwDqAXUCFAIVAPECFwD1AhsQsxC0AhsQUQIdAlECH4BYgBGAU4EE -A4EEAoBTgQP/V0xpY2Vuc2XSAA4ANgA3APiABF8QFHt7MSwgOX0sIHsyODksIDI3NH19XxAVbWFrZUtl -eUFuZE9yZGVyRnJvbnQ61AAOAMQAxQDGAMcOVgI4EMCAHoEDhoBkgQQKV3VwRmllbGTUAA4AxADFAMYA -xwc6AVQQxoAegQLSgCiBBAxfEBF2aWRlb1dhc2hlZENvbG9yc9QADgDEAMUAxgDHAoUAyRDMgB6AcYAL -gQQOXmNoZWF0RmllbGRHU0Ez1AAOAMQAxQDGAMcDaQZPAS+AHoCsgQFngCbUAA4AxADFAMYCBwAfENYQ -14BbgAKBBBGBBBTYAA4BkQGSAZMBlAGVAZYBdAGaENoBnBDbAZ4BnwGgA8+AO4EEEoEEE4A0gDiAyF8Q -FUhpZGUgVmlzdWFsQm95QWR2YW5jZVFoVWhpZGU61AAOAMQAxQDGAMcCiQDJEOaAHoB0gAuBBBZeY2hl -YXRGaWVsZEdTQTbTAA4AxQDGAgcQ6gUTgFuBBBiBAR7XANAADgDRANIA0wDUANUQ7QINEO8Q8ADaANsQ -7YEEGYBZgQQagQQbCYEEGdUA0AAOANEA3gDTACsA4BD2EPcA2oAAgHiBBJmBBEtfEBV7ezQxOCwgMTJ9 -LCB7ODQsIDMyfX3dAOUADgFqAWsBbAFtAW4A5wDoAOkBcwDqAXUCFAIVAPECFwD1AhgFJQIaAhsQ6gId -Ah4CH4BYgBGAVIEBHYBSgFOBBBjUAA4AxADFAMYCBwFUEQQRBYBbgCiBBB2BBCDYAA4BkQGSAZMBlAGV -AZYBdAGaEQgBnBEJAZ4BnwGgD++AO4EEHoEEH4A0gDiBA8tbT3BlbiBSb20uLi5Rb18QEG9wZW5Sb21G -cm9tTWVudTrUAA4AxADFAMYAxwc3AVQRFIAegQKzgCiBBCJbdmlkZW9Cb3JkZXLUAA4AxADFAMYAxwdm -AVQRGoAegQHegCiBBCRdcmVhbHRpbWVDbG9ja9QADgDEAMUAxgIHAVQHQQ4MgFuAKIEDIoEDUdQADgDE -AMUAxgIHAB8RJBElgFuAAoEEJ4EEKdgADgGRAZIBkwGUAZUBlgF0AZoRKAGcAPEBngGfAaADz4A7gQQo -gBGANIA4gMhbSGlkZSBPdGhlcnNfEBZoaWRlT3RoZXJBcHBsaWNhdGlvbnM61AAOAMQAxQDGAMcOCwI4 -ETOAHoEDTIBkgQQrXENhbmNlbEJ1dHRvbtQADgDEAMUAxgIHAVQHQBE5gFuAKIEDH4EELVtjbG9zZVBy -ZWZzOtQADgDEAMUAxgIHA68RPhE/gFuAw4EEL4EEMtgADgGRAZIBkwGUAZUBlgF0AZoRQgGcEUMBngGf -AaADuIA7gQQwgQQxgDSAOIDAXUFkdmFuY2UgRnJhbWVRbl1hZHZhbmNlRnJhbWU61AAOAMQAxQDGAgcB -VBFNEU6AW4AogQQ0gQQ22AAOAZEBkgGTAZQBlQGWAXQBmhFRAZwA8QGeAZ8BoAPPgDuBBDWAEYA0gDiA -yF8QGlZpc2l0IEVtdVNjZW5lIFNvZnR3YXJlLi4uXW9wZW5Ib21lcGFnZTrUAA4AxADFAMYAxwc4AVQR -XIAegQLCgCiBBDhfEA92aWRlb0Z1bGxzY3JlZW7UAA4AxADFAMYAxwcwAVQRYoAegQKDgCiBBDpfEBJz -b3VuZFJldmVyc2VTdGVyZW/UAA4AxADFAMYAxwKJAS0BL4AegHSAI4Am1AAOAMQAxQDGAMcHYAFUEW2A -HoEBuoAogQQ9XmNoYW5nZUZpbGVUeXBl1AAOAMQAxQDGAMcHNgFUEXOAHoECn4AogQQ/WXZpZGVvU2l6 -ZdQADgDEAMUAxgDHB10BVBF5gB6BAaSAKIEEQVxiaW9zRmlsZVBhdGjUAA4AxADFAMYCBwFUEX4Rf4Bb -gCiBBEOBBEXYAA4BkQGSAZMBlAGVAZYBdAGaEYIBnADxAZ4BnwGgA8+AO4EERIARgDSAOIDIXlByZWZl -cmVuY2VzLi4uWm9wZW5QcmVmczrUAA4AxADFAMYCBxGLEFEQM4BbgQRHgQP/gQQI3AJkAA4CZQJmAmcC -aAJpAmoCawJsAm0CbhDtAnARkRGSAnMCdBGUEZUCSwEUEZYRl4EEGYB8gQSagQRJgGuBBEiBBJyBBJuB -BEpfEBh7ezU4OCwgNDU1fSwgezUxNiwgNDE1fX1fEBJHTlUgUHVibGljIExpY2Vuc2XSAA4ANgA3An+A -BNIADgBFAE0RnoBBohGfEOqBBEyBBBjbANARogAOANERowDeANMA1RGkEaUHSxDtEacRqBGpEaoRqwDa -EO0RrRGuEa5bTlNIU2Nyb2xsZXJYTlNzRmxhZ3NbTlNWU2Nyb2xsZXJdTlNOZXh0S2V5Vmlld4EEGYEE -lYEEmIEElxBSgQRNgQQZgQSRgQROgQRO0gAOAEUATRGygEGjEa4RrRGngQROgQSRgQSV3ADQAA4A0RG3 -EbgRuQDeANMRuhG7ANURpRGfEb0RvhG/EcARwRHCEcMRxAELEZ8RxFhOU0JvdW5kc1hOU0N1cnNvcllO -U2N2RmxhZ3NZTlNEb2NWaWV3WU5TQkdDb2xvcoEETIEEkIEEjIEEjYEEjhAEgQRPEQkAgQRQgBiBBEyB -BFDSAA4ARQBNEcqAQaERxIEEUNwA0AAOANERzRHOEc8QaADTAmoR0ADVEdERrhHTEdQR1QEMEdYR1xHY -EdkR2hGuACtfEA9OU1RleHRDb250YWluZXJZTlNUVkZsYWdzXE5TU2hhcmVkRGF0YVhOU01pbml6ZVpO -U0RlbGVnYXRlgQROgQSLgQRYgQRZgQR4gQRREQkSgQSJgQSKgQROgADSAA4ARQBGEd+ACKsR4BB0EeIR -4xB2EeUQdxB5EHgR6RHqgQRSgQPvgQRTgQRUgQPxgQRVgQPygQP0gQPzgQRWgQRXXxAZTmVYVCBSVEZE -IHBhc3RlYm9hcmQgdHlwZV8QEk5TU3RyaW5nUGJvYXJkVHlwZV8QGkFwcGxlIEhUTUwgcGFzdGVib2Fy -ZCB0eXBlXxAXTlNDb2xvciBwYXN0ZWJvYXJkIHR5cGVfECNDb3JlUGFzdGVib2FyZEZsYXZvclR5cGUg -MHg2RDZGNkY3Nl8QKk5lWFQgUmljaCBUZXh0IEZvcm1hdCB2MS4wIHBhc3RlYm9hcmQgdHlwZV8QFnt7 -MCwgMjR9LCB7NDU5LCA0MDQ2fX3VEfMADhH0EfUR9gD1EfcRxBH5EfpZTlNUQ0ZsYWdzWk5TVGV4dFZp -ZXdXTlNXaWR0aF8QD05TTGF5b3V0TWFuYWdlcoEEd4EEUCNAfLAAAAAAAIEEWtUADhH8Ef0R/hHREf8S -ABIBAQwAK18QEE5TVGV4dENvbnRhaW5lcnNdTlNUZXh0U3RvcmFnZVlOU0xNRmxhZ3OBBHaBBHWBBFuA -ANQADhIEAD4R0RIFEgYSBwArXE5TQXR0cmlidXRlc4EEdIEEXYEEXIAA0gAOADYANxILgARfETsvCQkg -ICAgCQkgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQoJCSAgICAgIAkJIFZlcnNpb24gMiwgSnVu -ZSAxOTkxCgogQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg -SW5jLgogICAgICAgICAgICAgICAgICAgICAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0 -b24sIE1BICAwMjExMS0xMzA3ICBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBk -aXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hh -bmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgoJCQkgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZv -ciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNo -YXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNl -bnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5n -ZSBmcmVlCnNvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBp -dHMgdXNlcnMuICBUaGlzCkdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBtb3N0IG9mIHRo -ZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dy -YW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KdXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3 -YXJlIEZvdW5kYXRpb24gc29mdHdhcmUgaXMgY292ZXJlZCBieQp0aGUgR05VIExpYnJhcnkgR2VuZXJh -bCBQdWJsaWMgTGljZW5zZSBpbnN0ZWFkLikgIFlvdSBjYW4gYXBwbHkgaXQgdG8KeW91ciBwcm9ncmFt -cywgdG9vLgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcg -dG8gZnJlZWRvbSwgbm90CnByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNp -Z25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKaGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNv -cGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvcgp0aGlzIHNlcnZpY2UgaWYgeW91IHdp -c2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQKaWYgeW91IHdhbnQg -aXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQKaW4g -bmV3IGZyZWUgcHJvZ3JhbXM7IGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdz -LgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRo -YXQgZm9yYmlkCmFueW9uZSB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBz -dXJyZW5kZXIgdGhlIHJpZ2h0cy4KVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWlu -IHJlc3BvbnNpYmlsaXRpZXMgZm9yIHlvdSBpZiB5b3UKZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNv -ZnR3YXJlLCBvciBpZiB5b3UgbW9kaWZ5IGl0LgoKICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1 -dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCmdyYXRpcyBvciBmb3IgYSBmZWUsIHlv -dSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRoZSByaWdodHMgdGhhdAp5b3UgaGF2ZS4gIFlv -dSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZQpzb3Vy -Y2UgY29kZS4gIEFuZCB5b3UgbXVzdCBzaG93IHRoZW0gdGhlc2UgdGVybXMgc28gdGhleSBrbm93IHRo -ZWlyCnJpZ2h0cy4KCiAgV2UgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczogKDEpIGNv -cHlyaWdodCB0aGUgc29mdHdhcmUsIGFuZAooMikgb2ZmZXIgeW91IHRoaXMgbGljZW5zZSB3aGljaCBn -aXZlcyB5b3UgbGVnYWwgcGVybWlzc2lvbiB0byBjb3B5LApkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkg -dGhlIHNvZnR3YXJlLgoKICBBbHNvLCBmb3IgZWFjaCBhdXRob3IncyBwcm90ZWN0aW9uIGFuZCBvdXJz -LCB3ZSB3YW50IHRvIG1ha2UgY2VydGFpbgp0aGF0IGV2ZXJ5b25lIHVuZGVyc3RhbmRzIHRoYXQgdGhl -cmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZQpzb2Z0d2FyZS4gIElmIHRoZSBzb2Z0d2FyZSBp -cyBtb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgd2UKd2FudCBpdHMgcmVjaXBp -ZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbCwgc28KdGhh -dCBhbnkgcHJvYmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0aGUg -b3JpZ2luYWwKYXV0aG9ycycgcmVwdXRhdGlvbnMuCgogIEZpbmFsbHksIGFueSBmcmVlIHByb2dyYW0g -aXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlCnBhdGVudHMuICBXZSB3aXNoIHRvIGF2 -b2lkIHRoZSBkYW5nZXIgdGhhdCByZWRpc3RyaWJ1dG9ycyBvZiBhIGZyZWUKcHJvZ3JhbSB3aWxsIGlu -ZGl2aWR1YWxseSBvYnRhaW4gcGF0ZW50IGxpY2Vuc2VzLCBpbiBlZmZlY3QgbWFraW5nIHRoZQpwcm9n -cmFtIHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB3ZSBoYXZlIG1hZGUgaXQgY2xlYXIgdGhh -dCBhbnkKcGF0ZW50IG11c3QgYmUgbGljZW5zZWQgZm9yIGV2ZXJ5b25lJ3MgZnJlZSB1c2Ugb3Igbm90 -IGxpY2Vuc2VkIGF0IGFsbC4KCiAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNv -cHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKbW9kaWZpY2F0aW9uIGZvbGxvdy4KCgoJCSAgICBHTlUgR0VO -RVJBTCBQVUJMSUMgTElDRU5TRQogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgQ09QWUlORywgRElT -VFJJQlVUSU9OIEFORCBNT0RJRklDQVRJT04KCiAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55 -IHByb2dyYW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucwphIG5vdGljZSBwbGFjZWQgYnkgdGhl -IGNvcHlyaWdodCBob2xkZXIgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZAp1bmRlciB0aGUgdGVy -bXMgb2YgdGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3csCnJl -ZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBhICJ3b3JrIGJhc2VkIG9uIHRoZSBQ -cm9ncmFtIgptZWFucyBlaXRoZXIgdGhlIFByb2dyYW0gb3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRl -ciBjb3B5cmlnaHQgbGF3Ogp0aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFByb2dy -YW0gb3IgYSBwb3J0aW9uIG9mIGl0LAplaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25z -IGFuZC9vciB0cmFuc2xhdGVkIGludG8gYW5vdGhlcgpsYW5ndWFnZS4gIChIZXJlaW5hZnRlciwgdHJh -bnNsYXRpb24gaXMgaW5jbHVkZWQgd2l0aG91dCBsaW1pdGF0aW9uIGluCnRoZSB0ZXJtICJtb2RpZmlj -YXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgoKQWN0aXZpdGllcyBv -dGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QKY292 -ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiAgVGhlIGFjdCBv -ZgpydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91dHB1dCBmcm9t -IHRoZSBQcm9ncmFtCmlzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdv -cmsgYmFzZWQgb24gdGhlClByb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkg -cnVubmluZyB0aGUgUHJvZ3JhbSkuCldoZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0 -aGUgUHJvZ3JhbSBkb2VzLgoKICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0g -Y29waWVzIG9mIHRoZSBQcm9ncmFtJ3MKc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFu -eSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91CmNvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRlbHkg -cHVibGlzaCBvbiBlYWNoIGNvcHkgYW4gYXBwcm9wcmlhdGUKY29weXJpZ2h0IG5vdGljZSBhbmQgZGlz -Y2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZQpub3RpY2VzIHRoYXQgcmVmZXIg -dG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7CmFuZCBnaXZl -IGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFtIGEgY29weSBvZiB0aGlzIExpY2Vuc2UK -YWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KCllvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2lj -YWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksIGFuZAp5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9m -ZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLgoKICAyLiBZb3UgbWF5 -IG1vZGlmeSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRoZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9uCm9m -IGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQgY29weSBhbmQK -ZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2Vj -dGlvbiAxCmFib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRp -dGlvbnM6CgogICAgYSkgWW91IG11c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHBy -b21pbmVudCBub3RpY2VzCiAgICBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZpbGVzIGFuZCB0 -aGUgZGF0ZSBvZiBhbnkgY2hhbmdlLgoKICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRoYXQg -eW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgogICAgd2hvbGUgb3IgaW4gcGFydCBjb250 -YWlucyBvciBpcyBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0gb3IgYW55CiAgICBwYXJ0IHRoZXJlb2Ys -IHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZAogICAgcGFy -dGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgoKICAgIGMpIElmIHRoZSBtb2RpZmll -ZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkKICAgIHdoZW4gcnVu -LCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBzdGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2gKICAgIGludGVy -YWN0aXZlIHVzZSBpbiB0aGUgbW9zdCBvcmRpbmFyeSB3YXksIHRvIHByaW50IG9yIGRpc3BsYXkgYW4K -ICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBh -bmQgYQogICAgbm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0 -aGF0IHlvdSBwcm92aWRlCiAgICBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2VycyBtYXkgcmVkaXN0cmli -dXRlIHRoZSBwcm9ncmFtIHVuZGVyCiAgICB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUg -dXNlciBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcwogICAgTGljZW5zZS4gIChFeGNlcHRpb246IGlm -IHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKICAgIGRvZXMgbm90IG5vcm1hbGx5 -IHByaW50IHN1Y2ggYW4gYW5ub3VuY2VtZW50LCB5b3VyIHdvcmsgYmFzZWQgb24KICAgIHRoZSBQcm9n -cmFtIGlzIG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQoKClRoZXNlIHJlcXVp -cmVtZW50cyBhcHBseSB0byB0aGUgbW9kaWZpZWQgd29yayBhcyBhIHdob2xlLiAgSWYKaWRlbnRpZmlh -YmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSwK -YW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRlIHdv -cmtzIGluCnRoZW1zZWx2ZXMsIHRoZW4gdGhpcyBMaWNlbnNlLCBhbmQgaXRzIHRlcm1zLCBkbyBub3Qg -YXBwbHkgdG8gdGhvc2UKc2VjdGlvbnMgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRl -IHdvcmtzLiAgQnV0IHdoZW4geW91CmRpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFydCBv -ZiBhIHdob2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZApvbiB0aGUgUHJvZ3JhbSwgdGhlIGRpc3RyaWJ1 -dGlvbiBvZiB0aGUgd2hvbGUgbXVzdCBiZSBvbiB0aGUgdGVybXMgb2YKdGhpcyBMaWNlbnNlLCB3aG9z -ZSBwZXJtaXNzaW9ucyBmb3Igb3RoZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUKZW50aXJlIHdob2xl -LCBhbmQgdGh1cyB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hvIHdyb3RlIGl0 -LgoKVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0 -cyBvciBjb250ZXN0CnlvdXIgcmlnaHRzIHRvIHdvcmsgd3JpdHRlbiBlbnRpcmVseSBieSB5b3U7IHJh -dGhlciwgdGhlIGludGVudCBpcyB0bwpleGVyY2lzZSB0aGUgcmlnaHQgdG8gY29udHJvbCB0aGUgZGlz -dHJpYnV0aW9uIG9mIGRlcml2YXRpdmUgb3IKY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgUHJv -Z3JhbS4KCkluIGFkZGl0aW9uLCBtZXJlIGFnZ3JlZ2F0aW9uIG9mIGFub3RoZXIgd29yayBub3QgYmFz -ZWQgb24gdGhlIFByb2dyYW0Kd2l0aCB0aGUgUHJvZ3JhbSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24g -dGhlIFByb2dyYW0pIG9uIGEgdm9sdW1lIG9mCmEgc3RvcmFnZSBvciBkaXN0cmlidXRpb24gbWVkaXVt -IGRvZXMgbm90IGJyaW5nIHRoZSBvdGhlciB3b3JrIHVuZGVyCnRoZSBzY29wZSBvZiB0aGlzIExpY2Vu -c2UuCgogIDMuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYSB3b3Jr -IGJhc2VkIG9uIGl0LAp1bmRlciBTZWN0aW9uIDIpIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUg -Zm9ybSB1bmRlciB0aGUgdGVybXMgb2YKU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0 -IHlvdSBhbHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgoKICAgIGEpIEFjY29tcGFueSBpdCB3aXRo -IHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nIG1hY2hpbmUtcmVhZGFibGUKICAgIHNvdXJjZSBjb2Rl -LCB3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucwogICAg -MSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRl -cmNoYW5nZTsgb3IsCgogICAgYikgQWNjb21wYW55IGl0IHdpdGggYSB3cml0dGVuIG9mZmVyLCB2YWxp -ZCBmb3IgYXQgbGVhc3QgdGhyZWUKICAgIHllYXJzLCB0byBnaXZlIGFueSB0aGlyZCBwYXJ0eSwgZm9y -IGEgY2hhcmdlIG5vIG1vcmUgdGhhbiB5b3VyCiAgICBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWlu -ZyBzb3VyY2UgZGlzdHJpYnV0aW9uLCBhIGNvbXBsZXRlCiAgICBtYWNoaW5lLXJlYWRhYmxlIGNvcHkg -b2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIHRvIGJlCiAgICBkaXN0cmlidXRlZCB1bmRl -ciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bQogICAgY3VzdG9t -YXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAoKICAgIGMpIEFjY29tcGFueSBp -dCB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgcmVjZWl2ZWQgYXMgdG8gdGhlIG9mZmVyCiAgICB0byBk -aXN0cmlidXRlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUuICAoVGhpcyBhbHRlcm5hdGl2ZSBpcwog -ICAgYWxsb3dlZCBvbmx5IGZvciBub25jb21tZXJjaWFsIGRpc3RyaWJ1dGlvbiBhbmQgb25seSBpZiB5 -b3UKICAgIHJlY2VpdmVkIHRoZSBwcm9ncmFtIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9y -bSB3aXRoIHN1Y2gKICAgIGFuIG9mZmVyLCBpbiBhY2NvcmQgd2l0aCBTdWJzZWN0aW9uIGIgYWJvdmUu -KQoKVGhlIHNvdXJjZSBjb2RlIGZvciBhIHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRo -ZSB3b3JrIGZvcgptYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gIEZvciBhbiBleGVjdXRhYmxlIHdv -cmssIGNvbXBsZXRlIHNvdXJjZQpjb2RlIG1lYW5zIGFsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBt -b2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueQphc3NvY2lhdGVkIGludGVyZmFjZSBkZWZpbml0aW9u -IGZpbGVzLCBwbHVzIHRoZSBzY3JpcHRzIHVzZWQgdG8KY29udHJvbCBjb21waWxhdGlvbiBhbmQgaW5z -dGFsbGF0aW9uIG9mIHRoZSBleGVjdXRhYmxlLiAgSG93ZXZlciwgYXMgYQpzcGVjaWFsIGV4Y2VwdGlv -biwgdGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQgbm90IGluY2x1ZGUKYW55dGhpbmcgdGhh -dCBpcyBub3JtYWxseSBkaXN0cmlidXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBvciBiaW5hcnkKZm9ybSkg -d2l0aCB0aGUgbWFqb3IgY29tcG9uZW50cyAoY29tcGlsZXIsIGtlcm5lbCwgYW5kIHNvIG9uKSBvZiB0 -aGUKb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSBydW5zLCB1bmxlc3MgdGhh -dCBjb21wb25lbnQKaXRzZWxmIGFjY29tcGFuaWVzIHRoZSBleGVjdXRhYmxlLgoKSWYgZGlzdHJpYnV0 -aW9uIG9mIGV4ZWN1dGFibGUgb3Igb2JqZWN0IGNvZGUgaXMgbWFkZSBieSBvZmZlcmluZwphY2Nlc3Mg -dG8gY29weSBmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgdGhlbiBvZmZlcmluZyBlcXVpdmFsZW50CmFj -Y2VzcyB0byBjb3B5IHRoZSBzb3VyY2UgY29kZSBmcm9tIHRoZSBzYW1lIHBsYWNlIGNvdW50cyBhcwpk -aXN0cmlidXRpb24gb2YgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFy -ZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29k -ZS4KCgogIDQuIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgb3IgZGlzdHJpYnV0 -ZSB0aGUgUHJvZ3JhbQpleGNlcHQgYXMgZXhwcmVzc2x5IHByb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5z -ZS4gIEFueSBhdHRlbXB0Cm90aGVyd2lzZSB0byBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2Ugb3IgZGlz -dHJpYnV0ZSB0aGUgUHJvZ3JhbSBpcwp2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0 -ZSB5b3VyIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UuCkhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUg -cmVjZWl2ZWQgY29waWVzLCBvciByaWdodHMsIGZyb20geW91IHVuZGVyCnRoaXMgTGljZW5zZSB3aWxs -IG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzIHRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoCnBhcnRpZXMg -cmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KCiAgNS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNj -ZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90CnNpZ25lZCBpdC4gIEhvd2V2ZXIsIG5v -dGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCmRpc3RyaWJ1dGUgdGhl -IFByb2dyYW0gb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQpwcm9oaWJp -dGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5 -Cm1vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9u -IHRoZQpQcm9ncmFtKSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2Ug -dG8gZG8gc28sIGFuZAphbGwgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0 -cmlidXRpbmcgb3IgbW9kaWZ5aW5nCnRoZSBQcm9ncmFtIG9yIHdvcmtzIGJhc2VkIG9uIGl0LgoKICA2 -LiBFYWNoIHRpbWUgeW91IHJlZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQg -b24gdGhlClByb2dyYW0pLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBsaWNl -bnNlIGZyb20gdGhlCm9yaWdpbmFsIGxpY2Vuc29yIHRvIGNvcHksIGRpc3RyaWJ1dGUgb3IgbW9kaWZ5 -IHRoZSBQcm9ncmFtIHN1YmplY3QgdG8KdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3UgbWF5 -IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVy -Y2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgpZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBm -b3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB0bwp0aGlzIExpY2Vuc2UuCgog -IDcuIElmLCBhcyBhIGNvbnNlcXVlbmNlIG9mIGEgY291cnQganVkZ21lbnQgb3IgYWxsZWdhdGlvbiBv -ZiBwYXRlbnQKaW5mcmluZ2VtZW50IG9yIGZvciBhbnkgb3RoZXIgcmVhc29uIChub3QgbGltaXRlZCB0 -byBwYXRlbnQgaXNzdWVzKSwKY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkg -Y291cnQgb3JkZXIsIGFncmVlbWVudCBvcgpvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29u -ZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90CmV4Y3VzZSB5b3UgZnJvbSB0aGUgY29u -ZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90CmRpc3RyaWJ1dGUgc28gYXMgdG8g -c2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMKTGljZW5zZSBh -bmQgYW55IG90aGVyIHBlcnRpbmVudCBvYmxpZ2F0aW9ucywgdGhlbiBhcyBhIGNvbnNlcXVlbmNlIHlv -dQptYXkgbm90IGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gYXQgYWxsLiAgRm9yIGV4YW1wbGUsIGlmIGEg -cGF0ZW50CmxpY2Vuc2Ugd291bGQgbm90IHBlcm1pdCByb3lhbHR5LWZyZWUgcmVkaXN0cmlidXRpb24g -b2YgdGhlIFByb2dyYW0gYnkKYWxsIHRob3NlIHdobyByZWNlaXZlIGNvcGllcyBkaXJlY3RseSBvciBp -bmRpcmVjdGx5IHRocm91Z2ggeW91LCB0aGVuCnRoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0aXNmeSBi -b3RoIGl0IGFuZCB0aGlzIExpY2Vuc2Ugd291bGQgYmUgdG8KcmVmcmFpbiBlbnRpcmVseSBmcm9tIGRp -c3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbS4KCklmIGFueSBwb3J0aW9uIG9mIHRoaXMgc2VjdGlvbiBp -cyBoZWxkIGludmFsaWQgb3IgdW5lbmZvcmNlYWJsZSB1bmRlcgphbnkgcGFydGljdWxhciBjaXJjdW1z -dGFuY2UsIHRoZSBiYWxhbmNlIG9mIHRoZSBzZWN0aW9uIGlzIGludGVuZGVkIHRvCmFwcGx5IGFuZCB0 -aGUgc2VjdGlvbiBhcyBhIHdob2xlIGlzIGludGVuZGVkIHRvIGFwcGx5IGluIG90aGVyCmNpcmN1bXN0 -YW5jZXMuCgpJdCBpcyBub3QgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzZWN0aW9uIHRvIGluZHVjZSB5b3Ug -dG8gaW5mcmluZ2UgYW55CnBhdGVudHMgb3Igb3RoZXIgcHJvcGVydHkgcmlnaHQgY2xhaW1zIG9yIHRv -IGNvbnRlc3QgdmFsaWRpdHkgb2YgYW55CnN1Y2ggY2xhaW1zOyB0aGlzIHNlY3Rpb24gaGFzIHRoZSBz -b2xlIHB1cnBvc2Ugb2YgcHJvdGVjdGluZyB0aGUKaW50ZWdyaXR5IG9mIHRoZSBmcmVlIHNvZnR3YXJl -IGRpc3RyaWJ1dGlvbiBzeXN0ZW0sIHdoaWNoIGlzCmltcGxlbWVudGVkIGJ5IHB1YmxpYyBsaWNlbnNl -IHByYWN0aWNlcy4gIE1hbnkgcGVvcGxlIGhhdmUgbWFkZQpnZW5lcm91cyBjb250cmlidXRpb25zIHRv -IHRoZSB3aWRlIHJhbmdlIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkCnRocm91Z2ggdGhhdCBzeXN0ZW0g -aW4gcmVsaWFuY2Ugb24gY29uc2lzdGVudCBhcHBsaWNhdGlvbiBvZiB0aGF0CnN5c3RlbTsgaXQgaXMg -dXAgdG8gdGhlIGF1dGhvci9kb25vciB0byBkZWNpZGUgaWYgaGUgb3Igc2hlIGlzIHdpbGxpbmcKdG8g -ZGlzdHJpYnV0ZSBzb2Z0d2FyZSB0aHJvdWdoIGFueSBvdGhlciBzeXN0ZW0gYW5kIGEgbGljZW5zZWUg -Y2Fubm90CmltcG9zZSB0aGF0IGNob2ljZS4KClRoaXMgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBtYWtl -IHRob3JvdWdobHkgY2xlYXIgd2hhdCBpcyBiZWxpZXZlZCB0bwpiZSBhIGNvbnNlcXVlbmNlIG9mIHRo -ZSByZXN0IG9mIHRoaXMgTGljZW5zZS4KCgogIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVz -ZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGluCmNlcnRhaW4gY291bnRyaWVzIGVpdGhlciBi -eSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQpvcmlnaW5hbCBjb3B5cmln -aHQgaG9sZGVyIHdobyBwbGFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlCm1heSBhZGQg -YW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZwp0 -aG9zZSBjb3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9y -IGFtb25nCmNvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gIEluIHN1Y2ggY2FzZSwgdGhpcyBMaWNl -bnNlIGluY29ycG9yYXRlcwp0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9m -IHRoaXMgTGljZW5zZS4KCiAgOS4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlz -aCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMKb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug -ZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bp -cml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRy -ZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCkVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rp -bmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIFByb2dyYW0Kc3BlY2lmaWVzIGEgdmVyc2lv -biBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kICJhbnkKbGF0ZXIg -dmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29u -ZGl0aW9ucwplaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxp -c2hlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dyYW0gZG9lcyBu -b3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mCnRoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2Ug -YW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4K -CiAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGludG8g -b3RoZXIgZnJlZQpwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgZGlmZmVy -ZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCnRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2Fy -ZSB3aGljaCBpcyBjb3B5cmlnaHRlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0 -ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKbWFrZSBleGNlcHRp -b25zIGZvciB0aGlzLiAgT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMK -b2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMgb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVl -IHNvZnR3YXJlIGFuZApvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJl -IGdlbmVyYWxseS4KCgkJCSAgICBOTyBXQVJSQU5UWQoKICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJ -UyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkKRk9SIFRIRSBQUk9H -UkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVO -Ck9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9U -SEVSIFBBUlRJRVMKUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0Yg -QU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQKT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJ -TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO -RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUwpUTyBUSEUgUVVB -TElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhF -ClBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GIEFMTCBORUNFU1NB -UlkgU0VSVklDSU5HLApSRVBBSVIgT1IgQ09SUkVDVElPTi4KCiAgMTIuIElOIE5PIEVWRU5UIFVOTEVT -UyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFO -WSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09S -ClJFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZ -T1UgRk9SIERBTUFHRVMsCklOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBP -UiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORwpPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkg -VE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEClRPIExPU1MgT0YgREFU -QSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWQpZ -T1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBX -SVRIIEFOWSBPVEhFUgpQUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkg -SEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgoKCQkgICAg -IEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OU9MADhINAEUSDhIPEhJXTlMua2V5c4EEc6ISEBIRgQRe -gQRfohITEhSBBGCBBHFfEBBOU1BhcmFncmFwaFN0eWxl1BIXAA4SGBIZEhoSGwD1EcFaTlNUYWJTdG9w -c18QEk5TV3JpdGluZ0RpcmVjdGlvbltOU0FsaWdubWVudIEEYYEEcNIADgBFEh0SHoEEb6wSHxIgEiES -IhIjEiQSJRImEicSKBIpEiqBBGKBBGSBBGWBBGaBBGeBBGiBBGmBBGqBBGuBBGyBBG2BBG7SAA4SLBIt -Ei5aTlNMb2NhdGlvboEEYyNAPAAAAAAAANIAOgA7EjASMaISMQA/WU5TVGV4dFRhYtIADhIsEi0SNIEE -YyNATAAAAAAAANIADhIsEi0SN4EEYyNAVQAAAAAAANIADhIsEi0SOoEEYyNAXAAAAAAAANIADhIsEi0S -PYEEYyNAYYAAAAAAANIADhIsEi0SQIEEYyNAZQAAAAAAANIADhIsEi0SQ4EEYyNAaIAAAAAAANIADhIs -Ei0SRoEEYyNAbAAAAAAAANIADhIsEi0SSYEEYyNAb4AAAAAAANIADhIsEi0STIEEYyNAcYAAAAAAANIA -DhIsEi0ST4EEYyNAc0AAAAAAANIADhIsEi0SUoEEYyNAdQAAAAAAANIAOgA7ElQB0KIB0AA/0gA6ADsS -VhIVohIVAD/UAA4A+gD7APwA/Qd7ElkBAIAUgQRyVk1vbmFjb9IAOgA7ElwSXaISXQA/XE5TRGljdGlv -bmFyedIAOgA7El8R/aQR/RJgEmEAP18QGU5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmdfEBJOU0F0dHJp -YnV0ZWRTdHJpbmfSAA4ARQBNEmSAQaER1YEEWdIAOgA7EmcR9qIR9gA/0gA6ADsSaRHNohHNAD/YAA4S -axJsEm0A5hJuEm8ScBJxEnIAKwMeAQsSdgArEnhXTlNGbGFnc18QF05TRGVmYXVsdFBhcmFncmFwaFN0 -eWxlXxAQTlNJbnNlcnRpb25Db2xvcl8QFE5TU2VsZWN0ZWRBdHRyaWJ1dGVzXxASTlNNYXJrZWRBdHRy -aWJ1dGVzXxAQTlNMaW5rQXR0cmlidXRlc4EEiBELZIAAgJmAGIEEeYAAgQSA0wAOEg0ARRIOEnsSfoEE -c6ISfBJ9gQR6gQR7ohJ/EoCBBHyBBH7VAA4BBgEHAQgBCQEKAxUBDBKEAQ6AGYCWgQR9gBZfEBtzZWxl -Y3RlZFRleHRCYWNrZ3JvdW5kQ29sb3LVAA4BBgEHAQgBCQEKAx4BDBKKAQ6AGYCZgQR/gBZfEBFzZWxl -Y3RlZFRleHRDb2xvctMADhINAEUSDhKPEpOBBHOjEpASkRJ9gQSBgQSCgQR7oxKUEpUSloEEg4EEhIEE -h1tOU1VuZGVybGluZdMADhKZEpoSmxKcEp1ZTlNIb3RTcG90XE5TQ3Vyc29yVHlwZYEEhoEEhRANV3s4 -LCAtOH3SADoAOxKgEbiiEbgAP9MADgEHARkBCgD1EqOAGUYwIDAgMQDSADoAOxKlEqaiEqYAP18QFE5T -VGV4dFZpZXdTaGFyZWREYXRhXHs0NjUsIDFlKzA3fVl7ODMsIDMzM33SADoAOxKqEfSlEfQSqwEkASUA -P1ZOU1RleHRfEBR7ezEsIDF9LCB7NDU5LCAzMzN9fV8QFXt7MCwgMjR9LCB7NDU5LCAzMzN9fdMADhKZ -EpoSmxKwB02BBIaBBI9XezEsIC0xfdIAOgA7ErMStKQStAEkASUAP1pOU0NsaXBWaWV32QDQAZAADgDR -ANMA1AGXANUSthGfEZ8SuRK6ANoA2xK8EZ8SvllOU1BlcmNlbnSBBEyBBEyBBJSBBJIJgQSTgQRMIz+1 -EdfAAAAAXxAVe3s0NjAsIDF9LCB7MTUsIDMzM319XF9kb1Njcm9sbGVyOtIAOgA7EsISw6USwwEjASQB -JQA/Wk5TU2Nyb2xsZXLaANABkAAOANERowDTAZcA1RLFErYRnxGfErkSyQD1ANoSvBGfEswSzVpOU0N1 -clZhbHVlgQRMgQRMgQSUgQSWgQSTgQRMIz/wAAAAAAAAIz/uQshgAAAAXxAYe3stMTAwLCAtMTAwfSwg -ezg3LCAxOH19XxAWe3syMCwgNjB9LCB7NDc2LCAzMzV9fdIAOgA7EtES0qQS0gEkASUAP1xOU1Njcm9s -bFZpZXdfEBR7ezEsIDl9LCB7NTE2LCA0MTV9fdQADgDEAMUAxgIHAjgOUxLYgFuAZIEDfIEEnlZwb2xs -TDrUAA4AxADFAMYAxwKEAMkS3oAegG6AC4EEoF5jaGVhdEZpZWxkR1NBMtQADgDEAMUAxgDHByQBVBLk -gB6BAjOAKIEEoltnYkZyYW1lU2tpcNQADgDEAMUAxgDHAS4ChQEvgB6AIIBxgCbUAA4AxADFAMYAxw5i -AjgS74AegQOPgGSBBKVbc2VsZWN0RmllbGTUAA4AxADFAMYCBwI4Dk8S9YBbgGSBA22BBKdWcG9sbEI6 -1AAOAMQAxQDGAgcAyRL6EvuAW4ALgQSpgQSr2AAOAZEBkgGTAZQBlQGWAXQBmhL+AZwA8QGeAZ8BoAO4 -gDuBBKqAEYA0gDiAwF8QHkFkZCBHYW1lU2hhcmtBZHZhbmNlIENoZWF0cy4uLl1vcGVuQ2hlYXRHU0E6 -1AAOAMQAxQDGAgcCOA5OEwmAW4BkgQNogQStVnBvbGxBOtIADgBFEh0TDYEEb68RAWwGqQM1DOAEewnf -AeMEigOWDmMC/gndCtUB+gSiBWkJUA9CCw4InRFNEJoEDQytByQHZgctC9IM3wDZBokOUwZQB2QG7gjN -DhEFdwYWDXcHIQY7B10TOAdBDJ0BNANEB64QMQ/5EFAJQAncBRgLOAS9CyoLgQ/vEG0D8Qt2A68Oag6Q -CPgM1g3eBz0F0wW5BqIHHg5WByMJhg5hDAMHBgwqAeAHPA5VAy4HOgYHA8cIcwmVBykHLA+0BKYHJwFU -A9kKLQqABy4M3QTWE3MTdA2vEOoHKwNcB2cO7xN7As0C5goSBUMCrQ5iB84OZQguAd8IMgsDBJEChAq5 -BX4P5weIAYQTjwvDAjkD9QKOCcQFPwWjE5cMOBBPEacGZwVbBCEGABHEB70I9ATpCeAMEgfdC1YH2Qoi -BzsCxQXyENYQUQpZBTQIIwcvDLgM1wTtDH0OtgMFDxIK8wdlA0AF0QcwBN0FEgj5CW8TwgzYAj8F6wKd -DG8HKhPJA7gQ7RPMB/UEGhGfA7ADaQ7JBJUPAhPVCjEC1wpwBE0Rfgq9BaoHOAzbESQJMAcfAS0FjQjc -B5cRrREEDOEKSgzeA88IWAZPDFMMSAJgAMgCCQa8DlEENgzVDYcHOQ20CbUJwBP8CGgI9wYSCxIMvAh3 -AMkChRBWByIHIAdeDFcRiwbVBlgBRA42DlAN7A6jB2APMgFbFBURPhQXAX4HMwW1BlMHkwvODNoK4wml -AVMQEwUVCq4HQwNwC4UFLQIPDfIPIhQsDk4FlA9SCEoHXwc2D5kHYwRcC58JawvqDlcIEwPkBL4LWw5L -FD8HQAjYEAEL6wueBtsC7AgDAokM2QwOEPAHGwEuDgsOSg9uCL0OTwQ9C6AHbAlgBsINZwYuAV4EYgdh -BygM3A3QAjgCPBL6EE4MjRRlCI8HNwj1BHQHHQc+BnoD4AneANYBwhRxBQQHPxAyAeYO3A59EKsDkIEB -goCggQMVgPWBAkOASID4gLiBA5KAkYECP4ECeYBNgP2BAS6BAh2BA5SBAoiBAeyBBDSBA/2A14EC7IEC -M4EB3oECb4ECuYEDEoAQgQF4gQN8gQFqgQHOgQGVgQH7gQNOgQEzgQFbgQMhgQIfgQFjgQGkgQSvgQMi -gQLogCKApIEBtIED44ED0IED+4ECGYECPYEBHIECkYEBA4ECjYECpIEDy4ED9oDSgQKhgMOBA2CBA2qB -Ag2BAviBAz+BAuaBAUuBAUOBAYCBAhOBA4aBAi+BAimBA4yBAsSBAZyBAsyAR4EC4oEDgYCegQLSgQFX -gMeBAeOBAi2BAlmBAmeBA7mA/oECR4AogMyBAlCBAmWBAnuBAwyBAQuBBLKBBLmBAyyBBBiBAmOAqIEB -6oEDg4EEvICAgIqBAkmBASaAdoEDj4EBvIEDlYEB04BLgQHUgQKFgPuAboECdIEBNYEDyoEBrIAygQS/ -gQK1gF2A04BwgQI5gQElgQE9gQTBgQLQgQPtgQSVgQFsgQEqgN2BAVWBBFCBAbiBAgSBARCBAkWBAsiB -AcCBApaBAb+BAk2BAt6Af4EBUoEEEYED/4ECW4EBIoEB0IECf4EC74EC+4EBEYEC4IEDdICTgQOLgQKB -gQHagKOBAUiBAoOBAQ2BARmBAhCBAiWBBMKBAv6AYIEBUIBzgQLcgQJfgQTIgMCBBBmBBM+BAcSA24EE -TIC/gKyBA3mBApOBA4iBBNCBAlGAhYECYYDngQRDgQJ1gQE/gQLCgQMGgQQngQIVgQIXgCOBATiBAf+B -AbCBBJGBBB2BAxiBAlaBAw+AyIEB3IEBZ4EC14EC1IBogA2AT4EBh4EDd4DigQL1gQMkgQLOgQMugQI1 -gQI4gQSzgQHggQIKgQFagQKJgQLwgQHkgAuAcYED6oECK4ECG4EBqoEC2IEER4EBjoEBaYAlgQNZgQNy -gQNDgQNvgQG6gQORgCuBBMyBBC+BBM6AMYECj4EBQoEBb4EBr4ECuIEDBIECfYECMYAqgQPYgQEagQJx -gQMogK6BAqWBASCAUYEDRYEDjoEE14EDaIEBOoEDl4EB2IEBtoECn4EDsIEByoDsgQKtgQIkgQK+gQOJ -gQHMgQGhgQEGgQKYgQNjgQTNgQMfgQH+gQPRgQLAgQKqgQGQgIyBAciAdIEDAYECx4EEG4EB9YAggQNM -gQNegQOigQH3gQNtgOSBArCBAaaBAiGBAYmBAx2BAV+ALYDugQHGgQJLgQMJgQM7gGSAXoEEqYED6IEC -5IEE1IEB6IECs4ECB4DzgQH5gQLqgQFxgM+BAkGADoA+gQTGgQEVgQMbgQPhgEqBA36BA2WBBAGAttoA -DgGRAZIUewGTFHwBlAGVAZYBdAGaAPEBnADbAPEA2wGeAZ8BoAPPXU5TSXNTZXBhcmF0b3JcTlNJc0Rp -c2FibGVkgDuAEQmAEQmANIA4gMjSAA4ANgA3FIeABFRGaWxl0gAOAEUATRSKgEGiEQQP54EEHYEDytoA -DhSOAZEBkgGTAZQBlQGWAXQBlwGaEAEUkQGcAPEBngGfAaAT/BSWWU5TU3VibWVudYA7gQPRgQS0gBGA -NIA4gQSzgQS11AAOAZEA+wGkAaUBWBSaFJuAQoApgQTWgQTTVldpbmRvd15zdWJtZW51QWN0aW9uOtIA -DgA2ADcUnIAE0gAOAEUATRSigEGhD/mBA9BeX05TV2luZG93c01lbnXaAA4UjgGRAZIBkwGUAZUBlgF0 -AZcBmg/vFKgBnADxAZ4BnwGgE/wUrYA7gQPLgQS6gBGANIA4gQSzgQS72gAOAZEBkhR7AZMUfAGUAZUB -lgF0AZoA8QGcANsA8QDbAZ4BnwGgA8+AO4ARCYARCYA0gDiAyNIADgA2ADcUuYAEVEVkaXTSAA4ARQBN -FLyAQaUC1wLFBu4Pbg+ZgIWAf4EBlYEDooEDsNIADgAyADMUxIAFgQTA2gAOAZEBkhR7AZMUfAGUAZUB -lgF0AZoA8QGcANsA8QDbAZ4BnwGgA8+AO4ARCYARCYA0gDiAyNoADhSOAZEBkgGTAZQBlQGWAXQBlwGa -A88D0gGcAPEBngGfAaAT/BTWgDuAyIEEw4ARgDSAOIEEs4EExF8QFFZpc3VhbCBCb3kgQWR2YW5jZS1N -0gAOAEUATRTagEGsEDITexF+E5cRTQPHFHEQ1hEkDd4TOARNgQPhgQS8gQRDgQTBgQQ0gMeBBMaBBBGB -BCeBAz+BBK+A59oADgGRAZIUewGTFHwBlAGVAZYBdAGaAPEBnADbAPEA2wGeAZ8BoAPPgDuAEQmAEQmA -NIA4gMhcX05TQXBwbGVNZW512AAOAZEBkgGTAZQBlQGWAXQBmhTzFPQFbgGeAZ8BoAO4gDuBBMkSAAQA -AIEBMIA0gDiAwF8QEVRvZ2dsZSBGdWxsc2NyZWVuV0NvbnRyb2zSAA4ARQBNFP2AQa0TyRQVBokPtBE+ -FD8FaQOwFBcQExL6E8wN0IEEyIEEzIEBeIEDuYEEL4EEzYEBLoC/gQTOgQPYgQSpgQTPgQM72gAOAZEB -khR7AZMUfAGUAZUBlgF0AZoA8QGcANsA8QDbAZ4BnwGgA7iAO4ARCYARCYA0gDiAwNoADgGRAZIUewGT -FHwBlAGVAZYBdAGaAPEBnADbAPEA2wGeAZ8BoAO4gDuAEQmAEQmANIA4gMDaAA4BkQGSFHsBkxR8AZQB -lQGWAXQBmgDxAZwA2wDxANsBngGfAaADuIA7gBEJgBEJgDSAOIDA2gAOAZEBkhR7AZMUfAGUAZUBlgF0 -AZoA8QGcANsA8QDbAZ4BnwGgA7iAO4ARCYARCYA0gDiAwNoADhSOAZEBkgGTAZQBlQGWAXQBlwGaAs0V -MgGcAPEBngGfAaAT/BU3gDuAgIEE0YARgDSAOIEEs4EE0tIADgBFAE0VOoBBpRPCE3QT1RRlE3OBBMKB -BLmBBNCBBNSBBLLaAA4UjgGRAZIBkwGUAZUBlgF0AZcBmgO4A7sBnADxAZ4BnwGgE/wVSIA7gMCBBMqA -EYA0gDiBBLOBBNVbX05TTWFpbk1lbnXSAA4AMgAzFUyABYEE2NIADgBFEh0VT4EEb68RAWwGogMuDLwE -dAnEBjsElQOQAjwCPAnECr0B3wSmA7gHIA5jCxIHZwPPEFAD9Qc+AVsD5AFbC8MMvADIA7gCPAHjA+QC -zQcdDgsCPAYHB0ABWwAfA+QDzwFbBz0BLgM1B5cAHxABBRUHHwnEBRIHMwSmCxILhRN0EE8D9Qc2AB8O -Sg5OCNwMvAPPAVsFuQWqAjwBWwI8AVsJbwI8BzgAHwwSAeMBWwI8AVsBWwYAA88IdwciAVsBWwO4BJEB -WwAfA+QKMQcrAVsMvAFbE/wT/AdDEO0BWwNEA+QOVQPPE9UCPAcnBTQCiQI8B2ACPAgyAeMIIwcwBIoA -1gq9BXcP7wdeAV4AHwc3AjwD4AKECbUFQwFbA88HOQUVEZ8GUAVDBBoBWxGfB18I3ATtCcQMAwfOBJUH -3QcoAVsCzQXrA88FFQcpBS0HZAFbDLwMvATdBzsOUAL+DlcHLwPkA0QFuQFbBNYFFQjcCWAT/Ay8AjkB -4wKFDFcBWwO4FGURiwO4B90CPBDtA7gB4w5RAVsOVhP8CiICzQcqA88DzwquBaMBWwy8A88HHgFbANYC -PAjNB4gRnw/vDLwKMQy8E8IHZQHjDFcHOgAfANYA1gI8AjwCPAy8B0EBWw2vByQJxAAfB2YI3AYWCwMM -rQhoAB8A1hBOAVsBWwPkDEgAHwFbBk8BLQAfAjwCPA5PA+QOYgcGA7gDuAO4AYQBWwW5AeMHlwvSDLwH -LgcjAVsDuBAxBy0BWwNpC3YBWwIJDewOYQAfAjwFjQ5lCDID5AFbAs0D5AI8C4UJbwvSAjwHYwFbBKYL -VgI8A7gBWwjcE3ML0guFBtUC5gdhANYMvAwSEOoBWwDWAjwCPALNBxsCPAQ2C4UHXQchBrwHPwYWAVME -XAPkAVsMvAO4AB8ONgO4BRUHPBP8CHcBWwjcAjwBWwFbBlMD2QnEAmABhAPPBO0BWwPPAeAOUw5LEFEC -PIEBgICegQLwgPOBAjmBAWOBApOAtoBegF6BAjmBAnWAS4D+gMCBAhuBA5KBAomBAeqAyIED+4DTgQLq -gCuBAaGAK4ECtYEC8IANgMCAXoBIgQGhgICBAfmBA0yAXoEBV4EDH4ArgAKBAaGAyIArgQLmgCCAoIEB -sIACgQPRgQEagQIXgQI5gQEZgQKPgP6BAomBAqWBBLmBA+2A04ECn4ACgQNegQNogQH/gQLwgMiAK4EB -Q4EBP4BegCuAXoArgQIlgF6BAsKAAoECyIBIgCuAXoArgCuBAVWAyIEB5IECK4ArgCuAwID7gCuAAoEB -oYECUYECY4ArgQLwgCuBBLOBBLOBAyiBBBmAK4CkgQGhgQOBgMiBBNCAXoECR4EBIoB0gF6BAbqAXoEB -1IBIgQHQgQKDgPiADoECdYEBM4EDy4EBqoAtgAKBArOAXoDPgG6BAjWBASaAK4DIgQLOgQEagQRMgQFq -gQEmgNuAK4EETIEBtoEB/4EBEYECOYECxIEBvIECk4EBwIECS4ArgICBAVCAyIEBGoECWYEBIIEBzoAr -gQLwgQLwgQENgQLegQNygJGBA4mBAn+BAaGApIEBQ4ArgQELgQEagQH/gQIhgQSzgQLwgF2ASIBxgQLY -gCuAwIEE1IEER4DAgQHAgF6BBBmAwIBIgQN3gCuBA4aBBLOBAk2AgIECX4DIgMiBAnGBAT2AK4EC8IDI -gQITgCuADoBegQH7gQGsgQRMgQPLgQLwgQJRgQLwgQTCgQHagEiBAtiBAtKAAoAOgA6AXoBegF6BAvCB -AyKAK4EDLIECM4ECOYACgQHegQH/gQFbgQKFgQLsgQHggAKADoED6IArgCuBAaGBAtSAAoArgQFngCOA -AoBegF6BA22BAaGBA4+BAZyAwIDAgMCAMoArgQFDgEiBAbCBArmBAvCBAnuBAi+AK4DAgQPjgQJvgCuA -rIECoYArgE+BA0OBA4yAAoBegQE4gQOVgQHUgQGhgCuAgIEBoYBegQKlgQIlgQK5gF6BAcqAK4D+gQKW -gF6AwIArgQH/gQSygQK5gQKlgQGOgIqBAcaADoEC8IECyIEEGIArgA6AXoBegICBAfWAXoDigQKlgQGk -gQIfgQGHgQMbgQFbgCqA7IEBoYArgQLwgMCAAoEDWYDAgQEagQLigQSzgQHkgCuBAf+AXoArgCuBAW+A -zIECOYBogDKAyIEBEYArgMiAR4EDfIEDY4ED/4Be0gAOAEUSHRa+gQRvrxEBbQ59AzUEewzgAeMJ3wSK -A5YOYwL+Cd0K1QH6BKIFaQlQD0ILDgidEU0OUxCaDK0HJActB2YL0gzfANkGiQQNBlAHZAbuCM0Fdw4R -DXcGFgchBjsHXRM4B0EMnQE0A0QHrhAxD/kQUAlACdwFGAs4BL0LKguBD+8QbQt2DmoDrwPxDpAGogj4 -Dd4HPQXTBbkM1gceDlYHIw5hCYYMAwcGAeAMKgc8DlUDLgc6BgcDxwcpBywJlQSmD7QIcwcnAVQHLgqA -A9kKLQzdBNYTcxN0Da8Q6gcrDu8HZwNcAs0TewLmChICrQVDDmIOZQfOCC4B3wsDCDIAHwSRAoQFfgq5 -D+cCOQGEE48LwweIA/UCjgnEBaMFPxOXDDgQTxGnBmcEIQVbBgARxAwSB70E6Qc7CeAH3QtWCiII9AfZ -AsUF8hDWEFEKWQU0By8IIwy4DNcMfQ62BO0DBQ8SCvMHZQNABdEHMATdBRII+QlvE8ICPwzYBesCnQxv -ByoTyQO4EO0EGhPMDskRnwNpA7AH9QSVDwIT1QpwAtcFqgRNBzgRfgq9CjEM2xEkCTAHHwEtBY0I3AeX -AgkRBAJgBrwGTwPPAMgRrQQ2DlEMSAhYDFMKSgzhDN4M1Q2HBzkNtAm1CcAT/AsSCGgMvAYSCPcIdwDJ -AoUHIgbVByAQVgdeEYsGWA5QDjYN7AFEDzIOowdgDFcBWxQVET4UFwczBbUBfgZTC84HkwzaB0MJpQFT -EBMFFQquCuMDcAIPBS0PIg9SBZQULA5ODfILhQc2BFwHXw+ZB2MISgufCWsOVwvqCBMD5AS+C1sOSwdA -FD8C7BABBtsLngvrCNgCiQgDDNkOTwcbAS4OCw5KEPAPbgi9BD0MDgugB2wJYAbCDWcGLgFeBGIHKAdh -DNwN0AI4AjwS+hBODI0UZQiPBzcEdAj1Bx0HPgZ6A+AJ3gDWAcIUcQUEBz8DkBAyAeYO3BCrBqmBA2WA -oID1gQMVgEiBAkOA+IC4gQOSgJGBAj+BAnmATYD9gQEugQIdgQOUgQKIgQHsgQQ0gQN8gQP9gQLsgQIz -gQJvgQHegQK5gQMSgBCBAXiA14EBaoEBzoEBlYEB+4EBM4EDToEDIYEBW4ECH4EBY4EBpIEEr4EDIoEC -6IAigKSBAbSBA+OBA9CBA/uBAhmBAj2BARyBApGBAQOBAo2BAqSBA8uBA/aBAqGBA2CAw4DSgQNqgQGA -gQINgQM/gQLmgQFLgQFDgQL4gQITgQOGgQIvgQOMgQIpgQLEgQGcgEeBAsyBAuKBA4GAnoEC0oEBV4DH -gQJZgQJngQItgP6BA7mBAeOBAkeAKIECe4ECZYDMgQJQgQMMgQELgQSygQS5gQMsgQQYgQJjgQODgQHq -gKiAgIEEvICKgQJJgHaBASaBA4+BA5WBAbyBAdOAS4EChYEB1IACgPuAboEBNYECdIEDyoBdgDKBBL+B -ArWBAayA04BwgQI5gQE9gQElgQTBgQLQgQPtgQSVgQFsgN2BASqBAVWBBFCBAsiBAbiBARCBAt6BAkWB -AcCBApaBAk2BAgSBAb+Af4EBUoEEEYED/4ECW4EBIoECf4EB0IEC74EC+4EC4IEDdIEBEYCTgQOLgQKB -gQHagKOBAUiBAoOBAQ2BARmBAhCBAiWBBMKAYIEC/oEBUIBzgQLcgQJfgQTIgMCBBBmA24EEz4EDeYEE -TICsgL+BAcSBApOBA4iBBNCBAmGAhYEBP4DngQLCgQRDgQJ1gQJRgQMGgQQngQIVgQIXgCOBATiBAf+B -AbCAT4EEHYBogQGHgQFngMiADYEEkYDigQN3gQLUgQHcgQLXgQJWgQMYgQMPgQL1gQMkgQLOgQMugQI1 -gQI4gQSzgQKJgQHggQLwgQFagQIKgQHkgAuAcYECK4EBjoECG4ED6oEBqoEER4EBaYEDcoEDWYEDQ4Al -gQORgQNvgQG6gQLYgCuBBMyBBC+BBM6BAo+BAUKAMYEBb4ECuIEBr4EDBIEDKIECMYAqgQPYgQEagQJx -gQJ9gK6AUYEBIIEDjoEDl4EBOoEE14EDaIEDRYECpYECn4DsgQG2gQOwgQHKgQHYgQKtgQIkgQOJgQK+ -gQHMgQGhgQEGgQKYgQNjgQMfgQTNgIyBA9GBAZCBAqqBAsCBAf6AdIEByIEDAYEDbYEB9YAggQNMgQNe -gQQbgQOigQH3gOSBAseBArCBAaaBAiGBAYmBAx2BAV+ALYDugQJLgQHGgQMJgQM7gGSAXoEEqYED6IEC -5IEE1IEB6IECs4DzgQIHgQH5gQLqgQFxgM+BAkGADoA+gQTGgQEVgQMbgLaBA+GASoEDfoEEAYEBgtIA -DgBFEh0YLoEEb68RAW0YLxgwGDEYMhgzGDQYNRg2GDcYOBg5GDoYOxg8GD0YPhg/GEAYQRhCGEMYRBhF -GEYYRxhIGEkYShhLGEwYTRhOGE8YUBhRGFIYUxhUGFUYVhhXGFgYWRhaGFsYXBhdGF4QQBhgGGEYYhhj -GGQYZRhmGGcYaBhpGGoYaxhsA8EYbhhvGHAYcRhyGHMYdBh1GHYYdxh4GHkYehh7GHwHDRh+GH8YgBiB -GIIYgxiEGIUYhhiHGIgYiRiKGIsYjAFYGI4YjxiQGJEYkhiTGJQYlRiWGJcYmBiZGJoYmxicGJ0Ynhif -GKAYoRiiGKMYpBilGKYYpxioGKkYqhirGKwYrRiuGK8YsBixGLIYsxi0GLUYthi3GLgYuRi6GLsYvBi9 -GL4YvxjAGMEYwhjDGMQYxRjGGMcYyBjJGMoYyxjMGM0YzhjPGNAY0RjSGNMY1BjVGNYY1xjYGNkY2hjb -GNwY3RjeGN8Y4BjhGOIY4xjkGOUY5hjnGOgY6RjqGOsY7BjtGO4Y7xjwGPEY8hjzGPQY9Rj2GPcY+Bj5 -GPoY+xj8GP0Y/hj/GQAZARkCGQMZBBkFGQYZBxkIGQkZChkLGQwZDRkOGQ8ZEBkRGRIZExkUGRUZFhkX -GRgZGRkaGRsZHBkdGR4ZHxkgGSEZIhkjGSQAzRkmGScZKBkpGSoZKxC0GS0ZLhkvGTAZMRkyGTMZNBk1 -GTYZNxk4GTkZOhk7GTwZPRk+GT8ZQBlBGUIZQxlEGUUZRhlHGUgZSRlKGUsZTBlNGU4ZTxlQGVEZUhlT -GVQZVRlWGVcZWBlZGVoZWxlcGV0ZXhlfGWAZYRliGWMZZBllGWYZZxloGWkZahlrGWwZbRluGW8ZcBlx -GXIZcxl0GXUZdhl3GXgZeRl6GXsZfBl9GX4ZfxmAGYECWxmDGYQZhRmGGYcZiBmJGYoZixmMGY0ZjhmP -GZAZkRmSGZMZlBmVGZYZlxmYGZkZmhmbgQTcgQTdgQTegQTfgQTggQThgQTigQTjgQTkgQTlgQTmgQTn -gQTogQTpgQTqgQTrgQTsgQTtgQTugQTvgQTwgQTxgQTygQTzgQT0gQT1gQT2gQT3gQT4gQT5gQT6gQT7 -gQT8gQT9gQT+gQT/gQUAgQUBgQUCgQUDgQUEgQUFgQUGgQUHgQUIgQUJgQUKgQULgQPlgQUMgQUNgQUO -gQUPgQUQgQURgQUSgQUTgQUUgQUVgQUWgQUXgQUYgMSBBRmBBRqBBRuBBRyBBR2BBR6BBR+BBSCBBSGB -BSKBBSOBBSSBBSWBBSaBBSeBAZ6BBSiBBSmBBSqBBSuBBSyBBS2BBS6BBS+BBTCBBTGBBTKBBTOBBTSB -BTWBBTaAKYEFN4EFOIEFOYEFOoEFO4EFPIEFPYEFPoEFP4EFQIEFQYEFQoEFQ4EFRIEFRYEFRoEFR4EF -SIEFSYEFSoEFS4EFTIEFTYEFToEFT4EFUIEFUYEFUoEFU4EFVIEFVYEFVoEFV4EFWIEFWYEFWoEFW4EF -XIEFXYEFXoEFX4EFYIEFYYEFYoEFY4EFZIEFZYEFZoEFZ4EFaIEFaYEFaoEFa4EFbIEFbYEFboEFb4EF -cIEFcYEFcoEFc4EFdIEFdYEFdoEFd4EFeIEFeYEFeoEFe4EFfIEFfYEFfoEFf4EFgIEFgYEFgoEFg4EF -hIEFhYEFhoEFh4EFiIEFiYEFioEFi4EFjIEFjYEFjoEFj4EFkIEFkYEFkoEFk4EFlIEFlYEFloEFl4EF -mIEFmYEFmoEFm4EFnIEFnYEFnoEFn4EFoIEFoYEFooEFo4EFpIEFpYEFpoEFp4EFqIEFqYEFqoEFq4EF -rIEFrYEFroEFr4EFsIEFsYEFsoEFs4EFtIEFtYEFtoEFt4EFuIEFuYEFuoEFu4EFvIEFvYEFvoEFv4EF -wIEFwYEFwoEFw4EFxIEFxYEFxoEFx4EFyIEFyYEFyoEFy4EFzIEFzYAMgQXOgQXPgQXQgQXRgQXSgQXT -gQQCgQXUgQXVgQXWgQXXgQXYgQXZgQXagQXbgQXcgQXdgQXegQXfgQXggQXhgQXigQXjgQXkgQXlgQXm -gQXngQXogQXpgQXqgQXrgQXsgQXtgQXugQXvgQXwgQXxgQXygQXzgQX0gQX1gQX2gQX3gQX4gQX5gQX6 -gQX7gQX8gQX9gQX+gQX/gQYAgQYBgQYCgQYDgQYEgQYFgQYGgQYHgQYIgQYJgQYKgQYLgQYMgQYNgQYO -gQYPgQYQgQYRgQYSgQYTgQYUgQYVgQYWgQYXgQYYgQYZgQYagQYbgQYcgQYdgQYegQYfgQYggQYhgQYi -gQYjgQYkgQYlgQYmgQYngQYogGWBBimBBiqBBiuBBiyBBi2BBi6BBi+BBjCBBjGBBjKBBjOBBjSBBjWB -BjaBBjeBBjiBBjmBBjqBBjuBBjyBBj2BBj6BBj+BBkCBBkFfEBJCdXR0b24gQ2VsbCAoRG93bilfEB9Q -b3AgVXAgQnV0dG9uIENlbGwgKERpc2FibGVkKS0xXxASVGV4dCBGaWVsZCBDZWxsLTIzXxAbTWVudSBJ -dGVtIChIaWdoIFF1YWxpdHkgMngpXkNvbnRlbnQgVmlldy0zXU1lbnUgSXRlbSAoNClfEBNQb3B1cCBC -dXR0b24gKE5vbmUpXxASQnV0dG9uIENlbGwgKE9LKS01WlRleHQgRmllbGRcVGV4dCBGaWVsZC0xXU1l -bnUgSXRlbSAoMilfEBNNZW51IEl0ZW0gKEVuYWJsZWQpXxARVGV4dCBGaWVsZCBDZWxsLTFfEBBNZW51 -IEl0ZW0gKE5vbmUpXxAdTWVudSBJdGVtIChGcmVlemUgR2FtZSBTdGF0ZSlfECBUZXh0IEZpZWxkIENl -bGwgKFVzZSBCaW9zIEZpbGU6KV8QElRleHQgRmllbGQgQ2VsbC0xMl8QFk1lbnUgSXRlbSAoRGlzYWJs -ZWQpLTZfECJUZXh0IEZpZWxkIENlbGwgKFJlYWwgVGltZSBDbG9jazopXxAmTWVudSBJdGVtIChWaXNp -dCBFbXVTY2VuZSBTb2Z0d2FyZS4uLilfEBBCZXZlbCBCdXR0b24gKEwpXxBMVGV4dCBGaWVsZCBDZWxs -ICgKT3JpZ2luYWwgVmVyc2lvbjoKRm9yZ290dGVuCgpNYWMgT1MgWCBWZXJzaW9uOgpBZGFtIEdyZWVu -KV8QGlBvcCBVcCBCdXR0b24gQ2VsbCAoUGxhaW4pXxAQUG9wdXAgQnV0dG9uICgwKV8QF1BvcHVwIEJ1 -dHRvbiAoRGlzYWJsZWQpXxAZUG9wdXAgQnV0dG9uIChEaXNhYmxlZCktOF8QFE1lbnUgKE90aGVyVmll -d3MpLTE0XxAVTWVudSBJdGVtIChTY2FubGluZXMpXxARVGV4dCBGaWVsZCBDZWxsLThfEBtNZW51IEl0 -ZW0gKFBhdXNlIEVtdWxhdGlvbilfEBZNZW51IEl0ZW0gKEVuYWJsZWQpLTEzXxASUHVzaCBCdXR0b24g -KE9LKS0zXxAZUG9wdXAgQnV0dG9uIChEaXNhYmxlZCktOV8QEU1lbnUgSXRlbSAoUGFzdGUpXxAWUG9w -IFVwIEJ1dHRvbiBDZWxsICgyKVxUZXh0IEZpZWxkLTJfEBZCdXR0b24gQ2VsbCAoQ2FuY2VsKS0xXxAS -QnV0dG9uIENlbGwgKE9LKS0yXxATTWVudSAoT3RoZXJWaWV3cyktN18QFlBvcHVwIEJ1dHRvbiAoRW5h -YmxlZClYQ2hlYXRDQkFbU3RhdGljIFRleHRZU2VwYXJhdG9yXxAUUHVzaCBCdXR0b24gKENhbmNlbClf -EB1UZXh0IEZpZWxkIENlbGwgKEZ1bGxzY3JlZW46KV8QElRleHQgRmllbGQgQ2VsbC0xMV8QE01lbnUg -KE90aGVyVmlld3MpLTNfEBdNZW51IEl0ZW0gKERpc2FibGVkKS0xNF8QFE1lbnUgSXRlbSAoTWluaW1p -emUpXxBIU3RhdGljIFRleHQgKApPcmlnaW5hbCBWZXJzaW9uOgpGb3Jnb3R0ZW4KCk1hYyBPUyBYIFZl -cnNpb246CkFkYW0gR3JlZW4pXxAdVGV4dCBGaWVsZCBDZWxsIChTaG93IFNwZWVkOildTWVudSBJdGVt -ICgxKV8QEEJ1dHRvbiBDZWxsIChPSylfEBhUZXh0IEZpZWxkIENlbGwgKFNvdW5kOilfEBlNZW51IEl0 -ZW0gKE1vdGlvbiBCbHVyKS0xXxAVTWVudSBJdGVtIChFbmFibGVkKS02Xk1lbnUgSXRlbSAoMXgpW01l -bnUgKEZpbGUpXxAeSW1hZ2UgQ2VsbCAoTlNBcHBsaWNhdGlvbkljb24pXxAXUG9wIFVwIEJ1dHRvbiBD -ZWxsICgxeClfEBBCdXR0b24gQ2VsbCAoVXApXxAXTWVudSBJdGVtIChEaXNhYmxlZCktMTNfEA9CdXR0 -b24gQ2VsbCAoQSlfEBdQdXNoIEJ1dHRvbiAoRGVmYXVsdCktMV8QD01lbnUgSXRlbSAoNCktMV8QFE1l -bnUgSXRlbSAoU2hvdyBBbGwpXxAZU3RhdGljIFRleHQgKEZ1bGxzY3JlZW46KV8QEU1lbnUgSXRlbSAo -MTFLaHopXxATTWVudSAoT3RoZXJWaWV3cyktNl8QEU1lbnUgSXRlbSAoMnhTQUkpXxAZU3RhdGljIFRl -eHQgKEZsYXNoIFNpemU6KVxUZXh0IEZpZWxkLTNfEB5TdGF0aWMgVGV4dCAoQXV0byBGcmFtZSBTa2lw -OilcVGV4dCBGaWVsZC00XxAWTWVudSBJdGVtIChEaXNhYmxlZCktMV8QH1BvcCBVcCBCdXR0b24gQ2Vs -bCAoRGlzYWJsZWQpLTVfEBJSb3VuZGVkIFRleHQgRmllbGRfEBVNZW51IEl0ZW0gKEVuYWJsZWQpLTdf -EB1TdGF0aWMgVGV4dCAoR2FtZUJveSBCb3JkZXI6KV8QFEJldmVsIEJ1dHRvbiAoU3RhcnQpXxAZUG9w -dXAgQnV0dG9uIChEaXNhYmxlZCktMV8QGVBvcHVwIEJ1dHRvbiAoRGlzYWJsZWQpLTJfEB9Qb3AgVXAg -QnV0dG9uIENlbGwgKERpc2FibGVkKS0zXxAVTWVudSBJdGVtIChEb25hdGUuLi4pXxAeUHVzaCBCdXR0 -b24gKFNlbGVjdCBCaW9zIEZpbGUpW0JveCAoU291bmQpXxAgVGV4dCBGaWVsZCBDZWxsIChSZW1vdmUg -SW50cm9zOilfEBRNZW51IChPdGhlclZpZXdzKS0xN18QG01lbnUgSXRlbSAoUmVzZXQgRW11bGF0aW9u -KV8QF01lbnUgSXRlbSAoRGlzYWJsZWQpLTExXxAdU3RhdGljIFRleHQgKEdCQSBGcmFtZSBTa2lwOilf -ECRTdGF0aWMgVGV4dCAoU291bmQgTG93IFBhc3MgRmlsdGVyOilfEB1UZXh0IEZpZWxkIENlbGwgKFNv -dW5kIEVjaG86KV8QGlBvcHVwIEJ1dHRvbiAoRGlzYWJsZWQpLTEwXxAPTWVudSBJdGVtICg2NGspXxAU -TWVudSBJdGVtIChCaWxpbmVhcilfEBhQb3B1cCBCdXR0b24gKEVuYWJsZWQpLTFfEBJNZW51IEl0ZW0g -KFdpbmRvdylfEBBNZW51IEl0ZW0gKEZpbGUpXxA2U3RhdGljIFRleHQgKENoYW5nZXMgVGFrZSBFZmZl -Y3QgT24gTmV4dCBSb20gTGF1bmNoZWQpXxASUHVzaCBCdXR0b24gKE9LKS0xXxAZU3RhdGljIFRleHQg -KFNvdW5kIEVjaG86KV8QE0J1dHRvbiBDZWxsIChTdGFydClfEB5TdGF0aWMgVGV4dCAoUmVhbCBUaW1l -IENsb2NrOilfEBVNZW51IEl0ZW0gKEVuYWJsZWQpLTJbTWVudSAoRWRpdClbU2VwYXJhdG9yLTFfEBBC -ZXZlbCBCdXR0b24gKFIpXxAhVGV4dCBGaWVsZCBDZWxsIChHQkEgRnJhbWUgU2tpcDopXxASVGV4dCBG -aWVsZCBDZWxsLTEwXxAUTWVudSAoT3RoZXJWaWV3cyktMTFcVGV4dCBGaWVsZC01XFRleHQgRmllbGQt -Nl8QIFBvcCBVcCBCdXR0b24gQ2VsbCAoRGlzYWJsZWQpLTExXxAXTWVudSBJdGVtIChEaXNhYmxlZCkt -MTJfEBRSb3VuZGVkIFRleHQgRmllbGQtMV8QH1BvcCBVcCBCdXR0b24gQ2VsbCAoRGlzYWJsZWQpLTRf -EBRNZW51IChPdGhlclZpZXdzKS0xOVxGaWxlJ3MgT3duZXJfEBlQb3AgVXAgQnV0dG9uIENlbGwgKE5v -bmUpXxAUUm91bmRlZCBUZXh0IEZpZWxkLTZfEBJUZXh0IEZpZWxkIENlbGwtMTRfEBRNZW51IEl0ZW0g -KERpc2FibGVkKV8QFU1lbnUgSXRlbSAoQ2xvc2UgUm9tKV8QIUJldmVsIEJ1dHRvbiAoQ2FsaWJyYXRl -IEpveXN0aWNrKV8QFE1lbnUgKE90aGVyVmlld3MpLTEwW0FwcGxpY2F0aW9uXxAeUG9wIFVwIEJ1dHRv -biBDZWxsIChBdXRvbWF0aWMpXxAeUG9wIFVwIEJ1dHRvbiBDZWxsIChFbmFibGVkKS0yXxAUTWVudSAo -T3RoZXJWaWV3cyktMjBfEBFUZXh0IEZpZWxkIENlbGwtNl8QEU1lbnUgKE90aGVyVmlld3MpXxAUUG9w -dXAgQnV0dG9uICgyMktoeilfEBZNZW51IEl0ZW0gKERpc2FibGVkKS05W1NlcGFyYXRvci0yXxAfVGV4 -dCBGaWVsZCBDZWxsIChWaWRlbyBGaWx0ZXI6KV8QHkltYWdlIFZpZXcgKE5TQXBwbGljYXRpb25JY29u -KV8QE0hvcml6b250YWwgU2Nyb2xsZXJfEBJCdXR0b24gQ2VsbCAoT0spLTNfEBJUZXh0IEZpZWxkIENl -bGwtMTlfEBVNZW51IEl0ZW0gKEVuYWJsZWQpLTlfEBlQb3B1cCBCdXR0b24gKERpc2FibGVkKS0zWVRl -eHQgVmlld18QE01lbnUgKE90aGVyVmlld3MpLTlfEB5UZXh0IEZpZWxkIENlbGwgKExpbWl0IFNwZWVk -OilfEBVNZW51IEl0ZW0gKEVuYWJsZWQpLTRfEBlTdGF0aWMgVGV4dCAoVmlkZW8gU2l6ZTopXU1lbnUg -SXRlbSAoNSlfEBRNZW51IChPdGhlclZpZXdzKS0yMl8QIlN0YXRpYyBUZXh0IChJbnRlcmZyYW1lIEJs -ZW5kaW5nOilfEBhQb3AgVXAgQnV0dG9uIENlbGwgKDY0aylfEA9NZW51IEl0ZW0gKDApLTFfEBdNZW51 -IEl0ZW0gKERpc2FibGVkKS0xNV8QEE1lbnUgSXRlbSAoQ29weSlfEBFUZXh0IEZpZWxkIENlbGwtMl8Q -IU1lbnUgSXRlbSAoSGlkZSBWaXN1YWxCb3lBZHZhbmNlKV8QFVB1c2ggQnV0dG9uIChMaWNlbnNlKV8Q -HkJ1dHRvbiBDZWxsIChTZWxlY3QgQmlvcyBGaWxlKV8QH1BvcCBVcCBCdXR0b24gQ2VsbCAoRGlzYWJs -ZWQpLTdfEB1TdGF0aWMgVGV4dCAoUmV2ZXJzZSBTdGVyZW86KV8QH1BvcCBVcCBCdXR0b24gQ2VsbCAo -RGlzYWJsZWQpLTlfEBFNZW51IEl0ZW0gKFBsYWluKV8QF01lbnUgSXRlbSAoU3VwZXIgMnhTQUkpXxAd -VGV4dCBGaWVsZCBDZWxsIChWaWRlbyBTaXplOilfEBNCdXR0b24gQ2VsbCAoU3BlZWQpXxATTWVudSAo -T3RoZXJWaWV3cyktNV8QElRleHQgRmllbGQgQ2VsbC0xM18QElRleHQgRmllbGQgQ2VsbC0yMl8QIVRl -eHQgRmllbGQgQ2VsbCAoUmV2ZXJzZSBTdGVyZW86KV8QIlN0YXRpYyBUZXh0IChQYXVzZSBXaGVuIElu -YWN0aXZlOilfEBZNZW51IEl0ZW0gKERpc2FibGVkKS0yXxARTWVudSBJdGVtICg0NEtoeilfEBlQb3B1 -cCBCdXR0b24gKERpc2FibGVkKS00XxAeUG9wIFVwIEJ1dHRvbiBDZWxsIChFbmFibGVkKS0xXxAQUHVz -aCBCdXR0b24gKE9LKV8QD01lbnUgSXRlbSAoNSktMV8QE01lbnUgKE90aGVyVmlld3MpLTJfECBNZW51 -IEl0ZW0gKFZpc3VhbCBCb3kgQWR2YW5jZS1NKV8QIEJ1dHRvbiBDZWxsIChDYWxpYnJhdGUgSm95c3Rp -Y2spXxAXTWVudSBJdGVtIChTdXBlciBFYWdsZSlfEBRSb3VuZGVkIFRleHQgRmllbGQtMl8QEVRleHQg -RmllbGQgQ2VsbC05XxAVTWVudSBJdGVtIChFbmFibGVkKS0zXxAcU3RhdGljIFRleHQgKFNvdW5kIFF1 -YWxpdHk6KV8QHU1lbnUgSXRlbSAoVG9nZ2xlIEZ1bGxzY3JlZW4pXk1lbnUgKENvbnRyb2wpXkNvbnRl -bnQgVmlldy0xXFRleHQgRmllbGQtN1tTZXBhcmF0b3ItNF8QFEJ1dHRvbiBDZWxsIChTZWxlY3QpW1Nj -cm9sbCBWaWV3XxAUUm91bmRlZCBUZXh0IEZpZWxkLTNfEB5NZW51IEl0ZW0gKERlZnJvc3QgR2FtZSBT -dGF0ZSlfEBZNZW51IEl0ZW0gKEVuYWJsZWQpLTE1W0JveCAoVmlkZW8pXxASVGV4dCBGaWVsZCBDZWxs -LTE1XxAQTWVudSBJdGVtIChFZGl0KV8QIFRleHQgRmllbGQgQ2VsbCAoU291bmQgUXVhbGl0eTopXxAP -TWVudSBJdGVtIChDdXQpXxAaUG9wIFVwIEJ1dHRvbiBDZWxsICgyMktoeilfECFNZW51IEl0ZW0gKFF1 -aXQgVmlzdWFsQm95QWR2YW5jZSlfEBlQb3B1cCBCdXR0b24gKERpc2FibGVkKS01XxAaTWVudSBJdGVt -IChQcmVmZXJlbmNlcy4uLilfEBNNZW51IChPdGhlclZpZXdzKS0xXxAUTWVudSAoT3RoZXJWaWV3cykt -MTNfECBNZW51IEl0ZW0gKEFkdmFuY2VNQU1FIFNjYWxlIDJ4KV8QF01lbnUgSXRlbSAoSGlkZSBPdGhl -cnMpXxAdVGV4dCBGaWVsZCBDZWxsIChGbGFzaCBTaXplOilfEBlTdGF0aWMgVGV4dCAoU2hvdyBTcGVl -ZDopXxAUUm91bmRlZCBUZXh0IEZpZWxkLTdcVGV4dCBGaWVsZC04XxAUTWVudSAoT3RoZXJWaWV3cykt -MTVfEBRNZW51IChPdGhlclZpZXdzKS0yMV8QElB1c2ggQnV0dG9uIChPSyktNF8QF01lbnUgSXRlbSAo -T3BlbiBSb20uLi4pWENoZWF0R1NBXxAUQmV2ZWwgQnV0dG9uIChSaWdodClfEBRSb3VuZGVkIFRleHQg -RmllbGQtNF8QG01lbnUgKFZpc3VhbCBCb3kgQWR2YW5jZS1NKV8QFFJvdW5kZWQgVGV4dCBGaWVsZC04 -XxARVmVydGljYWwgU2Nyb2xsZXJcVGV4dCBGaWVsZC05XxAVQmV2ZWwgQnV0dG9uIChTZWxlY3QpXxAf -UG9wIFVwIEJ1dHRvbiBDZWxsIChEaXNhYmxlZCktMl8QJlRleHQgRmllbGQgQ2VsbCAoUGF1c2UgV2hl -biBJbmFjdGl2ZTopXxAWTWVudSBJdGVtIChEaXNhYmxlZCktM18QEE1lbnUgSXRlbSAoMTI4aylfEBpN -ZW51IEl0ZW0gKExvdyBRdWFsaXR5IDJ4KV8QGU1lbnUgSXRlbSAoQmlsaW5lYXIgUGx1cylfEBNNZW51 -IEl0ZW0gKFRWIE1vZGUpXxAUQnV0dG9uIENlbGwgKENhbmNlbClfEBtTdGF0aWMgVGV4dCAoVmlkZW8g -RmlsdGVyOilfEDpUZXh0IEZpZWxkIENlbGwgKENoYW5nZXMgVGFrZSBFZmZlY3QgT24gTmV4dCBSb20g -TGF1bmNoZWQpXxAWUG9wIFVwIEJ1dHRvbiBDZWxsICgwKV1NZW51IEl0ZW0gKDApWE1haW5NZW51XxAT -TWVudSAoT3RoZXJWaWV3cyktOF8QH1BvcCBVcCBCdXR0b24gQ2VsbCAoRGlzYWJsZWQpLThfEBRNZW51 -IChPdGhlclZpZXdzKS0xNl8QFk1lbnUgSXRlbSAoRGlzYWJsZWQpLTVfEA9NZW51IEl0ZW0gKDMpLTFf -EBRNZW51IChPdGhlclZpZXdzKS0xOF8QFFJvdW5kZWQgVGV4dCBGaWVsZC05XxAcU3RhdGljIFRleHQg -KFJlbW92ZSBJbnRyb3M6KV8QFVB1c2ggQnV0dG9uIChEZWZhdWx0KV8QHFN0YXRpYyBUZXh0IChVc2Ug -QmlvcyBGaWxlOilfECJUZXh0IEZpZWxkIENlbGwgKFZpc3VhbEJveUFkdmFuY2UpXxAYUG9wdXAgQnV0 -dG9uIChFbmFibGVkKS0yXxARVGV4dCBGaWVsZCBDZWxsLTRfEBRCZXZlbCBCdXR0b24gKFNwZWVkKVlD -b25maWd1cmVfEBZCZXZlbCBCdXR0b24gKENhcHR1cmUpXxARVGV4dCBGaWVsZCBDZWxsLTdfEBJUZXh0 -IEZpZWxkIENlbGwtMTdfEA9CdXR0b24gQ2VsbCAoQilfEBpQb3B1cCBCdXR0b24gKERpc2FibGVkKS0x -MV8QE01lbnUgKE90aGVyVmlld3MpLTReQ29udGVudCBWaWV3LTJbU2VwYXJhdG9yLTVfEBlNZW51IEl0 -ZW0gKEFkdmFuY2UgRnJhbWUpW1NlcGFyYXRvci02XxAUU3RhdGljIFRleHQgKFNvdW5kOilfEBFNZW51 -IEl0ZW0gKDIyS2h6KV8QFk1lbnUgSXRlbSAoRGlzYWJsZWQpLThfEBRSb3VuZGVkIFRleHQgRmllbGQt -NV8QFU1lbnUgSXRlbSAoQXV0b21hdGljKV8QFk1lbnUgSXRlbSAoRW5hYmxlZCktMTRfEBdNZW51IEl0 -ZW0gKE1vdGlvbiBCbHVyKVlCb3ggKEJveClfECJUZXh0IEZpZWxkIENlbGwgKEF1dG8gRnJhbWUgU2tp -cDopXxAZUG9wdXAgQnV0dG9uIChEaXNhYmxlZCktNl8QLE1lbnUgSXRlbSAoQWRkIENvZGVCcmVha2Vy -QWR2YW5jZSBDaGVhdHMuLi4pXENvbnRlbnQgVmlld18QHVBvcCBVcCBCdXR0b24gQ2VsbCAoRGlzYWJs -ZWQpXxAoVGV4dCBGaWVsZCBDZWxsIChTb3VuZCBMb3cgUGFzcyBGaWx0ZXI6KV8QEVRleHQgRmllbGQg -Q2VsbC0zXxASQnV0dG9uIENlbGwgKE9LKS00XxAZUG9wdXAgQnV0dG9uIChEaXNhYmxlZCktN18QElRl -eHQgRmllbGQgQ2VsbC0xNl8QElRleHQgRmllbGQgQ2VsbC0xOF8QElRleHQgRmllbGQgQ2VsbC0yMFxG -b250IE1hbmFnZXJfEBBCZXZlbCBCdXR0b24gKEEpXxAVQnV0dG9uIENlbGwgKENhcHR1cmUpXxAUTWVu -dSAoT3RoZXJWaWV3cyktMTJfEBFQb3B1cCBCdXR0b24gKDF4KV8QE0JldmVsIEJ1dHRvbiAoTGVmdClf -EBpTdGF0aWMgVGV4dCAoTGltaXQgU3BlZWQ6KV8QFk1lbnUgSXRlbSAoU2VsZWN0IEFsbClfEB5TdGF0 -aWMgVGV4dCAoU2tpcCBCaW9zIEludHJvOilfEBZNZW51IEl0ZW0gKEVuYWJsZWQpLTEyXk1lbnUgSXRl -bSAoM3gpXxAVTWVudSBJdGVtIChFbmFibGVkKS0xXVRleHQgRmllbGQtMTBfEBdNZW51IEl0ZW0gKERp -c2FibGVkKS0xMF8QIlRleHQgRmllbGQgQ2VsbCAoU2tpcCBCaW9zIEludHJvOileQm94IChFbXVsYXRv -cilfEBFNZW51IEl0ZW0gKFNtYXJ0KV8QJlRleHQgRmllbGQgQ2VsbCAoSW50ZXJmcmFtZSBCbGVuZGlu -ZzopXxATQmV2ZWwgQnV0dG9uIChEb3duKV8QElB1c2ggQnV0dG9uIChPSyktMltTZXBhcmF0b3ItN18Q -D0J1dHRvbiBDZWxsIChSKV1NZW51IChXaW5kb3cpXxAVQnV0dG9uIENlbGwgKERlZmF1bHQpXk1lbnUg -SXRlbSAoMngpXxAWTWVudSBJdGVtIChFbmFibGVkKS0xMF8QD01lbnUgSXRlbSAoMiktMV8QFVJvdW5k -ZWQgVGV4dCBGaWVsZC0xMF8QJlRleHQgRmllbGQgQ2VsbCAoQ2hhbmdlIFR5cGUvQ3JlYXRvcjopXxAU -TWVudSBJdGVtIChQaXhlbGF0ZSlfEBBCZXZlbCBCdXR0b24gKEIpXxAcU3RhdGljIFRleHQgKEdCIEZy -YW1lIFNraXA6KV8QFVJvdW5kZWQgVGV4dCBGaWVsZC0xMV8QFlB1c2ggQnV0dG9uIChDYW5jZWwpLTFf -EBFCZXZlbCBCdXR0b24gKFVwKV8QEkJ1dHRvbiBDZWxsIChPSyktMV8QEk1lbnUgSXRlbSAoRGVsZXRl -KV8QIFRleHQgRmllbGQgQ2VsbCAoR0IgRnJhbWUgU2tpcDopXxASVGV4dCBGaWVsZCBDZWxsLTIxXxAW -TWVudSBJdGVtIChEaXNhYmxlZCktN15NZW51IEl0ZW0gKDR4KV8QElRleHQgRmllbGQgQ2VsbC0yNF8Q -HFBvcCBVcCBCdXR0b24gQ2VsbCAoRW5hYmxlZClfEBNCdXR0b24gQ2VsbCAoUmlnaHQpXxAgVGV4dCBG -aWVsZCBDZWxsIChXYXNoZWQgQ29sb3JzOilfEBVNZW51IEl0ZW0gKEVuYWJsZWQpLTVfEB9Qb3AgVXAg -QnV0dG9uIENlbGwgKERpc2FibGVkKS02XxASQnV0dG9uIENlbGwgKExlZnQpXxASUG9wdXAgQnV0dG9u -ICg2NGspXxAiU3RhdGljIFRleHQgKENoYW5nZSBUeXBlL0NyZWF0b3I6KV8QHE1lbnUgSXRlbSAoU2lt -cGxlIFNtb290aGluZylfEB1NZW51IEl0ZW0gKENvbmZpZ3VyZSBLZXlzLi4uKV5Db250ZW50IFZpZXct -NV8QKk1lbnUgSXRlbSAoQWRkIEdhbWVTaGFya0FkdmFuY2UgQ2hlYXRzLi4uKV8QHlN0YXRpYyBUZXh0 -IChWaXN1YWxCb3lBZHZhbmNlKV8QIVRleHQgRmllbGQgQ2VsbCAoR2FtZUJveSBCb3JkZXI6KV8QE01l -bnUgSXRlbSAoQ29udHJvbClfEBZNZW51IEl0ZW0gKEVuYWJsZWQpLTExXxAYUG9wdXAgQnV0dG9uIChB -dXRvbWF0aWMpXVRleHQgRmllbGQtMTFfEA9NZW51IEl0ZW0gKDEpLTFfEBBQb3B1cCBCdXR0b24gKDIp -XxAUUG9wdXAgQnV0dG9uIChQbGFpbilfEBFUZXh0IEZpZWxkIENlbGwtNV8QIFBvcCBVcCBCdXR0b24g -Q2VsbCAoRGlzYWJsZWQpLTEwXU1lbnUgSXRlbSAoMyleQ29udGVudCBWaWV3LTRfEBVNZW51IEl0ZW0g -KEVuYWJsZWQpLThbU2VwYXJhdG9yLTNfEBZNZW51IEl0ZW0gKERpc2FibGVkKS00XxAcU3RhdGljIFRl -eHQgKFdhc2hlZCBDb2xvcnM6KV8QElB1c2ggQnV0dG9uIChPSyktNV8QIk1lbnUgSXRlbSAoQWJvdXQg -VmlzdWFsQm95QWR2YW5jZSlfEA9UZXh0IEZpZWxkIENlbGxfEA9CdXR0b24gQ2VsbCAoTClfEBVCdXR0 -b24gQ2VsbCAoTGljZW5zZSlfEBdCdXR0b24gQ2VsbCAoRGVmYXVsdCktMdIADgBFEh0bBIEEb6DSAA4A -RRIdGweBBG+g0gAOAEUSHRsKgQRvrxEB4QzgBHsDlgCCAHkJ3QrVAfoFaQCfEU0EDQytDN8HZgctC9IA -2QCXBu4FdwYWDXcHIQY7B0EAoANECUAJ3As4BL0LgQ/vEG0D8Qt2A68I+AzWBqIHHgwDDCoHPABbDlUH -OgBlBgcIcwcpBKYAvg+0AMEHLgzdAGwE1hN0EOoDXAdnAs0AkAfOAHQAvwgyBJECOROPC8MAagCwAo4J -xAU/AGkTlww4EE8RpwZnBgAHvQj0BOkMEgc7AFoH3QB3B9kF8gB8ENYQUQpZBTQHLwy4BO0MfQ62AK4P -EgdlBzAE3QUSAJkAqAXrAp0AaAB7AL0HKgO4AFEEGhPMB/UOyRGfA2kAdgpwCr0FqgRNBzgAmBEkCTAA -jQeXEa0RBAJgAgkAbwhYBDYMSA5RAI8M1Q2HBzkNtAm1CcAT/Aj3AJUAyQC2AoUQVg8yB14BRBGLAIsO -UA42DewHYBE+AHUFtQCiCq4FlAUVD1IDcAUtAF4ApAhKB18EXA+ZB2MLnwgTAHoEvgtbAIQHQAjYC+sG -2wDAAHAApQwOEPAOCw5PDkoAtwdsAH8JYAbCDWcGLgFeAFAAlgdhDNwCOAI8DI0I9QR0AIMHPgZ6A+AB -5gapDtwDkAB9AKEAYwM1Cd8B4wSKDmMC/gBiBKIJUA9CCw4AXwidEJoOUwckBokGUAdkDhEIzQC0AE8A -tQddEzgBNAydAGYHrhAxD/kQUACsBRgLKg5qAHIAaw6QAMIN3gc9BdMFuQBZDlYAswcjCYYOYQBzBwYB -4ACJAy4AmgCOAFMDxwmVBywHJwFUA9kKLQqAAFcAhhNzDa8HKw7vE3sC5goSBUMCrQ5iDmUAgAguAG0B -3wsDAB8ChAq5BX4Auw/nB4gBhAP1AJMFowCvBVsEIRHECeAAigtWCiIAZABnAsUAYAgjALwM1wCIAwUA -qgrzA0AF0Qj5CW8TwgzYAj8MbxPJEO0AhQOwBJUPAhPVCjEC1wzbEX4HHwC6AS0FjQjcAKYM4Qa8CkoM -3gPPBk8AyAxTAG4AXACbCxIIaAYSDLwAXQh3AGEAkQciBtUHIAZYDFcAfgCdAJ4AqQ6jAVsUFRQXAX4H -MwCBALIGUweTC84M2grjCaUBUxATB0MN8gIPAFYLhQCtDyIAsRQsDk4HNgBxC+oJaw5XAFIAjAPkAKcA -nA5LFD8C7ACSEAELngCrCAMCiQzZAKMHGwEuBD0Pbgi9C6AAuQCUAIcEYgB4AFgHKA3QEvoQTgBUALgU -ZQiPBzcHHQneANYBwhRxBQQHPxAyDn0QqwBVgQMVgPWAuIEDQoEBf4ECP4ECeYBNgQEugQPbgQQ0gNeB -AuyBAxKBAd6BAm+BArmAEIEDwYEBlYEBM4EBW4EDIYECH4EBY4EDIoED3ICkgQIZgQI9gQKRgQEDgQKk -gQPLgQP2gNKBAqGAw4ECDYEC+IEBgIECE4ECxIECzIEC4oCdgQOBgQLSgNqBAVeBAeOBAlmA/oEEo4ED -uYEEqIECe4EDDIEBCoEBC4EEuYEEGICogQHqgICBA62BAbyBAVSBBKSBAdSA+4BdgQS/gQK1gPKBBCyA -cIECOYEBJYDrgQTBgQLQgQPtgQSVgQFsgQFVgQG4gQIEgQEQgQLIgQLegJuBAcCBAXyBAb+BAVKBAZSB -BBGBA/+BAluBASKBAn+BAu+BARGBAuCBA3SBBCaBA4uBAdqBAoOBAQ2BARmBA8WBBBWBAVCAc4DmgQGN -gQShgQJfgMCAJ4DbgQTPgQHEgQN5gQRMgKyBAXeBAmGBAnWBAT+A54ECwoEDw4EEJ4ECFYEDp4EBsIEE -kYEEHYBogE+BAS2BAdyA4oEC1IEDd4EDq4EC9YEDJIECzoEDLoECNYECOIEEs4ECCoEDvYALgQQ8gHGB -A+qBA5GBAaqAJYEER4EDoYEDcoEDWYEDQ4EBuoEEL4EBYoEBQoED4IECcYEBOoEBGoEDl4CugQEggLGB -BAuBAdiBAbaA7IEDsIEByoECrYEBzIEBhoEBBoECmIEDS4EDH4EB/oECwIEBkIEEpoEBMoEEDYECx4EE -G4EDTIEDbYEDXoEEPoEBpoEBm4ECIYEBiYEDHYEBX4AtgB+BA7+BAcaBAwmAZIBegQLkgQIHgPOBA0mB -AuqBAXGAz4BKgQGCgQN+gLaBAZmBA96AxoCggQJDgEiA+IEDkoCRgL6A/YECHYEDlIECiICzgQHsgQP9 -gQN8gQIzgQF4gQFqgQHOgQNOgQH7gQQ5gAqBBDuBAaSBBK+AIoEC6IDfgQG0gQPjgQPQgQP7gQQjgQEc -gQKNgQNggQE8gPeBA2qBBKyBAz+BAuaBAUuBAUOAkIEDhoEEN4ECL4ECKYEDjIEBT4EBnIBHgQOdgJ6B -A8eBA6mAToDHgQItgQJngQJHgCiAzIECUIECZYCEgQNUgQSygQMsgQJjgQODgQS8gIqBAkmBASaAdoED -j4EDlYEDOoEB04EBGIBLgQKFgAKAboECdIEBNYEEnYEDyoEBrIAygNOBA7aBAT2BBCqBASqA3YEEUIEC -RYEDn4ECloECTYDLgOGAf4C1gQHQgQSfgQL7gQNYgJOBBByBAoGAo4EBSIECEIECJYEEwoEC/oBggQLc -gQTIgQQZgQNSgL+BApOBA4iBBNCBAlGAhYEDBoEEQ4ECF4EERoAjgQE4gQH/gQQPgQMYgQGHgQJWgQMP -gMiBAWeADYEC14EBH4CrgQPJgQKJgQHggQFagQLwgLCBAeSAvIEDr4ECK4EBjoECG4EBaYEC2IEBmoED -1YED14EEF4EDb4ArgQTMgQTOgDGBAo+BAz6BBDOBAW+BAa+BAriBAwSBAn2BAjGAKoED2IEDKIEDRYBR -gH6BAqWBBCWBA46BBC6BBNeBA2iBAp+BATeBAr6BAiSBA4mARoEDpYEBoYEEEIEDz4EDY4EEzYCMgQO0 -gQPRgQKqgQQhgQHIgHSBAwGBBAmBAfWAIIDkgQOigQH3gQKwgQRCgQO4gQNWgO6BAX6AiYECS4EDO4EE -qYED6IBcgQRAgQTUgQHogQKzgQH5gQJBgA6APoEExoEBFYEDG4ED4YEDZYEEAYBn0gAOAEUSHRzugQRv -rxEB4RzvHPAc8RzyHPMc9Bz1HPYc9xz4HPkc+hz7HPwc/Rz+HP8dAB0BHQIdAx0EHQUdBh0HHQgdCR0K -HQsdDB0NHQ4dDx0QHREdEh0THRQdFR0WHRcdGB0ZHRodGx0cHR0dHh0fHSAdIR0iHSMdJB0lHSYdJx0o -HSkdKh0rHSwdLR0uHS8dMB0xHTIdMx00HTUdNh03HTgdOR06HTsdPB09HT4dPx1AHUEdQh1DHUQdRR1G -HUcdSB1JHUodSx1MHU0dTh1PHVAdUR1SHVMdVB1VHVYdVx1YHVkdWh1bHVwdXR1eHV8dYB1hHWIdYx1k -HWUdZh1nHWgdaR1qHWsdbB1tHW4dbx1wHXEdch1zHXQddR12HXcdeB15HXodex18HX0dfh1/HYAdgR2C -HYMdhB2FHYYdhx2IHYkdih2LHYwdjR2OHY8dkB2RHZIdkx2UHZUdlh2XHZgdmR2aHZsdnB2dHZ4dnx2g -HaEdoh2jHaQdpR2mHacdqB2pHaodqx2sHa0drh2vHbAdsR2yHbMdtB21HbYdtx24Hbkduh27HbwdvR2+ -Hb8dwB3BHcIdwx3EHcUdxh3HHcgdyR3KHcsdzB3NHc4dzx3QHdEd0h3THdQd1R3WHdcd2B3ZHdod2x3c -Hd0d3h3fHeAd4R3iHeMd5B3lHeYd5x3oHekd6h3rHewd7R3uHe8d8B3xHfId8x30HfUd9h33Hfgd+R36 -Hfsd/B39Hf4d/x4AHgEeAh4DHgQeBR4GHgceCB4JHgoeCx4MHg0eDh4PHhAeER4SHhMeFB4VHhYeFx4Y -HhkeGh4bHhweHR4eHh8eIB4hHiIeIx4kHiUeJh4nHigeKR4qHiseLB4tHi4eLx4wHjEeMh4zHjQeNR42 -HjceOB45HjoeOx48Hj0ePh4/HkAeQR5CHkMeRB5FHkYeRx5IHkkeSh5LHkweTR5OHk8eUB5RHlIeUx5U -HlUeVh5XHlgeWR5aHlseXB5dHl4eXx5gHmEeYh5jHmQeZR5mHmceaB5pHmoeax5sHm0ebh5vHnAecR5y -HnMedB51HnYedx54Hnkeeh57HnwefR5+Hn8egB6BHoIegx6EHoUehh6HHogeiR6KHosejB6NHo4ejx6Q -HpEekh6THpQelR6WHpcemB6ZHpoemx6cHp0enh6fHqAeoR6iHqMepB6lHqYepx6oHqkeqh6rHqwerR6u -Hq8esB6xHrIesx60HrUeth63HrgeuR66HrsevB69Hr4evx7AHsEewh7DHsQexR7GHsceyB7JHsoeyx7M -Hs0ezh7PgQZGgQZHgQZIgQZJgQZKgQZLgQZMgQZNgQZOgQZPgQZQgQZRgQZSgQZTgQZUgQZVgQZWgQZX -gQZYgQZZgQZagQZbgQZcgQZdgQZegQZfgQZggQZhgQZigQZjgQZkgQZlgQZmgQZngQZogQZpgQZqgQZr -gQZsgQZtgQZugQZvgQZwgQZxgQZygQZzgQZ0gQZ1gQZ2gQZ3gQZ4gQZ5gQZ6gQZ7gQZ8gQZ9gQZ+gQZ/ -gQaAgQaBgQaCgQaDgQaEgQaFgQaGgQaHgQaIgQaJgQaKgQaLgQaMgQaNgQaOgQaPgQaQgQaRgQaSgQaT -gQaUgQaVgQaWgQaXgQaYgQaZgQaagQabgQacgQadgQaegQafgQaggQahgQaigQajgQakgQalgQamgQan -gQaogQapgQaqgQargQasgQatgQaugQavgQawgQaxgQaygQazgQa0gQa1gQa2gQa3gQa4gQa5gQa6gQa7 -gQa8gQa9gQa+gQa/gQbAgQbBgQbCgQbDgQbEgQbFgQbGgQbHgQbIgQbJgQbKgQbLgQbMgQbNgQbOgQbP -gQbQgQbRgQbSgQbTgQbUgQbVgQbWgQbXgQbYgQbZgQbagQbbgQbcgQbdgQbegQbfgQbggQbhgQbigQbj -gQbkgQblgQbmgQbngQbogQbpgQbqgQbrgQbsgQbtgQbugQbvgQbwgQbxgQbygQbzgQb0gQb1gQb2gQb3 -gQb4gQb5gQb6gQb7gQb8gQb9gQb+gQb/gQcAgQcBgQcCgQcDgQcEgQcFgQcGgQcHgQcIgQcJgQcKgQcL -gQcMgQcNgQcOgQcPgQcQgQcRgQcSgQcTgQcUgQcVgQcWgQcXgQcYgQcZgQcagQcbgQccgQcdgQcegQcf -gQcggQchgQcigQcjgQckgQclgQcmgQcngQcogQcpgQcqgQcrgQcsgQctgQcugQcvgQcwgQcxgQcygQcz -gQc0gQc1gQc2gQc3gQc4gQc5gQc6gQc7gQc8gQc9gQc+gQc/gQdAgQdBgQdCgQdDgQdEgQdFgQdGgQdH -gQdIgQdJgQdKgQdLgQdMgQdNgQdOgQdPgQdQgQdRgQdSgQdTgQdUgQdVgQdWgQdXgQdYgQdZgQdagQdb -gQdcgQddgQdegQdfgQdggQdhgQdigQdjgQdkgQdlgQdmgQdngQdogQdpgQdqgQdrgQdsgQdtgQdugQdv -gQdwgQdxgQdygQdzgQd0gQd1gQd2gQd3gQd4gQd5gQd6gQd7gQd8gQd9gQd+gQd/gQeAgQeBgQeCgQeD -gQeEgQeFgQeGgQeHgQeIgQeJgQeKgQeLgQeMgQeNgQeOgQePgQeQgQeRgQeSgQeTgQeUgQeVgQeWgQeX -gQeYgQeZgQeagQebgQecgQedgQeegQefgQeggQehgQeigQejgQekgQelgQemgQengQeogQepgQeqgQer -gQesgQetgQeugQevgQewgQexgQeygQezgQe0gQe1gQe2gQe3gQe4gQe5gQe6gQe7gQe8gQe9gQe+gQe/ -gQfAgQfBgQfCgQfDgQfEgQfFgQfGgQfHgQfIgQfJgQfKgQfLgQfMgQfNgQfOgQfPgQfQgQfRgQfSgQfT -gQfUgQfVgQfWgQfXgQfYgQfZgQfagQfbgQfcgQfdgQfegQffgQfggQfhgQfigQfjgQfkgQflgQfmgQfn -gQfogQfpgQfqgQfrgQfsgQftgQfugQfvgQfwgQfxgQfygQfzgQf0gQf1gQf2gQf3gQf4gQf5gQf6gQf7 -gQf8gQf9gQf+gQf/gQgAgQgBgQgCgQgDgQgEgQgFgQgGgQgHgQgIgQgJgQgKgQgLgQgMgQgNgQgOgQgP -gQgQgQgRgQgSgQgTgQgUgQgVgQgWgQgXgQgYgQgZgQgagQgbgQgcgQgdgQgegQgfgQgggQghgQgigQgj -gQgkgQglgQgmEQW6EgABi9QSAAGL2REFWxEFwREDLBEDcBIAAYtEEgADD58RBXYRBRgRBYASAAGK1REF -lBEFkBEDbBEEJxIAAYtbEQVZEQTPEQUrEQMbEgABiuURAygRBKARBEcRBZ0RA2kSAAGJxhEDOBIAAYob -EQWVEQQrEQFDEgABiK0RBYESAAGKtxEFDhEDQREEJBEFqxEDJRIAAYq8EQQtEQQvEQPuEQUvEQQhEQVC -EgABidURBY4RAz8RBZgRBXkSAAMPmhIAAw+nEQNtEQQdEQPrEQNyEQE9EQJXEQNjEQWSEQTKEQWsEgAB -izMRBEARBbYRBYkSAAGMNxEFNxP//////////RIAAYq6EQVDEQRGEgABi1YRAyIRAy4RBVIQxBIAAYrA -EQINEgADD5USAAGLRxEDNRIAAYrvEQNAEQN2EQQoEQQmEQUIEQSVEQT4EQSUEgABi04RBOIQhhECUhIA -AYnfEgABidYRA28RBCoRA30SAAGKxhIAAYvFEJISAAGLvREFjREDcRIAAYoSEQEmEQRJEQUKEQSuEgAB -i1URAUsRBRwRBD4RA2USAAMPlxED6REFMxIAAw+oEQSWEgABi9YRAlURBK0SAAMPmxIAAYoFEQNmEgAB -ih4QiBEEHBEFARCREgABicURBQQRBEsSAAGI9RECThEEuhEEvBIAAw+gEgABjC0RBa0SAAGKwREFNhEE -UBEEJRIAAYrnEQQgEgABjEcSAAGJ0xEDMRAdEQMUEQW5EQT0EQSYEQS1EgABh8cSAAGMTxEEShIAAYtY -EQJTEQTjEQUlEQUyEQUmEQSTEgADD5gRBPoRA3wRASoSAAGKDBIAAYxREQElEgABjFISAAGLTREDNhEE -/xEERBEFjBEETxEFMREE4BEFghEEHxIAAYwiEQVTEQWaEgABjDkRBVwRBEURAz0RBDcSAAGLuxEFVREF -RREFBxEEMxIAAYj3EQUjEQUuEQUpEQQ4EgABiooRBD8SAAGJyBIAAYu/EgABitYRAx4SAAGJwBEFehEF -UBEElxEEFhEFPxEFIBIAAYrPEQMaEQU0EQPtEQQ1EgABi08SAAGMHxIAAYtCEgABjEsSAAGLzBEFOREF -dREEQREFqRIAAYoXEQMcEQShEQWXEQWwEQU1EgADD6IRBZYSAAGJxxIAAYxQEQNkEQWzEgABjDISAAGI -rhEFLBEDMxIAAw+ZEQSnEQWKEgABi8MSAAGJwRED7xEFBREFexED6hCVEgABi1cSAAGK1BDDEQROEQEk -EQEbEQIOEQWcEgABh8YRA3gSAAGLyRED7BEFmxIAAYvEEQVUEJYRBDQRA3oRA3URBUQRBSgRBEMRAy8R -AzsRBa4RBQMRAlwRBKIRBD0RA3cRBbQRBVgRBPkRBagSAAGJyREDaBEDNxDCEQV/EQMYEgABigcRBOQR -BQARARwRBacRA2cSAAGLzxEB1xEFHhIAAYnXEQMXEgABi1QRBa8RBbISAAMPqhEFixEBLBEEpBIAAYoR -EgADD60RBLYRA3QSAAGLyxEFVhECWhIAAYrqEQMjEQV9EQVREQN+EQW9EQNCEgABi9MRAlYRAzwRBVoR -BZkSAAGJ3hEFnhEFtREE0REFXhIAAYwqEQUGEQQjEQVMEgABi9URAk8SAAGKDxEDaxEDahEDJBEDKhA4 -EQQsEgABi9cRBDASAAMPnhECVBEEPBIAAw+hEgABi8gRBMgRAx8RBNoRBDIRAdgRAyYRAlkRBLgRBbER -Ax0RBXQRBbsRBR8RAy0RBZMQOREEpREEuxEEHhEEOhEFAhEFDxEDeRIAAYwwEQMwEQQuEQV3EQWPEQW+ -EQTqEQMpEQUbEQMnEgABi0URBBkRBXgRBDkSAAMPpRECWBIAAYvOEQJdEgADD6sSAAMPoxEDKxEDexCZ -EQUaEQSvEQRMEQWDEQQbEgABig0SAAGJzxEDIBIAAw+kEQWmEgABi8YSAAGLXBEE5REEGBEESBIAAYxO -EgADD50Q/REFJBEEFxEFuBEEMREDOREFHREFchEFtxEDFhCYEQEgEQUtEgADD6wSAAGLvhEFQREBHREE -KREEQhIAAYs3EQS0EQQiEQVAEQMZEQS3EgABjE0RBNsSAAGJuREFwhEB2RIAAw+cEQUJEgABi9ERBXMR -BVcRAz4SAAMPqRIAAw+mEQEnEQVPEQQ7EgADD5YRBZERBBoRAyERAzQRBLkRAzIRBRkRA24RBDYQOhIA -AYvNEgABiPIRBPvSAA4ARQBNILKAQaDSAA4ARRIdILWBBG+g0gAOAEUSHSC4gQRvoNIAOgA7ILogu6Ig -uwA/Xk5TSUJPYmplY3REYXRhAAAIAAAZAAAiAAAnAAAxAAA6AAA/AABEAABSAABUAABmABDAABDGABER -ABEYABEfABEtABE/ABFbABFpABF1ABGBABGPABGaABGoABHEABHSABHlABH3ABIRABIbABIoABIqABIt -ABIwABIzABI2ABI4ABI7ABI9ABJAABJDABJGABJJABJLABJNABJQABJTABJYABJbABJkABJwABJyABJ0 -ABJ9ABKHABKJABKXABKgABKpABK0ABK7ABLNABLWABLfABLoABLtABL8ABMPABMYABMjABMlABMmABMv -ABM2ABNDABNJABNSABNUABQ/ABRBABRDABRFABRHABRJABRLABRNABRPABRRABRTABRVABRXABRZABRb -ABRdABRfABRhABRjABRlABRnABRpABRrABRtABRvABRxABRzABR1ABR3ABR5ABR8ABR/ABSCABSFABSI -ABSLABSOABSRABSUABSXABSaABSdABSgABSjABSmABSpABSsABSvABSyABS1ABS4ABS7ABS+ABTBABTE -ABTHABTKABTNABTQABTTABTWABTZABTcABTfABTiABTlABToABTrABTuABTxABT0ABT3ABT6ABT9ABUA -ABUDABUGABUJABUMABUPABUSABUVABUYABUbABUeABUhABUkABUnABUqABUtABUwABUzABU2ABU5ABU8 -ABU/ABVCABVFABVIABVLABVOABVRABVUABVXABVaABVdABVgABVjABVmABVpABVsABVvABVyABV1ABV4 -ABV7ABV+ABWPABWdABWmABWuABWwABWyABW0ABW2ABW/ABXBABXDABXOABXrABX9ABYFABYMABYVABYf -ABYrABYtABYvABYxABYzABY2ABY3ABY5ABZOABZZABZbABZdABZfABZhABZ6ABajABavABbDABbOABbY -ABbmABbzABcGABcaABcmABcvABcxABczABc1ABc3ABc5ABc+ABdAABdBABdDABdEABdVABdcABdjABds -ABduABd3ABd5ABd7ABeIABeRABeWABedABeyABe6ABfHABfTABfhABfjABflABfnABfpABfrABfyABgI -ABgVABgdABgfABghABgkABgtABgyABg/ABhFABhHABhOABhXABhgABhyABh/ABiIABiTABifABipABiw -ABi8ABjKABjTABjaABjxABkAABkRABkTABkVABkXABkZABk2ABk4ABk6ABk8ABk+ABk/ABlBABlaABmD -ABmFABmHABmJABmLABmNABmOABmQABmtABmvABmxABmzABm1ABm2ABm4ABnQABn5ABn7ABn9ABn/ABoB -ABoDABoEABoGABoSABojABolABonABopABorABo0ABo2ABo4ABpAABpdABpfABphABpjABplABpmABpo -ABp9ABp/ABqBABqEABqHABqhABrwABsNABsfABs1ABtKABtZABtsABt+ABuJABubABuwABu+ABvQABvX -ABvlABvuABvvABvxABvzABv1ABv3ABv5ABv7ABv9ABv/ABwAABwBABwEABwJABwLABwQABwhABwjABws -ABwuABwxABw6ABw8ABxFABxHABx0ABx9AByFAByZABykAByyABy8ABzJABzSABzaABzcABzeABzgABzl -ABznABzsABzuABzwABzyABz0AB0BAB0NAB0PAB0RAB0TAB0cAB0pAB04AB06AB08AB0+AB1GAB1YAB1h -AB1mAB15AB2GAB2IAB2KAB2MAB2fAB2zAB28AB3BAB3KAB3MAB3XAB3gAB3iAB3nAB3pAB3rAB4UAB4W -AB4YAB4aAB4cAB4eAB4gAB4iAB4kAB4sAB41AB48AB5LAB5TAB5cAB5hAB5qAB53AB6LAB6aAB6nAB6w -AB69AB7LAB7UAB7cAB7tAB7vAB7xAB7zAB71AB8SAB8UAB8WAB8YAB8aAB8bAB8dAB8yAB80AB82AB85 -AB88AB9lAB9nAB9pAB9rAB9tAB9vAB9wAB9yAB+PAB+RAB+TAB+VAB+XAB+YAB+aAB+zAB/cAB/eAB/g -AB/iAB/kAB/mAB/nAB/pAB/6AB/8AB/+ACAAACACACAfACAhACAjACAlACAnACAoACAqACBCACB3ACB8 -ACB+ACCAACCCACCEACCGACCIACCKACCMACCOACCTACCcACCfACCwACCyACC7ACC9ACDAACDRACDTACDV -ACDfACDoACDqACDzACD1ACD+ACEHACEQACEbACEpACEyACE5ACFRACFiACFkACFmACFoACFqACGHACGJ -ACGLACGNACGPACGQACGSACGnACGpACGrACGuACGxACHKACH/ACIBACIDACIFACIHACIJACILACINACIP -ACIUACIdACIyACJDACJFACJHACJQACJSACJbACJdACJfACJrACJ2ACKHACKJACKLACKNACKPACLAACLN -ACLaACLoACLyACMAACMNACMXACMpACM9ACNHACNTACNVACNXACNZACNbACNgACNiACNkACNmACNoACNq -ACNsACOHACOVACOeACOnACOpACOuACO3ACO5ACPIACPKACPMACPOACPQACPSACPUACPWACPzACP1ACP3 -ACP5ACP7ACP8ACP+ACQnACQpACQrACQtACQvACQxACQyACQ0ACRRACRTACRVACRXACRZACRaACRcACR1 -ACSeACSgACSiACSkACSmACSoACSpACSrACTIACTKACTMACTOACTQACTRACTTACTrACUUACUWACUYACUa -ACUcACUeACUfACUhACU4ACVBACVIACVhACVsACWJACWSACWXACWqACW5ACXGACXIACXKACXMACXtACXv -ACXxACXzACX1ACX3ACX5ACYGACYIACYLACYOACYTACYVACYbACYoACYqACYsACYuACZPACZRACZTACZV -ACZXACZZACZbACZfACZhACZmACZ3ACZ5ACZ7ACZ9ACZ/ACacACaeACagACaiACakACalACanACbAACb1 -ACb3ACb5ACb7ACb9ACb/ACcBACcDACcFACcOACcQACcXACcoACcqACcsACcuACcwACdNACdPACdRACdT -ACdVACdWACdYACdwACeVACeaACecACeeACegACeiACekACepACeqACesACfBACfDACfFACfHACfJACfW -ACfjACflACfxACgGACgIACgKACgMACgOACghACguACgwACgzACg6AChLAChNAChPAChRAChTAChiAChz -ACh1ACh3ACh5ACh7ACiYACiaACicACieACigACihACijACi9ACkMACkNACkPACkRACkTACkVACkXACkZ -ACkbACkcACkdACkfACkoACkqACkzACk1ACliAClkAClmACloAClqAClsACluAClwAClyACl/ACmBACmD -ACmFACmOACmQACmZACmbACmgACmiACmkACnNACnPACnRACnTACnVACnXACnZACnbACndACnqACn7ACn9 -ACn/ACoBACoDACogACoiACokAComACooACopACorACpUACpWACpYACpaACpcACpeACpfACphACptACp+ -ACqAACqCACqEACqGACqXACqZACqbACqdACqfACqqACq7ACq9ACq/ACrBACrDACrVACrmACroACrqACrs -ACruACsLACsNACsPACsRACsTACsUACsWACsuACtjACtlACtnACtpACtrACttACtvACtxACt6ACt8ACuF -ACuHACuSACujACulACunACupACurACu0ACvFACvHACvJACvLACvNACvuACvwACvyACv0ACv2ACv4ACv6 -ACwHACwJACwMACwPACwkACwmACwvACwxACwzACw9ACxLACxcACxeACxgACxiACxkACyFACyHACyJACyL -ACyNACyPACyRACyiACykACynACyqACytACy3ACy/ACzQACzSACzUACzWACzYACz1ACz3ACz5ACz7ACz9 -ACz+AC0AAC0ZAC0cAC0eAC0hAC0kAC0nAC1BAC2QAC2RAC2TAC2VAC2XAC2ZAC2bAC2dAC2fAC2gAC2h -AC2jAC2sAC2uAC23AC25AC3mAC3oAC3qAC3sAC3uAC3wAC3yAC30AC32AC4DAC4FAC4HAC4JAC4SAC4U -AC4dAC4fAC4kAC4mAC4oAC5RAC5TAC5VAC5XAC5ZAC5bAC5dAC5fAC5hAC5qAC57AC59AC5/AC6BAC6D -AC6gAC6iAC6kAC6mAC6oAC6pAC6rAC7EAC7pAC7rAC7tAC7vAC7xAC7zAC70AC72AC8AAC8RAC8TAC8V -AC8XAC8ZAC8iAC8zAC81AC83AC85AC87AC9YAC9aAC9cAC9eAC9gAC9hAC9jAC97AC+gAC+iAC+kAC+m -AC+oAC+qAC+rAC+tAC+4AC/JAC/LAC/NAC/PAC/RAC/yAC/0AC/2AC/4AC/6AC/8AC/+ADAWADAYADAe -ADAvADAxADAzADA1ADA3ADBUADBWADBYADBaADBcADBdADBfADB3ADCsADCuADCwADCyADC0ADC2ADC4 -ADC6ADC/ADDIADDKADDUADDlADDnADDpADDrADDtADEKADEMADEOADEQADESADETADEVADEuADFTADFV -ADFXADFZADFbADFdADFeADFgADFrADF8ADF+ADGAADGCADGFADGiADGkADGmADGoADGqADGrADGtADHG -ADHJADHLADHOADHRADHUADHsADI7ADI8ADI+ADJAADJCADJEADJGADJIADJKADJLADJMADJOADJXADJZ -ADKGADKIADKKADKMADKOADKQADKSADKUADKXADKkADKmADKpADKsADKxADK6ADK8ADLFADLHADLOADLQ -ADLTADLWADL/ADMBADMDADMGADMIADMKADMMADMOADMRADMdADNGADNIADNKADNNADNPADNRADNTADNV -ADNYADNeADNpADN6ADN8ADN/ADOBADOEADOhADOjADOlADOoADOrADOsADOuADPIADQbADQtADQuADQx -ADQzADQ1ADQ4ADQ6ADQ9ADRAADRBADRCADRFADROADRQADRZADRbADSIADSLADSNADSPADSRADSTADSV -ADSYADSbADSoADSqADStADSwADS5ADS7ADTEADTGADTLADTOADTRADT6ADT9ADT/ADUBADUDADUFADUH -ADUKADUNADUVADUiADUkADUnADUqADVHADVKADVMADVPADVSADVTADVWADVrADVtADVvADVyADV1ADWN -ADXCADXEADXGADXIADXLADXNADXPADXSADXUADXeADXvADXxADX0ADX2ADX5ADYWADYYADYaADYdADYg -ADYhADYjADY9ADaMADaNADaQADaSADaUADaXADaZADacADafADagADahADakADatADavADa4ADa6ADbn -ADbqADbsADbuADbwADbyADb0ADb3ADb6ADcHADcJADcMADcPADcYADcaADcjADclADcqADctADcwADdZ -ADdcADdeADdgADdiADdkADdmADdpADdsADd6ADeLADeNADePADeSADeVADe2ADe4ADe7ADe+ADfAADfC -ADfEADfYADfaADfnADf4ADf6ADf9ADf/ADgCADgfADghADgjADgmADgpADgqADgsADhEADhpADhrADht -ADhvADhxADh0ADh1ADh3ADh+ADiPADiRADiUADiWADiZADi2ADi4ADi6ADi9ADjAADjBADjDADjcADkB -ADkDADkFADkHADkJADkMADkNADkPADkWADknADkpADksADkuADkxADlOADlQADlSADlVADlYADlZADlb -ADl1ADnIADnJADnMADnOADnQADnTADnVADnYADnbADncADndADngADnpADnrADn0ADn2ADojADomADoo -ADorADotADovADoxADo0ADo3ADpEADpGADpJADpMADpSADpbADpdADpmADpoADpvADpyADp1ADp4ADqh -ADqkADqmADqpADqrADqtADqvADqyADq1ADq7ADrkADrnADrpADrsADruADrwADryADr1ADr4ADr+ADsL -ADscADseADshADsjADsmADtDADtFADtHADtKADtNADtOADtQADt5ADt7ADt9ADt/ADuBADuEADuFADuH -ADuTADukADumADupADurADuuADvLADvNADvPADvSADvVADvWADvYADvyADxBADxCADxFADxHADxJADxM -ADxOADxRADxUADxVADxWADxZADxiADxkADxtADxvADycADyfADyhADyjADylADynADypADysADyvADy8 -ADy+ADzBADzEADzNADzPADzYADzaADzfADziADzlAD0OAD0RAD0TAD0VAD0XAD0ZAD0bAD0eAD0hAD0u -AD0/AD1BAD1EAD1GAD1JAD16AD18AD1+AD2BAD2DAD2FAD2IAD2LAD2OAD2RAD2aAD2cAD2lAD2nAD22 -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 -AE4oAE4rAE4tAE5AAE5XAE5xAE54AE6VAE6XAE6ZAE6cAE6eAE6hAE6qAE63AE65AE7HAE7QAE7ZAE7f -AE78AE7+AE8AAE8DAE8GAE8HAE8JAE8jAE9EAE9GAE9IAE9LAE9NAE9QAE9SAE9hAE9+AE+AAE+CAE+F -AE+IAE+JAE+LAE+lAE/4AE/5AE/8AE/+AFAAAFADAFAFAFAIAFALAFAMAFANAFAQAFAZAFAbAFAkAFAm -AFBTAFBWAFBYAFBbAFBdAFBfAFBhAFBkAFBnAFB0AFB2AFB5AFB8AFB+AFCHAFCJAFCSAFCUAFChAFCk -AFCnAFCqAFCtAFCwAFCzAFDcAFDfAFDhAFDkAFDmAFDoAFDqAFDtAFDwAFDyAFEbAFEeAFEgAFEjAFEl -AFEnAFEpAFEsAFEvAFExAFFaAFFdAFFfAFFiAFFkAFFmAFFoAFFrAFFuAFFwAFGZAFGcAFGeAFGhAFGj -AFGlAFGnAFGqAFGtAFGvAFHYAFHbAFHdAFHgAFHiAFHkAFHmAFHpAFHsAFHuAFILAFINAFIPAFISAFIV -AFIWAFIYAFIyAFJTAFJVAFJXAFJaAFJcAFJfAFJhAFJtAFKKAFKMAFKOAFKRAFKUAFKVAFKXAFKxAFLS -AFLUAFLWAFLZAFLbAFLeAFLgAFLsAFMJAFMLAFMNAFMQAFMTAFMUAFMWAFMwAFNRAFNTAFNVAFNYAFNa -AFNdAFNfAFNuAFOLAFONAFOPAFOSAFOVAFOWAFOYAFOyAFQFAFQGAFQJAFQLAFQNAFQQAFQSAFQVAFQY -AFQZAFQaAFQdAFQmAFQoAFQxAFQzAFRgAFRjAFRlAFRnAFRpAFRrAFRtAFRwAFRzAFSAAFSCAFSFAFSI -AFSRAFSTAFScAFSeAFSjAFSmAFSpAFTSAFTVAFTXAFTZAFTbAFTdAFTfAFTiAFTlAFUCAFUEAFUGAFUJ -AFUMAFUNAFUPAFUpAFVKAFVMAFVOAFVRAFVTAFVWAFVYAFVnAFWEAFWGAFWIAFWLAFWOAFWPAFWRAFWr -AFXMAFXOAFXQAFXTAFXVAFXYAFXaAFXtAFYKAFYMAFYOAFYRAFYUAFYVAFYXAFYxAFaAAFaBAFaEAFaG -AFaIAFaLAFaNAFaQAFaTAFaUAFaVAFaYAFahAFajAFasAFauAFbbAFbeAFbgAFbjAFblAFbnAFbpAFbs -AFbvAFb8AFb+AFcBAFcEAFcNAFcPAFcYAFcaAFcnAFcqAFctAFcwAFczAFc2AFc5AFdiAFdlAFdnAFdq -AFdsAFduAFdwAFdzAFd2AFefAFeiAFekAFenAFepAFerAFetAFewAFezAFfcAFffAFfhAFfkAFfmAFfo -AFfqAFftAFfwAFgZAFgcAFgeAFghAFgjAFglAFgnAFgqAFgtAFhWAFhZAFhbAFheAFhgAFhiAFhkAFhn -AFhqAFiHAFiJAFiLAFiOAFiRAFiSAFiUAFiuAFjPAFjRAFjTAFjWAFjYAFjbAFjdAFjvAFkMAFkOAFkQ -AFkTAFkWAFkXAFkZAFkzAFmCAFmDAFmGAFmIAFmKAFmNAFmPAFmSAFmVAFmWAFmXAFmaAFmjAFmlAFmu -AFmwAFndAFngAFniAFnlAFnnAFnpAFnrAFnuAFnxAFn+AFoAAFoDAFoGAFoKAFoTAFoVAFoeAFogAFol -AFooAForAFpUAFpXAFpZAFpcAFpeAFpgAFpiAFplAFpoAFptAFqKAFqMAFqOAFqRAFqUAFqVAFqXAFqw -AFrlAFrnAFrpAFrsAFrvAFryAFr0AFr3AFr8AFsPAFsgAFsiAFskAFstAFsvAFtMAFtOAFtQAFtTAFtW -AFtXAFtZAFtyAFuTAFuVAFuXAFuaAFucAFufAFuhAFuwAFvNAFvPAFvRAFvUAFvXAFvYAFvaAFvzAFwU -AFwWAFwYAFwbAFwdAFwgAFwiAFwuAFxjAFxlAFxoAFxrAFxuAFxvAFxyAFx1AFx3AFx6AFyDAFyFAFyI -AFyLAFygAFyjAFylAFyoAFyrAFzCAFzcAFz5AFz7AFz9AF0AAF0CAF0FAF0LAF0YAF0aAF03AF05AF07 -AF0+AF1BAF1CAF1EAF1eAF2tAF2uAF2xAF2zAF21AF24AF26AF29AF3AAF3BAF3CAF3FAF3OAF3QAF3Z -AF3bAF4IAF4LAF4NAF4PAF4RAF4TAF4VAF4YAF4bAF4oAF4qAF4tAF4wAF45AF47AF5EAF5GAF5LAF5O -AF5RAF56AF59AF5/AF6BAF6DAF6FAF6HAF6KAF6NAF6qAF6sAF6uAF6xAF60AF61AF63AF7QAF7xAF7z -AF71AF74AF76AF79AF7/AF8YAF81AF83AF85AF88AF8/AF9AAF9CAF9bAF98AF9+AF+AAF+DAF+FAF+I -AF+KAF+cAF+5AF+7AF+9AF/AAF/DAF/EAF/GAF/gAGAvAGAwAGAzAGA1AGA3AGA6AGA8AGA/AGBCAGBD -AGBEAGBHAGBQAGBSAGBbAGBdAGCKAGCNAGCPAGCRAGCTAGCVAGCXAGCaAGCdAGCqAGCsAGCvAGCyAGC7 -AGC9AGDGAGDIAGDNAGDQAGDTAGD8AGD/AGEBAGEDAGEFAGEHAGEJAGEMAGEPAGEsAGEuAGEwAGEzAGE2 -AGE3AGE5AGFSAGFzAGF1AGF3AGF6AGF8AGF/AGGBAGGIAGG9AGG/AGHCAGHFAGHIAGHJAGHMAGHPAGHR -AGHTAGHcAGHeAGHhAGHjAGHsAGHuAGHzAGH1AGH4AGIVAGIXAGIZAGIcAGIfAGIgAGIiAGI6AGJbAGJd -AGJfAGJiAGJkAGJnAGJpAGKAAGKXAGKwAGLNAGLPAGLRAGLUAGLWAGLZAGLfAGLsAGLuAGMLAGMNAGMP -AGMSAGMVAGMWAGMYAGMyAGOBAGOCAGOFAGOHAGOJAGOMAGOOAGORAGOUAGOVAGOWAGOZAGOiAGOkAGOt -AGOvAGPcAGPfAGPhAGPkAGPmAGPoAGPqAGPtAGPwAGP9AGP/AGQCAGQFAGQIAGQRAGQTAGQcAGQeAGQn -AGQqAGQtAGQwAGQzAGRcAGRfAGRhAGRkAGRmAGRoAGRqAGRtAGRwAGRzAGScAGSfAGShAGSkAGSmAGSo -AGSqAGStAGSwAGSzAGTcAGTfAGThAGTkAGTmAGToAGTqAGTtAGTwAGTzAGUQAGUSAGUUAGUXAGUaAGUb -AGUdAGU3AGWKAGWLAGWOAGWQAGWSAGWVAGWXAGWaAGWdAGWeAGWfAGWiAGWrAGWtAGW2AGW4AGXlAGXo -AGXqAGXtAGXvAGXxAGXzAGX2AGX5AGYGAGYIAGYLAGYOAGYYAGYhAGYjAGYsAGYuAGY1AGY4AGY7AGY+ -AGZnAGZqAGZsAGZuAGZwAGZyAGZ0AGZ3AGZ6AGajAGamAGaoAGaqAGasAGauAGawAGazAGa2AGbTAGbV -AGbXAGbaAGbdAGbeAGbgAGb6AGdJAGdKAGdNAGdPAGdRAGdUAGdWAGdZAGdcAGddAGdeAGdhAGdqAGds -AGd1AGd3AGekAGenAGepAGerAGetAGevAGexAGe0AGe3AGfEAGfGAGfJAGfMAGfVAGfXAGfgAGfiAGfn -AGfqAGftAGgWAGgZAGgbAGgdAGgfAGghAGgjAGgmAGgpAGhGAGhIAGhKAGhNAGhQAGhRAGhTAGhsAGiN -AGiPAGiRAGiUAGiWAGiZAGibAGipAGjGAGjIAGjKAGjNAGjQAGjRAGjTAGjtAGk8AGk9AGlAAGlCAGlE -AGlHAGlJAGlMAGlPAGlQAGlRAGlUAGldAGlfAGloAGlqAGmXAGmaAGmcAGmeAGmgAGmiAGmkAGmnAGmq -AGm3AGm5AGm8AGm/AGnIAGnKAGnTAGnVAGnaAGndAGngAGoJAGoMAGoOAGoQAGoSAGoUAGoWAGoZAGoc -AGo5AGo7AGo9AGpAAGpDAGpEAGpGAGpfAGqAAGqCAGqEAGqHAGqJAGqMAGqOAGqaAGq3AGq5AGq7AGq+ -AGrBAGrCAGrEAGrdAGr+AGsAAGsCAGsFAGsHAGsKAGsMAGseAGs7AGs9AGs/AGtCAGtFAGtGAGtIAGth -AGuCAGuEAGuGAGuJAGuLAGuOAGuQAGucAGu5AGu7AGu9AGvAAGvDAGvEAGvGAGvgAGwvAGwwAGwzAGw1 -AGw3AGw6AGw8AGw/AGxCAGxDAGxEAGxHAGxQAGxSAGxbAGxdAGyKAGyNAGyPAGySAGyUAGyWAGyYAGyb -AGyeAGyrAGytAGywAGyzAGy5AGzCAGzEAGzNAGzPAGzsAGzvAGzyAGz1AGz4AGz7AGz+AG0BAG0EAG0H -AG0KAG0NAG0QAG0TAG0WAG0/AG1CAG1EAG1HAG1JAG1LAG1NAG1QAG1TAG1bAG2EAG2HAG2JAG2MAG2O -AG2QAG2SAG2VAG2YAG2eAG3HAG3KAG3MAG3PAG3RAG3TAG3VAG3YAG3bAG3nAG4QAG4TAG4VAG4YAG4a -AG4cAG4eAG4hAG4kAG4wAG5ZAG5cAG5eAG5hAG5jAG5lAG5nAG5qAG5tAG52AG6fAG6iAG6kAG6nAG6p -AG6rAG6tAG6wAG6zAG7cAG7fAG7hAG7kAG7mAG7oAG7qAG7tAG7wAG8HAG8wAG8zAG81AG84AG86AG88 -AG8+AG9BAG9EAG9XAG+AAG+DAG+FAG+IAG+KAG+MAG+OAG+RAG+UAG+dAG/GAG/JAG/LAG/OAG/QAG/S -AG/UAG/XAG/aAG/oAHARAHAUAHAWAHAZAHAbAHAdAHAfAHAiAHAlAHAvAHBYAHBbAHBdAHBgAHBiAHBk -AHBmAHBpAHBsAHB+AHCnAHCqAHCsAHCvAHCxAHCzAHC1AHC4AHC7AHDKAHDnAHDpAHDrAHDuAHDxAHDy -AHD0AHENAHEuAHEwAHEyAHE1AHE3AHE6AHE8AHFLAHFoAHFqAHFsAHFvAHFyAHFzAHF1AHGNAHHCAHHE -AHHGAHHIAHHLAHHNAHHPAHHSAHHvAHHxAHHzAHH2AHH5AHH6AHH8AHIUAHJJAHJLAHJOAHJQAHJTAHJW -AHJYAHJbAHJiAHJrAHJtAHJ2AHJ4AHKtAHKvAHKyAHK1AHK4AHK5AHK8AHK/AHLBAHLEAHLNAHLPAHLS -AHLVAHLuAHLxAHLzAHL2AHL5AHL8AHMFAHMHAHMKAHMNAHMqAHMtAHMvAHMyAHM1AHM2AHM5AHNQAHNx -AHNzAHN1AHN4AHN6AHN9AHN/AHOqAHPAAHPYAHP1AHP3AHP5AHP8AHP+AHQBAHQFAHQSAHQUAHQrAHQ3 -AHRIAHRKAHRMAHRPAHRSAHRzAHR1AHR4AHR6AHR8AHR+AHSAAHSUAHShAHSyAHS0AHS2AHS5AHS8AHTd -AHTfAHTiAHTkAHTmAHToAHTqAHTzAHUMAHUdAHUfAHUhAHUkAHUnAHVEAHVGAHVIAHVLAHVOAHVPAHVR -AHVpAHWeAHWgAHWiAHWkAHWnAHWqAHWsAHWvAHW3AHXAAHXCAHXPAHXgAHXiAHXlAHXnAHXqAHX0AHYF -AHYHAHYJAHYMAHYPAHYsAHYuAHYwAHYzAHY2AHY3AHY5AHZRAHaGAHaIAHaLAHaNAHaQAHaTAHaVAHaY -AHahAHajAHasAHauAHbAAHbRAHbTAHbWAHbYAHbbAHblAHb2AHb4AHb6AHb8AHb/AHcLAHccAHceAHcg -AHciAHclAHc0AHdFAHdHAHdKAHdMAHdPAHeAAHeCAHeEAHeHAHeKAHeMAHePAHeSAHeVAHeYAHezAHfC -AHfLAHfNAHfWAHfYAHgTAHgWAHgZAHgbAHgeAHghAHgkAHgnAHgqAHgtAHgwAHgyAHg1AHg4AHg7AHg9 -AHg/AHhBAHhEAHhHAHhJAHhLAHhOAHhQAHhTAHhWAHhZAHhcAHhfAHh8AHh+AHiAAHiDAHiGAHiHAHiJ -AHihAHjWAHjYAHjaAHjcAHjfAHjiAHjkAHjnAHjqAHjzAHj1AHkSAHkUAHkWAHkZAHkcAHkdAHkfAHk3 -AHlsAHluAHlwAHlyAHl1AHl4AHl6AHl9AHmCAHmLAHmNAHmqAHmsAHmuAHmxAHm0AHm1AHm3AHnOAHoD -AHoFAHoHAHoJAHoMAHoPAHoRAHoUAHoWAHofAHohAHo+AHpAAHpCAHpFAHpIAHpJAHpLAHpiAHqXAHqZ -AHqbAHqdAHqgAHqjAHqlAHqoAHqqAHqzAHq1AHrSAHrUAHrWAHrZAHrcAHrdAHrfAHr3AHssAHsuAHsw -AHsyAHs1AHs4AHs6AHs9AHtDAHtMAHtOAHtrAHttAHtvAHtyAHt1AHt2AHt4AHuRAHvGAHvIAHvKAHvM -AHvPAHvSAHvUAHvXAHveAHvnAHvpAHwGAHwIAHwKAHwNAHwQAHwRAHwTAHwsAHxhAHxjAHxlAHxnAHxq -AHxtAHxvAHxyAHx0AHx9AHx/AHycAHyeAHygAHyjAHymAHynAHypAHzCAHz3AHz5AHz7AHz9AH0AAH0D -AH0FAH0IAH0OAH0XAH0ZAH02AH04AH06AH09AH1AAH1BAH1DAH1cAH2BAH2DAH2FAH2HAH2JAH2MAH2N -AH2PAH2sAH2uAH2wAH2zAH22AH23AH25AH3SAH33AH35AH37AH39AH3/AH4CAH4DAH4FAH4iAH4kAH4m -AH4pAH4sAH4tAH4vAH5HAH5sAH5uAH5wAH5yAH50AH53AH54AH56AH6XAH6ZAH6bAH6eAH6hAH6iAH6k -AH69AH7iAH7kAH7mAH7oAH7qAH7tAH7uAH7wAH8NAH8PAH8RAH8UAH8XAH8YAH8aAH8zAH9YAH9aAH9c -AH9eAH9gAH9jAH9kAH9mAH+DAH+FAH+HAH+KAH+NAH+OAH+QAH+pAH/OAH/QAH/SAH/UAH/WAH/ZAH/a -AH/cAH/zAIAAAIARAIATAIAWAIAYAIAbAIAoAIA5AIA7AIA9AIBAAIBDAIBOAIBbAIBdAIBgAIBjAICE -AICGAICJAICLAICNAICPAICRAICYAICgAICxAICzAIC2AIC4AIC7AIDCAIDTAIDVAIDYAIDaAIDdAIDp -AID6AID8AID+AIEBAIEEAIEPAIEgAIEiAIElAIEnAIEqAIEzAIFEAIFGAIFIAIFLAIFOAIFbAIFoAIFq -AIFtAIFwAIGRAIGTAIGWAIGZAIGbAIGdAIGfAIGqAIGsAIG3AIHIAIHKAIHNAIHPAIHSAIHcAIHtAIHv -AIHxAIH0AIH3AIIBAIISAIIUAIIWAIIZAIIcAII9AII/AIJCAIJFAIJHAIJJAIJLAIJdAIJfAIJxAIKC -AIKEAIKHAIKJAIKMAIKXAIKoAIKqAIKsAIKvAIKyAIK6AILLAILNAILPAILSAILVAILhAILyAIL0AIL3 -AIL5AIL8AIMIAIMZAIMbAIMdAIMgAIMjAIM1AINGAINIAINLAINNAINQAINdAINuAINwAINyAIN1AIN4 -AIOZAIObAIOeAIOhAIOjAIOlAIOoAIO1AIO3AIO6AIO9AIPHAIPJAIPTAIPgAIPiAIPlAIPoAIQJAIQL -AIQOAIQRAIQTAIQVAIQYAIQpAIQrAIQuAIQxAIQ0AIQ9AIQ/AIRVAIRmAIRoAIRrAIRtAIRwAIR8AISN -AISPAISRAISUAISXAIS4AIS6AIS9AIS/AITBAITDAITFAIToAIT2AIUHAIUJAIUMAIUPAIURAIUiAIUk -AIUnAIUpAIUsAIVAAIVRAIVTAIVWAIVYAIVbAIVlAIV2AIV4AIV7AIV+AIWBAIWeAIWgAIWjAIWlAIWn -AIWpAIWrAIXEAIX1AIX4AIX6AIX9AIYAAIYCAIYFAIYIAIYLAIYOAIYpAIYvAIY4AIY6AIZDAIZFAIZQ -AIZTAIZWAIZZAIZcAIZfAIZ8AIZ/AIaBAIaEAIaHAIaIAIaLAIakAIbFAIbHAIbJAIbMAIbPAIbSAIbU -AIbnAIb4AIb6AIcDAIcFAIcqAIc1AIdBAIdEAIdHAIdKAIdLAIdOAIdRAIdSAIdVAIdeAIdgAIdtAIdw -AIdzAId2AId5AId8AId/AIebAIe3AIfPAIgDAIgkAIhBAIhaAIh7AIiDAIiLAIiTAIieAIijAIimAIip -AIiuAIivAIi8AIi+AIjAAIjDAIjXAIjgAIjnAIjzAIj8AIkHAIkTAIkwAIkzAIk1AIk4AIk7AIk8AIk/ -AIlXAIl4AIl9AIl/AImBAImEAImGAImJAImLAInIAInlAInoAInqAIntAInwAInxAIn0AIoLAIpAAIpC -AIpEAIpGAIpJAIpMAIpOAIpRAIpZAIpiAIpkAIp7AIqTAIqkAIqmAIqpAIqrAIquAIq2AIrHAIrJAIrM -AIrOAIrRAIrlAIr2AIr4AIr6AIr8AIr/AIsOAIsfAIshAIsjAIsmAIsoAIs5AIs7AIs9AItAAItDAItk -AItmAItpAItsAItuAItwAItyAIuKAIuMAIuSAIujAIulAIunAIupAIusAIu7AIvIAIvKAIvNAIvQAIvt -AIvwAIvyAIv1AIv4AIv5AIv8AIwRAIwTAIwVAIwYAIwbAIwzAIxoAIxqAIxsAIxuAIxxAIxzAIx1AIx4 -AIyJAIyLAIyNAIyQAIyTAIy0AIy2AIy5AIy8AIy+AIzAAIzDAIzPAIzRAIzkAIz1AIz3AIz6AIz8AIz/ -AI0LAI0cAI0eAI0hAI0jAI0mAI00AI1FAI1HAI1JAI1MAI1PAI1gAI1iAI1kAI1nAI1qAI2LAI2NAI2Q -AI2SAI2UAI2WAI2YAI2kAI29AI3OAI3QAI3TAI3VAI3YAI3lAI32AI34AI36AI39AI4AAI4MAI4dAI4f -AI4hAI4kAI4nAI5IAI5KAI5NAI5QAI5SAI5UAI5WAI5kAI5mAI50AI6FAI6HAI6JAI6MAI6PAI6wAI6y -AI61AI63AI65AI67AI69AI7aAI7oAI75AI77AI7+AI8AAI8DAI8VAI8mAI8oAI8rAI8tAI8wAI9FAI9W -AI9YAI9aAI9cAI9eAI9vAI9xAI90AI92AI95AI+IAI+ZAI+bAI+eAI+gAI+jAI+tAI++AI/AAI/DAI/F -AI/IAI/VAI/mAI/oAI/qAI/tAI/wAJARAJATAJAWAJAYAJAaAJAcAJAeAJAtAJA4AJBJAJBLAJBOAJBR -AJBUAJCFAJCIAJCKAJCNAJCQAJCSAJCVAJCYAJCbAJCeAJC5AJDOAJDXAJDZAJDiAJDkAJDpAJDsAJDv -AJEcAJEoAJExAJE9AJFLAJFOAJFRAJFUAJFXAJFZAJFcAJFfAJFiAJFlAJFoAJFxAJFzAJF6AJF9AJGA -AJGDAJG0AJG9AJHGAJHQAJHaAJHkAJHnAJHqAJHtAJHwAJHzAJH1AJH4AJH7AJH+AJIAAJIDAJIGAJIP -AJIRAJIUAJIXAJJIAJJaAJJkAJJxAJJ6AJKFAJKIAJKLAJKOAJKRAJKUAJKXAJKaAJKdAJKgAJKjAJKl -AJKuAJKwAJLHAJLKAJLNAJLQAJLTAJLWAJLZAJLcAJLfAJLiAJLlAJLoAJMEAJMZAJM2AJNQAJN2AJOj -AJO8AJPRAJPbAJPmAJPuAJQAAJQDAJQGAJQPAJQSAJQnAJQ6AJRIAJRSAJRVAJRYAJRbAJRdAJRuAJR7 -AJR+AJSBAJSEAJSGAJSPAJSRAM/EAM/RAM/ZAM/cAM/hAM/kAM/nAM/sAM/vAM/yANAFANAWANAhANA2 -ANBCANBFANBIANBRANBUANBtANBwANBzANB2ANB5ANB8ANB/ANCCANCFANCIANCLANCOANCRANCaANCl -ANCoANCxANC6ANC/ANDJANDSANDVANDeANDnANDqANDzAND8AND/ANEIANERANEUANEdANEmANEpANEy -ANE7ANE+ANFHANFQANFTANFcANFlANFoANFxANF6ANF9ANGGANGPANGSANGbANGkANGnANGwANG5ANG+ -ANHHANHMANHdANHfANHiANHpANHyANH3ANIEANINANIWANIyANJHANJQANJSANJVANJYANJhANJmANJv -ANJ0ANKVANKdANK3ANLKANLhANL2ANMJANMMANMPANMRANMTANMVANMYANMaANMdANMqANMtANMyANM1 -ANM4ANM9ANNAANNDANNYANNaANNcANNfANNhANN/ANOUANOWANOYANObANOdANOxANO+ANPBANPIANPL -ANPOANPRANPYANPbANPeANPhANPtANP6ANQEANQRANQUANQXANQZANQhANQqANQvANQ8ANQ+ANRFANRO -ANRTANRqANR3ANSBANSKANSVANScANSzANTLANTYANTbANTeANTmANTvANT4ANUDANUoANUyANU1ANU4 -ANU7ANU+ANU/ANVCANVFANVOANVmANVzANV8ANWHANWSANW7ANXGANXJANXMANXPANXSANXVANXYANXh -ANXqANYFANYeANYnANYwANY9ANZUANZlANZnANZpANZsANZvANZ2ANaHANaJANaLANaNANaQANafANaw -ANayANa1ANa3ANa6ANbGANbXANbZANbbANbdANbfANbwANbyANb1ANb3ANb6ANcGANcXANcZANcbANce -ANchANcoANc5ANc7ANc9ANdAANdDANdkANdmANdpANdrANdtANdvANdxANeSANegANexANezANe1ANe4 -ANe7ANfCANfLANfOANqqANqtANqvANqyANq0ANq3ANq5ANq7ANq9ANrAANrCANrFANrIANrKANrMANrP -ANrSANrVANrYANrbANreANrhANrjANrmANrpANrsANrvANryANr1ANr3ANr6ANr9ANsAANsDANsGANsJ -ANsMANsPANsSANsVANsYANsbANseANshANskANsnANspANsrANsuANsxANs0ANs3ANs6ANs9ANtAANtD -ANtGANtJANtMANtPANtSANtUANtXANtZANtcANtfANtiANtlANtoANtrANtuANtxANt0ANt3ANt6ANt9 -ANuAANuDANuGANuJANuMANuOANuRANuUANuWANuZANucANueANuhANukANunANuqANutANuvANuyANu0 -ANu2ANu5ANu8ANu/ANvCANvFANvIANvLANvOANvRANvUANvWANvZANvcANvfANvhANvjANvmANvpANvr -ANvuANvxANv0ANv3ANv5ANv8ANv/ANwBANwDANwGANwJANwMANwPANwRANwUANwXANwZANwbANwdANwg -ANwjANwmANwpANwsANwvANwyANw1ANw4ANw6ANw9ANxAANxDANxGANxJANxMANxPANxSANxVANxYANxb -ANxeANxgANxjANxmANxpANxsANxvANxyANx1ANx4ANx7ANx+ANyBANyEANyGANyJANyMANyPANyRANyU -ANyXANyaANydANygANyjANymANypANyrANyuANywANyzANy2ANy5ANy7ANy+ANzBANzEANzGANzJANzL -ANzNANzQANzTANzWANzZANzcANzeANzhANzjANzmANzpANzsANzvANzyANz1ANz4ANz7ANz9AN0AAN0D -AN0GAN0JAN0MAN0PAN0SAN0VAN0XAN0aAN0dAN0gAN0jAN0lAN0nAN0pAN0sAN0vAN0xAN00AN03AN06 -AN09AN1AAN1DAN1GAN1JAN1MAN1PAN1SAN1VAN1YAN1aAN1cAN1fAN1iAN1lAN1oAN1rAN1uAN1xAN10 -AN12AN15AN18AN1/AN2CAN2FAN2IAN2KAN2NAN2QAN2TAN2VAN2YAN2bAN2eAN2hAN2kAN2nAN2qAN2t -AN2vAN2yAN21AN24AN27AN29AN3AAN3DAN3FAN3IAN3LAN3OAN3RAN3UAN3XAN3aAN3dAN3gAN3jAN3m -AN3oAN3rAN3uAN3xAN30AN33AN36AN39AN4AAN4DAN4GAN4JAN4MAN4PAN4SAN4VAN4YAN4aAN4dAN4f -AN4iAN4lAN4oAN4rAN4tAN4wAN4zAN42AN45AN48AN4+AN5BAN5EAN5HAN5KAN5NAN5QAN5SAN5UAN5X -AN5aAN5dAN5gAN5iAN5kAN5nAN5qAN5tAN5wAN5zAN52AN55AN57AN5+AN6BAN6EAN6GAN6JAN6LAN6N -AN6QAN6TAN6WAN6ZAN6bAN6eAN6hAN6kAN6mAN7PAN7dAN7qAN7sAN7uAN7vAN7xAN7yAN70AN72AN74 -AN8BAN8DAN8IAN8RAN8TAN8YAN8bAN8eAN9HAN9RAN9TAN9WAN9ZAN9bAN9dAN9fAN9iAN9lAN92AN94 -AN96AN99AN+AAN+HAN+WAN+fAN+hAN+qAN+sAN+vAN+yAN/BAN/qAN/sAN/vAN/yAN/0AN/2AN/4AN/7 -AN/+AOAnAOApAOArAOAsAOAuAOAvAOAxAOAzAOA1AOA+AOBAAOBFAOBOAOBQAOBbAOBdAOBfAOBiAOBl -AOBoAOBxAOBzAOB2AOCfAOChAOCjAOCkAOCmAOCnAOCpAOCrAOCtAODWAODYAODaAODdAODfAODhAODj -AODmAODpAOEAAOEJAOELAOEkAOEnAOEqAOEtAOEwAOEzAOE1AOE4AOE7AOE+AOFBAOFEAOFGAOFvAOFx -AOFzAOF0AOF2AOF3AOF5AOF7AOF9AOGKAOGrAOGtAOGwAOG1AOG4AOG6AOG8AOG+AOHSAOHaAOHjAOHl -AOIAAOIDAOIGAOIJAOIMAOIPAOISAOIVAOIXAOIaAOIdAOIgAOIjAOImAOJPAOJRAOJTAOJUAOJWAOJX -AOJZAOJbAOJdAOKGAOKIAOKKAOKLAOKNAOKOAOKQAOKSAOKUAOK9AOK/AOLBAOLCAOLEAOLFAOLHAOLJ -AOLLAOL0AOL2AOL4AOL5AOL7AOL8AOL+AOMAAOMCAOMrAOMtAOMvAOMyAOM0AOM2AOM4AOM7AOM+AONH -AONJAONUAONXAONaAONdAONgAONjAOOMAOOOAOOQAOOTAOOVAOOXAOOZAOOcAOOfAOOrAOO0AOO2AOO5 -AOPCAOPFAOahAOakAOamAOapAOarAOauAOaxAOa0AOa2AOa4AOa6AOa9AObAAObCAObEAObGAObJAObM -AObPAObSAObUAObXAObZAObcAObeAObhAObjAObmAObpAObrAObtAObvAObxAOb0AOb2AOb5AOb8AOb+ -AOcBAOcEAOcGAOcIAOcLAOcNAOcPAOcSAOcUAOcWAOcZAOcbAOceAOchAOckAOcnAOcqAOctAOcvAOcy -AOc1AOc4AOc7AOc9AOdAAOdCAOdFAOdIAOdLAOdOAOdQAOdSAOdVAOdYAOdaAOdcAOdeAOdgAOdjAOdl -AOdoAOdqAOdtAOdvAOdxAOdzAOd1AOd3AOd6AOd8AOd/AOeCAOeEAOeGAOeIAOeKAOeMAOeOAOeRAOeU -AOeXAOeZAOecAOeeAOehAOekAOenAOeqAOesAOeuAOexAOe0AOe2AOe5AOe7AOe+AOfBAOfDAOfFAOfI -AOfKAOfNAOfPAOfSAOfVAOfXAOfZAOfcAOffAOfiAOflAOfnAOfpAOfsAOfuAOfwAOfyAOf1AOf4AOf6 -AOf8AOf/AOgCAOgFAOgIAOgLAOgNAOgPAOgSAOgVAOgYAOgbAOgeAOghAOgkAOgnAOgqAOgtAOgvAOgx -AOg0AOg2AOg5AOg8AOg/AOhCAOhEAOhHAOhKAOhNAOhQAOhTAOhVAOhYAOhbAOheAOhgAOhjAOhlAOho -AOhrAOhuAOhxAOh0AOh3AOh5AOh7AOh9AOiAAOiCAOiEAOiHAOiKAOiMAOiPAOiRAOiUAOiWAOiYAOib -AOidAOigAOijAOimAOioAOirAOitAOivAOiyAOi1AOi3AOi6AOi8AOi/AOjBAOjDAOjFAOjIAOjLAOjO -AOjRAOjUAOjXAOjaAOjdAOjgAOjiAOjlAOjoAOjqAOjsAOjuAOjwAOjyAOj0AOj3AOj6AOj8AOj/AOkC -AOkFAOkHAOkKAOkNAOkQAOkTAOkWAOkZAOkbAOkdAOkgAOkiAOkkAOknAOkqAOksAOkuAOkxAOkzAOk1 -AOk3AOk5AOk8AOk/AOlCAOlFAOlHAOlJAOlLAOlNAOlPAOlSAOlUAOlXAOlaAOldAOlgAOljAOllAOln -AOlqAOltAOlvAOlxAOl0AOl2AOl4AOl7AOl+AOmAAOmCAOmFAOmIAOmLAOmOAOmQAOmSAOmVAOmXAOma -AOmdAOmgAOmiAOmlAOmnAOmpAOmsAOmuAOmwAOmyAOm1AOm4AOm7AOm+AOnBAOnDAOnGAOnIAOnLAOnO -AOnRAOnTAOnVAOnXAOnZAOnbAOneAOngAOniAOnlAOnoAOnrAOnuAOnxAOn0AOn2AOn4AOn7AOn9AOoA -AOoCAOoEAOoHAOoJAOoMAOoPAOoSAOoVAOoXAOoaAOocAOoeAOogAOojAOolAOooAOoqAOosAOouAOox -AOozAOo1AOo3AOo6AOo9AOpAAOpCAOpLAOpOAO0sAO0vAO0xAO0zAO02AO04AO07AO09AO0/AO1CAO1E -AO1HAO1KAO1MAO1OAO1RAO1UAO1XAO1aAO1dAO1gAO1jAO1mAO1pAO1sAO1vAO1yAO11AO14AO16AO19 -AO1/AO2CAO2FAO2IAO2LAO2OAO2RAO2UAO2XAO2aAO2dAO2gAO2jAO2mAO2pAO2rAO2tAO2wAO2zAO22 -AO25AO28AO2/AO3CAO3FAO3IAO3LAO3OAO3RAO3UAO3XAO3aAO3cAO3eAO3hAO3kAO3nAO3qAO3tAO3w -AO3zAO32AO35AO38AO3/AO4CAO4FAO4IAO4LAO4NAO4QAO4TAO4WAO4YAO4bAO4eAO4gAO4jAO4mAO4p -AO4rAO4uAO4xAO40AO42AO45AO48AO4+AO5BAO5EAO5HAO5KAO5NAO5QAO5TAO5WAO5ZAO5cAO5eAO5g -AO5jAO5lAO5oAO5qAO5tAO5wAO5zAO52AO55AO57AO5+AO6BAO6DAO6FAO6HAO6KAO6NAO6QAO6SAO6U -AO6XAO6aAO6dAO6fAO6hAO6kAO6nAO6qAO6tAO6wAO6zAO62AO65AO67AO6+AO7BAO7EAO7HAO7KAO7N -AO7QAO7TAO7WAO7ZAO7cAO7fAO7iAO7kAO7nAO7qAO7tAO7wAO7zAO72AO75AO78AO7/AO8CAO8FAO8I -AO8KAO8NAO8QAO8TAO8VAO8YAO8bAO8eAO8hAO8kAO8nAO8qAO8sAO8vAO8yAO80AO83AO86AO89AO8/ -AO9CAO9EAO9HAO9KAO9NAO9PAO9RAO9UAO9XAO9aAO9dAO9gAO9iAO9lAO9nAO9qAO9tAO9wAO9zAO92 -AO95AO98AO9/AO+BAO+EAO+HAO+KAO+MAO+PAO+RAO+UAO+XAO+ZAO+bAO+eAO+gAO+jAO+mAO+pAO+s -AO+vAO+yAO+1AO+4AO+7AO++AO/BAO/EAO/HAO/KAO/NAO/QAO/TAO/WAO/ZAO/cAO/eAO/gAO/jAO/m -AO/pAO/sAO/vAO/yAO/1AO/4AO/7AO/+APAAAPADAPAGAPAJAPAMAPAOAPARAPAUAPAXAPAaAPAdAPAf -APAiAPAlAPAoAPArAPAuAPAxAPAzAPA2APA5APA8APA/APBBAPBDAPBGAPBJAPBMAPBPAPBSAPBVAPBY -APBbAPBeAPBgAPBjAPBmAPBpAPBsAPBvAPByAPB1APB4APB7APB+APCBAPCEAPCHAPCKAPCNAPCPAPCS -APCVAPCYAPCbAPCeAPCgAPCjAPCmAPCpAPCsAPCuAPCxAPC0APC3APC6APC9APC/APDCAPDFAPDIAPDL -APDOAPDRAPDUAPDWAPDYAPDbAPDeAPDhAPDkAPDmAPDoAPDrAPDuAPDxAPD0APD3APD6APD8APD/APEC -APEFAPEIAPEKAPENAPEPAPERAPEUAPEXAPEaAPEcAPEfAPEhAPEkAPEnAPEqAPEzAPE2APQUAPQXAPQa -APQdAPQgAPQjAPQmAPQpAPQsAPQvAPQyAPQ1APQ4APQ7APQ+APRBAPREAPRHAPRKAPRNAPRQAPRTAPRW -APRZAPRcAPRfAPRiAPRlAPRoAPRrAPRuAPRxAPR0APR3APR6APR9APSAAPSDAPSGAPSJAPSMAPSPAPSS -APSVAPSYAPSbAPSeAPShAPSkAPSnAPSqAPStAPSwAPSzAPS2APS5APS8APS/APTCAPTFAPTIAPTLAPTO -APTQAPTTAPTWAPTZAPTcAPTfAPTiAPTlAPToAPTrAPTuAPTxAPT0APT3APT6APT9APUAAPUDAPUGAPUJ -APUMAPUPAPUSAPUVAPUYAPUbAPUeAPUhAPUkAPUnAPUqAPUtAPUvAPUyAPU1APU4APU7APU+APVBAPVE -APVHAPVKAPVNAPVQAPVTAPVWAPVZAPVcAPVfAPViAPVlAPVoAPVrAPVuAPVxAPV0APV3APV6APV9APWA -APWDAPWGAPWJAPWMAPWPAPWSAPWVAPWYAPWbAPWeAPWhAPWkAPWnAPWqAPWtAPWwAPWzAPW2APW5APW8 -APW/APXCAPXFAPXIAPXLAPXOAPXRAPXUAPXXAPXaAPXdAPXgAPXjAPXmAPXpAPXsAPXvAPXyAPX1APX4 -APX7APX+APYBAPYEAPYHAPYKAPYNAPYQAPYTAPYWAPYZAPYcAPYfAPYiAPYlAPYoAPYrAPYuAPYxAPY0 -APY3APY6APY9APZAAPZDAPZGAPZJAPZMAPZPAPZSAPZVAPZYAPZbAPZeAPZhAPZkAPZnAPZqAPZtAPZw -APZzAPZ2APZ5APZ8APZ/APaCAPaFAPaIAPaLAPaOAPaRAPaUAPaXAPaaAPadAPagAPajAPamAPapAPas -APavAPayAPa1APa4APa7APa+APbBAPbEAPbHAPbKAPbNAPbQAPbTAPbWAPbZAPbcAPbfAPbiAPblAPbo -APbrAPbuAPbxAPb0APb2APb5APb8APb/APcCAPcFAPcIAPcLAPcOAPcRAPcUAPcXAPcaAPcdAPcgAPcj -APcmAPcpAPcsAPcvAPcyAPc1APc4APc7APc+APdBAPdEAPdHAPdKAPdNAPdQAPdTAPdWAPdZAPdcAPdf -APdiAPdlAPdoAPdrAPduAPdxAPd0APd3APd6APd9APeAAPeDAPeGAPeJAPeMAPePAPeSAPeVAPeYAPeb -APeeAPehAPekAPenAPeqAPetAPewAPezAPe2APe5APe8APe/APfCAPfFAPfIAPfLAPfOAPfRAPfUAPfX -APfaAPfdAPfgAPfjAPfmAPfpAPfsAPfvAPfyAPf1APf4APf7APf+APgBAPgEAPgHAPgKAPgMAPgPAPgS -APgVAPgYAPgbAPgeAPghAPgkAPgnAPgqAPgtAPgwAPgzAPg2APg5APg8APg/APhCAPhFAPhIAPhLAPhO -APhRAPhUAPhXAPhsAPiOAPijAPjBAPjQAPjeAPj0APkJAPkUAPkhAPkvAPlFAPlZAPlsAPmMAPmvAPnE -APndAPoCAPorAPo+APqNAPqqAPq9APrXAPrzAPsKAPsiAPs2APtUAPttAPuCAPueAPuyAPvLAPvYAPvx -APwGAPwcAPw1APw+APxKAPxUAPxrAPyLAPygAPy2APzQAPznAP0yAP1SAP1gAP1zAP2OAP2qAP3CAP3R -AP3dAP3+AP4YAP4rAP5FAP5XAP5xAP6DAP6aAP62AP7KAP7gAP70AP8QAP8dAP8+AP9LAP9kAP+GAP+b -AP+zAP/TAP/qAQAGAQAiAQBEAQBcAQB9AQCJAQCsAQDDAQDhAQD7AQEbAQFCAQFiAQF/AQGRAQGoAQHD -AQHYAQHrAQIkAQI5AQJVAQJrAQKMAQKkAQKwAQK8AQLPAQLzAQMIAQMfAQMsAQM5AQNcAQN2AQONAQOv -AQPGAQPTAQPvAQQGAQQbAQQyAQRKAQRuAQSFAQSRAQSyAQTTAQTqAQT+AQUSAQUpAQVCAQVOAQVwAQWR -AQWnAQW8AQXRAQXpAQYFAQYPAQYlAQZGAQZeAQZ6AQaIAQafAQbEAQbfAQbxAQcLAQceAQcyAQdWAQdu -AQePAQexAQfRAQfzAQgHAQghAQhBAQhXAQhtAQiCAQiXAQi7AQjgAQj5AQkNAQkpAQlKAQldAQlvAQmF -AQmoAQnLAQnlAQn8AQoQAQooAQpHAQpnAQp2AQqFAQqSAQqeAQq1AQrBAQrYAQr5AQsSAQseAQszAQtG -AQtpAQt7AQuYAQu8AQvYAQv1AQwLAQwiAQxFAQxfAQx/AQybAQyyAQy/AQzWAQztAQ0CAQ0cAQ0lAQ08 -AQ1TAQ1xAQ2IAQ2cAQ2pAQ3BAQ3jAQ4MAQ4lAQ44AQ5VAQ5xAQ6HAQ6eAQ68AQ75AQ8SAQ8gAQ8pAQ8/ -AQ9hAQ94AQ+RAQ+jAQ+6AQ/RAQ/wARAIARAnARBMARBnARB7ARCSARCcARC1ARDJARDeARDwARENAREj -AREyARE+ARFaARFmARF9ARGRARGqARHBARHZARHyARIMARIWARI7ARJXARKGARKTARKzARLeARLyARMH -ARMjARM4ARNNARNiARNvAROCAROaAROxARPFARPbARP4ARQRARQyARRLARRaARRyARSAARSaARS/ARTO -ARTiARULARUhARU2ARVCARVUARViARV6ARWJARWiARW0ARXMARX1ARYMARYfARY+ARZWARZvARaDARaY -ARatARbQARblARb+ARcNARciARdBARdXARd6AReSARe0ARfJARfeARgDARgiARhCARhRARh+ARifARjD -ARjZARjyARkNARkbARktARlAARlXARlrARmOARmcARmrARnDARnPARnoARoHARocARpBARpTARplARp9 -ARqXARqgARqjARqkARqtARqwARqxARq6ARq9AR6DAR6GAR6IAR6KAR6NAR6QAR6TAR6WAR6YAR6bAR6e -AR6hAR6jAR6mAR6pAR6sAR6vAR6yAR60AR63AR66AR69AR7AAR7DAR7GAR7JAR7MAR7PAR7RAR7UAR7X -AR7aAR7dAR7gAR7jAR7mAR7oAR7rAR7tAR7wAR7zAR72AR75AR78AR7/AR8CAR8EAR8HAR8KAR8MAR8P -AR8SAR8VAR8XAR8aAR8dAR8gAR8jAR8mAR8pAR8sAR8vAR8yAR80AR83AR85AR88AR8/AR9CAR9FAR9I -AR9KAR9MAR9PAR9SAR9UAR9XAR9ZAR9cAR9fAR9hAR9kAR9nAR9qAR9tAR9wAR9zAR92AR95AR98AR9/ -AR+CAR+EAR+HAR+KAR+NAR+QAR+TAR+WAR+ZAR+cAR+fAR+iAR+lAR+oAR+rAR+uAR+xAR+0AR+3AR+6 -AR+9AR/AAR/DAR/GAR/JAR/LAR/NAR/QAR/TAR/WAR/YAR/aAR/cAR/fAR/iAR/lAR/oAR/qAR/tAR/w -AR/zAR/2AR/4AR/7AR/+ASABASAEASAHASAKASANASAQASASASAUASAXASAaASAcASAfASAiASAlASAo -ASArASAuASAxASA0ASA3ASA6ASA9ASBAASBCASBFASBHASBKASBNASBQASBSASBVASBYASBbASBeASBh -ASBkASBnASBqASBtASBwASBzASB2ASB5ASB8ASB+ASCBASCDASCGASCJASCMASCOASCRASCUASCXASCa -ASCdASCgASCjASCmASCpASCsASCvASCyASC1ASC4ASC7ASC+ASDBASDEASDHASDKASDNASDQASDTASDW -ASDZASDcASDfASDhASDjASDmASDpASDsASDuASDwASDzASD2ASD4ASD7ASD+ASEBASEDASEFASEIASEL -ASENASEQASETASEVASEXASEaASEcASEeASEhASEjASElASEnASEqASEtASEwASEyASE1ASE4ASE7ASE+ -ASFBASFEASFHASFKASFNASFQASFSASFVASFYASFbASFdASFgASFiASFlASFoASFrASFuASFxASF0ASF3 -ASF6ASF9ASF/ASGCASGFASGIASGLASGOASGRASGTASGWASGZASGcASGfASGiASGlASGoASGqASGtASGv -ASGyASG1ASG3ASG5ASG8ASG/ASHCASHEASHGASHJASHMASHOASHRASHUASHXASHaASHdASHgASHiASHl -ASHoASHqASHtASHwASHzASH2ASH5ASH7ASH+ASIAASICASIFASIIASILASIOASIRASITASIVASIYASIb -ASIeASIhASIjASImASIpASIsASIvASIyASI0ASI2ASI4ASI6ASI9ASJAASJDASJGASJIASJLASJOASJQ -ASJTASJWASJZASJcASJfASJhASJkASJnASJqASJtASJvASJyASJ1ASJ4ASJ7ASJ9ASKAASKDASKGASKJ -ASKLASKOASKRASKUASKXASKaASKdASKgASKiASKlASKnASKqASKtASKvASKyASK1ASK4ASK7ASK+ASLA -ASLDASLFASLIASLLASLOASLRASLUASLXASLaASLdASLgASLjASLmASLoASLrASLuASLwASLzASL2ASL5 -ASL8ASL/ASMCASMFASMIASMLASMNASMQASMTASMWASMYASMaASMdASMgASMjASMmASMpASMsASMvASMy -ASM1ASM4ASM7ASM9ASNAASNDASNGASNJASNMASNPASNRASNUASNXASNaASNdASNgASNiASNlASNoASNr -ASNtASNvASNyASN1ASN4ASN7ASN+ASOBASODASOGASOIASOLASOOASORASOUASOWASOZASOcASOfASOi -ASOlASOoASOqASOsASOvASOyASO1ASO4ASO7ASO+ASPAASPJASPMASeSASeVASeYASebASeeASehASek -ASenASeqASetASewASezASe2ASe5ASe8ASe/ASfCASfFASfIASfLASfOASfRASfUASfXASfaASfdASfg -ASfjASfmASfpASfsASfvASfyASf1ASf4ASf7ASf+ASgBASgEASgHASgKASgNASgQASgTASgWASgZASgc -ASgfASgiASglASgoASgrASguASgxASg0ASg3ASg6ASg9AShAAShDAShGAShJAShMAShPAShSAShVAShY -AShbASheAShhAShkAShnAShqAShtAShwAShzASh2ASh5ASh8ASh/ASiCASiFASiIASiLASiOASiRASiU -ASiXASiaASidASigASijASimASipASisASivASiyASi1ASi4ASi7ASi+ASjBASjEASjHASjKASjNASjQ -ASjTASjWASjZASjcASjfASjiASjlASjoASjrASjuASjxASj0ASj3ASj6ASj9ASkAASkDASkGASkJASkM -ASkPASkSASkVASkYASkbASkeASkhASkkASknASkqASktASkwASkzASk2ASk5ASk8ASk/ASlCASlFASlI -ASlLASlOASlRASlUASlXASlaASldASlgASljASlmASlpASlsASlvASlyASl1ASl4ASl7ASl+ASmBASmE -ASmHASmKASmNASmQASmTASmWASmZASmcASmfASmiASmlASmoASmrASmuASmxASm0ASm3ASm6ASm9ASnA -ASnDASnGASnJASnMASnPASnSASnVASnYASnbASneASnhASnkASnnASnqASntASnwASnzASn2ASn5ASn8 -ASn/ASoCASoFASoIASoLASoOASoRASoUASoXASoaASodASogASojASomASopASosASovASoyASo1ASo4 -ASo7ASo+ASpBASpEASpHASpKASpNASpQASpTASpWASpZASpcASpfASpiASplASpoASprASpuASpxASp0 -ASp3ASp6ASp9ASqAASqDASqGASqJASqMASqPASqSASqVASqYASqbASqeASqhASqkASqnASqqASqtASqw -ASqzASq2ASq5ASq8ASq/ASrCASrFASrIASrLASrOASrRASrUASrXASraASrdASrgASrjASrmASrpASrs -ASrvASryASr1ASr4ASr7ASr+ASsBASsEASsHASsKASsNASsQASsTASsWASsZASscASsfASsiASslASso -ASsrASsuASsxASs0ASs3ASs6ASs9AStAAStDAStGAStJAStMAStPAStSAStVAStYAStbASteASthAStk -AStnAStqASttAStwAStzASt2ASt5ASt8ASt/ASuCASuFASuIASuLASuOASuRASuUASuXASuaASudASug -ASujASumASupASusASuvASuyASu1ASu4ASu7ASu+ASvBASvEASvHASvKASvNASvQASvTASvWASvZASvc -ASvfASviASvlASvoASvrASvuASvxASv0ASv3ASv6ASv9ASwAASwDASwGASwJASwMASwPASwSASwVASwY -ASwbASweASwhASwkASwnASwqASwtASwwASwzASw2ASw5ASw8ASw/ASxCASxFASxIASxLASxOASxRASxU -ASxXASxaASxdASxgASxjASxmASxpASxsASxvASxyASx1ASx4ASx7ASx+ASyBASyEASyHASyKASyNASyQ -ASyTASyWASyZASycASyfASyiASylASyoASyrASyuASyxASy0ASy3ASy6ASy9ASzAASzDASzGASzJASzM -ASzPASzSASzVASzYASzbASzeASzhASzkASznASzqASztASzwASzzASz2ASz5ASz8ASz/AS0CAS0FAS0I -AS0LAS0OAS0RAS0UAS0XAS0aAS0dAS0gAS0jAS0mAS0pAS0sAS0vAS0yAS01AS04AS09AS1CAS1FAS1I -AS1LAS1OAS1TAS1YAS1bAS1eAS1hAS1mAS1pAS1sAS1vAS1yAS13AS16AS19AS2AAS2DAS2IAS2LAS2O -AS2RAS2UAS2XAS2cAS2fAS2kAS2nAS2qAS2tAS2yAS21AS26AS29AS3AAS3DAS3GAS3JAS3OAS3RAS3U -AS3XAS3aAS3dAS3gAS3lAS3oAS3rAS3uAS3xAS32AS37AS3+AS4BAS4EAS4HAS4KAS4NAS4QAS4TAS4W -AS4ZAS4eAS4hAS4kAS4nAS4sAS4vAS44AS49AS5AAS5DAS5IAS5LAS5OAS5RAS5TAS5YAS5bAS5gAS5l -AS5oAS5tAS5wAS5zAS52AS55AS58AS5/AS6CAS6FAS6KAS6NAS6PAS6SAS6XAS6cAS6fAS6iAS6lAS6q -AS6vAS6xAS62AS65AS68AS7BAS7EAS7HAS7KAS7NAS7SAS7VAS7YAS7bAS7eAS7jAS7mAS7pAS7uAS7x -AS72AS75AS78AS8BAS8GAS8JAS8OAS8QAS8TAS8WAS8YAS8dAS8gAS8jAS8oAS8rAS8uAS8xAS82AS87 -AS8+AS9DAS9GAS9JAS9MAS9RAS9UAS9ZAS9eAS9hAS9jAS9mAS9pAS9sAS9vAS9yAS93AS98AS9/AS+E -AS+HAS+KAS+NAS+QAS+TAS+WAS+bAS+eAS+hAS+kAS+pAS+uAS+xAS+2AS+7AS++AS/BAS/EAS/HAS/K -AS/NAS/QAS/TAS/WAS/bAS/eAS/hAS/mAS/pAS/sAS/vAS/yAS/3AS/6AS/9ATAAATADATAIATALATAO -ATARATAUATAZATAcATAhATAmATArATAuATAzATA2ATA5ATA8ATA/ATBCATBFATBKATBNATBQATBTATBW -ATBbATBgATBlATBqATBvATByATB1ATB4ATB7ATCAATCDATCGATCJATCMATCPATCUATCXATCcATChATCk -ATCnATCsATCxATC0ATC3ATC8ATC/ATDCATDHATDMATDPATDSATDVATDYATDaATDfATDkATDmATDpATDs -ATDvATDyATD1ATD6ATD9ATECATEFATEIATENATEQATESATEVATEYATEbATEeATEhATEkATEnATEqATEt -ATEwATEzATE2ATE5ATE8ATE/ATFCATFFATFIATFNATFQATFTATFVATFYATFbATFgATFjATFmATFpATFs -ATFvATF0ATF3ATF6ATF/ATGCATGHATGKATGNATGSATGVATGYATGbATGgATGlATGoATGrATGwATGzATG2 -ATG7ATG+ATHBATHEATHHATHKATHNATHSATHVATHYATHbATHeATHjATHmATHpATHsATHvATH0ATH3ATH6 -ATH9ATICATIFATIKATINATIQATITATIWATIYATIbATIgATIjATIoATIrATIuATIzATI4ATI7ATI+ATJB -ATJEATJHATJKATJNATJQATJTATJWATJZATJcATJfATJiATJlATJnATJqATJtATJwATJzATJ2ATJ5ATJ8 -ATKBATKEATKHATKKATKNATKQATKTATKWATKZATKcATKhATKkATKnATKqATKvATKyATK3ATK6ATK/ATLE -ATLHATLKATLMATLPATLSATLVATLYATLbATLgATLlATLoATLtATLwATL1ATL6ATL9ATMAATMDATMIATMN -ATMPATMSATMVATMYATMbATMeATMhATMkATMnATMqATMsATMvATMyATM3ATM8ATM/ATNCATNFATNIATNN -ATNQATNTATNWATNZATNcATNhATNkATNpATNsATNvATN0ATN3ATN8ATN/ATOCATOFATOKATOPATOSATOV -ATOYATOdATOgATOjATOmATOpATOsATOvATOyATO1ATO4ATO6ATO/ATPEATPHATPQATPSATPTATPcATPf -ATPgATPpATPsATPtATP2ATP7AAAAAAAAAwIAAAAAAAAgvAAAAAAAAAAAAAAAAAABNAo - - - diff --git a/macosx/English.lproj/Main.nib/keyedobjects.nib b/macosx/English.lproj/Main.nib/keyedobjects.nib deleted file mode 100644 index 5ff36883..00000000 Binary files a/macosx/English.lproj/Main.nib/keyedobjects.nib and /dev/null differ diff --git a/macosx/Info.plist b/macosx/Info.plist deleted file mode 100644 index f9e01e29..00000000 --- a/macosx/Info.plist +++ /dev/null @@ -1,28 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - - CFBundleIdentifier - com.yourcompany.VBA-M - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - NSMainNibFile - Main - NSPrincipalClass - NSApplication - - diff --git a/macosx/VBA-M.xcodeproj/project.pbxproj b/macosx/VBA-M.xcodeproj/project.pbxproj deleted file mode 100644 index f9176e78..00000000 --- a/macosx/VBA-M.xcodeproj/project.pbxproj +++ /dev/null @@ -1,917 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 44; - objects = { - -/* Begin PBXBuildFile section */ - 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; - 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; - D2068FB30CEB7E0D00B908B0 /* Cheats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FA20CEB7E0D00B908B0 /* Cheats.cpp */; }; - D2068FB40CEB7E0D00B908B0 /* EEprom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FA30CEB7E0D00B908B0 /* EEprom.cpp */; }; - D2068FB50CEB7E0D00B908B0 /* Flash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FA40CEB7E0D00B908B0 /* Flash.cpp */; }; - D2068FB60CEB7E0D00B908B0 /* GBA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FA50CEB7E0D00B908B0 /* GBA.cpp */; }; - D2068FB70CEB7E0D00B908B0 /* Globals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FA60CEB7E0D00B908B0 /* Globals.cpp */; }; - D2068FB80CEB7E0D00B908B0 /* Mode0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FA70CEB7E0D00B908B0 /* Mode0.cpp */; }; - D2068FB90CEB7E0D00B908B0 /* Mode1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FA80CEB7E0D00B908B0 /* Mode1.cpp */; }; - D2068FBA0CEB7E0D00B908B0 /* Mode2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FA90CEB7E0D00B908B0 /* Mode2.cpp */; }; - D2068FBB0CEB7E0D00B908B0 /* Mode3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FAA0CEB7E0D00B908B0 /* Mode3.cpp */; }; - D2068FBC0CEB7E0D00B908B0 /* Mode4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FAB0CEB7E0D00B908B0 /* Mode4.cpp */; }; - D2068FBD0CEB7E0D00B908B0 /* Mode5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FAC0CEB7E0D00B908B0 /* Mode5.cpp */; }; - D2068FBE0CEB7E0D00B908B0 /* RTC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FAD0CEB7E0D00B908B0 /* RTC.cpp */; }; - D2068FBF0CEB7E0D00B908B0 /* Sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FAE0CEB7E0D00B908B0 /* Sound.cpp */; }; - D2068FC00CEB7E0D00B908B0 /* Sram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FAF0CEB7E0D00B908B0 /* Sram.cpp */; }; - D2068FC10CEB7E0D00B908B0 /* Text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FB00CEB7E0D00B908B0 /* Text.cpp */; }; - D2068FC20CEB7E0D00B908B0 /* unzip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FB10CEB7E0D00B908B0 /* unzip.cpp */; }; - D2068FC30CEB7E0D00B908B0 /* Util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FB20CEB7E0D00B908B0 /* Util.cpp */; }; - D2068FCD0CEB7E8400B908B0 /* GB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FC50CEB7E8400B908B0 /* GB.cpp */; }; - D2068FCE0CEB7E8400B908B0 /* gbCheats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FC60CEB7E8400B908B0 /* gbCheats.cpp */; }; - D2068FCF0CEB7E8400B908B0 /* gbGfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FC70CEB7E8400B908B0 /* gbGfx.cpp */; }; - D2068FD00CEB7E8400B908B0 /* gbGlobals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FC80CEB7E8400B908B0 /* gbGlobals.cpp */; }; - D2068FD10CEB7E8400B908B0 /* gbMemory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FC90CEB7E8400B908B0 /* gbMemory.cpp */; }; - D2068FD20CEB7E8400B908B0 /* gbPrinter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FCA0CEB7E8400B908B0 /* gbPrinter.cpp */; }; - D2068FD30CEB7E8400B908B0 /* gbSGB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FCB0CEB7E8400B908B0 /* gbSGB.cpp */; }; - D2068FD40CEB7E8400B908B0 /* gbSound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FCC0CEB7E8400B908B0 /* gbSound.cpp */; }; - D2068FE20CEB7FEB00B908B0 /* 2xSaI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FD60CEB7FEB00B908B0 /* 2xSaI.cpp */; }; - D2068FE30CEB7FEB00B908B0 /* admame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FD70CEB7FEB00B908B0 /* admame.cpp */; }; - D2068FE40CEB7FEB00B908B0 /* bilinear.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FD80CEB7FEB00B908B0 /* bilinear.cpp */; }; - D2068FE50CEB7FEB00B908B0 /* hq2x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FD90CEB7FEB00B908B0 /* hq2x.cpp */; }; - D2068FE70CEB7FEB00B908B0 /* interframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FDB0CEB7FEB00B908B0 /* interframe.cpp */; }; - D2068FEA0CEB7FEB00B908B0 /* motionblur.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FDE0CEB7FEB00B908B0 /* motionblur.cpp */; }; - D2068FEB0CEB7FEB00B908B0 /* pixel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FDF0CEB7FEB00B908B0 /* pixel.cpp */; }; - D2068FEC0CEB7FEB00B908B0 /* scanline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FE00CEB7FEB00B908B0 /* scanline.cpp */; }; - D2068FED0CEB7FEB00B908B0 /* simpleFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D2068FE10CEB7FEB00B908B0 /* simpleFilter.cpp */; }; - D2068FF00CEB809800B908B0 /* Main.nib in Resources */ = {isa = PBXBuildFile; fileRef = D2068FEE0CEB809800B908B0 /* Main.nib */; }; - D2068FF80CEB82FC00B908B0 /* KeyConfig.mm in Sources */ = {isa = PBXBuildFile; fileRef = D2068FF20CEB82FC00B908B0 /* KeyConfig.mm */; }; - D2068FF90CEB82FC00B908B0 /* MainClass.mm in Sources */ = {isa = PBXBuildFile; fileRef = D2068FF40CEB82FC00B908B0 /* MainClass.mm */; }; - D2068FFA0CEB82FC00B908B0 /* openfile.mm in Sources */ = {isa = PBXBuildFile; fileRef = D2068FF60CEB82FC00B908B0 /* openfile.mm */; }; - D2068FFB0CEB82FC00B908B0 /* SDL.mm in Sources */ = {isa = PBXBuildFile; fileRef = D2068FF70CEB82FC00B908B0 /* SDL.mm */; }; - D20690000CEB832100B908B0 /* cart.icns in Resources */ = {isa = PBXBuildFile; fileRef = D2068FFD0CEB832100B908B0 /* cart.icns */; }; - D20690010CEB832100B908B0 /* savestate.icns in Resources */ = {isa = PBXBuildFile; fileRef = D2068FFE0CEB832100B908B0 /* savestate.icns */; }; - D20690020CEB832100B908B0 /* system.icns in Resources */ = {isa = PBXBuildFile; fileRef = D2068FFF0CEB832100B908B0 /* system.icns */; }; - D20690B90CEB91B700B908B0 /* agbprint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D20690B00CEB91B700B908B0 /* agbprint.cpp */; }; - D20690BA0CEB91B700B908B0 /* armdis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D20690B10CEB91B700B908B0 /* armdis.cpp */; }; - D20690BB0CEB91B700B908B0 /* bios.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D20690B20CEB91B700B908B0 /* bios.cpp */; }; - D20690BC0CEB91B700B908B0 /* elf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D20690B30CEB91B700B908B0 /* elf.cpp */; }; - D20690BD0CEB91B700B908B0 /* expr-lex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D20690B40CEB91B700B908B0 /* expr-lex.cpp */; }; - D20690BE0CEB91B700B908B0 /* expr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D20690B50CEB91B700B908B0 /* expr.cpp */; }; - D20690BF0CEB91B700B908B0 /* exprNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D20690B60CEB91B700B908B0 /* exprNode.cpp */; }; - D20690C00CEB91B700B908B0 /* memgzio.c in Sources */ = {isa = PBXBuildFile; fileRef = D20690B70CEB91B700B908B0 /* memgzio.c */; }; - D20690C10CEB91B700B908B0 /* remote.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D20690B80CEB91B700B908B0 /* remote.cpp */; }; - D20690D40CEB922D00B908B0 /* Gfx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D20690D30CEB922D00B908B0 /* Gfx.cpp */; }; - D20690F20CEB954800B908B0 /* snd_interp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D20690F10CEB954800B908B0 /* snd_interp.cpp */; }; - D20690F80CEB960E00B908B0 /* filterkit.c in Sources */ = {isa = PBXBuildFile; fileRef = D20690F50CEB960E00B908B0 /* filterkit.c */; }; - D20690F90CEB960E00B908B0 /* resample.c in Sources */ = {isa = PBXBuildFile; fileRef = D20690F60CEB960E00B908B0 /* resample.c */; }; - D20690FA0CEB960E00B908B0 /* resamplesubs.c in Sources */ = {isa = PBXBuildFile; fileRef = D20690F70CEB960E00B908B0 /* resamplesubs.c */; }; - D206911D0CEB981400B908B0 /* debugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D206911C0CEB981400B908B0 /* debugger.cpp */; }; - D2B164FA0CF1EA3B00213737 /* libpng.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = D2B164F90CF1EA3100213737 /* libpng.framework */; }; - D2B165430CF1EB6200213737 /* SDL.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = D2B165360CF1EB5A00213737 /* SDL.framework */; }; - D2B165740CF1EEA600213737 /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2B165360CF1EB5A00213737 /* SDL.framework */; }; - D2B165750CF1EEAA00213737 /* libpng.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2B164F90CF1EA3100213737 /* libpng.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - D2B164F80CF1EA3100213737 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D2B164F40CF1EA3100213737 /* libpng.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 8D07F2C80486CC7A007CD1D0 /* libpng.framework */; - remoteInfo = libpng; - }; - D2B164FB0CF1EA4A00213737 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D2B164F40CF1EA3100213737 /* libpng.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 8D07F2BC0486CC7A007CD1D0 /* libpng */; - remoteInfo = libpng; - }; - D2B165350CF1EB5A00213737 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D2B165260CF1EB5A00213737 /* SDL.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = BECDF66C0761BA81005FE872 /* SDL.framework */; - remoteInfo = Framework; - }; - D2B165370CF1EB5A00213737 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D2B165260CF1EB5A00213737 /* SDL.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = BECDF6B30761BA81005FE872 /* libSDL.a */; - remoteInfo = "Static Library"; - }; - D2B165390CF1EB5A00213737 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D2B165260CF1EB5A00213737 /* SDL.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = BECDF6BA0761BA81005FE872 /* libSDLmain.a */; - remoteInfo = "Main Library"; - }; - D2B1653B0CF1EB5A00213737 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D2B165260CF1EB5A00213737 /* SDL.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = BECDF6BE0761BA81005FE872 /* Standard DMG */; - remoteInfo = "Standard DMG"; - }; - D2B1653D0CF1EB5A00213737 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D2B165260CF1EB5A00213737 /* SDL.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = BECDF6C30761BA81005FE872 /* Developer Extras Package */; - remoteInfo = "Developer Extras Package"; - }; - D2B1653F0CF1EB5A00213737 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D2B165260CF1EB5A00213737 /* SDL.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 0014B9A809C0E585003A99D5 /* SDL.framework */; - remoteInfo = "Framework Without X11 Stuff (for those who didn't install the X11 headers with Xcode)"; - }; - D2B165410CF1EB5A00213737 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D2B165260CF1EB5A00213737 /* SDL.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 002F327609CA02D800EBEB88 /* libSDL.a */; - remoteInfo = "Static Library Without X11 Stuff (for those who didn't install the X11 headers with Xcode)"; - }; - D2B165720CF1EEA100213737 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D2B165260CF1EB5A00213737 /* SDL.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = BECDF5FE0761BA81005FE872 /* Framework */; - remoteInfo = Framework; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - D206904C0CEB841000B908B0 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - D2B164FA0CF1EA3B00213737 /* libpng.framework in CopyFiles */, - D2B165430CF1EB6200213737 /* SDL.framework in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 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 = ""; }; - 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; - 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 8D1107320486CEB800E47090 /* VBA-M.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "VBA-M.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - D2068F770CEB7B1200B908B0 /* arm-new.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "arm-new.h"; path = "../src/arm-new.h"; sourceTree = SOURCE_ROOT; }; - D2068F780CEB7B1200B908B0 /* armdis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = armdis.h; path = ../src/armdis.h; sourceTree = SOURCE_ROOT; }; - D2068F790CEB7B1200B908B0 /* bios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = bios.h; path = ../src/bios.h; sourceTree = SOURCE_ROOT; }; - D2068F7A0CEB7B1200B908B0 /* Cheats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Cheats.h; path = ../src/Cheats.h; sourceTree = SOURCE_ROOT; }; - D2068F7B0CEB7B1200B908B0 /* EEprom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EEprom.h; path = ../src/EEprom.h; sourceTree = SOURCE_ROOT; }; - D2068F7C0CEB7B1200B908B0 /* elf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = elf.h; path = ../src/elf.h; sourceTree = SOURCE_ROOT; }; - D2068F7D0CEB7B1200B908B0 /* expr.cpp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = expr.cpp.h; path = ../src/expr.cpp.h; sourceTree = SOURCE_ROOT; }; - D2068F7E0CEB7B1200B908B0 /* exprNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = exprNode.h; path = ../src/exprNode.h; sourceTree = SOURCE_ROOT; }; - D2068F7F0CEB7B1200B908B0 /* Flash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Flash.h; path = ../src/Flash.h; sourceTree = SOURCE_ROOT; }; - D2068F800CEB7B1200B908B0 /* GBA.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GBA.h; path = ../src/GBA.h; sourceTree = SOURCE_ROOT; }; - D2068F810CEB7B1200B908B0 /* GBAinline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GBAinline.h; path = ../src/GBAinline.h; sourceTree = SOURCE_ROOT; }; - D2068F820CEB7B1200B908B0 /* Gfx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Gfx.h; path = ../src/Gfx.h; sourceTree = SOURCE_ROOT; }; - D2068F830CEB7B1200B908B0 /* Globals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Globals.h; path = ../src/Globals.h; sourceTree = SOURCE_ROOT; }; - D2068F840CEB7B1200B908B0 /* memgzio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = memgzio.h; path = ../src/memgzio.h; sourceTree = SOURCE_ROOT; }; - D2068F850CEB7B1200B908B0 /* NLS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NLS.h; path = ../src/NLS.h; sourceTree = SOURCE_ROOT; }; - D2068F860CEB7B1200B908B0 /* Port.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Port.h; path = ../src/Port.h; sourceTree = SOURCE_ROOT; }; - D2068F870CEB7B1200B908B0 /* Sound.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sound.h; path = ../src/Sound.h; sourceTree = SOURCE_ROOT; }; - D2068F880CEB7B1200B908B0 /* Sram.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sram.h; path = ../src/Sram.h; sourceTree = SOURCE_ROOT; }; - D2068F890CEB7B1200B908B0 /* System.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = System.h; path = ../src/System.h; sourceTree = SOURCE_ROOT; }; - D2068F8A0CEB7B1200B908B0 /* Text.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Text.h; path = ../src/Text.h; sourceTree = SOURCE_ROOT; }; - D2068F8B0CEB7B1200B908B0 /* thumb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = thumb.h; path = ../src/thumb.h; sourceTree = SOURCE_ROOT; }; - D2068F8C0CEB7B1200B908B0 /* unzip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = unzip.h; path = ../src/unzip.h; sourceTree = SOURCE_ROOT; }; - D2068F8D0CEB7B1200B908B0 /* Util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Util.h; path = ../src/Util.h; sourceTree = SOURCE_ROOT; }; - D2068F8E0CEB7B5300B908B0 /* gbCheats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gbCheats.h; path = ../src/gb/gbCheats.h; sourceTree = SOURCE_ROOT; }; - D2068F8F0CEB7B5300B908B0 /* gbCodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gbCodes.h; path = ../src/gb/gbCodes.h; sourceTree = SOURCE_ROOT; }; - D2068F900CEB7B5300B908B0 /* gbGlobals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gbGlobals.h; path = ../src/gb/gbGlobals.h; sourceTree = SOURCE_ROOT; }; - D2068F910CEB7B5300B908B0 /* gbMemory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gbMemory.h; path = ../src/gb/gbMemory.h; sourceTree = SOURCE_ROOT; }; - D2068F920CEB7B5300B908B0 /* gbPrinter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gbPrinter.h; path = ../src/gb/gbPrinter.h; sourceTree = SOURCE_ROOT; }; - D2068F930CEB7B5300B908B0 /* gbSGB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gbSGB.h; path = ../src/gb/gbSGB.h; sourceTree = SOURCE_ROOT; }; - D2068F940CEB7B5300B908B0 /* gbSound.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gbSound.h; path = ../src/gb/gbSound.h; sourceTree = SOURCE_ROOT; }; - D2068FA20CEB7E0D00B908B0 /* Cheats.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Cheats.cpp; path = ../src/Cheats.cpp; sourceTree = SOURCE_ROOT; }; - D2068FA30CEB7E0D00B908B0 /* EEprom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EEprom.cpp; path = ../src/EEprom.cpp; sourceTree = SOURCE_ROOT; }; - D2068FA40CEB7E0D00B908B0 /* Flash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Flash.cpp; path = ../src/Flash.cpp; sourceTree = SOURCE_ROOT; }; - D2068FA50CEB7E0D00B908B0 /* GBA.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GBA.cpp; path = ../src/GBA.cpp; sourceTree = SOURCE_ROOT; }; - D2068FA60CEB7E0D00B908B0 /* Globals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Globals.cpp; path = ../src/Globals.cpp; sourceTree = SOURCE_ROOT; }; - D2068FA70CEB7E0D00B908B0 /* Mode0.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Mode0.cpp; path = ../src/Mode0.cpp; sourceTree = SOURCE_ROOT; }; - D2068FA80CEB7E0D00B908B0 /* Mode1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Mode1.cpp; path = ../src/Mode1.cpp; sourceTree = SOURCE_ROOT; }; - D2068FA90CEB7E0D00B908B0 /* Mode2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Mode2.cpp; path = ../src/Mode2.cpp; sourceTree = SOURCE_ROOT; }; - D2068FAA0CEB7E0D00B908B0 /* Mode3.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Mode3.cpp; path = ../src/Mode3.cpp; sourceTree = SOURCE_ROOT; }; - D2068FAB0CEB7E0D00B908B0 /* Mode4.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Mode4.cpp; path = ../src/Mode4.cpp; sourceTree = SOURCE_ROOT; }; - D2068FAC0CEB7E0D00B908B0 /* Mode5.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Mode5.cpp; path = ../src/Mode5.cpp; sourceTree = SOURCE_ROOT; }; - D2068FAD0CEB7E0D00B908B0 /* RTC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RTC.cpp; path = ../src/RTC.cpp; sourceTree = SOURCE_ROOT; }; - D2068FAE0CEB7E0D00B908B0 /* Sound.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sound.cpp; path = ../src/Sound.cpp; sourceTree = SOURCE_ROOT; }; - D2068FAF0CEB7E0D00B908B0 /* Sram.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sram.cpp; path = ../src/Sram.cpp; sourceTree = SOURCE_ROOT; }; - D2068FB00CEB7E0D00B908B0 /* Text.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Text.cpp; path = ../src/Text.cpp; sourceTree = SOURCE_ROOT; }; - D2068FB10CEB7E0D00B908B0 /* unzip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = unzip.cpp; path = ../src/unzip.cpp; sourceTree = SOURCE_ROOT; }; - D2068FB20CEB7E0D00B908B0 /* Util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Util.cpp; path = ../src/Util.cpp; sourceTree = SOURCE_ROOT; }; - D2068FC50CEB7E8400B908B0 /* GB.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GB.cpp; path = ../src/gb/GB.cpp; sourceTree = SOURCE_ROOT; }; - D2068FC60CEB7E8400B908B0 /* gbCheats.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gbCheats.cpp; path = ../src/gb/gbCheats.cpp; sourceTree = SOURCE_ROOT; }; - D2068FC70CEB7E8400B908B0 /* gbGfx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gbGfx.cpp; path = ../src/gb/gbGfx.cpp; sourceTree = SOURCE_ROOT; }; - D2068FC80CEB7E8400B908B0 /* gbGlobals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gbGlobals.cpp; path = ../src/gb/gbGlobals.cpp; sourceTree = SOURCE_ROOT; }; - D2068FC90CEB7E8400B908B0 /* gbMemory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gbMemory.cpp; path = ../src/gb/gbMemory.cpp; sourceTree = SOURCE_ROOT; }; - D2068FCA0CEB7E8400B908B0 /* gbPrinter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gbPrinter.cpp; path = ../src/gb/gbPrinter.cpp; sourceTree = SOURCE_ROOT; }; - D2068FCB0CEB7E8400B908B0 /* gbSGB.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gbSGB.cpp; path = ../src/gb/gbSGB.cpp; sourceTree = SOURCE_ROOT; }; - D2068FCC0CEB7E8400B908B0 /* gbSound.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gbSound.cpp; path = ../src/gb/gbSound.cpp; sourceTree = SOURCE_ROOT; }; - D2068FD60CEB7FEB00B908B0 /* 2xSaI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = 2xSaI.cpp; path = ../src/2xSaI.cpp; sourceTree = SOURCE_ROOT; }; - D2068FD70CEB7FEB00B908B0 /* admame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = admame.cpp; path = ../src/admame.cpp; sourceTree = SOURCE_ROOT; }; - D2068FD80CEB7FEB00B908B0 /* bilinear.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bilinear.cpp; path = ../src/bilinear.cpp; sourceTree = SOURCE_ROOT; }; - D2068FD90CEB7FEB00B908B0 /* hq2x.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = hq2x.cpp; path = ../src/hq2x.cpp; sourceTree = SOURCE_ROOT; }; - D2068FDB0CEB7FEB00B908B0 /* interframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = interframe.cpp; path = ../src/interframe.cpp; sourceTree = SOURCE_ROOT; }; - D2068FDE0CEB7FEB00B908B0 /* motionblur.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = motionblur.cpp; path = ../src/motionblur.cpp; sourceTree = SOURCE_ROOT; }; - D2068FDF0CEB7FEB00B908B0 /* pixel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = pixel.cpp; path = ../src/pixel.cpp; sourceTree = SOURCE_ROOT; }; - D2068FE00CEB7FEB00B908B0 /* scanline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = scanline.cpp; path = ../src/scanline.cpp; sourceTree = SOURCE_ROOT; }; - D2068FE10CEB7FEB00B908B0 /* simpleFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = simpleFilter.cpp; path = ../src/simpleFilter.cpp; sourceTree = SOURCE_ROOT; }; - D2068FEF0CEB809800B908B0 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Main.nib; sourceTree = ""; }; - D2068FF10CEB82FC00B908B0 /* KeyConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KeyConfig.h; path = ../src/macosx/KeyConfig.h; sourceTree = SOURCE_ROOT; }; - D2068FF20CEB82FC00B908B0 /* KeyConfig.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = KeyConfig.mm; path = ../src/macosx/KeyConfig.mm; sourceTree = SOURCE_ROOT; }; - D2068FF30CEB82FC00B908B0 /* MainClass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MainClass.h; path = ../src/macosx/MainClass.h; sourceTree = SOURCE_ROOT; }; - D2068FF40CEB82FC00B908B0 /* MainClass.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MainClass.mm; path = ../src/macosx/MainClass.mm; sourceTree = SOURCE_ROOT; }; - D2068FF50CEB82FC00B908B0 /* openfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = openfile.h; path = ../src/macosx/openfile.h; sourceTree = SOURCE_ROOT; }; - D2068FF60CEB82FC00B908B0 /* openfile.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = openfile.mm; path = ../src/macosx/openfile.mm; sourceTree = SOURCE_ROOT; }; - D2068FF70CEB82FC00B908B0 /* SDL.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SDL.mm; path = ../src/macosx/SDL.mm; sourceTree = SOURCE_ROOT; }; - D2068FFD0CEB832100B908B0 /* cart.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = cart.icns; path = ../src/macosx/cart.icns; sourceTree = SOURCE_ROOT; }; - D2068FFE0CEB832100B908B0 /* savestate.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = savestate.icns; path = ../src/macosx/savestate.icns; sourceTree = SOURCE_ROOT; }; - D2068FFF0CEB832100B908B0 /* system.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = system.icns; path = ../src/macosx/system.icns; sourceTree = SOURCE_ROOT; }; - D20690B00CEB91B700B908B0 /* agbprint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = agbprint.cpp; path = ../src/agbprint.cpp; sourceTree = SOURCE_ROOT; }; - D20690B10CEB91B700B908B0 /* armdis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = armdis.cpp; path = ../src/armdis.cpp; sourceTree = SOURCE_ROOT; }; - D20690B20CEB91B700B908B0 /* bios.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bios.cpp; path = ../src/bios.cpp; sourceTree = SOURCE_ROOT; }; - D20690B30CEB91B700B908B0 /* elf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = elf.cpp; path = ../src/elf.cpp; sourceTree = SOURCE_ROOT; }; - D20690B40CEB91B700B908B0 /* expr-lex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "expr-lex.cpp"; path = "../src/expr-lex.cpp"; sourceTree = SOURCE_ROOT; }; - D20690B50CEB91B700B908B0 /* expr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = expr.cpp; path = ../src/expr.cpp; sourceTree = SOURCE_ROOT; }; - D20690B60CEB91B700B908B0 /* exprNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = exprNode.cpp; path = ../src/exprNode.cpp; sourceTree = SOURCE_ROOT; }; - D20690B70CEB91B700B908B0 /* memgzio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = memgzio.c; path = ../src/memgzio.c; sourceTree = SOURCE_ROOT; }; - D20690B80CEB91B700B908B0 /* remote.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = remote.cpp; path = ../src/remote.cpp; sourceTree = SOURCE_ROOT; }; - D20690D30CEB922D00B908B0 /* Gfx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Gfx.cpp; path = ../src/Gfx.cpp; sourceTree = SOURCE_ROOT; }; - D20690F10CEB954800B908B0 /* snd_interp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = snd_interp.cpp; path = ../src/snd_interp.cpp; sourceTree = SOURCE_ROOT; }; - D20690F30CEB955400B908B0 /* snd_interp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snd_interp.h; path = ../src/snd_interp.h; sourceTree = SOURCE_ROOT; }; - D20690F50CEB960E00B908B0 /* filterkit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = filterkit.c; path = "../src/libresample-0.1.3/src/filterkit.c"; sourceTree = SOURCE_ROOT; }; - D20690F60CEB960E00B908B0 /* resample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = resample.c; path = "../src/libresample-0.1.3/src/resample.c"; sourceTree = SOURCE_ROOT; }; - D20690F70CEB960E00B908B0 /* resamplesubs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = resamplesubs.c; path = "../src/libresample-0.1.3/src/resamplesubs.c"; sourceTree = SOURCE_ROOT; }; - D20690FD0CEB963000B908B0 /* libresample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = libresample.h; path = "../src/libresample-0.1.3/include/libresample.h"; sourceTree = SOURCE_ROOT; }; - D206911B0CEB980400B908B0 /* debugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = debugger.h; path = ../src/sdl/debugger.h; sourceTree = SOURCE_ROOT; }; - D206911C0CEB981400B908B0 /* debugger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = debugger.cpp; path = ../src/sdl/debugger.cpp; sourceTree = SOURCE_ROOT; }; - D2B164F40CF1EA3100213737 /* libpng.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = libpng.xcodeproj; path = "../../dependencies/libpng-1.2.22/projects/xcode/libpng.xcodeproj"; sourceTree = SOURCE_ROOT; }; - D2B165260CF1EB5A00213737 /* SDL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL.xcodeproj; path = "../../dependencies/SDL-1.2.12/Xcode/SDL/SDL.xcodeproj"; sourceTree = SOURCE_ROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8D11072E0486CEB800E47090 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D2B165750CF1EEAA00213737 /* libpng.framework in Frameworks */, - D2B165740CF1EEA600213737 /* SDL.framework in Frameworks */, - 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 080E96DDFE201D6D7F000001 /* OS X-Specific Classes */ = { - isa = PBXGroup; - children = ( - D2068FF10CEB82FC00B908B0 /* KeyConfig.h */, - D2068FF20CEB82FC00B908B0 /* KeyConfig.mm */, - D2068FF30CEB82FC00B908B0 /* MainClass.h */, - D2068FF40CEB82FC00B908B0 /* MainClass.mm */, - D2068FF50CEB82FC00B908B0 /* openfile.h */, - D2068FF60CEB82FC00B908B0 /* openfile.mm */, - D2068FF70CEB82FC00B908B0 /* SDL.mm */, - ); - name = "OS X-Specific Classes"; - sourceTree = ""; - }; - 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { - isa = PBXGroup; - children = ( - D2B165260CF1EB5A00213737 /* SDL.xcodeproj */, - D2B164F40CF1EA3100213737 /* libpng.xcodeproj */, - 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, - ); - name = "Linked Frameworks"; - sourceTree = ""; - }; - 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { - isa = PBXGroup; - children = ( - 29B97324FDCFA39411CA2CEA /* AppKit.framework */, - 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, - 29B97325FDCFA39411CA2CEA /* Foundation.framework */, - ); - name = "Other Frameworks"; - sourceTree = ""; - }; - 19C28FACFE9D520D11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 8D1107320486CEB800E47090 /* VBA-M.app */, - ); - name = Products; - sourceTree = ""; - }; - 29B97314FDCFA39411CA2CEA /* VBA-M */ = { - isa = PBXGroup; - children = ( - 080E96DDFE201D6D7F000001 /* OS X-Specific Classes */, - D2068F740CEB792900B908B0 /* Includes */, - 29B97315FDCFA39411CA2CEA /* Sources */, - 29B97317FDCFA39411CA2CEA /* Resources */, - 29B97323FDCFA39411CA2CEA /* Frameworks */, - 19C28FACFE9D520D11CA2CBB /* Products */, - ); - name = "VBA-M"; - sourceTree = ""; - }; - 29B97315FDCFA39411CA2CEA /* Sources */ = { - isa = PBXGroup; - children = ( - D20690B00CEB91B700B908B0 /* agbprint.cpp */, - D20690B10CEB91B700B908B0 /* armdis.cpp */, - D20690B20CEB91B700B908B0 /* bios.cpp */, - D2068FA20CEB7E0D00B908B0 /* Cheats.cpp */, - D206911C0CEB981400B908B0 /* debugger.cpp */, - D20690B30CEB91B700B908B0 /* elf.cpp */, - D20690B40CEB91B700B908B0 /* expr-lex.cpp */, - D20690B50CEB91B700B908B0 /* expr.cpp */, - D20690B60CEB91B700B908B0 /* exprNode.cpp */, - D2068FA30CEB7E0D00B908B0 /* EEprom.cpp */, - D2068FA40CEB7E0D00B908B0 /* Flash.cpp */, - D2068FC40CEB7E5C00B908B0 /* GB */, - D2068FA50CEB7E0D00B908B0 /* GBA.cpp */, - D20690D30CEB922D00B908B0 /* Gfx.cpp */, - D2068FA60CEB7E0D00B908B0 /* Globals.cpp */, - D20690FB0CEB961300B908B0 /* libresample */, - D20690B70CEB91B700B908B0 /* memgzio.c */, - D2068FA70CEB7E0D00B908B0 /* Mode0.cpp */, - D2068FA80CEB7E0D00B908B0 /* Mode1.cpp */, - D2068FA90CEB7E0D00B908B0 /* Mode2.cpp */, - D2068FAA0CEB7E0D00B908B0 /* Mode3.cpp */, - D2068FAB0CEB7E0D00B908B0 /* Mode4.cpp */, - D2068FAC0CEB7E0D00B908B0 /* Mode5.cpp */, - D20690B80CEB91B700B908B0 /* remote.cpp */, - D2068FAD0CEB7E0D00B908B0 /* RTC.cpp */, - D2068FAE0CEB7E0D00B908B0 /* Sound.cpp */, - D20690F10CEB954800B908B0 /* snd_interp.cpp */, - D2068FAF0CEB7E0D00B908B0 /* Sram.cpp */, - D2068FB00CEB7E0D00B908B0 /* Text.cpp */, - D2068FB10CEB7E0D00B908B0 /* unzip.cpp */, - D2068FB20CEB7E0D00B908B0 /* Util.cpp */, - D2068FD50CEB7F8800B908B0 /* Video Filters */, - ); - name = Sources; - sourceTree = ""; - }; - 29B97317FDCFA39411CA2CEA /* Resources */ = { - isa = PBXGroup; - children = ( - D2068FFC0CEB830A00B908B0 /* Icons */, - D2068FEE0CEB809800B908B0 /* Main.nib */, - 8D1107310486CEB800E47090 /* Info.plist */, - 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, - ); - name = Resources; - sourceTree = ""; - }; - 29B97323FDCFA39411CA2CEA /* Frameworks */ = { - isa = PBXGroup; - children = ( - 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, - 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, - ); - name = Frameworks; - sourceTree = ""; - }; - D2068F740CEB792900B908B0 /* Includes */ = { - isa = PBXGroup; - children = ( - D2068F770CEB7B1200B908B0 /* arm-new.h */, - D2068F780CEB7B1200B908B0 /* armdis.h */, - D2068F790CEB7B1200B908B0 /* bios.h */, - D2068F7A0CEB7B1200B908B0 /* Cheats.h */, - D2068F7B0CEB7B1200B908B0 /* EEprom.h */, - D206911B0CEB980400B908B0 /* debugger.h */, - D2068F7C0CEB7B1200B908B0 /* elf.h */, - D2068F7D0CEB7B1200B908B0 /* expr.cpp.h */, - D2068F7E0CEB7B1200B908B0 /* exprNode.h */, - D2068F7F0CEB7B1200B908B0 /* Flash.h */, - D2068F800CEB7B1200B908B0 /* GBA.h */, - D2068F810CEB7B1200B908B0 /* GBAinline.h */, - D2068F8E0CEB7B5300B908B0 /* gbCheats.h */, - D2068F8F0CEB7B5300B908B0 /* gbCodes.h */, - D2068F900CEB7B5300B908B0 /* gbGlobals.h */, - D2068F910CEB7B5300B908B0 /* gbMemory.h */, - D2068F920CEB7B5300B908B0 /* gbPrinter.h */, - D2068F930CEB7B5300B908B0 /* gbSGB.h */, - D2068F940CEB7B5300B908B0 /* gbSound.h */, - D2068F820CEB7B1200B908B0 /* Gfx.h */, - D2068F830CEB7B1200B908B0 /* Globals.h */, - D20690FC0CEB962000B908B0 /* libresample */, - D2068F840CEB7B1200B908B0 /* memgzio.h */, - D2068F850CEB7B1200B908B0 /* NLS.h */, - D2068F860CEB7B1200B908B0 /* Port.h */, - D2068F870CEB7B1200B908B0 /* Sound.h */, - D20690F30CEB955400B908B0 /* snd_interp.h */, - D2068F880CEB7B1200B908B0 /* Sram.h */, - D2068F890CEB7B1200B908B0 /* System.h */, - D2068F8A0CEB7B1200B908B0 /* Text.h */, - D2068F8B0CEB7B1200B908B0 /* thumb.h */, - D2068F8C0CEB7B1200B908B0 /* unzip.h */, - D2068F8D0CEB7B1200B908B0 /* Util.h */, - ); - name = Includes; - sourceTree = ""; - }; - D2068FC40CEB7E5C00B908B0 /* GB */ = { - isa = PBXGroup; - children = ( - D2068FC50CEB7E8400B908B0 /* GB.cpp */, - D2068FC60CEB7E8400B908B0 /* gbCheats.cpp */, - D2068FC70CEB7E8400B908B0 /* gbGfx.cpp */, - D2068FC80CEB7E8400B908B0 /* gbGlobals.cpp */, - D2068FC90CEB7E8400B908B0 /* gbMemory.cpp */, - D2068FCA0CEB7E8400B908B0 /* gbPrinter.cpp */, - D2068FCB0CEB7E8400B908B0 /* gbSGB.cpp */, - D2068FCC0CEB7E8400B908B0 /* gbSound.cpp */, - ); - name = GB; - sourceTree = ""; - }; - D2068FD50CEB7F8800B908B0 /* Video Filters */ = { - isa = PBXGroup; - children = ( - D2068FD60CEB7FEB00B908B0 /* 2xSaI.cpp */, - D2068FD70CEB7FEB00B908B0 /* admame.cpp */, - D2068FD80CEB7FEB00B908B0 /* bilinear.cpp */, - D2068FD90CEB7FEB00B908B0 /* hq2x.cpp */, - D2068FDB0CEB7FEB00B908B0 /* interframe.cpp */, - D2068FDE0CEB7FEB00B908B0 /* motionblur.cpp */, - D2068FDF0CEB7FEB00B908B0 /* pixel.cpp */, - D2068FE00CEB7FEB00B908B0 /* scanline.cpp */, - D2068FE10CEB7FEB00B908B0 /* simpleFilter.cpp */, - ); - name = "Video Filters"; - sourceTree = ""; - }; - D2068FFC0CEB830A00B908B0 /* Icons */ = { - isa = PBXGroup; - children = ( - D2068FFD0CEB832100B908B0 /* cart.icns */, - D2068FFE0CEB832100B908B0 /* savestate.icns */, - D2068FFF0CEB832100B908B0 /* system.icns */, - ); - name = Icons; - sourceTree = ""; - }; - D20690FB0CEB961300B908B0 /* libresample */ = { - isa = PBXGroup; - children = ( - D20690F50CEB960E00B908B0 /* filterkit.c */, - D20690F60CEB960E00B908B0 /* resample.c */, - D20690F70CEB960E00B908B0 /* resamplesubs.c */, - ); - name = libresample; - sourceTree = ""; - }; - D20690FC0CEB962000B908B0 /* libresample */ = { - isa = PBXGroup; - children = ( - D20690FD0CEB963000B908B0 /* libresample.h */, - ); - name = libresample; - sourceTree = ""; - }; - D2B164F50CF1EA3100213737 /* Products */ = { - isa = PBXGroup; - children = ( - D2B164F90CF1EA3100213737 /* libpng.framework */, - ); - name = Products; - sourceTree = ""; - }; - D2B165270CF1EB5A00213737 /* Products */ = { - isa = PBXGroup; - children = ( - D2B165360CF1EB5A00213737 /* SDL.framework */, - D2B165380CF1EB5A00213737 /* libSDL.a */, - D2B1653A0CF1EB5A00213737 /* libSDLmain.a */, - D2B1653C0CF1EB5A00213737 /* Standard DMG */, - D2B1653E0CF1EB5A00213737 /* Developer Extras Package */, - D2B165400CF1EB5A00213737 /* SDL.framework */, - D2B165420CF1EB5A00213737 /* libSDL.a */, - ); - name = Products; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8D1107260486CEB800E47090 /* VBA-M */ = { - isa = PBXNativeTarget; - buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "VBA-M" */; - buildPhases = ( - D20691000CEB964600B908B0 /* Configure libresample */, - 8D1107290486CEB800E47090 /* Resources */, - 8D11072C0486CEB800E47090 /* Sources */, - 8D11072E0486CEB800E47090 /* Frameworks */, - D206904C0CEB841000B908B0 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - D2B164FC0CF1EA4A00213737 /* PBXTargetDependency */, - D2B165730CF1EEA100213737 /* PBXTargetDependency */, - ); - name = "VBA-M"; - productInstallPath = "$(HOME)/Applications"; - productName = "VBA-M"; - productReference = 8D1107320486CEB800E47090 /* VBA-M.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 29B97313FDCFA39411CA2CEA /* Project object */ = { - isa = PBXProject; - buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "VBA-M" */; - compatibilityVersion = "Xcode 3.0"; - hasScannedForEncodings = 1; - mainGroup = 29B97314FDCFA39411CA2CEA /* VBA-M */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = D2B164F50CF1EA3100213737 /* Products */; - ProjectRef = D2B164F40CF1EA3100213737 /* libpng.xcodeproj */; - }, - { - ProductGroup = D2B165270CF1EB5A00213737 /* Products */; - ProjectRef = D2B165260CF1EB5A00213737 /* SDL.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 8D1107260486CEB800E47090 /* VBA-M */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - D2B164F90CF1EA3100213737 /* libpng.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = libpng.framework; - remoteRef = D2B164F80CF1EA3100213737 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - D2B165360CF1EB5A00213737 /* SDL.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = SDL.framework; - remoteRef = D2B165350CF1EB5A00213737 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - D2B165380CF1EB5A00213737 /* libSDL.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libSDL.a; - remoteRef = D2B165370CF1EB5A00213737 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - D2B1653A0CF1EB5A00213737 /* libSDLmain.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libSDLmain.a; - remoteRef = D2B165390CF1EB5A00213737 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - D2B1653C0CF1EB5A00213737 /* Standard DMG */ = { - isa = PBXReferenceProxy; - fileType = "compiled.mach-o.executable"; - path = "Standard DMG"; - remoteRef = D2B1653B0CF1EB5A00213737 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - D2B1653E0CF1EB5A00213737 /* Developer Extras Package */ = { - isa = PBXReferenceProxy; - fileType = "compiled.mach-o.executable"; - path = "Developer Extras Package"; - remoteRef = D2B1653D0CF1EB5A00213737 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - D2B165400CF1EB5A00213737 /* SDL.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = SDL.framework; - remoteRef = D2B1653F0CF1EB5A00213737 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - D2B165420CF1EB5A00213737 /* libSDL.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libSDL.a; - remoteRef = D2B165410CF1EB5A00213737 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 8D1107290486CEB800E47090 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, - D2068FF00CEB809800B908B0 /* Main.nib in Resources */, - D20690000CEB832100B908B0 /* cart.icns in Resources */, - D20690010CEB832100B908B0 /* savestate.icns in Resources */, - D20690020CEB832100B908B0 /* system.icns in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - D20691000CEB964600B908B0 /* Configure libresample */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Configure libresample"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "cd $SRCROOT/../src/libresample-0.1.3\n./configure"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8D11072C0486CEB800E47090 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D2068FB30CEB7E0D00B908B0 /* Cheats.cpp in Sources */, - D2068FB40CEB7E0D00B908B0 /* EEprom.cpp in Sources */, - D2068FB50CEB7E0D00B908B0 /* Flash.cpp in Sources */, - D2068FB60CEB7E0D00B908B0 /* GBA.cpp in Sources */, - D2068FB70CEB7E0D00B908B0 /* Globals.cpp in Sources */, - D2068FB80CEB7E0D00B908B0 /* Mode0.cpp in Sources */, - D2068FB90CEB7E0D00B908B0 /* Mode1.cpp in Sources */, - D2068FBA0CEB7E0D00B908B0 /* Mode2.cpp in Sources */, - D2068FBB0CEB7E0D00B908B0 /* Mode3.cpp in Sources */, - D2068FBC0CEB7E0D00B908B0 /* Mode4.cpp in Sources */, - D2068FBD0CEB7E0D00B908B0 /* Mode5.cpp in Sources */, - D2068FBE0CEB7E0D00B908B0 /* RTC.cpp in Sources */, - D2068FBF0CEB7E0D00B908B0 /* Sound.cpp in Sources */, - D2068FC00CEB7E0D00B908B0 /* Sram.cpp in Sources */, - D2068FC10CEB7E0D00B908B0 /* Text.cpp in Sources */, - D2068FC20CEB7E0D00B908B0 /* unzip.cpp in Sources */, - D2068FC30CEB7E0D00B908B0 /* Util.cpp in Sources */, - D2068FCD0CEB7E8400B908B0 /* GB.cpp in Sources */, - D2068FCE0CEB7E8400B908B0 /* gbCheats.cpp in Sources */, - D2068FCF0CEB7E8400B908B0 /* gbGfx.cpp in Sources */, - D2068FD00CEB7E8400B908B0 /* gbGlobals.cpp in Sources */, - D2068FD10CEB7E8400B908B0 /* gbMemory.cpp in Sources */, - D2068FD20CEB7E8400B908B0 /* gbPrinter.cpp in Sources */, - D2068FD30CEB7E8400B908B0 /* gbSGB.cpp in Sources */, - D2068FD40CEB7E8400B908B0 /* gbSound.cpp in Sources */, - D2068FE20CEB7FEB00B908B0 /* 2xSaI.cpp in Sources */, - D2068FE30CEB7FEB00B908B0 /* admame.cpp in Sources */, - D2068FE40CEB7FEB00B908B0 /* bilinear.cpp in Sources */, - D2068FE50CEB7FEB00B908B0 /* hq2x.cpp in Sources */, - D2068FE70CEB7FEB00B908B0 /* interframe.cpp in Sources */, - D2068FEA0CEB7FEB00B908B0 /* motionblur.cpp in Sources */, - D2068FEB0CEB7FEB00B908B0 /* pixel.cpp in Sources */, - D2068FEC0CEB7FEB00B908B0 /* scanline.cpp in Sources */, - D2068FED0CEB7FEB00B908B0 /* simpleFilter.cpp in Sources */, - D2068FF80CEB82FC00B908B0 /* KeyConfig.mm in Sources */, - D2068FF90CEB82FC00B908B0 /* MainClass.mm in Sources */, - D2068FFA0CEB82FC00B908B0 /* openfile.mm in Sources */, - D2068FFB0CEB82FC00B908B0 /* SDL.mm in Sources */, - D20690B90CEB91B700B908B0 /* agbprint.cpp in Sources */, - D20690BA0CEB91B700B908B0 /* armdis.cpp in Sources */, - D20690BB0CEB91B700B908B0 /* bios.cpp in Sources */, - D20690BC0CEB91B700B908B0 /* elf.cpp in Sources */, - D20690BD0CEB91B700B908B0 /* expr-lex.cpp in Sources */, - D20690BE0CEB91B700B908B0 /* expr.cpp in Sources */, - D20690BF0CEB91B700B908B0 /* exprNode.cpp in Sources */, - D20690C00CEB91B700B908B0 /* memgzio.c in Sources */, - D20690C10CEB91B700B908B0 /* remote.cpp in Sources */, - D20690D40CEB922D00B908B0 /* Gfx.cpp in Sources */, - D20690F20CEB954800B908B0 /* snd_interp.cpp in Sources */, - D20690F80CEB960E00B908B0 /* filterkit.c in Sources */, - D20690F90CEB960E00B908B0 /* resample.c in Sources */, - D20690FA0CEB960E00B908B0 /* resamplesubs.c in Sources */, - D206911D0CEB981400B908B0 /* debugger.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - D2B164FC0CF1EA4A00213737 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = libpng; - targetProxy = D2B164FB0CF1EA4A00213737 /* PBXContainerItemProxy */; - }; - D2B165730CF1EEA100213737 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Framework; - targetProxy = D2B165720CF1EEA100213737 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 089C165DFE840E0CC02AAC07 /* English */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; - D2068FEE0CEB809800B908B0 /* Main.nib */ = { - isa = PBXVariantGroup; - children = ( - D2068FEF0CEB809800B908B0 /* English */, - ); - name = Main.nib; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - C01FCF4B08A954540054247B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/Frameworks\"", - ); - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = NO; - GCC_PREFIX_HEADER = ""; - GCC_PREPROCESSOR_DEFINITIONS = ( - "C_CORE=1", - "STDC_HEADERS=1", - "FINAL_VERSION=1", - SDL, - "HAVE_STDINT_H=1", - "HAVE_INTTYPES_H=1", - "HAVE_STRINGS_H=1", - "HAVE_MEMORY_H=1", - "HAVE_STDLIB_H=1", - "HAVE_SYS_STAT_H=1", - "HAVE_SYS_TYPES_H=1", - "HAVE_ARPA_INET_H=1", - "HAVE_UNISTD_H=1", - ); - HEADER_SEARCH_PATHS = ( - "$(BUILD_DIR)/$(CONFIGURATION)/SDL.framework/Headers", - "$(BUILD_DIR)/$(CONFIGURATION)/libpng.framework/Headers", - ); - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(HOME)/Applications"; - OTHER_CFLAGS = ( - "-Wno-unused", - "-ffast-math", - "-malign-natural", - "-fstrict-aliasing", - "-fsched-interblock", - "-force_cpusubtype_ALL", - "-Wall", - "-DBKPT_SUPPORT", - ); - OTHER_LDFLAGS = "-lz"; - PRODUCT_NAME = "VBA-M"; - SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk"; - WRAPPER_EXTENSION = app; - ZERO_LINK = YES; - }; - name = Debug; - }; - C01FCF4C08A954540054247B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/Frameworks\"", - ); - GCC_MODEL_TUNING = G5; - "GCC_OPTIMIZATION_LEVEL[arch=ppc]" = 0; - GCC_PRECOMPILE_PREFIX_HEADER = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "FINAL_VERSION=1", - "C_CORE=1", - "STDC_HEADERS=1", - "HAVE_UNISTD_H=1", - "HAVE_ARPA_INET_H=1", - "HAVE_SYS_TYPES_H=1", - "HAVE_SYS_STAT_H=1", - "HAVE_STDLIB_H=1", - "HAVE_STRING_H=1", - "HAVE_MEMORY_H=1", - "HAVE_STRINGS_H=1", - "HAVE_INTTYPES_H=1", - "HAVE_STDINT_H=1", - SDL, - ); - HEADER_SEARCH_PATHS = ( - "$(BUILD_DIR)/$(CONFIGURATION)/SDL.framework/Headers", - "$(BUILD_DIR)/$(CONFIGURATION)/libpng.framework/Headers", - ); - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(HOME)/Applications"; - OTHER_CFLAGS = ( - "-Wno-unused", - "-ffast-math", - "-malign-natural", - "-fstrict-aliasing", - "-fsched-interblock", - "-force_cpusubtype_ALL", - "-Wall", - "-DBKPT_SUPPORT", - ); - "OTHER_CFLAGS[arch=ppc]" = ( - "-Wno-unused", - "-ffast-math", - "-malign-natural", - "-fstrict-aliasing", - "-fsched-interblock", - "-force_cpusubtype_ALL", - "-Wall", - "-DBKPT_SUPPORT", - "-DWORDS_BIGENDIAN", - ); - OTHER_LDFLAGS = "-lz"; - PRODUCT_NAME = "VBA-M"; - SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk"; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; - C01FCF4F08A954540054247B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; - }; - name = Debug; - }; - C01FCF5008A954540054247B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = ( - ppc, - i386, - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "VBA-M" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C01FCF4B08A954540054247B /* Debug */, - C01FCF4C08A954540054247B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C01FCF4E08A954540054247B /* Build configuration list for PBXProject "VBA-M" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C01FCF4F08A954540054247B /* Debug */, - C01FCF5008A954540054247B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; -} diff --git a/src/macosx/KeyConfig.h b/src/macosx/KeyConfig.h deleted file mode 100644 index 05affbb9..00000000 --- a/src/macosx/KeyConfig.h +++ /dev/null @@ -1,9 +0,0 @@ -/* - * KeyConfig.h - * Visual Boy Advance - */ - -void calibrate(); -int config_main(); -int poll(); - diff --git a/src/macosx/KeyConfig.mm b/src/macosx/KeyConfig.mm deleted file mode 100644 index b59a68a5..00000000 --- a/src/macosx/KeyConfig.mm +++ /dev/null @@ -1,108 +0,0 @@ -#include -#include -#include -#include "MainClass.h" - -int stopPoll = 0; - -#define GETHATCODE(event) ((event.jhat.which+1)<<12)|(event.jhat.hat<<2)|\ - (event.jhat.value & SDL_HAT_UP ? 0 : event.jhat.value & SDL_HAT_DOWN ? 1 : event.jhat.value & SDL_HAT_RIGHT ? 2 : event.jhat.value & SDL_HAT_LEFT ? 3 : 0) - -#define GETBUTTONCODE(event) ((event.jbutton.which+1)<<12)|(event.jbutton.button+0x80) - -#define GETAXISCODE(event) ((event.jaxis.which+1)<<12)|(event.jaxis.axis<<1)|(event.jaxis.value > 16384 ? 1 : event.jaxis.value < -16384 ? 0 : 0) - -void calibrate( void ) -{ - SDL_Event event; - while(SDL_PollEvent(&event)) { - switch(event.type) { - case SDL_JOYHATMOTION: - break; - case SDL_JOYBUTTONDOWN: - //stopPoll = 1; - break; - case SDL_JOYAXISMOTION: - break; - case SDL_KEYDOWN: - stopPoll = 1; - break; - case SDL_KEYUP: - break; - } - } -} - -int poll() -{ - SDL_Event event; - while(SDL_PollEvent(&event)) { - switch(event.type) { - case SDL_JOYHATMOTION: - if (event.jhat.value != 0) - { - stopPoll = 1; - return GETHATCODE(event); - } - break; - case SDL_JOYBUTTONDOWN: - stopPoll = 1; - return GETBUTTONCODE(event); - break; - case SDL_JOYAXISMOTION: - if (event.jaxis.value < -23000 || event.jaxis.value > 23000) - { - stopPoll = 1; - return GETAXISCODE(event); - } - break; - case SDL_KEYDOWN: - stopPoll = 1; - return event.key.keysym.sym; - break; - case SDL_KEYUP: - break; - case SDL_MOUSEBUTTONDOWN: - stopPoll = 1; - break; - } - } - return 0; -} - -int config_main() -{ - - if(SDL_Init(SDL_INIT_TIMER|SDL_INIT_VIDEO|SDL_INIT_NOPARACHUTE)) { - printf("Failed to init SDL: %s\n", SDL_GetError()); - exit(-1); - } - - if(SDL_InitSubSystem(SDL_INIT_JOYSTICK)) { - printf("Failed to init joystick: %s\n", SDL_GetError()); - } - -// SDL_Surface *surface = SDL_SetVideoMode(0,0,0, -// SDL_ANYFORMAT); -// if (NULL == surface) { -// printf("Failed to set video mode: %s\n", SDL_GetError()); -// } - - int numJoy = SDL_NumJoysticks(); - - int i; - for(i = 0; i < numJoy; i++) { - SDL_JoystickOpen(i); - } - SDL_JoystickEventState(SDL_ENABLE); - - /*printf("%i joysticks were found.\n\n", SDL_NumJoysticks() ); - printf("The names of the joysticks are:\n"); - - for( i=0; i < SDL_NumJoysticks(); i++ ) - { - printf(" %s\n", SDL_JoystickName(i)); - }*/ - - return SDL_NumJoysticks(); -} diff --git a/src/macosx/MainClass.h b/src/macosx/MainClass.h deleted file mode 100644 index 35d825a0..00000000 --- a/src/macosx/MainClass.h +++ /dev/null @@ -1,131 +0,0 @@ -#import - -@interface SDLMain : NSObject -{ - IBOutlet NSWindow *prefsWindow; - IBOutlet NSPopUpButton *skipBios; - IBOutlet NSPopUpButton *pauseWhenInactive; - IBOutlet NSPopUpButton *realtimeClock; - IBOutlet NSPopUpButton *interframe; - IBOutlet NSPopUpButton *soundEcho; - IBOutlet NSPopUpButton *soundLowPass; - IBOutlet NSPopUpButton *soundOn; - IBOutlet NSPopUpButton *soundQuality; - IBOutlet NSPopUpButton *soundReverseStereo; - IBOutlet NSPopUpButton *removeIntros; - IBOutlet NSPopUpButton *flashSize; - IBOutlet NSPopUpButton *videoBorder; - IBOutlet NSPopUpButton *videoFilter; - IBOutlet NSPopUpButton *videoFullscreen; - IBOutlet NSPopUpButton *videoSize; - IBOutlet NSPopUpButton *videoWashedColors; - IBOutlet NSPopUpButton *gbaFrameSkip; - IBOutlet NSPopUpButton *gbFrameSkip; - IBOutlet NSPopUpButton *autoFrameSkip; - IBOutlet NSPopUpButton *showSpeed; - IBOutlet NSPopUpButton *useBios; - IBOutlet NSTextField *biosFilePath; - IBOutlet NSPopUpButton *throttle; - IBOutlet NSPopUpButton *changeFileType; -} -- (IBAction)closePrefs:(id)sender; -- (IBAction)loadConfig; -- (IBAction)closePrefsNull:(id)sender; -- (IBAction)openPrefs:(id)sender; -- (IBAction)openRomFromMenu:(id)sender; -- (IBAction)quit:(id)sender; -- (IBAction)changeCreator:(char *)filename; -- (IBAction)changeSaveCreator:(char *)filename; -- (IBAction)changeSgmCreator:(char *)statename; -- (IBAction)selectBiosFile:(id)sender; -- (IBAction)addCheatCBA; -- (IBAction)addCheatGSA; -@end - -@interface CheatClass : NSObject -{ - IBOutlet NSTextField *cheatField; - IBOutlet NSTextField *cheatField2; - IBOutlet NSTextField *cheatField3; - IBOutlet NSTextField *cheatField4; - IBOutlet NSTextField *cheatField5; - IBOutlet NSTextField *cheatField6; - IBOutlet NSWindow *cheatWindow; - IBOutlet NSTextField *cheatFieldGSA; - IBOutlet NSTextField *cheatFieldGSA2; - IBOutlet NSTextField *cheatFieldGSA3; - IBOutlet NSTextField *cheatFieldGSA4; - IBOutlet NSTextField *cheatFieldGSA5; - IBOutlet NSTextField *cheatFieldGSA6; - IBOutlet NSWindow *cheatWindowGSA; - IBOutlet NSMenuItem *cheatMenuCBA; - IBOutlet NSMenuItem *cheatMenuGSA; - IBOutlet NSMenu *cheatMenu; -} -- (IBAction)disableCheats; -- (IBAction)enableCheats; -- (IBAction)readCheatCBA:(id)sender; -- (IBAction)readCheatGSA:(id)sender; -- (IBAction)openCheatCBA:(id)sender; -- (IBAction)openCheatGSA:(id)sender; -@end - -@interface MenuClass : NSObject -- (IBAction)closeRom:(id)sender; -- (IBAction)resetEmulation:(id)sender; -- (IBAction)pauseEmulation:(id)sender; -- (IBAction)advanceFrame:(id)sender; -- (IBAction)toggleFullscreen:(id)sender; -@end - -@interface ConfigClass : NSObject -{ - IBOutlet NSButton *calibrateButton; - IBOutlet NSButton *defaultButton; - IBOutlet NSButton *OKButton; - IBOutlet NSButton *CancelButton; - IBOutlet NSTextField *aField; - IBOutlet NSTextField *bField; - IBOutlet NSTextField *downField; - IBOutlet NSTextField *leftField; - IBOutlet NSTextField *lField; - IBOutlet NSTextField *rField; - IBOutlet NSTextField *rightField; - IBOutlet NSTextField *selectField; - IBOutlet NSTextField *startField; - IBOutlet NSTextField *upField; - IBOutlet NSTextField *captureField; - IBOutlet NSTextField *speedField; - IBOutlet NSWindow *configWindow; - IBOutlet NSWindow *noteWindow; -} -- (void)loadKeyValues; -- (IBAction)beginConfig:(id)sender; -- (IBAction)endConfig:(id)sender; -- (IBAction)calibrate:(id)sender; -- (IBAction)pollA:(id)sender; -- (IBAction)pollB:(id)sender; -- (IBAction)pollCapture:(id)sender; -- (IBAction)pollSpeed:(id)sender; -- (IBAction)pollDown:(id)sender; -- (IBAction)pollL:(id)sender; -- (IBAction)pollLeft:(id)sender; -- (IBAction)pollR:(id)sender; -- (IBAction)pollRight:(id)sender; -- (IBAction)pollSelect:(id)sender; -- (IBAction)pollStart:(id)sender; -- (IBAction)pollUp:(id)sender; -@end - -extern SDLMain *gSDLMain; -extern bool changeType; -extern int done; -extern int emulating; -void sdlEmuReset( void ); -void sdlEmuPause( void ); -void sdlAdvanceFrame( void ); -void sdlToggleFullscreen( void ); -void cheatsAddCBACode(const char *code, const char *desc); -void cheatsAddGSACode(const char *code, const char *desc, bool v3); -void sdlWriteState(int num); -void sdlReadState(int num); \ No newline at end of file diff --git a/src/macosx/MainClass.mm b/src/macosx/MainClass.mm deleted file mode 100644 index 7916c4c1..00000000 --- a/src/macosx/MainClass.mm +++ /dev/null @@ -1,821 +0,0 @@ -#import -#import "MainClass.h" -#import "openfile.h" -#import "KeyConfig.h" -#import /* for MAXPATHLEN */ -#import - -extern void sdlSetDefaultPreferences(); - -/* Use this flag to determine whether we use SDLMain.nib or not */ -#define SDL_USE_NIB_FILE 1 - -#define prefs [NSUserDefaults standardUserDefaults] - -static int gArgc; -static char **gArgv; -static BOOL gFinderLaunch; -int runAgain = 0, cheatCBA = 0, cheatGSA = 0; -extern int stopPoll; -int keyConfig[12], configArray[20]; -char keyArray[12][12], code[6][256]; -extern bool paused; -extern bool wasPaused; -NSString *cheatString, * biosPath; -void emu_main(); -char launchFile[1024]; -NSString *keyLeftString, *keyRightString, *keyUpString, *keyDownString, *keyAString, *keyBString, *keyLString, *keyRString, *keyStartString, *keySelectString, *keySpeedString, *keyCaptureString; - -//Config externs -enum { - KEY_LEFT, KEY_RIGHT, - KEY_UP, KEY_DOWN, - KEY_BUTTON_A, KEY_BUTTON_B, - KEY_BUTTON_START, KEY_BUTTON_SELECT, - KEY_BUTTON_L, KEY_BUTTON_R, - KEY_BUTTON_SPEED, KEY_BUTTON_CAPTURE -}; - -extern unsigned short joypad[4][12]; - -@interface SDLApplication : NSApplication -@end - -@implementation SDLApplication -/* Invoked from the Quit menu item */ -- (void)terminate:(id)sender -{ - if (emulating) - { - done = true; - emulating = false; - } - else - { - exit(0); - } -} -@end - - -SDLMain *gSDLMain = NULL; -char biosFile[1024]; -bool changeType; - -/* The main class of the application, the application's delegate */ -@implementation SDLMain - -- (void) openHomepage:(id)sender -{ -[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://software.emuscene.com"]]; -} - -- (void) donate:(id)sender -{ -[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"https://www.paypal.com/xclick/business=payments%40victoly.com&item_name=EmuScene+Donation&no_note=1&tax=0¤cy_code=USD"]]; -} - -- (void) quit:(id)sender -{ - if (emulating) - { - done = true; - emulating = false; - } - else - { - exit(0); - } -} - -- (void) openPrefs:(id)sender -{ - paused = true; - SDL_PauseAudio(paused); - wasPaused = true; - - [self loadConfig]; - [prefsWindow makeKeyAndOrderFront:self]; -} - -- (void) closePrefsNull:(id)sender -{ - [prefsWindow orderOut:self]; - - paused = false; - SDL_PauseAudio(paused); - wasPaused = false; -} - -- (void) loadConfig -{ - [gbaFrameSkip selectItemAtIndex:[prefs integerForKey:@"frameskip"]]; - [gbFrameSkip selectItemAtIndex:[prefs integerForKey:@"gbFrameskip"]]; - [videoSize selectItemAtIndex:[prefs integerForKey:@"sizeOption"]]; - [videoFullscreen selectItemAtIndex:[prefs integerForKey:@"fullscreen"]]; - [useBios selectItemAtIndex:[prefs integerForKey:@"useBios"]]; - [skipBios selectItemAtIndex:[prefs integerForKey:@"skipBios"]]; - if ([prefs stringForKey:@"biosFile"] != nil) - { - [biosFilePath setStringValue:[[prefs stringForKey:@"biosFile"] lastPathComponent]]; - biosPath = [[NSString alloc] initWithString:[prefs stringForKey:@"biosFile"]]; - [biosPath retain]; - } - [videoFilter selectItemAtIndex:[prefs integerForKey:@"filter"]]; - if ([prefs integerForKey:@"gbBorderAutomatic"] == 1) - [videoBorder selectItemAtIndex:2]; - else - [videoBorder selectItemAtIndex:[prefs integerForKey:@"gbBorderOn"]]; - [videoWashedColors selectItemAtIndex:[prefs integerForKey:@"colorOption"]]; - if ([prefs integerForKey:@"soundQuality"] == 4) - [soundQuality selectItemAtIndex:2]; - else - [soundQuality selectItemAtIndex:([prefs integerForKey:@"soundQuality"]-1)]; - [soundOn selectItemAtIndex:(![prefs integerForKey:@"soundOff"])]; - [soundEcho selectItemAtIndex:[prefs integerForKey:@"soundEcho"]]; - [soundLowPass selectItemAtIndex:[prefs integerForKey:@"soundLowPass"]]; - [soundReverseStereo selectItemAtIndex:[prefs integerForKey:@"soundReverse"]]; - [removeIntros selectItemAtIndex:[prefs integerForKey:@"removeIntros"]]; - [flashSize selectItemAtIndex:[prefs integerForKey:@"flashSize"]]; - [interframe selectItemAtIndex:[prefs integerForKey:@"ifbType"]]; - [showSpeed selectItemAtIndex:[prefs integerForKey:@"showSpeed"]]; - [autoFrameSkip selectItemAtIndex:[prefs integerForKey:@"autoFrameSkip"]]; - if ([prefs integerForKey:@"throttle"]) - [throttle selectItemAtIndex:1]; - else - [throttle selectItemAtIndex:0]; - [pauseWhenInactive selectItemAtIndex:[prefs integerForKey:@"pauseWhenInactive"]]; - [realtimeClock selectItemAtIndex:[prefs integerForKey:@"rtcEnabled"]]; - [changeFileType selectItemAtIndex:[prefs integerForKey:@"changeType"]]; -} - -- (void)closePrefs:(id)sender -{ - [prefs setInteger:[gbaFrameSkip indexOfSelectedItem] forKey:@"frameskip"]; - [prefs setInteger:[gbFrameSkip indexOfSelectedItem] forKey:@"gbFrameskip"]; - [prefs setInteger:[videoSize indexOfSelectedItem] forKey:@"sizeOption"]; - [prefs setInteger:[videoFullscreen indexOfSelectedItem] forKey:@"fullscreen"]; - [prefs setInteger:[useBios indexOfSelectedItem] forKey:@"useBios"]; - [prefs setInteger:[skipBios indexOfSelectedItem] forKey:@"skipBios"]; - [prefs setObject:biosPath forKey:@"biosFile"]; - [prefs setInteger:[videoFilter indexOfSelectedItem] forKey:@"filter"]; - if ([videoBorder indexOfSelectedItem] == 3) - { - [prefs setInteger:1 forKey:@"gbBorderAutomatic"]; - [prefs setInteger:0 forKey:@"gbBorderOn"]; - } - else - { - [prefs setInteger:[videoBorder indexOfSelectedItem] forKey:@"gbBorderOn"]; - [prefs setInteger:0 forKey:@"gbBorderAutomatic"]; - } - [prefs setInteger:[videoWashedColors indexOfSelectedItem] forKey:@"colorOption"]; - if (([soundQuality indexOfSelectedItem] + 1) == 3) - [prefs setInteger:4 forKey:@"soundQuality"]; - else - [prefs setInteger:([soundQuality indexOfSelectedItem] + 1) forKey:@"soundQuality"]; - [prefs setInteger:(![soundOn indexOfSelectedItem]) forKey:@"soundOff"]; - [prefs setInteger:[soundEcho indexOfSelectedItem] forKey:@"soundEcho"]; - [prefs setInteger:[soundLowPass indexOfSelectedItem] forKey:@"soundLowPass"]; - [prefs setInteger:[soundReverseStereo indexOfSelectedItem] forKey:@"soundReverse"]; - [prefs setInteger:[removeIntros indexOfSelectedItem] forKey:@"removeIntros"]; - [prefs setInteger:[flashSize indexOfSelectedItem] forKey:@"flashSize"]; - [prefs setInteger:0 forKey:@"ifbType"]; - [prefs setInteger:[showSpeed indexOfSelectedItem] forKey:@"showSpeed"]; - [prefs setInteger:[autoFrameSkip indexOfSelectedItem] forKey:@"autoFrameSkip"]; - if (![soundOn indexOfSelectedItem]) - { - if ([throttle indexOfSelectedItem]) - [prefs setInteger:65 forKey:@"throttle"]; - else - [prefs setInteger:0 forKey:@"throttle"]; - } - else - { - [prefs setInteger:0 forKey:@"throttle"]; - } - [prefs setInteger:[pauseWhenInactive indexOfSelectedItem] forKey:@"pauseWhenInactive"]; - [prefs setInteger:[realtimeClock indexOfSelectedItem] forKey:@"rtcEnabled"]; - [prefs setInteger:[interframe indexOfSelectedItem] forKey:@"ifbType"]; - [prefs setInteger:[changeFileType indexOfSelectedItem] forKey:@"changeType"]; - - [prefsWindow orderOut:self]; - [prefs synchronize]; - - paused = !paused; - SDL_PauseAudio(paused); - if(paused) - wasPaused = true; -} - - --(void) defaultPrefs:(id)sender -{ - BOOL isOK; - NSString * path = [NSString stringWithString:@"~/Library/Preferences/VisualBoyAdvance.plist"]; - path = [path stringByExpandingTildeInPath]; - - if( [[NSFileManager defaultManager] fileExistsAtPath:path] ) - isOK = [[NSFileManager defaultManager] removeFileAtPath:path handler:nil]; - - sdlSetDefaultPreferences(); - [self loadConfig]; -} - -- (void) openRomFromMenu:(id)sender -{ - if (emulating) - { - runAgain = 1; - emulating = false; - } - else - { - emu_main(); - } -} - --(void) changeCreator:(char *) filename -{ - NSNumber *fileType = [NSNumber numberWithUnsignedLong:'Cart']; - NSNumber *fileCreator = [NSNumber numberWithUnsignedLong:'vboy']; - - NSString * fileString = [[NSString alloc] initWithCString:filename]; - - [[NSFileManager defaultManager] changeFileAttributes:[NSDictionary dictionaryWithObject:fileType forKey:NSFileHFSTypeCode] atPath:fileString]; - - [[NSFileManager defaultManager] changeFileAttributes:[NSDictionary dictionaryWithObject:fileCreator forKey:NSFileHFSCreatorCode] atPath:fileString]; -} - --(void) changeSaveCreator:(char *) filename -{ - NSNumber *fileType = [NSNumber numberWithUnsignedLong:'savf']; - NSNumber *fileCreator = [NSNumber numberWithUnsignedLong:'vboy']; - - NSString * fileString = [[NSString alloc] initWithCString:filename]; - - [[NSFileManager defaultManager] changeFileAttributes:[NSDictionary dictionaryWithObject:fileType forKey:NSFileHFSTypeCode] atPath:fileString]; - - [[NSFileManager defaultManager] changeFileAttributes:[NSDictionary dictionaryWithObject:fileCreator forKey:NSFileHFSCreatorCode] atPath:fileString]; -} - --(void) changeSgmCreator:(char *) statename -{ - NSNumber *fileType = [NSNumber numberWithUnsignedLong:'sgmf']; - NSNumber *fileCreator = [NSNumber numberWithUnsignedLong:'vboy']; - - NSString * fileString = [[NSString alloc] initWithCString:statename]; - - [[NSFileManager defaultManager] changeFileAttributes:[NSDictionary dictionaryWithObject:fileType forKey:NSFileHFSTypeCode] atPath:fileString]; - - [[NSFileManager defaultManager] changeFileAttributes:[NSDictionary dictionaryWithObject:fileCreator forKey:NSFileHFSCreatorCode] atPath:fileString]; -} - --(void) selectBiosFile:(id)sender -{ - if(openBiosFile(biosFile)) - { - biosPath = [NSString stringWithCString:biosFile]; - [biosFilePath setStringValue:[biosPath lastPathComponent]]; - [biosPath retain]; - } -} - -/* Set the working directory to the .app's parent directory */ -- (void) setupWorkingDirectory:(BOOL)shouldChdir -{ - char parentdir[MAXPATHLEN]; - char *c; - - strncpy ( parentdir, gArgv[0], sizeof(parentdir) ); - c = (char*) parentdir; - - while (*c != '\0') /* go to end */ - c++; - - while (*c != '/') /* back up to parent */ - c--; - - *c++ = '\0'; /* cut off last part (binary name) */ - - if (shouldChdir) - { - assert ( chdir (parentdir) == 0 ); /* chdir to the binary app's parent */ - assert ( chdir ("../../../") == 0 ); /* chdir to the .app's parent */ - } -} - -- (void) addCheatCBA -{ - int i; - char desc[10]; - for (i=0; i<6; i++) - { - if (code[i][0] != '\0') - cheatsAddCBACode(code[i], desc); - } -} - -- (void) addCheatGSA -{ - int i; - char desc[10]; - for (i=0; i<6; i++) - { - if (code[i][0] != '\0') - cheatsAddGSACode(code[i], desc, false); - } -} - -/* Called before applicationDidFinishLaunching, handles associated file opening */ -- (BOOL) application: (NSApplication *) SDLApplication openFile: (NSString *) filename -{ - if (filename) - { - strcpy(launchFile, [filename UTF8String]); - if (emulating) - { - runAgain = 1; - emulating = false; - } - return TRUE; - } - else - { - return FALSE; - } -} - -/* Called when the internal event loop has just started running */ -- (void) applicationDidFinishLaunching: (NSNotification *) note -{ - - gSDLMain = self; - - /* Set the working directory to the .app's parent directory */ - //[self loadConfig]; - [self setupWorkingDirectory:gFinderLaunch]; - - /* Hand off to main application code */ - emu_main(); -} - -@end - -@implementation CheatClass - --(void) readCheatCBA:(id)sender -{ - cheatCBA = 1; - cheatString = [NSString stringWithString:[cheatField stringValue]]; - [cheatString getCString:code[0]]; - cheatString = [NSString stringWithString:[cheatField2 stringValue]]; - [cheatString getCString:code[1]]; - cheatString = [NSString stringWithString:[cheatField3 stringValue]]; - [cheatString getCString:code[2]]; - cheatString = [NSString stringWithString:[cheatField4 stringValue]]; - [cheatString getCString:code[3]]; - cheatString = [NSString stringWithString:[cheatField5 stringValue]]; - [cheatString getCString:code[4]]; - cheatString = [NSString stringWithString:[cheatField6 stringValue]]; - [cheatString getCString:code[5]]; - [cheatWindow orderOut:self]; -} - --(void) readCheatGSA:(id)sender -{ - cheatGSA = 1; - cheatString = [NSString stringWithString:[cheatFieldGSA stringValue]]; - [cheatString getCString:code[0]]; - cheatString = [NSString stringWithString:[cheatFieldGSA2 stringValue]]; - [cheatString getCString:code[1]]; - cheatString = [NSString stringWithString:[cheatFieldGSA3 stringValue]]; - [cheatString getCString:code[2]]; - cheatString = [NSString stringWithString:[cheatFieldGSA4 stringValue]]; - [cheatString getCString:code[3]]; - cheatString = [NSString stringWithString:[cheatFieldGSA5 stringValue]]; - [cheatString getCString:code[4]]; - cheatString = [NSString stringWithString:[cheatFieldGSA6 stringValue]]; - [cheatString getCString:code[5]]; - [cheatWindowGSA orderOut:self]; -} - - -- (BOOL)validateMenuItem:(NSMenuItem*)anItem -{ -if (emulating) - return NO; -else - return YES; -} - --(void) openCheatCBA:(id)sender -{ - [cheatWindow makeKeyAndOrderFront:self]; -} - --(void) openCheatGSA:(id)sender -{ - [cheatWindowGSA makeKeyAndOrderFront:self]; -} - --(void) disableCheats -{ - [cheatMenuCBA setAction:NULL]; - [cheatMenuGSA setAction:NULL]; -} - --(void) enableCheats -{ - [cheatMenuCBA setAction:@selector(openCheatCBA:)]; - [cheatMenuGSA setAction:@selector(openCheatGSA:)]; -} - - -@end - -@implementation MenuClass - -- (void) freezeState:(id)sender -{ -sdlWriteState(0); -} - -- (void) defrostState:(id)sender -{ -sdlReadState(0); -} - -- (void) closeRom:(id)sender -{ - emulating = false; -} - -// This is completely crazy. sdlEmuReset is declared in MainClass.h, which -// is included in SDL.mm, but then it is defined in SDL.mm. Madness. -// Restructure this. --(void) resetEmulation:(id)sender -{ - sdlEmuReset(); -} - --(void) pauseEmulation:(id)sender -{ - sdlEmuPause(); -} - --(void) advanceFrame:(id)sender -{ - sdlAdvanceFrame(); -} - --(void) toggleFullscreen:(id) sender -{ - // Passthrough to the C function. - sdlToggleFullscreen(); -} - -- (BOOL)validateMenuItem:(NSMenuItem*)anItem -{ -if (emulating) - return YES; -else - return NO; -} -@end - -@implementation ConfigClass - -- (BOOL)validateMenuItem:(NSMenuItem*)anItem -{ -if (emulating) - return NO; -else - return YES; -} - -- (void) closePrefsNull:(id)sender -{ - [configWindow orderOut:self]; - SDL_Quit(); -} - -- (void) beginConfig:(id)sender -{ -int num = config_main(); -[self loadKeyValues]; -[configWindow makeKeyAndOrderFront:self]; -if (num) - { - NSRunInformationalAlertPanel(@"Notice!", @"Before you configure your joystick(s), please press the Calibrate button and move your joystick(s) in all directions. Then press any key to exit the calibration and proceed to assign all keys.\n",@"OK",NULL,NULL); - [calibrateButton setEnabled:YES]; - } -else - { - [calibrateButton setEnabled:NO]; - } -} - -- (void) endConfig:(id)sender -{ - [configWindow orderOut:self]; - [configWindow release]; - [prefs setInteger:[leftField intValue] forKey:@"Joy0_Left"]; - [prefs setInteger:[rightField intValue] forKey:@"Joy0_Right"]; - [prefs setInteger:[upField intValue] forKey:@"Joy0_Up"]; - [prefs setInteger:[downField intValue] forKey:@"Joy0_Down"]; - [prefs setInteger:[aField intValue] forKey:@"Joy0_A"]; - [prefs setInteger:[bField intValue] forKey:@"Joy0_B"]; - [prefs setInteger:[lField intValue] forKey:@"Joy0_L"]; - [prefs setInteger:[rField intValue] forKey:@"Joy0_R"]; - [prefs setInteger:[startField intValue] forKey:@"Joy0_Start"]; - [prefs setInteger:[selectField intValue] forKey:@"Joy0_Select"]; - [prefs setInteger:[speedField intValue] forKey:@"Joy0_Speed"]; - [prefs setInteger:[captureField intValue] forKey:@"Joy0_Capture"]; - [prefs synchronize]; - SDL_Quit(); -} - --(void)loadKeyValues -{ - [leftField setIntValue:[prefs integerForKey:@"Joy0_Left"]]; - [rightField setIntValue:[prefs integerForKey:@"Joy0_Right"]]; - [upField setIntValue:[prefs integerForKey:@"Joy0_Up"]]; - [downField setIntValue:[prefs integerForKey:@"Joy0_Down"]]; - [aField setIntValue:[prefs integerForKey:@"Joy0_A"]]; - [bField setIntValue:[prefs integerForKey:@"Joy0_B"]]; - [lField setIntValue:[prefs integerForKey:@"Joy0_L"]]; - [rField setIntValue:[prefs integerForKey:@"Joy0_R"]]; - [startField setIntValue:[prefs integerForKey:@"Joy0_Start"]]; - [selectField setIntValue:[prefs integerForKey:@"Joy0_Select"]]; - [speedField setIntValue:[prefs integerForKey:@"Joy0_Speed"]]; - [captureField setIntValue:[prefs integerForKey:@"Joy0_Capture"]]; -} --(void)defaultKeys:(id)sender -{ - [prefs setInteger:0x0114 forKey:@"Joy0_Left"]; - [prefs setInteger:0x0113 forKey:@"Joy0_Right"]; - [prefs setInteger:0x0111 forKey:@"Joy0_Up"]; - [prefs setInteger:0x0112 forKey:@"Joy0_Down"]; - [prefs setInteger:0x007a forKey:@"Joy0_A"]; - [prefs setInteger:0x0078 forKey:@"Joy0_B"]; - [prefs setInteger:0x0061 forKey:@"Joy0_L"]; - [prefs setInteger:0x0073 forKey:@"Joy0_R"]; - [prefs setInteger:0x000d forKey:@"Joy0_Start"]; - [prefs setInteger:0x0008 forKey:@"Joy0_Select"]; - [prefs setInteger:0x0020 forKey:@"Joy0_Speed"]; - [prefs setInteger:0x003d forKey:@"Joy0_Capture"]; - [self loadKeyValues]; -} - -- (void)calibrate:(id)sender -{ - [OKButton setEnabled:NO]; - [CancelButton setEnabled:NO]; - [defaultButton setEnabled:NO]; - while (!stopPoll) { - calibrate(); - } - stopPoll = 0; - [OKButton setEnabled:YES]; - [CancelButton setEnabled:YES]; - [defaultButton setEnabled:YES]; -} - -- (void)pollUp:(id)sender -{ - [OKButton setEnabled:NO]; - [CancelButton setEnabled:NO]; - [defaultButton setEnabled:NO]; - while (!stopPoll) { - keyConfig[0] = poll(); - } - [upField setIntValue:keyConfig[0]]; - stopPoll = 0; - [OKButton setEnabled:YES]; - [CancelButton setEnabled:YES]; - [defaultButton setEnabled:YES]; -} - -- (void)pollDown:(id)sender -{ - [OKButton setEnabled:NO]; - [CancelButton setEnabled:NO]; - [defaultButton setEnabled:NO]; - while (!stopPoll) { - keyConfig[1] = poll(); - } - [downField setIntValue:keyConfig[1]]; - stopPoll = 0; - [OKButton setEnabled:YES]; - [CancelButton setEnabled:YES]; - [defaultButton setEnabled:YES]; -} - -- (void)pollLeft:(id)sender -{ - [OKButton setEnabled:NO]; - [CancelButton setEnabled:NO]; - [defaultButton setEnabled:NO]; - while (!stopPoll) { - keyConfig[2] = poll(); - } - [leftField setIntValue:keyConfig[2]]; - stopPoll = 0; - [OKButton setEnabled:YES]; - [CancelButton setEnabled:YES]; - [defaultButton setEnabled:YES]; -} - -- (void)pollRight:(id)sender -{ - [OKButton setEnabled:NO]; - [CancelButton setEnabled:NO]; - [defaultButton setEnabled:NO]; - while (!stopPoll) { - keyConfig[3] = poll(); - } - [rightField setIntValue:keyConfig[3]]; - stopPoll = 0; - [OKButton setEnabled:YES]; - [CancelButton setEnabled:YES]; - [defaultButton setEnabled:YES]; -} - -- (void)pollA:(id)sender -{ - [OKButton setEnabled:NO]; - [CancelButton setEnabled:NO]; - [defaultButton setEnabled:NO]; - while (!stopPoll) { - keyConfig[4] = poll(); - } - [aField setIntValue:keyConfig[4]]; - stopPoll = 0; - [OKButton setEnabled:YES]; - [CancelButton setEnabled:YES]; - [defaultButton setEnabled:YES]; -} - -- (void)pollB:(id)sender -{ - [OKButton setEnabled:NO]; - [CancelButton setEnabled:NO]; - [defaultButton setEnabled:NO]; - while (!stopPoll) { - keyConfig[5] = poll(); - } - [bField setIntValue:keyConfig[5]]; - stopPoll = 0; - [OKButton setEnabled:YES]; - [CancelButton setEnabled:YES]; - [defaultButton setEnabled:YES]; -} - -- (void)pollL:(id)sender -{ - [OKButton setEnabled:NO]; - [CancelButton setEnabled:NO]; - [defaultButton setEnabled:NO]; - while (!stopPoll) { - keyConfig[6] = poll(); - } - [lField setIntValue:keyConfig[6]]; - stopPoll = 0; - [OKButton setEnabled:YES]; - [CancelButton setEnabled:YES]; - [defaultButton setEnabled:YES]; -} - -- (void)pollR:(id)sender -{ - [OKButton setEnabled:NO]; - [CancelButton setEnabled:NO]; - [defaultButton setEnabled:NO]; - while (!stopPoll) { - keyConfig[7] = poll(); - } - [rField setIntValue:keyConfig[7]]; - stopPoll = 0; - [OKButton setEnabled:YES]; - [CancelButton setEnabled:YES]; - [defaultButton setEnabled:YES]; -} - -- (void)pollStart:(id)sender -{ - [OKButton setEnabled:NO]; - [CancelButton setEnabled:NO]; - [defaultButton setEnabled:NO]; - while (!stopPoll) { - keyConfig[8] = poll(); - } - [startField setIntValue:keyConfig[8]]; - stopPoll = 0; - [OKButton setEnabled:YES]; - [CancelButton setEnabled:YES]; - [defaultButton setEnabled:YES]; -} - -- (void)pollSelect:(id)sender -{ - [OKButton setEnabled:NO]; - [CancelButton setEnabled:NO]; - [defaultButton setEnabled:NO]; - while (!stopPoll) { - keyConfig[9] = poll(); - } - [selectField setIntValue:keyConfig[9]]; - stopPoll = 0; - [OKButton setEnabled:YES]; - [CancelButton setEnabled:YES]; - [defaultButton setEnabled:YES]; -} - -- (void)pollCapture:(id)sender -{ - [OKButton setEnabled:NO]; - [CancelButton setEnabled:NO]; - [defaultButton setEnabled:NO]; - while (!stopPoll) { - keyConfig[10] = poll(); - } - [captureField setIntValue:keyConfig[10]]; - stopPoll = 0; - [OKButton setEnabled:YES]; - [CancelButton setEnabled:YES]; - [defaultButton setEnabled:YES]; -} - -- (void)pollSpeed:(id)sender -{ - [OKButton setEnabled:NO]; - [CancelButton setEnabled:NO]; - [defaultButton setEnabled:NO]; - while (!stopPoll) { - keyConfig[11] = poll(); - } - [speedField setIntValue:keyConfig[11]]; - stopPoll = 0; - [OKButton setEnabled:YES]; - [CancelButton setEnabled:YES]; - [defaultButton setEnabled:YES]; -} - -@end - -#ifdef main -# undef main -#endif - -/* Main entry point to executable - should *not* be SDL_main! */ -int main (int argc, char **argv) -{ - - /* Copy the arguments into a global variable */ - int i; - - /* This is passed if we are launched by double-clicking */ - if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) { - gArgc = 1; - gFinderLaunch = YES; - } else { - gArgc = argc; - gFinderLaunch = NO; - } - gArgv = (char**) malloc (sizeof(*gArgv) * (gArgc+1)); - assert (gArgv != NULL); - for (i = 0; i < gArgc; i++) - gArgv[i] = argv[i]; - gArgv[i] = NULL; - - [SDLApplication poseAsClass:[NSApplication class]]; - NSApplicationMain (argc, (const char**)argv); - return 0; -} - -void emu_main() -{ - int status = 0; - /* Hand off to main application code */ - while(!done) - { - status = SDL_main (gArgc, gArgv); - if (runAgain) - { - runAgain = 0; - launchFile[0] = '\0'; - continue; - } - else - { - break; - } - } - - /* We're done, thank you for playing */ - if (done) - exit(status); - else - NSApplicationMain(gArgc, (const char**)gArgv); -} diff --git a/src/macosx/RomInfo.h b/src/macosx/RomInfo.h deleted file mode 100644 index fff0a5f8..00000000 --- a/src/macosx/RomInfo.h +++ /dev/null @@ -1,234 +0,0 @@ -/////// Rom Info -////// Included by SDL.m - - -/*struct WinGBACompanyName { - char *code; - char *name; -}; - -static WinGBACompanyName winGBARomInfoCompanies[] = { - { "01", "Nintendo" }, - { "02", "Rocket Games" }, - { "08", "Capcom" }, - { "09", "Hot B Co." }, - { "0A", "Jaleco" }, - { "0B", "Coconuts" }, - { "0C", "Coconuts Japan/Elite" }, - { "0H", "Starfish" }, - { "0L", "Warashi Inc." }, - { "13", "Electronic Arts Japan" }, - { "18", "Hudson Soft Japan" }, - { "1A", "Yonoman/Japan Art Media" }, - { "1P", "Creatures Inc." }, - { "20", "Destination Software" }, - { "22", "VR 1 Japan" }, - { "25", "San-X" }, - { "28", "Kemco Japan" }, - { "29", "Seta" }, - { "2K", "NEC InterChannel" }, - { "2L", "Tam" }, - { "2M", "GU Inc/Gajin/Jordan" }, - { "2N", "Smilesoft" }, - { "2Q", "Mediakite/Systemsoft Alpha Corp" }, - { "36", "Codemasters" }, - { "37", "GAGA Communications" }, - { "38", "Laguna" }, - { "39", "Telstar Fun and Games" }, - { "41", "Ubi Soft Entertainment" }, - { "47", "Spectrum Holobyte" }, - { "49", "IREM" }, - { "4D", "Malibu Games" }, - { "4F", "U.S. Gold" }, - { "4J", "Fox Interactive" }, - { "4K", "Time Warner Interactive" }, - { "4Q", "Disney" }, - { "4S", "EA SPORTS/THQ" }, - { "4X", "GT Interactive" }, - { "4Y", "RARE" }, - { "4Z", "Crave Entertainment" }, - { "50", "Absolute Entertainment" }, - { "51", "Acclaim" }, - { "52", "Activision" }, - { "53", "American Sammy Corp." }, - { "54", "Take 2 Interactive" }, - { "55", "Hi Tech" }, - { "56", "LJN LTD." }, - { "58", "Mattel" }, - { "5A", "Red Orb Entertainment" }, - { "5C", "Taxan" }, - { "5D", "Midway" }, - { "5G", "Majesco Sales Inc" }, - { "5H", "3DO" }, - { "5K", "Hasbro" }, - { "5L", "NewKidCo" }, - { "5M", "Telegames" }, - { "5N", "Metro3D" }, - { "5P", "Vatical Entertainment" }, - { "5Q", "LEGO Media" }, - { "5S", "Xicat Interactive" }, - { "5T", "Cryo Interactive" }, - { "5X", "Microids" }, - { "5W", "BKN Ent./Red Storm Ent." }, - { "5Z", "Conspiracy Entertainment Corp." }, - { "60", "Titus Interactive Studios" }, - { "61", "Virgin Interactive" }, - { "64", "LucasArts Entertainment" }, - { "67", "Ocean" }, - { "69", "Electronic Arts" }, - { "6E", "Elite Systems Ltd." }, - { "6F", "Electro Brain" }, - { "6H", "Crawfish" }, - { "6L", "BAM! Entertainment" }, - { "6M", "Studio 3" }, - { "6Q", "Classified Games" }, - { "6S", "TDK Mediactive" }, - { "6U", "DreamCatcher" }, - { "6V", "JoWood Productions" }, - { "6W", "SEGA" }, - { "6Y", "LSP" }, - { "70", "Infogrames" }, - { "71", "Interplay" }, - { "72", "JVC Musical Industries Inc" }, - { "75", "SCI" }, - { "78", "THQ" }, - { "79", "Accolade" }, - { "7A", "Triffix Ent. Inc." }, - { "7C", "Microprose Software" }, - { "7D", "Universal Interactive Studios" }, - { "7F", "Kemco" }, - { "7G", "Rage Software" }, - { "7M", "Asmik Ace Entertainment Inc./AIA" }, - { "83", "LOZC/G.Amusements" }, - { "8B", "Bulletproof Software" }, - { "8C", "Vic Tokai Inc." }, - { "8J", "General Entertainment" }, - { "8N", "Success" }, - { "8P", "SEGA Japan" }, - { "91", "Chun Soft" }, - { "93", "BEC" }, - { "97", "Kaneko" }, - { "99", "Victor Interactive Software" }, - { "9B", "Tecmo" }, - { "9C", "Imagineer" }, - { "9H", "Bottom Up" }, - { "9N", "Marvelous Entertainment" }, - { "9P", "Keynet Inc." }, - { "9Q", "Hands-On Entertainment" }, - { "A0", "Telenet/Olympia" }, - { "A1", "Hori" }, - { "A4", "Konami" }, - { "A6", "Kawada" }, - { "A7", "Takara" }, - { "A9", "Technos Japan Corp." }, - { "AC", "Toei Animation" }, - { "AD", "Toho" }, - { "AF", "Namco" }, - { "AG", "Media Rings Corporation/Amedio/Playmates" }, - { "AH", "J-Wing" }, - { "AK", "KID" }, - { "AL", "MediaFactory" }, - { "B0", "Acclaim Japan" }, - { "B1", "Nexoft" }, - { "B2", "Bandai" }, - { "B4", "Enix" }, - { "B6", "HAL Laboratory" }, - { "B7", "SNK" }, - { "B9", "Pony Canyon" }, - { "BA", "Culture Brain" }, - { "BB", "Sunsoft" }, - { "BD", "Sony Imagesoft" }, - { "BF", "Sammy" }, - { "BG", "Magical" }, - { "BJ", "Compile" }, - { "BL", "MTO Inc." }, - { "BN", "Sunrise Interactive" }, - { "BP", "Global A Entertainment" }, - { "BQ", "Fuuki" }, - { "C0", "Taito" }, - { "C2", "Kemco" }, - { "C3", "Square Soft" }, - { "C5", "Data East" }, - { "C6", "Broderbund Japan" }, - { "C8", "Koei" }, - { "CA", "Ultra Games" }, - { "CB", "Vapinc/NTVIC" }, - { "CC", "Use Co.,Ltd." }, - { "CE", "FCI" }, - { "CF", "Angel" }, - { "CM", "Konami Computer Enterteinment Osaka" }, - { "D1", "Sofel" }, - { "D3", "Sigma Enterprises" }, - { "D4", "Ask Kodansa/Lenar" }, - { "D7", "Copya System" }, - { "D9", "Banpresto" }, - { "DA", "TOMY" }, - { "DD", "NCS" }, - { "DF", "Altron Corporation" }, - { "E2", "Lad/Shogakukan.Nas/Yutaka" }, - { "E3", "Varie" }, - { "E5", "Epoch" }, - { "E7", "Athena" }, - { "E8", "Asmik Ace Entertainment Inc." }, - { "E9", "Natsume" }, - { "EA", "King Records" }, - { "EB", "Atlus" }, - { "EC", "Epic/Sony/Ocean" }, - { "EE", "IGS" }, - { "EL", "Vaill" }, - { "EM", "Konami Computer Entertainment Tokyo" }, - { "EN", "Alphadream Corporation" }, - { "F0", "A Wave" }, - { "HY", "Sachen" }, - { NULL, NULL } -}; - -static char *winGBARomInfoFindMakerCode(char *code) -{ - int i = 0; - while(winGBARomInfoCompanies[i].code) { - if(!strcmp(winGBARomInfoCompanies[i].code, code)) - return winGBARomInfoCompanies[i].name; - i++; - } - return 0; -}*/ - -if (showInfo) - { - char buffer[13]; - char maker[100]; - strncpy(buffer, (const char *)&rom[0xa0], 12); - buffer[12] = 0; - NSString * name = [[NSString alloc] initWithCString:buffer]; - [gSDLMain romInfoName:name]; - - strncpy(buffer, (const char *)&rom[0xac], 4); - buffer[4] = 0; - NSString * gameCode = [[NSString alloc] initWithCString:buffer]; - [gSDLMain romInfoGameCode:gameCode]; - - strncpy(buffer, (const char *)&rom[0xb0],2); - buffer[2] = 0; - NSString * makerCode = [[NSString alloc] initWithCString:buffer]; - [gSDLMain romInfoMakerCode:makerCode]; - - strcpy(maker, winGBARomInfoFindMakerCode(buffer)); - NSString * makerString = [[NSString alloc] initWithCString:maker]; - [gSDLMain romInfoMaker:makerString]; - - sprintf(buffer, "%02x", rom[0xb3]); - NSString * unitCode = [[NSString alloc] initWithCString:buffer]; - [gSDLMain romInfoUnitCode:unitCode]; - - sprintf(buffer, "%02x", rom[0xb4]); - NSString * deviceType = [[NSString alloc] initWithCString:buffer]; - [gSDLMain romInfoDeviceType:deviceType]; - - sprintf(buffer, "%02x", rom[0xbc]); - NSString * version = [[NSString alloc] initWithCString:buffer]; - [gSDLMain romInfoVersion:version]; - } - - -/////// diff --git a/src/macosx/SDL.mm b/src/macosx/SDL.mm deleted file mode 100644 index 59111b30..00000000 --- a/src/macosx/SDL.mm +++ /dev/null @@ -1,3114 +0,0 @@ -// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. -// Copyright (C) 1999-2003 Forgotten -// Copyright (C) 2005-2006 Forgotten and the VBA development team - -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2, or(at your option) -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software Foundation, -// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#include -#include -#include -#include -#include -#include - -#include "../AutoBuild.h" - -#include "SDL.h" -#include "../GBA.h" -#include "../agbprint.h" -#include "../Flash.h" -#include "../Port.h"a -#include "../RTC.h" -#include "../Sound.h" -#include "../Text.h" -#include "../unzip.h" -#include "../Util.h" -#include "../gb/GB.h" -#include "../gb/gbGlobals.h" -#include "openfile.h" -#include "MainClass.h" - -#ifndef _WIN32 -# include -# define GETCWD getcwd -#else // _WIN32 -# include -# define GETCWD _getcwd -#endif // _WIN32 - -#ifndef __GNUC__ -# define HAVE_DECL_GETOPT 0 -# define __STDC__ 1 -# include "../getopt.h" -#else // ! __GNUC__ -# define HAVE_DECL_GETOPT 1 -# include "getopt.h" -#endif // ! __GNUC__ - -#ifdef MMX -extern "C" bool cpu_mmx; -#endif -extern bool soundEcho; -extern bool soundLowPass; -extern bool soundReverse; -extern int Init_2xSaI(u32); -extern void _2xSaI(u8*,u32,u8*,u8*,u32,int,int); -extern void _2xSaI32(u8*,u32,u8*,u8*,u32,int,int); -extern void Super2xSaI(u8*,u32,u8*,u8*,u32,int,int); -extern void Super2xSaI32(u8*,u32,u8*,u8*,u32,int,int); -extern void SuperEagle(u8*,u32,u8*,u8*,u32,int,int); -extern void SuperEagle32(u8*,u32,u8*,u8*,u32,int,int); -extern void Pixelate(u8*,u32,u8*,u8*,u32,int,int); -extern void Pixelate32(u8*,u32,u8*,u8*,u32,int,int); -extern void MotionBlur(u8*,u32,u8*,u8*,u32,int,int); -extern void MotionBlur32(u8*,u32,u8*,u8*,u32,int,int); -extern void AdMame2x(u8*,u32,u8*,u8*,u32,int,int); -extern void AdMame2x32(u8*,u32,u8*,u8*,u32,int,int); -extern void Simple2x16(u8*,u32,u8*,u8*,u32,int,int); -extern void Simple2x32(u8*,u32,u8*,u8*,u32,int,int); -extern void Bilinear(u8*,u32,u8*,u8*,u32,int,int); -extern void Bilinear32(u8*,u32,u8*,u8*,u32,int,int); -extern void BilinearPlus(u8*,u32,u8*,u8*,u32,int,int); -extern void BilinearPlus32(u8*,u32,u8*,u8*,u32,int,int); -extern void Scanlines(u8*,u32,u8*,u8*,u32,int,int); -extern void Scanlines32(u8*,u32,u8*,u8*,u32,int,int); -extern void ScanlinesTV(u8*,u32,u8*,u8*,u32,int,int); -extern void ScanlinesTV32(u8*,u32,u8*,u8*,u32,int,int); -extern void hq2x(u8*,u32,u8*,u8*,u32,int,int); -extern void hq2x32(u8*,u32,u8*,u8*,u32,int,int); -extern void lq2x(u8*,u32,u8*,u8*,u32,int,int); -extern void lq2x32(u8*,u32,u8*,u8*,u32,int,int); - -extern void SmartIB(u8*,u32,int,int); -extern void SmartIB32(u8*,u32,int,int); -extern void MotionBlurIB(u8*,u32,int,int); -extern void MotionBlurIB32(u8*,u32,int,int); - -void Init_Overlay(SDL_Surface *surface, int overlaytype); -void Quit_Overlay(void); -void Draw_Overlay(SDL_Surface *surface, int size); - -extern void remoteInit(); -extern void remoteCleanUp(); -extern void remoteStubMain(); -extern void remoteStubSignal(int,int); -extern void remoteOutput(char *, u32); -extern void remoteSetProtocol(int); -extern void remoteSetPort(int); -extern void debuggerOutput(const char *, u32); - -extern void CPUUpdateRenderBuffers(bool); -extern int gbHardware; - -struct EmulatedSystem emulator = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - false, - 0 -}; - -#define prefs [NSUserDefaults standardUserDefaults] - -SDL_Surface *surface = NULL; -SDL_Overlay *overlay = NULL; -SDL_Rect overlay_rect; - -int systemSpeed = 0; -int systemRedShift = 0; -int systemBlueShift = 0; -int systemGreenShift = 0; -int systemColorDepth = 0; -int systemDebug = 0; -int systemVerbose = 0; -int systemFrameSkip = 0; -int systemSaveUpdateCounter = SYSTEM_SAVE_NOT_UPDATED; - -int srcPitch = 0; -int srcWidth = 0; -int srcHeight = 0; -int destWidth = 0; -int destHeight = 0; - -int sensorX = 2047; -int sensorY = 2047; - -int filter = 0; -u8 *delta = NULL; - -int sdlPrintUsage = 0; -int disableMMX = 0; - -int cartridgeType = 3; -int sizeOption = 0; -int captureFormat = 0; - -int pauseWhenInactive = 0; -int active = 1; -int emulating = 0; -int RGB_LOW_BITS_MASK=0x821; -u32 systemColorMap32[0x10000]; -u16 systemColorMap16[0x10000]; -u16 systemGbPalette[24]; -void (*filterFunction)(u8*,u32,u8*,u8*,u32,int,int) = NULL; -void (*ifbFunction)(u8*,u32,int,int) = NULL; -int ifbType = 0; -#define VBA_MAX_PATH_LEN 2048 -char filename[VBA_MAX_PATH_LEN]; -char ipsname[VBA_MAX_PATH_LEN]; -char biosFileName[VBA_MAX_PATH_LEN]; -char captureDir[VBA_MAX_PATH_LEN]; -char saveDir[VBA_MAX_PATH_LEN]; -char batteryDir[VBA_MAX_PATH_LEN]; - -static char *rewindMemory = NULL; -static int rewindPos = 0; -static int rewindTopPos = 0; -static int rewindCounter = 0; -static int rewindCount = 0; -static bool rewindSaveNeeded = false; -static int rewindTimer = 0; - -bool (*emuWriteState)(const char *) = NULL; -bool (*emuWriteMemState)(char *, int) = NULL; -bool (*emuReadState)(const char *) = NULL; -bool (*emuReadMemState)(char *, int) = NULL; -bool (*emuWriteBattery)(const char *) = NULL; -bool (*emuReadBattery)(const char *) = NULL; -void (*emuReset)() = NULL; -void (*emuCleanUp)() = NULL; -bool (*emuWritePNG)(const char *) = NULL; -bool (*emuWriteBMP)(const char *) = NULL; -void (*emuMain)(int) = NULL; -void (*emuUpdateCPSR)() = NULL; -int emuCount = 0; -int done = 0; -extern char launchFile[1024]; -extern void CPUUpdateCPSR(); -extern int runAgain, cheatCBA, cheatGSA; - -#define REWIND_SIZE 400000 -#define SYSMSG_BUFFER_SIZE 1024 - -#define _stricmp strcasecmp - -bool sdlButtons[4][12] = { - { false, false, false, false, false, false, - false, false, false, false, false, false }, - { false, false, false, false, false, false, - false, false, false, false, false, false }, - { false, false, false, false, false, false, - false, false, false, false, false, false }, - { false, false, false, false, false, false, - false, false, false, false, false, false } -}; - -bool sdlMotionButtons[4] = { false, false, false, false }; - -int sdlNumDevices = 0; -SDL_Joystick **sdlDevices = NULL; - -bool wasPaused = false; -int autoFrameSkip = 0; -int frameskipadjust = 0; -int showRenderedFrames = 0; -int renderedFrames = 0; - -int throttle = 0; -u32 throttleLastTime = 0; -u32 autoFrameSkipLastTime = 0; - -int showSpeed = 1; -int showSpeedTransparent = 1; -bool disableStatusMessages = false; -bool paused = false; -bool pauseNextFrame = false; -bool debugger = false; -bool debuggerStub = false; -int fullscreen = 0; -bool systemSoundOn = false; -bool yuv = false; -int yuvType = 0; -bool removeIntros = false; -int sdlFlashSize = 0; -int sdlAutoIPS = 1; -int sdlRtcEnable = 0; -int sdlAgbPrint = 0; -int sdlMirroringEnable = 0; - -int sdlDefaultJoypad = 0; - -extern void debuggerSignal(int,int); -extern void debuggerMain(); - -void (*dbgMain)() = debuggerMain; -void (*dbgSignal)(int,int) = debuggerSignal; -void (*dbgOutput)(const char *, u32) = debuggerOutput; - -int mouseCounter = 0; -int autoFire = 0; -bool autoFireToggle = false; - -bool screenMessage = false; -char screenMessageBuffer[21]; -u32 screenMessageTime = 0; - -// Patch #1382692 by deathpudding. -SDL_sem *sdlBufferLock = NULL; -SDL_sem *sdlBufferFull = NULL; -SDL_sem *sdlBufferEmpty = NULL; -u8 sdlBuffer[4096]; -int sdlSoundLen = 0; -BOOL soundInShutdown = NO; - -char *arg0; - -#ifndef C_CORE -u8 sdlStretcher[16384]; -int sdlStretcherPos; -#else -void (*sdlStretcher)(u8 *, u8*) = NULL; -#endif - -enum { - KEY_LEFT, KEY_RIGHT, - KEY_UP, KEY_DOWN, - KEY_BUTTON_A, KEY_BUTTON_B, - KEY_BUTTON_START, KEY_BUTTON_SELECT, - KEY_BUTTON_L, KEY_BUTTON_R, - KEY_BUTTON_SPEED, KEY_BUTTON_CAPTURE -}; - -u16 joypad[4][12] = { - { SDLK_LEFT, SDLK_RIGHT, - SDLK_UP, SDLK_DOWN, - SDLK_z, SDLK_x, - SDLK_RETURN,SDLK_BACKSPACE, - SDLK_a, SDLK_s, - SDLK_SPACE, SDLK_F12 - }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } -}; - -u16 defaultJoypad[12] = { - SDLK_LEFT, SDLK_RIGHT, - SDLK_UP, SDLK_DOWN, - SDLK_z, SDLK_x, - SDLK_RETURN,SDLK_BACKSPACE, - SDLK_a, SDLK_s, - SDLK_SPACE, SDLK_F12 -}; - -u16 motion[4] = { - SDLK_KP4, SDLK_KP6, SDLK_KP8, SDLK_KP2 -}; - -u16 defaultMotion[4] = { - SDLK_KP4, SDLK_KP6, SDLK_KP8, SDLK_KP2 -}; - -struct option sdlOptions[] = { - { "agb-print", no_argument, &sdlAgbPrint, 1 }, - { "auto-frameskip", no_argument, &autoFrameSkip, 1 }, - { "bios", required_argument, 0, 'b' }, - { "config", required_argument, 0, 'c' }, - { "debug", no_argument, 0, 'd' }, - { "filter", required_argument, 0, 'f' }, - { "filter-normal", no_argument, &filter, 0 }, - { "filter-tv-mode", no_argument, &filter, 1 }, - { "filter-2xsai", no_argument, &filter, 2 }, - { "filter-super-2xsai", no_argument, &filter, 3 }, - { "filter-super-eagle", no_argument, &filter, 4 }, - { "filter-pixelate", no_argument, &filter, 5 }, - { "filter-motion-blur", no_argument, &filter, 6 }, - { "filter-advmame", no_argument, &filter, 7 }, - { "filter-simple2x", no_argument, &filter, 8 }, - { "filter-bilinear", no_argument, &filter, 9 }, - { "filter-bilinear+", no_argument, &filter, 10 }, - { "filter-scanlines", no_argument, &filter, 11 }, - { "filter-hq2x", no_argument, &filter, 12 }, - { "filter-lq2x", no_argument, &filter, 13 }, - { "flash-size", required_argument, 0, 'S' }, - { "flash-64k", no_argument, &sdlFlashSize, 0 }, - { "flash-128k", no_argument, &sdlFlashSize, 1 }, - { "frameskip", required_argument, 0, 's' }, - { "fullscreen", no_argument, &fullscreen, 1 }, - { "gdb", required_argument, 0, 'G' }, - { "help", no_argument, &sdlPrintUsage, 1 }, - { "ifb-none", no_argument, &ifbType, 0 }, - { "ifb-motion-blur", no_argument, &ifbType, 1 }, - { "ifb-smart", no_argument, &ifbType, 2 }, - { "ips", required_argument, 0, 'i' }, - { "no-agb-print", no_argument, &sdlAgbPrint, 0 }, - { "no-auto-frameskip", no_argument, &autoFrameSkip, 0 }, - { "no-debug", no_argument, 0, 'N' }, - { "no-ips", no_argument, &sdlAutoIPS, 0 }, - { "no-mmx", no_argument, &disableMMX, 1 }, - { "no-pause-when-inactive", no_argument, &pauseWhenInactive, 0 }, - { "no-rtc", no_argument, &sdlRtcEnable, 0 }, - { "no-show-speed", no_argument, &showSpeed, 0 }, - { "no-throttle", no_argument, &throttle, 0 }, - { "pause-when-inactive", no_argument, &pauseWhenInactive, 1 }, - { "profile", optional_argument, 0, 'p' }, - { "rtc", no_argument, &sdlRtcEnable, 1 }, - { "save-type", required_argument, 0, 't' }, - { "save-auto", no_argument, &cpuSaveType, 0 }, - { "save-eeprom", no_argument, &cpuSaveType, 1 }, - { "save-sram", no_argument, &cpuSaveType, 2 }, - { "save-flash", no_argument, &cpuSaveType, 3 }, - { "save-sensor", no_argument, &cpuSaveType, 4 }, - { "save-none", no_argument, &cpuSaveType, 5 }, - { "show-speed-normal", no_argument, &showSpeed, 1 }, - { "show-speed-detailed", no_argument, &showSpeed, 2 }, - { "throttle", required_argument, 0, 'T' }, - { "verbose", required_argument, 0, 'v' }, - { "video-1x", no_argument, &sizeOption, 0 }, - { "video-2x", no_argument, &sizeOption, 1 }, - { "video-3x", no_argument, &sizeOption, 2 }, - { "video-4x", no_argument, &sizeOption, 3 }, - { "yuv", required_argument, 0, 'Y' }, - { NULL, no_argument, NULL, 0 } -}; - -extern bool CPUIsGBAImage(char *); -extern bool gbIsGameboyRom(char *); - -#ifndef C_CORE -#define SDL_LONG(val) \ -*((u32 *)&sdlStretcher[sdlStretcherPos]) = val;\ -sdlStretcherPos+=4; - -#define SDL_AND_EAX(val) \ -sdlStretcher[sdlStretcherPos++] = 0x25;\ -SDL_LONG(val); - -#define SDL_AND_EBX(val) \ -sdlStretcher[sdlStretcherPos++] = 0x81;\ -sdlStretcher[sdlStretcherPos++] = 0xe3;\ -SDL_LONG(val); - -#define SDL_OR_EAX_EBX \ -sdlStretcher[sdlStretcherPos++] = 0x09;\ -sdlStretcher[sdlStretcherPos++] = 0xd8; - -#define SDL_LOADL_EBX \ -sdlStretcher[sdlStretcherPos++] = 0x8b;\ -sdlStretcher[sdlStretcherPos++] = 0x1f; - -#define SDL_LOADW \ -sdlStretcher[sdlStretcherPos++] = 0x66;\ -sdlStretcher[sdlStretcherPos++] = 0x8b;\ -sdlStretcher[sdlStretcherPos++] = 0x06;\ -sdlStretcher[sdlStretcherPos++] = 0x83;\ -sdlStretcher[sdlStretcherPos++] = 0xc6;\ -sdlStretcher[sdlStretcherPos++] = 0x02; - -#define SDL_LOADL \ -sdlStretcher[sdlStretcherPos++] = 0x8b;\ -sdlStretcher[sdlStretcherPos++] = 0x06;\ -sdlStretcher[sdlStretcherPos++] = 0x83;\ -sdlStretcher[sdlStretcherPos++] = 0xc6;\ -sdlStretcher[sdlStretcherPos++] = 0x04; - -#define SDL_LOADL2 \ -sdlStretcher[sdlStretcherPos++] = 0x8b;\ -sdlStretcher[sdlStretcherPos++] = 0x06;\ -sdlStretcher[sdlStretcherPos++] = 0x83;\ -sdlStretcher[sdlStretcherPos++] = 0xc6;\ -sdlStretcher[sdlStretcherPos++] = 0x03; - -#define SDL_STOREW \ -sdlStretcher[sdlStretcherPos++] = 0x66;\ -sdlStretcher[sdlStretcherPos++] = 0x89;\ -sdlStretcher[sdlStretcherPos++] = 0x07;\ -sdlStretcher[sdlStretcherPos++] = 0x83;\ -sdlStretcher[sdlStretcherPos++] = 0xc7;\ -sdlStretcher[sdlStretcherPos++] = 0x02; - -#define SDL_STOREL \ -sdlStretcher[sdlStretcherPos++] = 0x89;\ -sdlStretcher[sdlStretcherPos++] = 0x07;\ -sdlStretcher[sdlStretcherPos++] = 0x83;\ -sdlStretcher[sdlStretcherPos++] = 0xc7;\ -sdlStretcher[sdlStretcherPos++] = 0x04; - -#define SDL_STOREL2 \ -sdlStretcher[sdlStretcherPos++] = 0x89;\ -sdlStretcher[sdlStretcherPos++] = 0x07;\ -sdlStretcher[sdlStretcherPos++] = 0x83;\ -sdlStretcher[sdlStretcherPos++] = 0xc7;\ -sdlStretcher[sdlStretcherPos++] = 0x03; - -#define SDL_RET \ -sdlStretcher[sdlStretcherPos++] = 0xc3; - -#define SDL_PUSH_EAX \ -sdlStretcher[sdlStretcherPos++] = 0x50; - -#define SDL_PUSH_ECX \ -sdlStretcher[sdlStretcherPos++] = 0x51; - -#define SDL_PUSH_EBX \ -sdlStretcher[sdlStretcherPos++] = 0x53; - -#define SDL_PUSH_ESI \ -sdlStretcher[sdlStretcherPos++] = 0x56; - -#define SDL_PUSH_EDI \ -sdlStretcher[sdlStretcherPos++] = 0x57; - -#define SDL_POP_EAX \ -sdlStretcher[sdlStretcherPos++] = 0x58; - -#define SDL_POP_ECX \ -sdlStretcher[sdlStretcherPos++] = 0x59; - -#define SDL_POP_EBX \ -sdlStretcher[sdlStretcherPos++] = 0x5b; - -#define SDL_POP_ESI \ -sdlStretcher[sdlStretcherPos++] = 0x5e; - -#define SDL_POP_EDI \ -sdlStretcher[sdlStretcherPos++] = 0x5f; - -#define SDL_MOV_ECX(val) \ -sdlStretcher[sdlStretcherPos++] = 0xb9;\ -SDL_LONG(val); - -#define SDL_REP_MOVSB \ -sdlStretcher[sdlStretcherPos++] = 0xf3;\ -sdlStretcher[sdlStretcherPos++] = 0xa4; - -#define SDL_REP_MOVSW \ -sdlStretcher[sdlStretcherPos++] = 0xf3;\ -sdlStretcher[sdlStretcherPos++] = 0x66;\ -sdlStretcher[sdlStretcherPos++] = 0xa5; - -#define SDL_REP_MOVSL \ -sdlStretcher[sdlStretcherPos++] = 0xf3;\ -sdlStretcher[sdlStretcherPos++] = 0xa5; - -void sdlMakeStretcher(int width) -{ - sdlStretcherPos = 0; - switch(systemColorDepth) { - case 16: - if(sizeOption) { - SDL_PUSH_EAX; - SDL_PUSH_ESI; - SDL_PUSH_EDI; - for(int i = 0; i < width; i++) { - SDL_LOADW; - SDL_STOREW; - SDL_STOREW; - if(sizeOption > 1) { - SDL_STOREW; - } - if(sizeOption > 2) { - SDL_STOREW; - } - } - SDL_POP_EDI; - SDL_POP_ESI; - SDL_POP_EAX; - SDL_RET; - } else { - SDL_PUSH_ESI; - SDL_PUSH_EDI; - SDL_PUSH_ECX; - SDL_MOV_ECX(width); - SDL_REP_MOVSW; - SDL_POP_ECX; - SDL_POP_EDI; - SDL_POP_ESI; - SDL_RET; - } - break; - case 24: - if(sizeOption) { - SDL_PUSH_EAX; - SDL_PUSH_ESI; - SDL_PUSH_EDI; - int w = width - 1; - for(int i = 0; i < w; i++) { - SDL_LOADL2; - SDL_STOREL2; - SDL_STOREL2; - if(sizeOption > 1) { - SDL_STOREL2; - } - if(sizeOption > 2) { - SDL_STOREL2; - } - } - // need to write the last one - SDL_LOADL2; - SDL_STOREL2; - if(sizeOption > 1) { - SDL_STOREL2; - } - if(sizeOption > 2) { - SDL_STOREL2; - } - SDL_AND_EAX(0x00ffffff); - SDL_PUSH_EBX; - SDL_LOADL_EBX; - SDL_AND_EBX(0xff000000); - SDL_OR_EAX_EBX; - SDL_POP_EBX; - SDL_STOREL2; - SDL_POP_EDI; - SDL_POP_ESI; - SDL_POP_EAX; - SDL_RET; - } else { - SDL_PUSH_ESI; - SDL_PUSH_EDI; - SDL_PUSH_ECX; - SDL_MOV_ECX(3*width); - SDL_REP_MOVSB; - SDL_POP_ECX; - SDL_POP_EDI; - SDL_POP_ESI; - SDL_RET; - } - break; - case 32: - if(sizeOption) { - SDL_PUSH_EAX; - SDL_PUSH_ESI; - SDL_PUSH_EDI; - for(int i = 0; i < width; i++) { - SDL_LOADL; - SDL_STOREL; - SDL_STOREL; - if(sizeOption > 1) { - SDL_STOREL; - } - if(sizeOption > 2) { - SDL_STOREL; - } - } - SDL_POP_EDI; - SDL_POP_ESI; - SDL_POP_EAX; - SDL_RET; - } else { - SDL_PUSH_ESI; - SDL_PUSH_EDI; - SDL_PUSH_ECX; - SDL_MOV_ECX(width); - SDL_REP_MOVSL; - SDL_POP_ECX; - SDL_POP_EDI; - SDL_POP_ESI; - SDL_RET; - } - break; - } -} - -#ifdef _MSC_VER -#define SDL_CALL_STRETCHER \ -{\ -__asm mov eax, stretcher\ -__asm mov edi, dest\ -__asm mov esi, src\ -__asm call eax\ -} -#else -#define SDL_CALL_STRETCHER \ -asm volatile("call *%%eax"::"a" (stretcher),"S" (src),"D" (dest)) -#endif -#else -#define SDL_CALL_STRETCHER \ -sdlStretcher(src, dest) - -void sdlStretch16x1(u8 *src, u8 *dest) -{ - u16 *s = (u16 *)src; - u16 *d = (u16 *)dest; - for(int i = 0; i < srcWidth; i++) - *d++ = *s++; -} - -void sdlStretch16x2(u8 *src, u8 *dest) -{ - u16 *s = (u16 *)src; - u16 *d = (u16 *)dest; - for(int i = 0; i < srcWidth; i++) { - *d++ = *s; - *d++ = *s++; - } -} - -void sdlStretch16x3(u8 *src, u8 *dest) -{ - u16 *s = (u16 *)src; - u16 *d = (u16 *)dest; - for(int i = 0; i < srcWidth; i++) { - *d++ = *s; - *d++ = *s; - *d++ = *s++; - } -} - -void sdlStretch16x4(u8 *src, u8 *dest) -{ - u16 *s = (u16 *)src; - u16 *d = (u16 *)dest; - for(int i = 0; i < srcWidth; i++) { - *d++ = *s; - *d++ = *s; - *d++ = *s; - *d++ = *s++; - } -} - -void (*sdlStretcher16[4])(u8 *, u8 *) = { - sdlStretch16x1, - sdlStretch16x2, - sdlStretch16x3, - sdlStretch16x4 -}; - -void sdlStretch32x1(u8 *src, u8 *dest) -{ - u32 *s = (u32 *)src; - u32 *d = (u32 *)dest; - for(int i = 0; i < srcWidth; i++) - *d++ = *s++; -} - -void sdlStretch32x2(u8 *src, u8 *dest) -{ - u32 *s = (u32 *)src; - u32 *d = (u32 *)dest; - for(int i = 0; i < srcWidth; i++) { - *d++ = *s; - *d++ = *s++; - } -} - -void sdlStretch32x3(u8 *src, u8 *dest) -{ - u32 *s = (u32 *)src; - u32 *d = (u32 *)dest; - for(int i = 0; i < srcWidth; i++) { - *d++ = *s; - *d++ = *s; - *d++ = *s++; - } -} - -void sdlStretch32x4(u8 *src, u8 *dest) -{ - u32 *s = (u32 *)src; - u32 *d = (u32 *)dest; - for(int i = 0; i < srcWidth; i++) { - *d++ = *s; - *d++ = *s; - *d++ = *s; - *d++ = *s++; - } -} - -void (*sdlStretcher32[4])(u8 *, u8 *) = { - sdlStretch32x1, - sdlStretch32x2, - sdlStretch32x3, - sdlStretch32x4 -}; - -void sdlStretch24x1(u8 *src, u8 *dest) -{ - u8 *s = src; - u8 *d = dest; - for(int i = 0; i < srcWidth; i++) { - *d++ = *s++; - *d++ = *s++; - *d++ = *s++; - } -} - -void sdlStretch24x2(u8 *src, u8 *dest) -{ - u8 *s = (u8 *)src; - u8 *d = (u8 *)dest; - for(int i = 0; i < srcWidth; i++) { - *d++ = *s; - *d++ = *(s+1); - *d++ = *(s+2); - s += 3; - *d++ = *s; - *d++ = *(s+1); - *d++ = *(s+2); - s += 3; - } -} - -void sdlStretch24x3(u8 *src, u8 *dest) -{ - u8 *s = (u8 *)src; - u8 *d = (u8 *)dest; - for(int i = 0; i < srcWidth; i++) { - *d++ = *s; - *d++ = *(s+1); - *d++ = *(s+2); - s += 3; - *d++ = *s; - *d++ = *(s+1); - *d++ = *(s+2); - s += 3; - *d++ = *s; - *d++ = *(s+1); - *d++ = *(s+2); - s += 3; - } -} - -void sdlStretch24x4(u8 *src, u8 *dest) -{ - u8 *s = (u8 *)src; - u8 *d = (u8 *)dest; - for(int i = 0; i < srcWidth; i++) { - *d++ = *s; - *d++ = *(s+1); - *d++ = *(s+2); - s += 3; - *d++ = *s; - *d++ = *(s+1); - *d++ = *(s+2); - s += 3; - *d++ = *s; - *d++ = *(s+1); - *d++ = *(s+2); - s += 3; - *d++ = *s; - *d++ = *(s+1); - *d++ = *(s+2); - s += 3; - } -} - -void (*sdlStretcher24[4])(u8 *, u8 *) = { - sdlStretch24x1, - sdlStretch24x2, - sdlStretch24x3, - sdlStretch24x4 -}; - -#endif - -u32 sdlFromHex(char *s) -{ - u32 value; - sscanf(s, "%x", &value); - return value; -} - -#ifdef __MSC__ -#define stat _stat -#define S_IFDIR _S_IFDIR -#endif - -void sdlCheckDirectory(char *dir) -{ - struct stat buf; - - int len = strlen(dir); - - char *p = dir + len - 1; - - if(*p == '/' || - *p == '\\') - *p = 0; - - if(stat(dir, &buf) == 0) { - if(!(buf.st_mode & S_IFDIR)) { - fprintf(stderr, "Error: %s is not a directory\n", dir); - dir[0] = 0; - } - } else { - fprintf(stderr, "Error: %s does not exist\n", dir); - dir[0] = 0; - } -} - -char *sdlGetFilename(char *name) -{ - static char filebuffer[2048]; - - int len = strlen(name); - - char *p = name + len - 1; - - while(true) { - if(*p == '/' || - *p == '\\') { - p++; - break; - } - len--; - p--; - if(len == 0) - break; - } - - if(len == 0) - strcpy(filebuffer, name); - else - strcpy(filebuffer, p); - return filebuffer; -} - -NSString *applicationSupportFolder() { - NSArray *paths = - NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, - NSUserDomainMask, YES); - NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex: - 0] : NSTemporaryDirectory(); - return [basePath - stringByAppendingPathComponent: [[NSBundle mainBundle] objectForInfoDictionaryKey: - @"CFBundleExecutable"]]; -} - -void sdlReadPreferences(FILE * f) -{ - joypad[0][KEY_LEFT] = [prefs integerForKey:@"Joy0_Left"]; - joypad[0][KEY_RIGHT] = [prefs integerForKey:@"Joy0_Right"]; - joypad[0][KEY_UP] = [prefs integerForKey:@"Joy0_Up"]; - joypad[0][KEY_DOWN] = [prefs integerForKey:@"Joy0_Down"]; - joypad[0][KEY_BUTTON_A] = [prefs integerForKey:@"Joy0_A"]; - joypad[0][KEY_BUTTON_B] = [prefs integerForKey:@"Joy0_B"]; - joypad[0][KEY_BUTTON_L] = [prefs integerForKey:@"Joy0_L"]; - joypad[0][KEY_BUTTON_R] = [prefs integerForKey:@"Joy0_R"]; - joypad[0][KEY_BUTTON_START] = [prefs integerForKey:@"Joy0_Start"]; - joypad[0][KEY_BUTTON_SELECT] = [prefs integerForKey:@"Joy0_Select"]; - joypad[0][KEY_BUTTON_SPEED] = [prefs integerForKey:@"Joy0_Speed"]; - joypad[0][KEY_BUTTON_CAPTURE] = [prefs integerForKey:@"Joy0_Capture"]; - //motion[KEY_LEFT] = [prefs integerForKey:@"Motion_Left"]; - //motion[KEY_RIGHT] = [prefs integerForKey:@"Motion_Right"]; - //motion[KEY_UP] = [prefs integerForKey:@"Motion_Up"]; - //motion[KEY_DOWN] = [prefs integerForKey:@"Motion_Down"]; - frameSkip = [prefs integerForKey:@"frameskip"]; - if(frameSkip < 0 || frameSkip > 9) - frameSkip = 2; - gbFrameSkip = [prefs integerForKey:@"gbFrameskip"]; - if(gbFrameSkip < 0 || gbFrameSkip > 9) - gbFrameSkip = 0; - sizeOption = [prefs integerForKey:@"sizeOption"]; - if(sizeOption < 0 || sizeOption > 3) - sizeOption = 0; - fullscreen = [prefs integerForKey:@"fullscreen"]; - useBios = [prefs integerForKey:@"useBios"]; - skipBios = [prefs integerForKey:@"skipBios"]; - NSString * bios = [prefs stringForKey:@"biosFile"]; - [bios getCString:biosFileName]; - filter = [prefs integerForKey:@"filter"]; - if(filter < 0 || filter > 13) - filter = 0; - gbBorderOn = [prefs integerForKey:@"gbBorderOn"]; - gbBorderAutomatic = [prefs integerForKey:@"gbBorderAutomatic"]; - gbColorOption = [prefs integerForKey:@"colorOption"]; - - // Set up our application support directories. Some people don't like this, and prefer - // the app to keep the folders near the app itself. Those people are wrong. - NSFileManager *fileManager = [NSFileManager defaultManager]; - NSString *appSupportFolder = applicationSupportFolder(); - - if (NO == [fileManager fileExistsAtPath: appSupportFolder]) { - [fileManager createDirectoryAtPath: appSupportFolder attributes:nil]; - } - - NSString *capture = [NSString stringWithFormat:@"%@/%@", appSupportFolder, @"Screenshots"]; - if (NO == [fileManager fileExistsAtPath: capture]) { - [fileManager createDirectoryAtPath: capture attributes: nil]; - } - [capture getCString:captureDir maxLength:(VBA_MAX_PATH_LEN - 1) encoding:NSUTF8StringEncoding]; - NSString *save = [NSString stringWithFormat:@"%@/%@", appSupportFolder, @"Save States"]; - if (NO == [fileManager fileExistsAtPath: save]) { - [fileManager createDirectoryAtPath: save attributes: nil]; - } - [save getCString:saveDir maxLength:(VBA_MAX_PATH_LEN - 1) encoding:NSUTF8StringEncoding]; - NSString *battery = [NSString stringWithFormat:@"%@/%@", appSupportFolder, @"Battery Saves"]; - if (NO == [fileManager fileExistsAtPath: battery]) { - [fileManager createDirectoryAtPath: battery attributes: nil]; - } - [battery getCString:batteryDir maxLength:(VBA_MAX_PATH_LEN - 1) encoding:NSUTF8StringEncoding]; - soundQuality = [prefs integerForKey:@"soundQuality"]; - switch(soundQuality) { - case 1: - case 2: - case 4: - break; - default: - NSLog(@"Unknown sound quality %d. Defaulting to 22Khz\n", - soundQuality); - soundQuality = 2; - break; - } - soundOffFlag = [prefs integerForKey:@"soundOff"]; - systemSoundOn = !soundOffFlag; - soundEcho = [prefs integerForKey:@"soundEcho"]; - soundLowPass = [prefs integerForKey:@"soundLowPass"]; - soundReverse = [prefs integerForKey:@"soundReverse"]; - removeIntros = [prefs integerForKey:@"removeIntros"]; - sdlFlashSize = [prefs integerForKey:@"flashSize"]; - if(sdlFlashSize != 0 && sdlFlashSize != 1) - sdlFlashSize = 0; - ifbType = [prefs integerForKey:@"ifbType"]; - if(ifbType < 0 || ifbType > 2) - ifbType = 0; - showSpeed = [prefs integerForKey:@"showSpeed"]; - if(showSpeed < 0 || showSpeed > 1) - showSpeed = 1; - showSpeedTransparent = showSpeed; - autoFrameSkip = [prefs integerForKey:@"autoFrameSkip"]; - throttle = [prefs integerForKey:@"throttle"]; - if(throttle != 0 && (throttle < 5 || throttle > 1000)) - throttle = 0; - pauseWhenInactive = [prefs integerForKey:@"pauseWhenInactive"]; - sdlRtcEnable = [prefs integerForKey:@"rtcEnabled"]; - changeType = [prefs integerForKey:@"changeType"]; -} - -void sdlSetDefaultPreferences() -{ - [prefs setInteger:0x0114 forKey:@"Joy0_Left"]; - [prefs setInteger:0x0113 forKey:@"Joy0_Right"]; - [prefs setInteger:0x0111 forKey:@"Joy0_Up"]; - [prefs setInteger:0x0112 forKey:@"Joy0_Down"]; - [prefs setInteger:0x007a forKey:@"Joy0_A"]; - [prefs setInteger:0x0078 forKey:@"Joy0_B"]; - [prefs setInteger:0x0061 forKey:@"Joy0_L"]; - [prefs setInteger:0x0073 forKey:@"Joy0_R"]; - [prefs setInteger:0x000d forKey:@"Joy0_Start"]; - [prefs setInteger:0x0008 forKey:@"Joy0_Select"]; - [prefs setInteger:0x0020 forKey:@"Joy0_Speed"]; - [prefs setInteger:0x003d forKey:@"Joy0_Capture"]; - [prefs setInteger:2 forKey:@"frameskip"]; - [prefs setInteger:0 forKey:@"gbFrameskip"]; - [prefs setInteger:0 forKey:@"sizeOption"]; - [prefs setInteger:0 forKey:@"fullscreen"]; - [prefs setInteger:0 forKey:@"useBios"]; - [prefs setInteger:0 forKey:@"skipBios"]; - [prefs setObject:@"gbasys.bin" forKey:@"biosFile"]; - [prefs setInteger:0 forKey:@"filter"]; - [prefs setInteger:0 forKey:@"gbBorderOn"]; - [prefs setInteger:1 forKey:@"gbBorderAutomatic"]; - [prefs setInteger:0 forKey:@"colorOption"]; - [prefs setInteger:2 forKey:@"soundQuality"]; - [prefs setInteger:0 forKey:@"soundOff"]; - [prefs setInteger:0 forKey:@"soundEcho"]; - [prefs setInteger:0 forKey:@"soundLowPass"]; - [prefs setInteger:0 forKey:@"soundReverse"]; - [prefs setInteger:0 forKey:@"removeIntros"]; - [prefs setInteger:1 forKey:@"flashSize"]; - [prefs setInteger:0 forKey:@"ifbType"]; - [prefs setInteger:0 forKey:@"showSpeed"]; - [prefs setInteger:0 forKey:@"autoFrameSkip"]; - [prefs setInteger:0 forKey:@"throttle"]; - [prefs setInteger:0 forKey:@"pauseWhenInactive"]; - [prefs setInteger:0 forKey:@"rtcEnabled"]; - [prefs setInteger:1 forKey:@"changeType"]; -} - -void sdlReadPreferences() -{ - if([prefs integerForKey:@"Version"] != 17) - { - [prefs setInteger:17 forKey:@"Version"]; - //set all defaults - sdlSetDefaultPreferences(); - } - - sdlReadPreferences(NULL); -} - -static void sdlApplyPerImagePreferences() -{ - //FILE *f = sdlFindFile("vba-over.ini"); - - FILE *f = nil; - if(!f) { - fprintf(stderr, "vba-over.ini NOT FOUND (using emulator settings)\n"); - return; - } else - fprintf(stderr, "Reading vba-over.ini\n"); - - char buffer[7]; - buffer[0] = '['; - buffer[1] = rom[0xac]; - buffer[2] = rom[0xad]; - buffer[3] = rom[0xae]; - buffer[4] = rom[0xaf]; - buffer[5] = ']'; - buffer[6] = 0; - - char readBuffer[2048]; - - bool found = false; - - while(1) { - char *s = fgets(readBuffer, 2048, f); - - if(s == NULL) - break; - - char *p = strchr(s, ';'); - - if(p) - *p = 0; - - char *token = strtok(s, " \t\n\r="); - - if(!token) - continue; - if(strlen(token) == 0) - continue; - - if(!strcmp(token, buffer)) { - found = true; - break; - } - } - - if(found) { - while(1) { - char *s = fgets(readBuffer, 2048, f); - - if(s == NULL) - break; - - char *p = strchr(s, ';'); - if(p) - *p = 0; - - char *token = strtok(s, " \t\n\r="); - if(!token) - continue; - if(strlen(token) == 0) - continue; - - if(token[0] == '[') // starting another image settings - break; - char *value = strtok(NULL, "\t\n\r="); - if(value == NULL) - continue; - - if(!strcmp(token, "rtcEnabled")) - rtcEnable(atoi(value) == 0 ? false : true); - else if(!strcmp(token, "flashSize")) { - int size = atoi(value); - if(size == 0x10000 || size == 0x20000) - flashSetSize(size); - } else if(!strcmp(token, "saveType")) { - int save = atoi(value); - if(save >= 0 && save <= 5) - cpuSaveType = save; - } else if(!strcmp(token, "mirroringEnabled")) { - mirroringEnable = (atoi(value) == 0 ? false : true); - } - } - } - fclose(f); -} - -static int sdlCalculateShift(u32 mask) -{ - int m = 0; - - while(mask) { - m++; - mask >>= 1; - } - - return m-5; -} - -static int sdlCalculateMaskWidth(u32 mask) -{ - int m = 0; - int mask2 = mask; - - while(mask2) { - m++; - mask2 >>= 1; - } - - int m2 = 0; - mask2 = mask; - while(!(mask2 & 1)) { - m2++; - mask2 >>= 1; - } - - return m - m2; -} - -void sdlWriteState(int num) -{ - char stateName[VBA_MAX_PATH_LEN]; - - if(saveDir[0]) - sprintf(stateName, "%s/%s%d.sgm", saveDir, sdlGetFilename(filename), - num+1); - else - sprintf(stateName,"%s%d.sgm", filename, num+1); - - if(emulator.emuWriteState) - emulator.emuWriteState(stateName); - - sprintf(stateName, "Wrote state %d", num+1); - systemScreenMessage(stateName); - - systemDrawScreen(); -} - -void sdlReadState(int num) -{ - char stateName[VBA_MAX_PATH_LEN]; - - if(saveDir[0]) - sprintf(stateName, "%s/%s%d.sgm", saveDir, sdlGetFilename(filename), - num+1); - else - sprintf(stateName,"%s%d.sgm", filename, num+1); - - if(emulator.emuReadState) - emulator.emuReadState(stateName); - - sprintf(stateName, "Loaded state %d", num+1); - systemScreenMessage(stateName); - - systemDrawScreen(); -} - -void sdlWriteBattery() -{ - char buffer[1048]; - - if(batteryDir[0]) - sprintf(buffer, "%s/%s.sav", batteryDir, sdlGetFilename(filename)); - else - sprintf(buffer, "%s.sav", filename); - - emulator.emuWriteBattery(buffer); - - // systemScreenMessage("Wrote battery"); -} - -void sdlReadBattery() -{ - char buffer[1048]; - - if(batteryDir[0]) - sprintf(buffer, "%s/%s.sav", batteryDir, sdlGetFilename(filename)); - else - sprintf(buffer, "%s.sav", filename); - - bool res = false; - - res = emulator.emuReadBattery(buffer); - - if(res) - systemScreenMessage("Loaded battery"); -} - -#define MOD_KEYS (KMOD_CTRL|KMOD_SHIFT|KMOD_ALT|KMOD_META) -#define MOD_NOCTRL (KMOD_SHIFT|KMOD_ALT|KMOD_META) -#define MOD_NOALT (KMOD_CTRL|KMOD_SHIFT|KMOD_META) -#define MOD_NOSHIFT (KMOD_CTRL|KMOD_ALT|KMOD_META) - -void sdlUpdateKey(int key, bool down) -{ - int i; - for(int j = 0; j < 4; j++) { - for(i = 0 ; i < 12; i++) { - if((joypad[j][i] & 0xf000) == 0) { - if(key == joypad[j][i]) - sdlButtons[j][i] = down; - } - } - } - for(i = 0 ; i < 4; i++) { - if((motion[i] & 0xf000) == 0) { - if(key == motion[i]) - sdlMotionButtons[i] = down; - } - } -} - -void sdlUpdateJoyButton(int which, - int button, - bool pressed) -{ - int i; - for(int j = 0; j < 4; j++) { - for(i = 0; i < 12; i++) { - int dev = (joypad[j][i] >> 12); - int b = joypad[j][i] & 0xfff; - if(dev) { - dev--; - - if((dev == which) && (b >= 128) && (b == (button+128))) { - sdlButtons[j][i] = pressed; - } - } - } - } - for(i = 0; i < 4; i++) { - int dev = (motion[i] >> 12); - int b = motion[i] & 0xfff; - if(dev) { - dev--; - - if((dev == which) && (b >= 128) && (b == (button+128))) { - sdlMotionButtons[i] = pressed; - } - } - } -} - -void sdlUpdateJoyHat(int which, - int hat, - int value) -{ - int i; - for(int j = 0; j < 4; j++) { - for(i = 0; i < 12; i++) { - int dev = (joypad[j][i] >> 12); - int a = joypad[j][i] & 0xfff; - if(dev) { - dev--; - - if((dev == which) && (a>=32) && (a < 48) && (((a&15)>>2) == hat)) { - int dir = a & 3; - int v = 0; - switch(dir) { - case 0: - v = value & SDL_HAT_UP; - break; - case 1: - v = value & SDL_HAT_DOWN; - break; - case 2: - v = value & SDL_HAT_RIGHT; - break; - case 3: - v = value & SDL_HAT_LEFT; - break; - } - sdlButtons[j][i] = (v ? true : false); - } - } - } - } - for(i = 0; i < 4; i++) { - int dev = (motion[i] >> 12); - int a = motion[i] & 0xfff; - if(dev) { - dev--; - - if((dev == which) && (a>=32) && (a < 48) && (((a&15)>>2) == hat)) { - int dir = a & 3; - int v = 0; - switch(dir) { - case 0: - v = value & SDL_HAT_UP; - break; - case 1: - v = value & SDL_HAT_DOWN; - break; - case 2: - v = value & SDL_HAT_RIGHT; - break; - case 3: - v = value & SDL_HAT_LEFT; - break; - } - sdlMotionButtons[i] = (v ? true : false); - } - } - } -} - -void sdlUpdateJoyAxis(int which, - int axis, - int value) -{ - int i; - for(int j = 0; j < 4; j++) { - for(i = 0; i < 12; i++) { - int dev = (joypad[j][i] >> 12); - int a = joypad[j][i] & 0xfff; - if(dev) { - dev--; - - if((dev == which) && (a < 32) && ((a>>1) == axis)) { - sdlButtons[j][i] = (a & 1) ? (value > 16384) : (value < -16384); - } - } - } - } - for(i = 0; i < 4; i++) { - int dev = (motion[i] >> 12); - int a = motion[i] & 0xfff; - if(dev) { - dev--; - - if((dev == which) && (a < 32) && ((a>>1) == axis)) { - sdlMotionButtons[i] = (a & 1) ? (value > 16384) : (value < -16384); - } - } - } -} - -bool sdlCheckJoyKey(int key) -{ - int dev = (key >> 12) - 1; - int what = key & 0xfff; - - if(what >= 128) { - // joystick button - int button = what - 128; - - if(button >= SDL_JoystickNumButtons(sdlDevices[dev])) - return false; - } else if (what < 0x20) { - // joystick axis - what >>= 1; - if(what >= SDL_JoystickNumAxes(sdlDevices[dev])) - return false; - } else if (what < 0x30) { - // joystick hat - what = (what & 15); - what >>= 2; - if(what >= SDL_JoystickNumHats(sdlDevices[dev])) - return false; - } - - // no problem found - return true; -} - -void sdlCheckKeys() -{ - sdlNumDevices = SDL_NumJoysticks(); - - if(sdlNumDevices) - sdlDevices = (SDL_Joystick **)calloc(1,sdlNumDevices * - sizeof(SDL_Joystick **)); - int i; - - bool usesJoy = false; - - for(int j = 0; j < 4; j++) { - for(i = 0; i < 12; i++) { - int dev = joypad[j][i] >> 12; - if(dev) { - dev--; - bool ok = false; - - if(sdlDevices) { - if(dev < sdlNumDevices) { - if(sdlDevices[dev] == NULL) { - sdlDevices[dev] = SDL_JoystickOpen(dev); - } - - ok = sdlCheckJoyKey(joypad[j][i]); - } else - ok = false; - } - - if(!ok) - joypad[j][i] = defaultJoypad[i]; - else - usesJoy = true; - } - } - } - - for(i = 0; i < 4; i++) { - int dev = motion[i] >> 12; - if(dev) { - dev--; - bool ok = false; - - if(sdlDevices) { - if(dev < sdlNumDevices) { - if(sdlDevices[dev] == NULL) { - sdlDevices[dev] = SDL_JoystickOpen(dev); - } - - ok = sdlCheckJoyKey(motion[i]); - } else - ok = false; - } - - if(!ok) - motion[i] = defaultMotion[i]; - else - usesJoy = true; - } - } - - if(usesJoy) - SDL_JoystickEventState(SDL_ENABLE); -} - -void sdlPollEvents() -{ - SDL_Event event; - while(SDL_PollEvent(&event)) { - switch(event.type) { - case SDL_QUIT: - emulating = 0; - break; - case SDL_ACTIVEEVENT: - if(pauseWhenInactive && (event.active.state & SDL_APPINPUTFOCUS)) { - active = event.active.gain; - if(active) { - if(!paused) { - if(emulating) - soundResume(); - } - } else { - wasPaused = true; - if(pauseWhenInactive) { - if(emulating) - soundPause(); - } - - memset(delta,255,sizeof(delta)); - } - } - break; - case SDL_MOUSEMOTION: - case SDL_MOUSEBUTTONUP: - case SDL_MOUSEBUTTONDOWN: - if(fullscreen) { - SDL_ShowCursor(SDL_ENABLE); - mouseCounter = 120; - } - break; - case SDL_JOYHATMOTION: - sdlUpdateJoyHat(event.jhat.which, - event.jhat.hat, - event.jhat.value); - break; - case SDL_JOYBUTTONDOWN: - case SDL_JOYBUTTONUP: - sdlUpdateJoyButton(event.jbutton.which, - event.jbutton.button, - event.jbutton.state == SDL_PRESSED); - break; - case SDL_JOYAXISMOTION: - sdlUpdateJoyAxis(event.jaxis.which, - event.jaxis.axis, - event.jaxis.value); - break; - case SDL_KEYDOWN: - sdlUpdateKey(event.key.keysym.sym, true); - break; - case SDL_KEYUP: - switch(event.key.keysym.sym) { - case SDLK_q: - if (event.key.keysym.mod & KMOD_META) { - done = true; - emulating = false; - } - break; - case SDLK_r: - if(event.key.keysym.mod & KMOD_META) { - if(emulating) { - emulator.emuReset(); - - systemScreenMessage("Reset"); - } - } - break; - case SDLK_b: - if(event.key.keysym.mod & KMOD_META) { - if(emulating && emulator.emuReadMemState && rewindMemory - && rewindCount) { - rewindPos = (rewindPos - 1) & 7; - emulator.emuReadMemState(&rewindMemory[REWIND_SIZE*rewindPos], - REWIND_SIZE); - rewindCount--; - rewindCounter = 0; - systemScreenMessage("Rewind"); - } - } - break; - case SDLK_p: - if(event.key.keysym.mod & KMOD_META) { - paused = !paused; - SDL_PauseAudio(paused); - if(paused) - wasPaused = true; - } - break; - case SDLK_ESCAPE: - sdlToggleFullscreen(); - break; - case SDLK_f: - if(event.key.keysym.mod & KMOD_CTRL) { - sdlToggleFullscreen(); - } - if (event.key.keysym.mod & KMOD_META) { - sdlWriteState(0); - } - break; - case SDLK_d: - if (event.key.keysym.mod & KMOD_META) { - sdlReadState(0); - } - case SDLK_F11: - if(dbgMain != debuggerMain) { - if(armState) { - armNextPC -= 4; - reg[15].I -= 4; - } else { - armNextPC -= 2; - reg[15].I -= 2; - } - } - debugger = true; - break; - case SDLK_F1: - case SDLK_F2: - case SDLK_F3: - case SDLK_F4: - case SDLK_F5: - case SDLK_F6: - case SDLK_F7: - case SDLK_F8: - case SDLK_F9: - case SDLK_F10: - if(!(event.key.keysym.mod & MOD_NOSHIFT) && - (event.key.keysym.mod & KMOD_SHIFT)) { - sdlWriteState(event.key.keysym.sym-SDLK_F1); - } else if(!(event.key.keysym.mod & MOD_KEYS)) { - sdlReadState(event.key.keysym.sym-SDLK_F1); - } - break; - case SDLK_1: - case SDLK_2: - case SDLK_3: - case SDLK_4: - if(!(event.key.keysym.mod & MOD_NOALT) && - (event.key.keysym.mod & KMOD_ALT)) { - char *disableMessages[4] = - { "autofire A disabled", - "autofire B disabled", - "autofire R disabled", - "autofire L disabled"}; - char *enableMessages[4] = - { "autofire A", - "autofire B", - "autofire R", - "autofire L"}; - int mask = 1 << (event.key.keysym.sym - SDLK_1); - if(event.key.keysym.sym > SDLK_2) - mask <<= 6; - if(autoFire & mask) { - autoFire &= ~mask; - systemScreenMessage(disableMessages[event.key.keysym.sym - SDLK_1]); - } else { - autoFire |= mask; - systemScreenMessage(enableMessages[event.key.keysym.sym - SDLK_1]); - } - } if(!(event.key.keysym.mod & MOD_NOCTRL) && - (event.key.keysym.mod & KMOD_CTRL)) { - int mask = 0x0100 << (event.key.keysym.sym - SDLK_1); - layerSettings ^= mask; - layerEnable = DISPCNT & layerSettings; - CPUUpdateRenderBuffers(false); - } - break; - case SDLK_5: - case SDLK_6: - case SDLK_7: - case SDLK_8: - if(!(event.key.keysym.mod & MOD_NOCTRL) && - (event.key.keysym.mod & KMOD_CTRL)) { - int mask = 0x0100 << (event.key.keysym.sym - SDLK_1); - layerSettings ^= mask; - layerEnable = DISPCNT & layerSettings; - } - break; - case SDLK_n: - if(event.key.keysym.mod & KMOD_META) { - if(paused) - paused = false; - pauseNextFrame = true; - } - break; - default: - break; - } - sdlUpdateKey(event.key.keysym.sym, false); - break; - } - } -} - -void usage(char *cmd) -{ - printf("%s [option ...] file\n", cmd); - printf("\ - \n\ - Options:\n\ - -1, --video-1x 1x\n\ - -2, --video-2x 2x\n\ - -3, --video-3x 3x\n\ - -4, --video-4x 4x\n\ - -F, --fullscreen Full screen\n\ - -G, --gdb=PROTOCOL GNU Remote Stub mode:\n\ - tcp - use TCP at port 55555\n\ - tcp:PORT - use TCP at port PORT\n\ - pipe - use pipe transport\n\ - -N, --no-debug Don't parse debug information\n\ - -S, --flash-size=SIZE Set the Flash size\n\ - --flash-64k 0 - 64K Flash\n\ - --flash-128k 1 - 128K Flash\n\ - -T, --throttle=THROTTLE Set the desired throttle (5...1000)\n\ - -Y, --yuv=TYPE Use YUV overlay for drawing:\n\ - 0 - YV12\n\ - 1 - UYVY\n\ - 2 - YVYU\n\ - 3 - YUY2\n\ - 4 - IYUV\n\ - -b, --bios=BIOS Use given bios file\n\ - -c, --config=FILE Read the given configuration file\n\ - -d, --debug Enter debugger\n\ - -f, --filter=FILTER Select filter:\n\ - --filter-normal 0 - normal mode\n\ - --filter-tv-mode 1 - TV Mode\n\ - --filter-2xsai 2 - 2xSaI\n\ - --filter-super-2xsai 3 - Super 2xSaI\n\ - --filter-super-eagle 4 - Super Eagle\n\ - --filter-pixelate 5 - Pixelate\n\ - --filter-motion-blur 6 - Motion Blur\n\ - --filter-advmame 7 - AdvanceMAME Scale2x\n\ - --filter-simple2x 8 - Simple2x\n\ - --filter-bilinear 9 - Bilinear\n\ - --filter-bilinear+ 10 - Bilinear Plus\n\ - --filter-scanlines 11 - Scanlines\n\ - --filter-hq2x 12 - hq2x\n\ - --filter-lq2x 13 - lq2x\n\ - -h, --help Print this help\n\ - -i, --ips=PATCH Apply given IPS patch\n\ - -p, --profile=[HERTZ] Enable profiling\n\ - -s, --frameskip=FRAMESKIP Set frame skip (0...9)\n\ - "); - printf("\ - -t, --save-type=TYPE Set the available save type\n\ - --save-auto 0 - Automatic (EEPROM, SRAM, FLASH)\n\ - --save-eeprom 1 - EEPROM\n\ - --save-sram 2 - SRAM\n\ - --save-flash 3 - FLASH\n\ - --save-sensor 4 - EEPROM+Sensor\n\ - --save-none 5 - NONE\n\ - -v, --verbose=VERBOSE Set verbose logging (trace.log)\n\ - 1 - SWI\n\ - 2 - Unaligned memory access\n\ - 4 - Illegal memory write\n\ - 8 - Illegal memory read\n\ - 16 - DMA 0\n\ - 32 - DMA 1\n\ - 64 - DMA 2\n\ - 128 - DMA 3\n\ - 256 - Undefined instruction\n\ - 512 - AGBPrint messages\n\ - \n\ - Long options only:\n\ - --agb-print Enable AGBPrint support\n\ - --auto-frameskip Enable auto frameskipping\n\ - --ifb-none No interframe blending\n\ - --ifb-motion-blur Interframe motion blur\n\ - --ifb-smart Smart interframe blending\n\ - --no-agb-print Disable AGBPrint support\n\ - --no-auto-frameskip Disable auto frameskipping\n\ - --no-ips Do not apply IPS patch\n\ - --no-mmx Disable MMX support\n\ - --no-pause-when-inactive Don't pause when inactive\n\ - --no-rtc Disable RTC support\n\ - --no-show-speed Don't show emulation speed\n\ - --no-throttle Disable thrrotle\n\ - --pause-when-inactive Pause when inactive\n\ - --rtc Enable RTC support\n\ - --show-speed-normal Show emulation speed\n\ - --show-speed-detailed Show detailed speed data\n\ - "); -} - -int main(int argc, char **argv) -{ - bool failed = false; - - char szFile[1024]; - captureDir[0] = 0; - saveDir[0] = 0; - batteryDir[0] = 0; - ipsname[0] = 0; - - frameSkip = 2; - gbBorderOn = 0; - - sdlReadPreferences(); - - if(sdlFlashSize == 0) - flashSetSize(0x10000); - else - flashSetSize(0x20000); - - rtcEnable(sdlRtcEnable ? true : false); - agbPrintEnable(sdlAgbPrint ? true : false); - - if(filter) { - sizeOption = 1; - } - - for(int i = 0; i < 24;) { - systemGbPalette[i++] = (0x1f) | (0x1f << 5) | (0x1f << 10); - systemGbPalette[i++] = (0x15) | (0x15 << 5) | (0x15 << 10); - systemGbPalette[i++] = (0x0c) | (0x0c << 5) | (0x0c << 10); - systemGbPalette[i++] = 0; - } - - szFile[0] = '\0'; - - if (launchFile[0] != '\0') - strcpy(szFile, launchFile); - else - openFile(szFile); - - if(szFile[0] != '\0') - { - - if (changeType) - [gSDLMain changeCreator:szFile]; - strcpy(filename, szFile); - char *p = strrchr(filename, '.'); - - if(p) - *p = 0; - - if(ipsname[0] == 0) - sprintf(ipsname, "%s.ips", filename); - - IMAGE_TYPE type = utilFindType(szFile); - - if(type == IMAGE_UNKNOWN) { - systemMessage(0, "Unknown file type %s", szFile); - exit(-1); - } - cartridgeType = (int)type; - - if(type == IMAGE_GB) { - failed = !gbLoadRom(szFile); - if(!failed) { - emulator = GBASystem; - cartridgeType = 1; - emuWriteState = gbWriteSaveState; - emuWriteMemState = gbWriteMemSaveState; - emuReadState = gbReadSaveState; - emuReadMemState = gbReadMemSaveState; - emuWriteBattery = gbWriteBatteryFile; - emuReadBattery = gbReadBatteryFile; - emuReset = gbReset; - emuCleanUp = gbCleanUp; - emuWritePNG = gbWritePNGFile; - emuWriteBMP = gbWriteBMPFile; - emuMain = gbEmulate; - emuUpdateCPSR = NULL; - emuCount = 70000/4; - if(sdlAutoIPS) { - int size = gbRomSize; - utilApplyIPS(ipsname, &gbRom, &size); - if(size != gbRomSize) { - extern bool gbUpdateSizes(); - gbUpdateSizes(); - gbReset(); - } - } - } - } else if(type == IMAGE_GBA) { - int size = CPULoadRom(szFile); - failed = (size == 0); - if(!failed) { - //if(cpuEnhancedDetection && cpuSaveType == 0) { - //utilGBAFindSave(rom, size); - //} - emulator = GBASystem; - - cartridgeType = 0; - emuWriteState = CPUWriteState; - emuWriteMemState = CPUWriteMemState; - emuReadState = CPUReadState; - emuReadMemState = CPUReadMemState; - emuWriteBattery = CPUWriteBatteryFile; - emuReadBattery = CPUReadBatteryFile; - emuReset = CPUReset; - emuCleanUp = CPUCleanUp; - emuWritePNG = CPUWritePNGFile; - emuWriteBMP = CPUWriteBMPFile; - emuMain = CPULoop; - emuUpdateCPSR = CPUUpdateCPSR; - emuCount = 50000; - - if(removeIntros && rom != NULL) { - WRITE32LE(&rom[0], 0xea00002e); - } - - CPUInit(biosFileName, useBios); - CPUReset(); - if(sdlAutoIPS) { - int size = 0x2000000; - utilApplyIPS(ipsname, &rom, &size); - if(size != 0x2000000) { - CPUReset(); - } - } - } - } - - if(failed) { - systemMessage(0, "Failed to load file %s", szFile); - return 0; - } - } else { - return 0; - } - - sdlReadBattery(); - - if (cheatCBA == 1 && cartridgeType == 0) - { - [gSDLMain addCheatCBA]; - cheatCBA = 0; - } - - if (cheatGSA == 1 && cartridgeType == 0) - { - [gSDLMain addCheatGSA]; - cheatGSA = 0; - } - - int flags = SDL_INIT_VIDEO|SDL_INIT_AUDIO| - SDL_INIT_TIMER|SDL_INIT_NOPARACHUTE; - - if(soundOffFlag) - flags ^= SDL_INIT_AUDIO; - - if(SDL_Init(flags)) { - systemMessage(0, "Failed to init SDL: %s", SDL_GetError()); - exit(-1); - } - - if(SDL_InitSubSystem(SDL_INIT_JOYSTICK)) { - systemMessage(0, "Failed to init joystick support: %s", SDL_GetError()); - } - - sdlCheckKeys(); - - if(cartridgeType == 0) { - srcWidth = 240; - srcHeight = 160; - systemFrameSkip = frameSkip; - } else if (cartridgeType == 1) { - if(gbBorderOn) { - srcWidth = 256; - srcHeight = 224; - gbBorderLineSkip = 256; - gbBorderColumnSkip = 48; - gbBorderRowSkip = 40; - } else { - srcWidth = 160; - srcHeight = 144; - gbBorderLineSkip = 160; - gbBorderColumnSkip = 0; - gbBorderRowSkip = 0; - } - systemFrameSkip = gbFrameSkip; - } else { - srcWidth = 320; - srcHeight = 240; - } - - destWidth = (sizeOption+1)*srcWidth; - destHeight = (sizeOption+1)*srcHeight; - - surface = SDL_SetVideoMode(destWidth, destHeight, 0, SDL_SWSURFACE); - - if(surface == NULL) { - systemMessage(0, "Failed to set video mode"); - SDL_Quit(); - return 0; - } - - systemRedShift = sdlCalculateShift(surface->format->Rmask); - systemGreenShift = sdlCalculateShift(surface->format->Gmask); - systemBlueShift = sdlCalculateShift(surface->format->Bmask); - - systemColorDepth = surface->format->BitsPerPixel; - if(systemColorDepth == 15) - systemColorDepth = 16; - - if(systemColorDepth != 16 && systemColorDepth != 24 && - systemColorDepth != 32) { - systemMessage(0,"Unsupported color depth '%d'.\nOnly 16, 24 and 32 bit color depths are supported\n", systemColorDepth); - SDL_Quit(); - return 0; - } - - surface = SDL_SetVideoMode(destWidth, destHeight, 0, SDL_SWSURFACE | (fullscreen ? SDL_FULLSCREEN : 0)); - - if(surface == NULL) { - systemMessage(0, "Failed to set video mode"); - SDL_Quit(); - return 0; - } - - SDL_ShowCursor(!fullscreen); - - switch(systemColorDepth) { - case 16: - sdlStretcher = sdlStretcher16[sizeOption]; - break; - case 24: - sdlStretcher = sdlStretcher24[sizeOption]; - break; - case 32: - sdlStretcher = sdlStretcher32[sizeOption]; - break; - default: - fprintf(stderr, "Unsupported resolution: %d\n", systemColorDepth); - exit(-1); - } - - //fprintf(stderr,"Color depth: %d\n", systemColorDepth); - - if(systemColorDepth == 16) { - if(sdlCalculateMaskWidth(surface->format->Gmask) == 6) { - Init_2xSaI(565); - RGB_LOW_BITS_MASK = 0x821; - } else { - Init_2xSaI(555); - RGB_LOW_BITS_MASK = 0x421; - } - if(cartridgeType == 2) { - for(int i = 0; i < 0x10000; i++) { - systemColorMap16[i] = (((i >> 1) & 0x1f) << systemBlueShift) | - (((i & 0x7c0) >> 6) << systemGreenShift) | - (((i & 0xf800) >> 11) << systemRedShift); - } - } else { - for(int i = 0; i < 0x10000; i++) { - systemColorMap16[i] = ((i & 0x1f) << systemRedShift) | - (((i & 0x3e0) >> 5) << systemGreenShift) | - (((i & 0x7c00) >> 10) << systemBlueShift); - } - } - srcPitch = srcWidth * 2+4; - } else { - if(systemColorDepth != 32) - filterFunction = NULL; - RGB_LOW_BITS_MASK = 0x010101; - if(systemColorDepth == 32) { - Init_2xSaI(32); - } - for(int i = 0; i < 0x10000; i++) { - systemColorMap32[i] = ((i & 0x1f) << systemRedShift) | - (((i & 0x3e0) >> 5) << systemGreenShift) | - (((i & 0x7c00) >> 10) << systemBlueShift); - } - if(systemColorDepth == 32) - srcPitch = srcWidth*4 + 4; - else - srcPitch = srcWidth*3; - } - - if(systemColorDepth != 32) { - switch(filter) { - case 0: - filterFunction = NULL; - break; - case 1: - filterFunction = ScanlinesTV; - break; - case 2: - filterFunction = _2xSaI; - break; - case 3: - filterFunction = Super2xSaI; - break; - case 4: - filterFunction = SuperEagle; - break; - case 5: - filterFunction = Pixelate; - break; - case 6: - filterFunction = MotionBlur; - break; - case 7: - filterFunction = AdMame2x; - break; - case 8: - filterFunction = Simple2x16; - break; - case 9: - filterFunction = Bilinear; - break; - case 10: - filterFunction = BilinearPlus; - break; - case 11: - filterFunction = Scanlines; - break; - case 12: - filterFunction = hq2x; - break; - case 13: - filterFunction = lq2x; - break; - default: - filterFunction = NULL; - break; - } - } else { - switch(filter) { - case 0: - filterFunction = NULL; - break; - case 1: - filterFunction = ScanlinesTV32; - break; - case 2: - filterFunction = _2xSaI32; - break; - case 3: - filterFunction = Super2xSaI32; - break; - case 4: - filterFunction = SuperEagle32; - break; - case 5: - filterFunction = Pixelate32; - break; - case 6: - filterFunction = MotionBlur32; - break; - case 7: - filterFunction = AdMame2x32; - break; - case 8: - filterFunction = Simple2x32; - break; - case 9: - filterFunction = Bilinear32; - break; - case 10: - filterFunction = BilinearPlus32; - break; - case 11: - filterFunction = Scanlines32; - break; - case 12: - filterFunction = hq2x32; - break; - case 13: - filterFunction = lq2x32; - break; - default: - filterFunction = NULL; - break; - } - } - - if(systemColorDepth == 16) { - switch(ifbType) { - case 0: - default: - ifbFunction = NULL; - break; - case 1: - ifbFunction = MotionBlurIB; - break; - case 2: - ifbFunction = SmartIB; - break; - } - } else if(systemColorDepth == 32) { - switch(ifbType) { - case 0: - default: - ifbFunction = NULL; - break; - case 1: - ifbFunction = MotionBlurIB32; - break; - case 2: - ifbFunction = SmartIB32; - break; - } - } else - ifbFunction = NULL; - - if(delta == NULL) { - delta = (u8*)malloc(322*242*4); - memset(delta, 255, 322*242*4); - } - - emulating = 1; - renderedFrames = 0; - - if(!soundOffFlag) - soundInit(); - - autoFrameSkipLastTime = throttleLastTime = systemGetClock(); - - SDL_WM_SetCaption("VBA", NULL); - - while(emulating) { - sdlPollEvents(); - if(!paused && active) - emuMain(emuCount); - else - SDL_Delay(500); - } - - emulating = 0; - //fprintf(stderr,"Shutting down\n"); - systemDrawScreen(); - soundShutdown(); - - if(gbRom != NULL || rom != NULL) { - - sdlWriteBattery(); - emuCleanUp(); - } - - if(delta) { - free(delta); - delta = NULL; - } - SDL_Quit(); - return 0; -} - -void systemMessage(int num, const char *msg, ...) -{ - char buffer[SYSMSG_BUFFER_SIZE*2]; - va_list valist; - - va_start(valist, msg); - vsprintf(buffer, msg, valist); - - fprintf(stderr, "%s\n", buffer); - va_end(valist); -} - -void systemDrawScreen() -{ - renderedFrames++; - - if(yuv) { - Draw_Overlay(surface, sizeOption+1); - return; - } - - SDL_LockSurface(surface); - - if(screenMessage) { - if(cartridgeType == 1 && gbBorderOn) { - gbSgbRenderBorder(); - } - if(((systemGetClock() - screenMessageTime) < 3000) && - !disableStatusMessages) { - drawText(pix, srcPitch, 10, srcHeight - 20, - screenMessageBuffer); - } else { - screenMessage = false; - } - } - - if(ifbFunction) { - if(systemColorDepth == 16) - ifbFunction(pix+destWidth+4, destWidth+4, srcWidth, srcHeight); - else - ifbFunction(pix+destWidth*2+4, destWidth*2+4, srcWidth, srcHeight); - } - - if(filterFunction) { - if(systemColorDepth == 16) - filterFunction(pix+destWidth+4,destWidth+4, delta, - (u8*)surface->pixels,surface->pitch, - srcWidth, - srcHeight); - else - filterFunction(pix+destWidth*2+4, - destWidth*2+4, - delta, - (u8*)surface->pixels, - surface->pitch, - srcWidth, - srcHeight); - } else { - int destPitch = surface->pitch; - u8 *src = pix; - u8 *dest = (u8*)surface->pixels; - int i; - u32 *stretcher = (u32 *)sdlStretcher; - if(systemColorDepth == 16) - src += srcPitch; - int option = sizeOption; - if(yuv) - option = 0; - switch(sizeOption) { - case 0: - for(i = 0; i < srcHeight; i++) { - SDL_CALL_STRETCHER; - src += srcPitch; - dest += destPitch; - } - break; - case 1: - for(i = 0; i < srcHeight; i++) { - SDL_CALL_STRETCHER; - dest += destPitch; - SDL_CALL_STRETCHER; - src += srcPitch; - dest += destPitch; - } - break; - case 2: - for(i = 0; i < srcHeight; i++) { - SDL_CALL_STRETCHER; - dest += destPitch; - SDL_CALL_STRETCHER; - dest += destPitch; - SDL_CALL_STRETCHER; - src += srcPitch; - dest += destPitch; - } - break; - case 3: - for(i = 0; i < srcHeight; i++) { - SDL_CALL_STRETCHER; - dest += destPitch; - SDL_CALL_STRETCHER; - dest += destPitch; - SDL_CALL_STRETCHER; - dest += destPitch; - SDL_CALL_STRETCHER; - src += srcPitch; - dest += destPitch; - } - break; - } - } - - if(showSpeed && fullscreen) { - char buffer[50]; - if(showSpeed == 1) - sprintf(buffer, "%d%%", systemSpeed); - else - sprintf(buffer, "%3d%%(%d, %d fps)", systemSpeed, - systemFrameSkip, - showRenderedFrames); - if(showSpeedTransparent) - drawTextTransp((u8*)surface->pixels, - surface->pitch, - 10, - surface->h-20, - buffer); - else - drawText((u8*)surface->pixels, - surface->pitch, - 10, - surface->h-20, - buffer); - } - - SDL_UnlockSurface(surface); - // SDL_UpdateRect(surface, 0, 0, destWidth, destHeight); - SDL_Flip(surface); -} - -bool systemReadJoypads() -{ - return true; -} - -u32 systemReadJoypad(int which) -{ - if(which < 0 || which > 3) - which = sdlDefaultJoypad; - - u32 res = 0; - - if(sdlButtons[which][KEY_BUTTON_A]) - res |= 1; - if(sdlButtons[which][KEY_BUTTON_B]) - res |= 2; - if(sdlButtons[which][KEY_BUTTON_SELECT]) - res |= 4; - if(sdlButtons[which][KEY_BUTTON_START]) - res |= 8; - if(sdlButtons[which][KEY_RIGHT]) - res |= 16; - if(sdlButtons[which][KEY_LEFT]) - res |= 32; - if(sdlButtons[which][KEY_UP]) - res |= 64; - if(sdlButtons[which][KEY_DOWN]) - res |= 128; - if(sdlButtons[which][KEY_BUTTON_R]) - res |= 256; - if(sdlButtons[which][KEY_BUTTON_L]) - res |= 512; - - // disallow L+R or U+D of being pressed at the same time - if((res & 48) == 48) - res &= ~16; - if((res & 192) == 192) - res &= ~128; - - if(sdlButtons[which][KEY_BUTTON_SPEED]) - res |= 1024; - if(sdlButtons[which][KEY_BUTTON_CAPTURE]) - res |= 2048; - - if(autoFire) { - res &= (~autoFire); - if(autoFireToggle) - res |= autoFire; - autoFireToggle = !autoFireToggle; - } - - return res; -} - -void systemSetTitle(const char *title) -{ - SDL_WM_SetCaption(title, NULL); -} - -void systemShowSpeed(int speed) -{ - systemSpeed = speed; - - showRenderedFrames = renderedFrames; - renderedFrames = 0; - - if(!fullscreen && showSpeed) { - char buffer[80]; - if(showSpeed == 1) - sprintf(buffer, "VisualBoyAdvance-%3d%%", systemSpeed); - else - sprintf(buffer, "VisualBoyAdvance-%3d%%(%d, %d fps)", systemSpeed, - systemFrameSkip, - showRenderedFrames); - - systemSetTitle(buffer); - } -} - -void systemFrame() -{ -} - -void system10Frames(int rate) -{ - u32 time = systemGetClock(); - if(!wasPaused && autoFrameSkip && !throttle) { - u32 diff = time - autoFrameSkipLastTime; - int speed = 100; - - if(diff) - speed = (1000000/rate)/diff; - - if(speed >= 98) { - frameskipadjust++; - - if(frameskipadjust >= 3) { - frameskipadjust=0; - if(systemFrameSkip > 0) - systemFrameSkip--; - } - } else { - if(speed < 80) - frameskipadjust -= (90 - speed)/5; - else if(systemFrameSkip < 9) - frameskipadjust--; - - if(frameskipadjust <= -2) { - frameskipadjust += 2; - if(systemFrameSkip < 9) - systemFrameSkip++; - } - } - } - if(!wasPaused && throttle) { - if(!speedup) { - u32 diff = time - throttleLastTime; - - int target = (1000000/(rate*throttle)); - int d = (target - diff); - - if(d > 0) { - SDL_Delay(d); - } - } - throttleLastTime = systemGetClock(); - } - if(rewindMemory) { - if(++rewindCounter >= rewindTimer) { - rewindSaveNeeded = true; - rewindCounter = 0; - } - } - - if(systemSaveUpdateCounter) { - if(--systemSaveUpdateCounter <= SYSTEM_SAVE_NOT_UPDATED) { - sdlWriteBattery(); - systemSaveUpdateCounter = SYSTEM_SAVE_NOT_UPDATED; - } - } - - wasPaused = false; - autoFrameSkipLastTime = time; -} - -void systemScreenCapture(int a) -{ - char buffer[VBA_MAX_PATH_LEN]; - - if(captureFormat) { - if(captureDir[0]) - sprintf(buffer, "%s/%s%02d.bmp", captureDir, sdlGetFilename(filename), a); - else - sprintf(buffer, "%s%02d.bmp", filename, a); - - emulator.emuWriteBMP(buffer); - } else { - if(captureDir[0]) - sprintf(buffer, "%s/%s%02d.png", captureDir, sdlGetFilename(filename), a); - else - sprintf(buffer, "%s%02d.png", filename, a); - emulator.emuWritePNG(buffer); - } - - systemScreenMessage("Screen capture"); -} - -void soundCallback(void *,u8 *stream,int len) -{ - if (!emulating || soundInShutdown) - return; - - // Patch #1382692 by deathpudding. - /* since this is running in a different thread, speedup and - * throttle can change at any time; save the value so locks - * stay in sync */ - bool lock = (!speedup && !throttle) ? true : false; - - if (lock) - SDL_SemWait (sdlBufferFull); - - SDL_SemWait (sdlBufferLock); - memcpy (stream, sdlBuffer, len); - sdlSoundLen = 0; - SDL_SemPost (sdlBufferLock); - - if (lock) - SDL_SemPost (sdlBufferEmpty); -} - -void systemWriteDataToSoundBuffer() -{ - // Patch #1382692 by deathpudding. - if (SDL_GetAudioStatus () != SDL_AUDIO_PLAYING) - SDL_PauseAudio (0); - - if ((sdlSoundLen + soundBufferLen) >= 2048*2) { - bool lock = (!speedup && !throttle) ? true : false; - - if (lock) - SDL_SemWait (sdlBufferEmpty); - - SDL_SemWait (sdlBufferLock); - int copied = 2048*2 - sdlSoundLen; - memcpy (sdlBuffer + sdlSoundLen, soundFinalWave, copied); - sdlSoundLen = 2048*2; - SDL_SemPost (sdlBufferLock); - - if (lock) { - SDL_SemPost (sdlBufferFull); - - /* wait for buffer to be dumped by soundCallback() */ - SDL_SemWait (sdlBufferEmpty); - SDL_SemPost (sdlBufferEmpty); - - SDL_SemWait (sdlBufferLock); - memcpy (sdlBuffer, ((u8 *)soundFinalWave) + copied, - soundBufferLen - copied); - sdlSoundLen = soundBufferLen - copied; - SDL_SemPost (sdlBufferLock); - } - else { - SDL_SemWait (sdlBufferLock); - memcpy (sdlBuffer, ((u8 *) soundFinalWave) + copied, soundBufferLen); - SDL_SemPost (sdlBufferLock); - } - } - else { - SDL_SemWait (sdlBufferLock); - memcpy (sdlBuffer + sdlSoundLen, soundFinalWave, soundBufferLen); - sdlSoundLen += soundBufferLen; - SDL_SemPost (sdlBufferLock); - } -} - -bool systemSoundInit() -{ - SDL_AudioSpec audio; - soundInShutdown = NO; - - switch(soundQuality) { - case 1: - audio.freq = 44100; - soundBufferLen = 1470*2; - break; - case 2: - audio.freq = 22050; - soundBufferLen = 736*2; - break; - case 4: - audio.freq = 11025; - soundBufferLen = 368*2; - break; - } - audio.format=AUDIO_S16SYS; - audio.channels = 2; - audio.samples = 1024; - audio.callback = soundCallback; - audio.userdata = NULL; - if(SDL_OpenAudio(&audio, NULL)) { - fprintf(stderr,"Failed to open audio: %s\n", SDL_GetError()); - return false; - } - soundBufferTotalLen = soundBufferLen*10; - // Patch #1382692 by deathpudding. - sdlBufferLock = SDL_CreateSemaphore (1); - sdlBufferFull = SDL_CreateSemaphore (0); - sdlBufferEmpty = SDL_CreateSemaphore (1); - sdlSoundLen = 0; - systemSoundOn = true; - return true; -} - -void systemSoundShutdown() -{ - // Patch #1382692 by deathpudding. - psoundTickfn(); - - // Make sure that all waiters exit. - soundInShutdown = YES; - - SDL_SemPost(sdlBufferFull); - SDL_CloseAudio (); - SDL_DestroySemaphore (sdlBufferLock); - SDL_DestroySemaphore (sdlBufferFull); - SDL_DestroySemaphore (sdlBufferEmpty); - sdlBufferLock = NULL; - sdlBufferFull = NULL; - sdlBufferEmpty = NULL; -} - -void systemSoundPause() -{ - SDL_PauseAudio(1); -} - -void systemSoundResume() -{ - SDL_PauseAudio(0); -} - -void systemSoundReset() -{ -} - -u32 systemGetClock() -{ - return SDL_GetTicks(); -} - -void systemUpdateMotionSensor() -{ - if(sdlMotionButtons[KEY_LEFT]) { - sensorX += 3; - if(sensorX > 2197) - sensorX = 2197; - if(sensorX < 2047) - sensorX = 2057; - } else if(sdlMotionButtons[KEY_RIGHT]) { - sensorX -= 3; - if(sensorX < 1897) - sensorX = 1897; - if(sensorX > 2047) - sensorX = 2037; - } else if(sensorX > 2047) { - sensorX -= 2; - if(sensorX < 2047) - sensorX = 2047; - } else { - sensorX += 2; - if(sensorX > 2047) - sensorX = 2047; - } - - if(sdlMotionButtons[KEY_UP]) { - sensorY += 3; - if(sensorY > 2197) - sensorY = 2197; - if(sensorY < 2047) - sensorY = 2057; - } else if(sdlMotionButtons[KEY_DOWN]) { - sensorY -= 3; - if(sensorY < 1897) - sensorY = 1897; - if(sensorY > 2047) - sensorY = 2037; - } else if(sensorY > 2047) { - sensorY -= 2; - if(sensorY < 2047) - sensorY = 2047; - } else { - sensorY += 2; - if(sensorY > 2047) - sensorY = 2047; - } -} - -int systemGetSensorX() -{ - return sensorX; -} - -int systemGetSensorY() -{ - return sensorY; -} - -void systemGbPrint(u8 *data,int pages,int feed,int palette, int contrast) -{ -} - -void systemScreenMessage(const char *msg) -{ - screenMessage = true; - screenMessageTime = systemGetClock(); - if(strlen(msg) > 20) { - strncpy(screenMessageBuffer, msg, 20); - screenMessageBuffer[20] = 0; - } else - strcpy(screenMessageBuffer, msg); -} - -bool systemCanChangeSoundQuality() -{ - return false; -} - -bool systemPauseOnFrame() -{ - if(pauseNextFrame) { - paused = true; - pauseNextFrame = false; - return true; - } - return false; -} - -// Code donated by Niels Wagenaar (BoycottAdvance) - -// GBA screensize. -#define GBA_WIDTH 240 -#define GBA_HEIGHT 160 - -void Init_Overlay(SDL_Surface *gbascreen, int overlaytype) -{ - - overlay = SDL_CreateYUVOverlay( GBA_WIDTH, - GBA_HEIGHT, - overlaytype, gbascreen); - fprintf(stderr, "Created %dx%dx%d %s %s overlay\n", - overlay->w,overlay->h,overlay->planes, - overlay->hw_overlay?"hardware":"software", - overlay->format==SDL_YV12_OVERLAY?"YV12": - overlay->format==SDL_IYUV_OVERLAY?"IYUV": - overlay->format==SDL_YUY2_OVERLAY?"YUY2": - overlay->format==SDL_UYVY_OVERLAY?"UYVY": - overlay->format==SDL_YVYU_OVERLAY?"YVYU": - "Unknown"); -} - -void Quit_Overlay(void) -{ - - SDL_FreeYUVOverlay(overlay); -} - -/* NOTE: These RGB conversion functions are not intended for speed, - only as examples. - */ -inline void RGBtoYUV(Uint8 *rgb, int *yuv) -{ - yuv[0] = (int)((0.257 * rgb[0]) + (0.504 * rgb[1]) + (0.098 * rgb[2]) + 16); - yuv[1] = (int)(128 - (0.148 * rgb[0]) - (0.291 * rgb[1]) + (0.439 * rgb[2])); - yuv[2] = (int)(128 + (0.439 * rgb[0]) - (0.368 * rgb[1]) - (0.071 * rgb[2])); -} - -inline void ConvertRGBtoYV12(SDL_Overlay *o) -{ - int x,y; - int yuv[3]; - Uint8 *p,*op[3]; - - SDL_LockYUVOverlay(o); - - /* Black initialization */ - /* - memset(o->pixels[0],0,o->pitches[0]*o->h); - memset(o->pixels[1],128,o->pitches[1]*((o->h+1)/2)); - memset(o->pixels[2],128,o->pitches[2]*((o->h+1)/2)); - */ - - /* Convert */ - for(y=0; y<160 && yh; y++) { - p=(Uint8 *)pix+srcPitch*y; - op[0]=o->pixels[0]+o->pitches[0]*y; - op[1]=o->pixels[1]+o->pitches[1]*(y/2); - op[2]=o->pixels[2]+o->pitches[2]*(y/2); - for(x=0; x<240 && xw; x++) { - RGBtoYUV(p,yuv); - *(op[0]++)=yuv[0]; - if(x%2==0 && y%2==0) { - *(op[1]++)=yuv[2]; - *(op[2]++)=yuv[1]; - } - p+=4;//s->format->BytesPerPixel; - } - } - - SDL_UnlockYUVOverlay(o); -} - -inline void ConvertRGBtoIYUV(SDL_Overlay *o) -{ - int x,y; - int yuv[3]; - Uint8 *p,*op[3]; - - SDL_LockYUVOverlay(o); - - /* Black initialization */ - /* - memset(o->pixels[0],0,o->pitches[0]*o->h); - memset(o->pixels[1],128,o->pitches[1]*((o->h+1)/2)); - memset(o->pixels[2],128,o->pitches[2]*((o->h+1)/2)); - */ - - /* Convert */ - for(y=0; y<160 && yh; y++) { - p=(Uint8 *)pix+srcPitch*y; - op[0]=o->pixels[0]+o->pitches[0]*y; - op[1]=o->pixels[1]+o->pitches[1]*(y/2); - op[2]=o->pixels[2]+o->pitches[2]*(y/2); - for(x=0; x<240 && xw; x++) { - RGBtoYUV(p,yuv); - *(op[0]++)=yuv[0]; - if(x%2==0 && y%2==0) { - *(op[1]++)=yuv[1]; - *(op[2]++)=yuv[2]; - } - p+=4; //s->format->BytesPerPixel; - } - } - - SDL_UnlockYUVOverlay(o); -} - -inline void ConvertRGBtoUYVY(SDL_Overlay *o) -{ - int x,y; - int yuv[3]; - Uint8 *p,*op; - - SDL_LockYUVOverlay(o); - - for(y=0; y<160 && yh; y++) { - p=(Uint8 *)pix+srcPitch*y; - op=o->pixels[0]+o->pitches[0]*y; - for(x=0; x<240 && xw; x++) { - RGBtoYUV(p,yuv); - if(x%2==0) { - *(op++)=yuv[1]; - *(op++)=yuv[0]; - *(op++)=yuv[2]; - } else - *(op++)=yuv[0]; - - p+=4; //s->format->BytesPerPixel; - } - } - - SDL_UnlockYUVOverlay(o); -} - -inline void ConvertRGBtoYVYU(SDL_Overlay *o) -{ - int x,y; - int yuv[3]; - Uint8 *p,*op; - - SDL_LockYUVOverlay(o); - - for(y=0; y<160 && yh; y++) { - p=(Uint8 *)pix+srcPitch*y; - op=o->pixels[0]+o->pitches[0]*y; - for(x=0; x<240 && xw; x++) { - RGBtoYUV(p,yuv); - if(x%2==0) { - *(op++)=yuv[0]; - *(op++)=yuv[2]; - op[1]=yuv[1]; - } else { - *op=yuv[0]; - op+=2; - } - - p+=4; //s->format->BytesPerPixel; - } - } - - SDL_UnlockYUVOverlay(o); -} - -inline void ConvertRGBtoYUY2(SDL_Overlay *o) -{ - int x,y; - int yuv[3]; - Uint8 *p,*op; - - SDL_LockYUVOverlay(o); - - for(y=0; y<160 && yh; y++) { - p=(Uint8 *)pix+srcPitch*y; - op=o->pixels[0]+o->pitches[0]*y; - for(x=0; x<240 && xw; x++) { - RGBtoYUV(p,yuv); - if(x%2==0) { - *(op++)=yuv[0]; - *(op++)=yuv[1]; - op[1]=yuv[2]; - } else { - *op=yuv[0]; - op+=2; - } - - p+=4; //s->format->BytesPerPixel; - } - } - - SDL_UnlockYUVOverlay(o); -} - -inline void Convert32bit(SDL_Surface *display) -{ - switch(overlay->format) { - case SDL_YV12_OVERLAY: - ConvertRGBtoYV12(overlay); - break; - case SDL_UYVY_OVERLAY: - ConvertRGBtoUYVY(overlay); - break; - case SDL_YVYU_OVERLAY: - ConvertRGBtoYVYU(overlay); - break; - case SDL_YUY2_OVERLAY: - ConvertRGBtoYUY2(overlay); - break; - case SDL_IYUV_OVERLAY: - ConvertRGBtoIYUV(overlay); - break; - default: - fprintf(stderr, "cannot convert RGB picture to obtained YUV format!\n"); - exit(1); - break; - } - -} - - -inline void Draw_Overlay(SDL_Surface *display, int size) -{ - SDL_LockYUVOverlay(overlay); - - Convert32bit(display); - - overlay_rect.x = 0; - overlay_rect.y = 0; - overlay_rect.w = GBA_WIDTH * size; - overlay_rect.h = GBA_HEIGHT * size; - - SDL_DisplayYUVOverlay(overlay, &overlay_rect); - SDL_UnlockYUVOverlay(overlay); -} - -void systemGbBorderOn() -{ - srcWidth = 256; - srcHeight = 224; - gbBorderLineSkip = 256; - gbBorderColumnSkip = 48; - gbBorderRowSkip = 40; - - destWidth = (sizeOption+1)*srcWidth; - destHeight = (sizeOption+1)*srcHeight; - - surface = SDL_SetVideoMode(destWidth, destHeight, 16, - SDL_ANYFORMAT|SDL_HWSURFACE|SDL_DOUBLEBUF| - (fullscreen ? SDL_FULLSCREEN : 0)); -#ifndef C_CORE - sdlMakeStretcher(srcWidth); -#else - switch(systemColorDepth) { - case 16: - sdlStretcher = sdlStretcher16[sizeOption]; - break; - case 24: - sdlStretcher = sdlStretcher24[sizeOption]; - break; - case 32: - sdlStretcher = sdlStretcher32[sizeOption]; - break; - default: - fprintf(stderr, "Unsupported resolution: %d\n", systemColorDepth); - exit(-1); - } -#endif - - if(systemColorDepth == 16) { - if(sdlCalculateMaskWidth(surface->format->Gmask) == 6) { - Init_2xSaI(565); - RGB_LOW_BITS_MASK = 0x821; - } else { - Init_2xSaI(555); - RGB_LOW_BITS_MASK = 0x421; - } - if(cartridgeType == 2) { - for(int i = 0; i < 0x10000; i++) { - systemColorMap16[i] = (((i >> 1) & 0x1f) << systemBlueShift) | - (((i & 0x7c0) >> 6) << systemGreenShift) | - (((i & 0xf800) >> 11) << systemRedShift); - } - } else { - for(int i = 0; i < 0x10000; i++) { - systemColorMap16[i] = ((i & 0x1f) << systemRedShift) | - (((i & 0x3e0) >> 5) << systemGreenShift) | - (((i & 0x7c00) >> 10) << systemBlueShift); - } - } - srcPitch = srcWidth * 2+4; - } else { - if(systemColorDepth != 32) - filterFunction = NULL; - RGB_LOW_BITS_MASK = 0x010101; - if(systemColorDepth == 32) { - Init_2xSaI(32); - } - for(int i = 0; i < 0x10000; i++) { - systemColorMap32[i] = ((i & 0x1f) << systemRedShift) | - (((i & 0x3e0) >> 5) << systemGreenShift) | - (((i & 0x7c00) >> 10) << systemBlueShift); - } - if(systemColorDepth == 32) - srcPitch = srcWidth*4 + 4; - else - srcPitch = srcWidth*3; - } -} - -void sdlEmuPause() -{ - paused = !paused; - SDL_PauseAudio(paused); - if(paused) - wasPaused = true; -} - -void sdlEmuReset() -{ - if(emulating) { - emulator.emuReset(); - systemScreenMessage("Reset"); - } -} - -void sdlAdvanceFrame() -{ - if(paused) { - paused = false; - } - pauseNextFrame = true; -} -void sdlToggleFullscreen() { - int flags = 0; - paused = 1; - SDL_PauseAudio(1); - fullscreen = !fullscreen; - SDL_ShowCursor(!fullscreen); - if(fullscreen) - flags |= SDL_FULLSCREEN|SDL_SWSURFACE; - else - flags |= SDL_SWSURFACE; - SDL_SetVideoMode(destWidth, destHeight, systemColorDepth, flags); - if (!wasPaused) - { - paused = 0; - SDL_PauseAudio(0); - } -} - diff --git a/src/macosx/cart.icns b/src/macosx/cart.icns deleted file mode 100755 index f3c9cba1..00000000 --- a/src/macosx/cart.icns +++ /dev/null @@ -1,28 +0,0 @@ -icns -ßÍÒ³ÆÕßïÿÍÐû¶±³´¶²¬¬°ºÃÇéÿÐÃĽ¶°µ³­³­ª²µ··¹´³´¸ÊãÿÊ´Á··µ³´®²¯³­¬²¸·´·¶¿»»¼µ¶Ôßÿ·Ê»¸±²²°®­±¯²°³µ¶µµ¸½ÇÏÅ¿ÄÇıÄæÚÿ"·¶¹·±¯²²³³¯±¯±³´´²³¶ºÀ¼ÄÌËÎÈ¿ÁÌ˽¹ãÖÿ Ä·¸®¯¬³´³°±®€³²³´²²¸ÀÊÍÍËÀÁÉËÏɼ»ÌÉĶÏÒÿ Ä´´³´²´³°²²´±´±³¯¹ÁÄÌÐÐÍÇÄÈÇÆÍËÊʾ·ÉÉÁµ×Ïÿ-´½­¯²°°­²³±¶¼³²¶³´³·½ÄÊÏÏËÉÎÐËÅÈÌÊÆÈÊË̺ÇÍÅ´¿Ëÿ"´µ²¬¯¬¯°³¹¸½¾Æõº½³±·ÃÆÏÌÍÎÊÈÆÉÇÍËÄ€Ë ÆÈÉÇ˹Ì˾¼ÅÇÿ5±¯²®¯«®²±µ¸ÀÆÈÊÐÏÎÉÆÌÎËÈËÍÍËÉÅÃÅÈÌÒÏÉËÈÊÈËÅÈÉÆĽ·Å˸ÁáÄÿ°³ª°®­«­±¸·ÀÊÈÓÖÒÎÊÈÆÉ€ËÌËËÃÆÈÉËЀÑÒÓÇÉÈÈÇÉÅÊÈÉËÄ·ÁŶÍÁÿ±¬­­««­°«¬²±´ÇÇÎ×ÖÖÐÅÄÁËË€ÌÆÈÅÈÊÑÎÒÑÒÏÍÐÐÑÊÄÅÈÅÇÅÂÄÄÊóÁĻ޽ÿ?¸±°°±«¬­­®¬±±²±³¿ÐÕÏÍÍËÌÉÆÆÊÇÉÆÉÇÏÑÒÓÑÎÒÏÓÕÒÒÐÔÐÃÆÉÈÆÄÃÆÇÆÀ¸¼Ã·Ó¹ÿC»¨±¯®®°°¯¯°±²³²´´°¸ÆÃÃÉÃÅÆÇÊÅÆÅÅÆËÏÒÑÎÐÐÏÐÏÎÐÑÒÑÓÑÑÉÂÂÅÆÆÌÇÆÁÈǸºÁÃضÿ¶·¯ª§ª«­¯¯­°²²±±´±¯±·Á¾Â€Æ+ÉÅÁÄÃÈÍÒÎÒÑÏÐÍÎÎÏÐÐÌÐÐÏÐÑÑÐÒÈÉÉÅÃþÁÄÄôºÅ±·²ÿö´²¬ªª©©€­®³²°±²°´¸½ÀÇÊÊÅÉÆÂÃÃÅÇÎÑÔЀÎ!ÏÐÐÍÐÏÏÎÐÎÏÑÑÐÐÑÒϼÉÅÄÄÆÉÇÉÊʹ·½ÍÜ®ÿ(ÌÃó°­­««®¬­¯®°³®±®²·¿ÆÉÉÍÌÉÊÇÃÂÅÉÊÎÏÏÑÎÏ‚Î ÐÑÏÏÐÒÒÑÐÐÑЀÒÏÏÈÈÇÇÅļÁÆĸ¹¶¾á¬ÿ»¸¶­©¯«­°±°­®±µ¯°¯²¸¼Ä€Ê/ÉÉÆÁ¿ÄÆÉÍÏÎÍËÍÎÌÎÐÏÏÐÐÏÐÒÏÎÏÏÐÒÐÏÎÎÑÐÑÒÑÄÅÄÄÃÁÁɀǺ¸ºÒêªÿ%ؽ«¨¯²®«­¬²±®°±±°´´»ÅËÌÍÊÆÄÂÄÇËÏÍÍÌÌËÊ€ÌËÍÑÑÏπРÑÑÐÎÎÍÎÐÐÏÍÏÑÐÏÒÓÄÀÂÆÉÆÃÂÁÀÅ»²·ÁÛ©ÿ%ÜÁ¨ªª¬­­®¯²°°±±´º¿ÈËÉÈÊÆÃÃÆÉËÏÏÐÐÌÍÍÌÌ€ÎÌÍÎÏ€Ð#ÎÏÐÒÐÑÎÎÏÍÎÐÏÎÐÐÏÐÔÓÉÊÇÆÃÀÀÁÇÈÄ»³¶Áשÿϱ¬§«®µ°°±¯¯¹¿ÇÇÎÎÆÿÀÆÊ̓ÎÍ΀ÍÌÏÍÌÎÏ%ÐÏÏÑÏÑÐÑÏÎÍÍÏÏÐÏÐÏÐÏÏÒÆÁÆÁÆÄÊÆÈÎοµ½ÂÏ©ÿº±­€¯®¯·¾ÆÍÉÈÉÆ¿º»¿ÆÊÍÐÍ€Ì ÍÏÎÏÎÍÍÌÌËÍÎÌ€Î'ÍÌÎÏÐÑÐÐÑÐÑÏÎÒÒÎÏÏÎÍÏÏËÏÐÂÇÇÉËÊÉÉÆɽ´Á´Ù©ÿ!·±¯³¯´»ÅÇÈÆÅÇÆ¿ÃÆÇÊÉËÎÍÍËÌËÊÌÍÍÎÍ΀ÍËÍÎÍ΀ÏÍÍÏÑÑÎÏÑÐÑÑÐÒÑÐÎÍÎÏÎÌÇÉÈÎÇÇÈÈÅÈô¿¶â©ÿ¶µ´¯²ÅÈÂÂÆÇÄÈ¿ÆÍÌÌÇÉ€ËÊÌÎÍÌËÍËÌÌÍÌÍÏÎÍÍÎÏÏÍ̀Π-ÌÍÍÎÎÍÌÎÎÍÍÎÏÐ€Ï -ÊËËÊÍËÊÊËÍ̀̀ÎÐÏÎÐÑÐÏËÉËÌËÐÒÒ€ÏÎÎÏÐÑÑÏÐÍÎÎËÇÅÄÉÈ€Æ ÈÇÊÌÉÇ·¾¹Ìªÿ%Ù¹«³À¹»ºÁÇÊƽ¸¼ÌËÍÍÊËËÌÌÍÌËÍÌÍÌÌÍÍÏÐÎÎÐ -ÎÌÎÎÍÏÐÏÐÒÒ€ÏÑÐÓÑÎÊÈÅÂÄÊÏÊËÄÄÆÇÆÈÍÇɹ·¸¾«ÿQº«±´¼Æƺ¸¸»ÁÆÄÏÍÌÉÊËËÉËÌÌÊËËÊÊÍÌÏÏÐÐÏÏÐÑÑÐÎÎÏÏÐÑÐÑÑÐÑÐÏÏÌÇÆÆÉÊÈËÍÉÈÇÄÃÄÅÃÇÊÉȹµº°«ÿÊ®®·Â¼µµ¸¾ÆÉÊÈ¿ÐÍÌÌËÊ‚Ë7ÊËËÌËËÊÎÎÏÏÐÎÎÐÒÐÌÍÎÏÐÑÓÑÐÐÌÉÅÄÆÆÂÁÆÍÇÇÆÄÉÇÅÂÁ¿¹¿ÉÊɼ·À­«ÿØ®«´µ»¾ÂÂÅÅÇÇÆ¿ÎÎÍÌÉÉÊÉËËÊÊÌÌËÌÍÎÏÎÍÍÐÒÑÎÏÍÎÑÒÓÐÉÅÆÆÅÀ¿¼Å΀ÇÆÆÄÄÂÁÀ¾·¾ÉÍο´Â£¬ÿ·©°±ÂÄÿÁÄÅÆľÊÎÌÊÉÈÉÉÊÍÌ1ÎÍÌÏÏÍÎÎÍÎÏÐÐÓÑÌÅÂÅÈÆĽ¼ÄÎÔÕÖÇÇÉÉÆÄÂÅÀüÀÊË̼´Æ¢¬ÿŤ²¹ÃÃÁÁÃÃÇÈÊÂÇÎÍÌËÊÊËÉÉËÊÊÌÍÌÏÑÑÏÍÏÎÎÏÏÉÅÂÃÅÇÄ»¿ÈÎÓÒÑÎÎÏÇÆ€ÅÂÁÃÄÅÄÄÂÂÈÆıÀº¼¬ÿÈ«±·¾ÃÂÃÄÅÇÈÇÂÅÐÊÊËËÉÊËËÌÌÊÌ€Í'ÎÎÏÏÐÐÍÎÍÊÂÀÅÆÃÀ¿ÁÉÏÓÔÐÎÐÐÏÍÎÅÂÇÇÄÀÄÁÆÅÄÁ½²¸Ä°ç¬ÿ0Ø´¯¹¾ÂÃÀÄÇÇÉÅÈÁÏÊÌËÊËÌÌÍÊÎËÊÎÍËÏÏÑÑÒÎÇÂÃÄÆÿ¿ÀÇÍÑ€ÓÐÏÐÏÒÑÎÎÆÂÇÂÂÅÆþ½½À½¸¶¹¾Â§Ïó™ -·ÁÇ»©£«­®Â×— -"%QWQNOYLeºªšŽ¼’‰ - 2_SPPNYFˆ¾¢š¿‰ -##6#“Íp›pˆ8B\!-(-L\RLPXT_¶©–œ½ˆ - -  *9`\_]X_J–µ—£µ‡ - -  -*8l[W][^E†¯¨¦µ… -  .Qr[\\]ZT™©©®£„ - €$ )$ -   ";g^Z^Z_[[¦©§¨jƒ -  ,  - - -   -9SN=o“ƒl`da[SX`vkqvvtylhUJ/‹ -ñàå×ÁÁÀÇÙæñïÿßâÕÎÉÅÆÆÉÄ¿¾ÀÌÕÚéÿãÖÖÏÉÃÇÅÀÅÀ½ÄÇÊÈÈÄÄÈÌÞãÿÝÇÓÊÊÇÆÇÁÅÂÆ¿¾ÄÊÉÆÉÆÍÉËÎÇÉèßÿÊÝÍÉÄÅÅÃÂÁÄÂÅÃÆÇÈÇÇÊÏÙßÒÌÒ×ÕÃ×ùÚÿ"ÏÏÐÊÄÄÅÅÆÆÃÄÂÄÇÈÈÆÇÈÌÒÎÖÞÞßÖÎÑÝÜÏÌöÖÿ ÚÍÐÅÇÄÈÈÇÄÄ€ÆÅÆÇÅÅËÓÝàßÞÓÕÛÞâÜÏÎßÛ×ÉâÒÿ ØÅÇÉÉÇÊÈÅÇÆÈÅÉÇÆÈÄÅÂÌÔ×ÞããàÛ×ÛÚÙ߀ÞÑÊÜÜÔÈêÏÿ-ÈÒÁÃÅÃÅÂÇÈÅËÑÇÆÉÆÇÅÉÐ×ÝââßÜàäÞØÛßÝÙÛÝÞßÕÍÚàØÇÒËÿ1ÌÍÊÂÅÀÂÂÄÊÌÑÒÙÕÈÌÑÈÄÊ×ÙáÞàáÝÚÙÜÚàÞ×ÞÞÝØÛÜÙÞÕÌßÞÑÏØÇÿ5ÊÇÊÆÆÂÃÇÅÈÊÑÓØÝãááÜÙÞâßÜßáàÞÜØ×ØÛßåâÜÞÜÞÚÝØÜÜÙÖÑÊØÞËÔóÄÿ ÉÌÃÉÆÅÃÅÈÍËÓÜÙáââáÜÚÚÜÜÝÞßßà×ÙÜÜß‚äæÚÜÛÛÙÜØÝÚÜÝ×ÊÔØÉàÁÿ;ÈÃÅÅÄÄÇÉÃÅÌÊËÙÙáèåâÝÔÖÔÝÜÞÞÜØÛÙÜÝäáæäåâàããäÝ×ØÛØÚØÕ××ÝÖÆÔ×Îñ½ÿ?ÏÆÇÇÈÁÂÄÄÅÄÉÈÉÉÊÔâèâàÝÜÛÙÚØÝÙÛØÚÙãåæçäáæâäèææäçãÖÙÜÛÙ×ÖÙÚØÓËÏÖÊæ¹ÿ diff --git a/src/macosx/openfile.h b/src/macosx/openfile.h deleted file mode 100755 index 2a512d15..00000000 --- a/src/macosx/openfile.h +++ /dev/null @@ -1,11 +0,0 @@ -#include -#include -#import - - -int openFile(char * r); -int openBiosFile(char * r); -int configKey( int key ); - - - diff --git a/src/macosx/openfile.mm b/src/macosx/openfile.mm deleted file mode 100755 index a8ba2b5c..00000000 --- a/src/macosx/openfile.mm +++ /dev/null @@ -1,40 +0,0 @@ -#include "openfile.h" - -int openBiosFile( char * r ) -{ - NSOpenPanel *oPanel = [NSOpenPanel openPanel]; - int result; - NSArray *filesToOpen; - - [oPanel setAllowsMultipleSelection:NO]; - [oPanel setTitle:@"Open Bios File..."]; - result = [oPanel runModalForDirectory:nil file:nil types:nil]; - if (result == NSOKButton) - { - filesToOpen = [oPanel filenames]; - NSString *aFile = [filesToOpen objectAtIndex:0]; - strcpy(r , [aFile UTF8String]); - return 1; - } - return 0; -} - -int openFile( char * r ) - -{ - NSOpenPanel *oPanel = [NSOpenPanel openPanel]; - int result; - NSArray *filesToOpen; - - [oPanel setAllowsMultipleSelection:NO]; - [oPanel setTitle:@"Open Rom..."]; - result = [oPanel runModalForDirectory:nil file:nil types:nil]; - if (result == NSOKButton) - { - filesToOpen = [oPanel filenames]; - NSString *aFile = [filesToOpen objectAtIndex:0]; - strcpy(r , [aFile UTF8String]); - return 1; - } - return 0; -} diff --git a/src/macosx/savestate.icns b/src/macosx/savestate.icns deleted file mode 100755 index edd79b95..00000000 Binary files a/src/macosx/savestate.icns and /dev/null differ diff --git a/src/macosx/system.icns b/src/macosx/system.icns deleted file mode 100755 index c39d02f0..00000000 Binary files a/src/macosx/system.icns and /dev/null differ