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
-
-
- 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
-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
-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