From d60324b2f136ad461d6095579cb145f3071ccfca Mon Sep 17 00:00:00 2001 From: Konstantin Gredeskoul Date: Wed, 1 Feb 2012 16:43:02 -0800 Subject: [PATCH] initial import of the project --- .gitignore | 7 + Classes/Board.h | 28 + Classes/Board.m | 59 + Classes/BoardCell.h | 25 + Classes/BoardCell.m | 44 + Classes/Classes-1.moved-aside/Game.h | 15 + Classes/Game.h | 48 + Classes/Game.m | 118 + Classes/GameBoardViewController.h | 27 + Classes/GameBoardViewController.m | 105 + Classes/GameBoardViewController.xib | 248 + Classes/GomokuAppDelegate.h | 21 + Classes/GomokuAppDelegate.m | 37 + Classes/GomokuViewController.h | 27 + Classes/GomokuViewController.m | 53 + Classes/Move.h | 23 + Classes/Move.m | 46 + Classes/Player.h | 20 + Classes/UIPlayer.h | 21 + Classes/UIPlayer.m | 42 + Default.png | Bin 0 -> 7859 bytes Frameworks/OCMock.framework/Headers | 1 + Frameworks/OCMock.framework/OCMock | 1 + Frameworks/OCMock.framework/Resources | 1 + .../NSNotificationCenter+OCMAdditions.h | 15 + .../Versions/A/Headers/OCMArg.h | 30 + .../Versions/A/Headers/OCMConstraint.h | 48 + .../Versions/A/Headers/OCMock.h | 10 + .../Versions/A/Headers/OCMockObject.h | 41 + .../Versions/A/Headers/OCMockRecorder.h | 28 + Frameworks/OCMock.framework/Versions/A/OCMock | Bin 0 -> 291796 bytes .../Versions/A/Resources/Info.plist | 26 + .../Versions/A/Resources/License.txt | 15 + Frameworks/OCMock.framework/Versions/Current | 1 + Frameworks/hamcrest.framework/Headers | 1 + Frameworks/hamcrest.framework/Resources | 1 + .../Versions/A/Headers/HCAllOf.h | 44 + .../Versions/A/Headers/HCAnyOf.h | 44 + .../Versions/A/Headers/HCBaseDescription.h | 14 + .../Versions/A/Headers/HCBaseMatcher.h | 13 + .../Versions/A/Headers/HCDescribedAs.h | 48 + .../Versions/A/Headers/HCDescription.h | 38 + .../Versions/A/Headers/HCHasDescription.h | 38 + .../Versions/A/Headers/HCIs.h | 58 + .../Versions/A/Headers/HCIsAnything.h | 53 + .../Versions/A/Headers/HCIsCloseTo.h | 40 + .../A/Headers/HCIsCollectionContaining.h | 43 + .../A/Headers/HCIsCollectionOnlyContaining.h | 52 + .../A/Headers/HCIsDictionaryContaining.h | 35 + .../A/Headers/HCIsDictionaryContainingKey.h | 33 + .../A/Headers/HCIsDictionaryContainingValue.h | 33 + .../Versions/A/Headers/HCIsEqual.h | 39 + .../A/Headers/HCIsEqualIgnoringCase.h | 36 + .../A/Headers/HCIsEqualIgnoringWhiteSpace.h | 37 + .../Versions/A/Headers/HCIsIn.h | 33 + .../Versions/A/Headers/HCIsInstanceOf.h | 39 + .../Versions/A/Headers/HCIsNil.h | 47 + .../Versions/A/Headers/HCIsNot.h | 48 + .../Versions/A/Headers/HCIsSame.h | 39 + .../Versions/A/Headers/HCMatcher.h | 44 + .../Versions/A/Headers/HCMatcherAssert.h | 29 + .../Versions/A/Headers/HCOrderingComparison.h | 72 + .../Versions/A/Headers/HCSelfDescribing.h | 19 + .../Versions/A/Headers/HCStringContains.h | 34 + .../Versions/A/Headers/HCStringDescription.h | 26 + .../Versions/A/Headers/HCStringEndsWith.h | 34 + .../Versions/A/Headers/HCStringStartsWith.h | 34 + .../Versions/A/Headers/HCSubstringMatcher.h | 11 + .../Versions/A/Headers/HCWrapShortcut.h | 12 + .../Versions/A/Headers/hamcrest.h | 36 + .../Resources/English.lproj/InfoPlist.strings | Bin 0 -> 220 bytes .../Versions/A/Resources/Info.plist | 22 + .../hamcrest.framework/Versions/A/hamcrest | Bin 0 -> 108984 bytes .../hamcrest.framework/Versions/Current | 1 + Frameworks/hamcrest.framework/hamcrest | 1 + GomokuViewController.xib | 245 + Info.plist | 54 + MainWindow.xib | 415 + README | 4 + Resources/BoardSquare_0.png | Bin 0 -> 5013 bytes Resources/BoardSquare_1.png | Bin 0 -> 5717 bytes Resources/BoardSquare_2.png | Bin 0 -> 5542 bytes Test.plist | 20 + Tests/GTM/GTMDefines.h | 241 + Tests/GTM/GTMIPhoneUnitTestDelegate.h | 38 + Tests/GTM/GTMIPhoneUnitTestDelegate.m | 206 + Tests/GTM/GTMIPhoneUnitTestMain.m | 33 + Tests/GTM/GTMSenTestCase.h | 1004 +++ Tests/GTM/GTMSenTestCase.m | 362 + Tests/GTM/RunIPhoneUnitTest.sh | 108 + Tests/gomokuExampleTest.m | 27 + Tests/gomokuViewControllerTest.m | 42 + doc/allis1994.pdf | Bin 0 -> 94267 bytes doc/oo-responsibilities.txt | 54 + doc/uml-sequence.pdf | Bin 0 -> 45946 bytes doc/uml-structure.pdf | Bin 0 -> 100963 bytes doc/uml.graffle | 6699 +++++++++++++++++ gomoku.xcodeproj/kig.pbxuser | 3278 ++++++++ gomoku.xcodeproj/kig.perspectivev3 | 1608 ++++ gomoku.xcodeproj/project.pbxproj | 563 ++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 30206 bytes .../WorkspaceSettings.xcsettings | 10 + .../xcschemes/gomoku Unit Tests.xcscheme | 84 + .../kig.xcuserdatad/xcschemes/gomoku.xcscheme | 84 + .../xcschemes/xcschememanagement.plist | 32 + gomoku_Prefix.pch | 8 + icon-114.png | Bin 0 -> 19192 bytes icon-57.png | Bin 0 -> 7859 bytes main.m | 17 + 110 files changed, 17755 insertions(+) create mode 100644 .gitignore create mode 100644 Classes/Board.h create mode 100644 Classes/Board.m create mode 100644 Classes/BoardCell.h create mode 100644 Classes/BoardCell.m create mode 100644 Classes/Classes-1.moved-aside/Game.h create mode 100644 Classes/Game.h create mode 100644 Classes/Game.m create mode 100644 Classes/GameBoardViewController.h create mode 100644 Classes/GameBoardViewController.m create mode 100644 Classes/GameBoardViewController.xib create mode 100644 Classes/GomokuAppDelegate.h create mode 100644 Classes/GomokuAppDelegate.m create mode 100644 Classes/GomokuViewController.h create mode 100644 Classes/GomokuViewController.m create mode 100644 Classes/Move.h create mode 100644 Classes/Move.m create mode 100644 Classes/Player.h create mode 100644 Classes/UIPlayer.h create mode 100644 Classes/UIPlayer.m create mode 100644 Default.png create mode 120000 Frameworks/OCMock.framework/Headers create mode 120000 Frameworks/OCMock.framework/OCMock create mode 120000 Frameworks/OCMock.framework/Resources create mode 100644 Frameworks/OCMock.framework/Versions/A/Headers/NSNotificationCenter+OCMAdditions.h create mode 100644 Frameworks/OCMock.framework/Versions/A/Headers/OCMArg.h create mode 100644 Frameworks/OCMock.framework/Versions/A/Headers/OCMConstraint.h create mode 100644 Frameworks/OCMock.framework/Versions/A/Headers/OCMock.h create mode 100644 Frameworks/OCMock.framework/Versions/A/Headers/OCMockObject.h create mode 100644 Frameworks/OCMock.framework/Versions/A/Headers/OCMockRecorder.h create mode 100755 Frameworks/OCMock.framework/Versions/A/OCMock create mode 100644 Frameworks/OCMock.framework/Versions/A/Resources/Info.plist create mode 100644 Frameworks/OCMock.framework/Versions/A/Resources/License.txt create mode 120000 Frameworks/OCMock.framework/Versions/Current create mode 120000 Frameworks/hamcrest.framework/Headers create mode 120000 Frameworks/hamcrest.framework/Resources create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCAllOf.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCAnyOf.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCBaseDescription.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCBaseMatcher.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCDescribedAs.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCDescription.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCHasDescription.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCIs.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCIsAnything.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCIsCloseTo.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCIsCollectionContaining.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCIsCollectionOnlyContaining.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCIsDictionaryContaining.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCIsDictionaryContainingKey.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCIsDictionaryContainingValue.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCIsEqual.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCIsEqualIgnoringCase.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCIsEqualIgnoringWhiteSpace.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCIsIn.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCIsInstanceOf.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCIsNil.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCIsNot.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCIsSame.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCMatcher.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCMatcherAssert.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCOrderingComparison.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCSelfDescribing.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCStringContains.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCStringDescription.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCStringEndsWith.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCStringStartsWith.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCSubstringMatcher.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/HCWrapShortcut.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Headers/hamcrest.h create mode 100644 Frameworks/hamcrest.framework/Versions/A/Resources/English.lproj/InfoPlist.strings create mode 100644 Frameworks/hamcrest.framework/Versions/A/Resources/Info.plist create mode 100755 Frameworks/hamcrest.framework/Versions/A/hamcrest create mode 120000 Frameworks/hamcrest.framework/Versions/Current create mode 120000 Frameworks/hamcrest.framework/hamcrest create mode 100644 GomokuViewController.xib create mode 100644 Info.plist create mode 100644 MainWindow.xib create mode 100644 README create mode 100644 Resources/BoardSquare_0.png create mode 100644 Resources/BoardSquare_1.png create mode 100644 Resources/BoardSquare_2.png create mode 100644 Test.plist create mode 100644 Tests/GTM/GTMDefines.h create mode 100644 Tests/GTM/GTMIPhoneUnitTestDelegate.h create mode 100644 Tests/GTM/GTMIPhoneUnitTestDelegate.m create mode 100644 Tests/GTM/GTMIPhoneUnitTestMain.m create mode 100644 Tests/GTM/GTMSenTestCase.h create mode 100644 Tests/GTM/GTMSenTestCase.m create mode 100755 Tests/GTM/RunIPhoneUnitTest.sh create mode 100644 Tests/gomokuExampleTest.m create mode 100644 Tests/gomokuViewControllerTest.m create mode 100644 doc/allis1994.pdf create mode 100644 doc/oo-responsibilities.txt create mode 100644 doc/uml-sequence.pdf create mode 100644 doc/uml-structure.pdf create mode 100644 doc/uml.graffle create mode 100644 gomoku.xcodeproj/kig.pbxuser create mode 100644 gomoku.xcodeproj/kig.perspectivev3 create mode 100755 gomoku.xcodeproj/project.pbxproj create mode 100644 gomoku.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 gomoku.xcodeproj/project.xcworkspace/xcuserdata/kig.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 gomoku.xcodeproj/project.xcworkspace/xcuserdata/kig.xcuserdatad/WorkspaceSettings.xcsettings create mode 100644 gomoku.xcodeproj/xcuserdata/kig.xcuserdatad/xcschemes/gomoku Unit Tests.xcscheme create mode 100644 gomoku.xcodeproj/xcuserdata/kig.xcuserdatad/xcschemes/gomoku.xcscheme create mode 100644 gomoku.xcodeproj/xcuserdata/kig.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 gomoku_Prefix.pch create mode 100644 icon-114.png create mode 100644 icon-57.png create mode 100644 main.m diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fb5720e --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +**/*.db +*.??# +*.~?~ +*~ +*.swp +.#* +.DS_Store diff --git a/Classes/Board.h b/Classes/Board.h new file mode 100644 index 0000000..9ac10a1 --- /dev/null +++ b/Classes/Board.h @@ -0,0 +1,28 @@ +// +// Board.h +// Gomoku +// +// Created by Konstantin Gredeskoul on 5/3/10. +// Copyright 2010 Konstantin Gredeskoul, shared under MIT license. All rights reserved. +// + +#import +#import "Move.h" + +#define CELL_EMPTY 0 +#define CELL_BLACK 1 +#define CELL_WHITE 2 + +@interface Board : NSObject { + int size; + // two dimensional int array filled with values above. + int **matrix; +} + +@property(nonatomic) int size; +@property(nonatomic) int** matrix; + +-(Board *)initWithSize: (int)size; +-(void) makeMove:(int) color At:(Move *) move; + +@end diff --git a/Classes/Board.m b/Classes/Board.m new file mode 100644 index 0000000..fce5325 --- /dev/null +++ b/Classes/Board.m @@ -0,0 +1,59 @@ +// +// Board.m +// Gomoku +// +// Created by Konstantin Gredeskoul on 5/3/10. +// Copyright 2010 Konstantin Gredeskoul, shared under MIT license. All rights reserved. +// + +#import "Board.h" + +@implementation Board +@synthesize size; +@synthesize matrix; + +-(Board *)initWithSize: (int)thisSize { + if (self = [super init]) { + self.size = thisSize; + self.matrix = malloc(self.size * sizeof(int *)); + // TODO: check for NULL? + for(int i = 0; i < self.size; i++) { + self.matrix[i] = malloc(self.size * sizeof(int)); + // TODO: check for NULL + for (int j = 0; j < self.size; j++) { + self.matrix[i][j] = 0; + } + } + } + NSLog(@"initialized %@", self); + return self; +} + +-(void) makeMove:(int) color At:(Move *) move { + NSLog(@"received move to %d %@", color, move); + // update the board at move.x, move.y + if (move.x < 0 || move.x >= self.size || move.y < 0 || move.y >= self.size) { + NSLog(@"invalid move parameters %@ with color %d", move, color); + return; + } + // else all is good. + self.matrix[move.x][move.y] = color; +} + + +- (NSString *)description { + // TODO: provide toString that dumps the full board using space, O and X characters + return [NSString stringWithFormat:@"Board of Size %d", self.size]; +} + + +- (void)dealloc { + for(int i = 0; i < self.size; i++) + free(self.matrix[i]); + free(self.matrix); + self.matrix = NULL; + [super dealloc]; +} + + +@end diff --git a/Classes/BoardCell.h b/Classes/BoardCell.h new file mode 100644 index 0000000..e0124f5 --- /dev/null +++ b/Classes/BoardCell.h @@ -0,0 +1,25 @@ +// +// BoardCell.h +// gomoku +// +// Created by Konstantin Gredeskoul on 5/2/10. +// + +#import + +@class BoardCell; + +@protocol BoardCellDelegate + +- (void) selectedBoardCell:(BoardCell *)theCell; + +@end + + +@interface BoardCell : UIImageView { + id delegate; +} + +@property(nonatomic, retain) id delegate; + +@end diff --git a/Classes/BoardCell.m b/Classes/BoardCell.m new file mode 100644 index 0000000..e49921a --- /dev/null +++ b/Classes/BoardCell.m @@ -0,0 +1,44 @@ +// +// BoardCell.m +// gomoku +// +// Created by Konstantin Gredeskoul on 5/2/10. +// + +#import "BoardCell.h" + + +@implementation BoardCell + +@synthesize delegate; + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + //NSLog(@"touches began %@, %@", touches, event); + [super touchesBegan:touches withEvent:event]; +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { + //NSLog(@"touches ended %@, %@", touches, event); + [super touchesEnded:touches withEvent:event]; + [self.delegate selectedBoardCell:self]; +} + +- (id)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + self.userInteractionEnabled = YES; + } + return self; +} + + +//- (void)drawRect:(CGRect)rect { +// // Drawing code +//} + + +- (void)dealloc { + [super dealloc]; +} + + +@end diff --git a/Classes/Classes-1.moved-aside/Game.h b/Classes/Classes-1.moved-aside/Game.h new file mode 100644 index 0000000..0cbae65 --- /dev/null +++ b/Classes/Classes-1.moved-aside/Game.h @@ -0,0 +1,15 @@ +// +// Game.h +// gomoku +// +// Created by Konstantin Gredeskoul on 5/3/10. +// Copyright 2010 __MyCompanyName__. All rights reserved. +// + +#import + + +@protocol Game + + +@end diff --git a/Classes/Game.h b/Classes/Game.h new file mode 100644 index 0000000..33b782b --- /dev/null +++ b/Classes/Game.h @@ -0,0 +1,48 @@ +// +// Game.h +// gomoku +// +// Created by Konstantin Gredeskoul on 5/3/10. +// Copyright 2010 Konstantin Gredeskoul, shared under MIT license. All rights reserved. +// + +#import +#import "Player.h" +#import "Board.h" + +#define GOMOKU_BOARD_SIZE 19 +#define GOMOKU_PLAYERS 2 + +@protocol GameDelegate + +- (void) moveMade:(Move *) move byPlayer:(int) playerIndex; +- (void) gameOverWithWinner:(int) playerIndex; + +@end + + +@interface Game : NSObject { + NSMutableArray *players; + NSMutableArray *moves; + int currentPlayerIndex; + Board *board; +@private + BOOL gameStarted; +} + +@property (nonatomic, retain) id delegate; + +@property (nonatomic, assign) NSMutableArray *players; +@property (nonatomic, assign) NSMutableArray *moves; +@property (nonatomic, assign) int currentPlayerIndex; +@property (nonatomic, assign) Board *board; +@property (nonatomic, assign) BOOL gameStarted; + +- (Game *) initGame; +- (void) addPlayer:(id ) player; +- (id) player:(int) index; +- (void) makeMove: (Move *) move; +- (BOOL) isMoveValid: (Move *) move; +- (void) startGame; +- (void) stopGame; +@end diff --git a/Classes/Game.m b/Classes/Game.m new file mode 100644 index 0000000..d559f13 --- /dev/null +++ b/Classes/Game.m @@ -0,0 +1,118 @@ +// +// Game.m +// gomoku +// +// Created by Konstantin Gredeskoul on 5/3/10. +// + +#import "Game.h" +#import "UIPlayer.h" + + +@implementation Game + +@synthesize players; +@synthesize moves; +@synthesize currentPlayerIndex; +@synthesize board; +@synthesize gameStarted; +@synthesize delegate; + + +- (Game *) initGame { + if (self = [super init]) { + self.players = [[NSMutableArray alloc] initWithCapacity:GOMOKU_PLAYERS]; + self.moves = [[NSMutableArray alloc] initWithCapacity:GOMOKU_PLAYERS]; + for (int i = 0; i < GOMOKU_PLAYERS; i++) { + [self.moves addObject: [[NSMutableArray alloc] initWithCapacity:20]]; + } + self.board = [[Board alloc] initWithSize:GOMOKU_BOARD_SIZE]; + self.gameStarted = NO; + self.currentPlayerIndex = 0; + } + return self; +} + +- (void) addPlayer:(id ) player{ + if ([self.players count] < GOMOKU_PLAYERS) { + [self.players addObject:player]; + } else { + NSLog(@"already have enough players!"); + } +} + +- (void) startGame { + if ([self.players count] != GOMOKU_PLAYERS) { + NSLog(@"not enough players added!"); + return; + } + self.gameStarted = YES; + NSLog(@"starting %@", self); + // call first player +} + +- (id) player:(int) index { + if (index < [self.players count]) + return [self.players objectAtIndex:index]; + else + return nil; +} + + +- (void) makeMove: (Move *) move { + if (self.gameStarted != YES) { + NSLog(@"game is not started, can't make this move %@", move); + return; + } + if ([self isMoveValid:move] == YES) { + // add move to the history + [[self.moves objectAtIndex:currentPlayerIndex] addObject:move]; + + // [board makeMove:CELL_WHITE At:move]; + // update the board + [delegate moveMade:move byPlayer:currentPlayerIndex]; + + // change current player + self.currentPlayerIndex++; + self.currentPlayerIndex %= GOMOKU_PLAYERS; + } else { + NSLog(@"move %@ is NOT valid, ignored", move); + } + return; +} + +- (BOOL) isMoveValid:(Move *)move { + for (int player = 0; player < GOMOKU_PLAYERS; player++) { + id previousMove; + for (previousMove in [moves objectAtIndex:player]) { + if ([move isEqual:previousMove]) { + return NO; + } + } + } + return YES; +} + +- (void) stopGame { + gameStarted = NO; + NSLog(@"stopping %@", self); +} + +- (NSString *)description { + return [NSString stringWithFormat:@"game: player1:%@, player2:%@, board:%@", + [self player:0], + [self player:1], + self.board]; +} + +- (void) dealloc { + id player; + for (player in players) { [player release]; } + [players release]; + + id move; + for (move in moves) { [move release]; } + [moves release]; + [super dealloc]; +} +@end diff --git a/Classes/GameBoardViewController.h b/Classes/GameBoardViewController.h new file mode 100644 index 0000000..ec1874c --- /dev/null +++ b/Classes/GameBoardViewController.h @@ -0,0 +1,27 @@ +// +// GameBoardViewController.h +// gomoku +// +// Created by Konstantin Gredeskoul on 5/2/10. +// + +#import +#import "BoardCell.h" +#import "Game.h" + +#define MAX_CELL_WIDTH 60.0 + +@interface GameBoardViewController : UIViewController { + UIScrollView *boardScrollView; + UIView *boardView; + NSMutableArray *cells; + id mainController; +} + +@property(nonatomic, retain) IBOutlet UIScrollView *boardScrollView; +@property(nonatomic, retain) UIView *boardView; +@property(nonatomic, retain) NSMutableArray *cells; +@property(nonatomic, retain) id mainController; +@property(nonatomic, retain) NSMutableArray *cellImages; + +@end diff --git a/Classes/GameBoardViewController.m b/Classes/GameBoardViewController.m new file mode 100644 index 0000000..ecae6f1 --- /dev/null +++ b/Classes/GameBoardViewController.m @@ -0,0 +1,105 @@ +// +// GameBoardViewController.m +// gomoku +// +// Created by Konstantin Gredeskoul on 5/2/10. +// + +#import "GameBoardViewController.h" +#import "Game.h" +#import "Move.h" + +@implementation GameBoardViewController + +@synthesize boardScrollView; +@synthesize boardView; +@synthesize cells; +@synthesize mainController; +@synthesize cellImages; + +- (void)viewDidLoad { + self.boardView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, GOMOKU_BOARD_SIZE * MAX_CELL_WIDTH, + GOMOKU_BOARD_SIZE * MAX_CELL_WIDTH)] autorelease]; + + + // lets load board cells of all 3 states + self.cellImages = [[NSMutableArray alloc] initWithCapacity:(GOMOKU_PLAYERS + 1)]; + + NSString *fileName; + NSString *cellImageFilePath; + UIImage *cellImage; + for (int i = 0; i < (GOMOKU_PLAYERS + 1); i++) { + fileName = [NSString stringWithFormat:@"BoardSquare_%d", i]; + cellImageFilePath = [[NSBundle mainBundle] pathForResource:fileName ofType:@"png"]; + cellImage = [[[UIImage alloc] initWithContentsOfFile:cellImageFilePath] autorelease]; + [self.cellImages addObject:cellImage]; + } + + self.cells = [NSMutableArray array]; + + //setup squares of the board + for (int x = 0; x < GOMOKU_BOARD_SIZE; x++) { + for (int y = 0; y < GOMOKU_BOARD_SIZE; y++) { + BoardCell *currentCell = [[[BoardCell alloc] initWithFrame:CGRectMake(x * MAX_CELL_WIDTH, + y * MAX_CELL_WIDTH, + MAX_CELL_WIDTH, + MAX_CELL_WIDTH)] autorelease]; + currentCell.image = [self.cellImages objectAtIndex:CELL_EMPTY]; + currentCell.delegate = self; + [self.cells addObject:currentCell]; + [self.boardView addSubview:currentCell]; + } + } + + [self.boardScrollView addSubview:self.boardView]; + + self.boardScrollView.zoomScale = 0.28; + self.boardScrollView.contentSize = CGSizeMake(GOMOKU_BOARD_SIZE * MAX_CELL_WIDTH, + GOMOKU_BOARD_SIZE * MAX_CELL_WIDTH); + + [super viewDidLoad]; +} + + +- (void)viewDidUnload { + self.boardScrollView = nil; +} + + +- (void)dealloc { + [boardScrollView dealloc]; + [cellImages release]; + [super dealloc]; +} + +#pragma mark BoardCellDelegate methods + +- (void) selectedBoardCell:(BoardCell *)theCell { + int index = [self.cells indexOfObject: theCell]; + // calculate the move coordinates + Move *move = [[[Move alloc] initWithX: index / GOMOKU_BOARD_SIZE + AndY: index % GOMOKU_BOARD_SIZE ] retain]; + // pass to the main controller for processing. + [self.mainController makeMove:move]; +} + +#pragma mark GameDelegate methods + +- (void) moveMade:(Move *) move byPlayer:(int) playerIndex { + NSLog(@"updating cell for playerIndex %d, at coordinates %@", playerIndex, move); + BoardCell *cell = [self.cells objectAtIndex:(move.x * GOMOKU_BOARD_SIZE + move.y)]; + cell.image = [self.cellImages objectAtIndex:(playerIndex + 1)]; +} + + +#pragma mark UIScrollViewDelegate methods + +- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { + return boardView; +} + +- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale { + +} + +@end diff --git a/Classes/GameBoardViewController.xib b/Classes/GameBoardViewController.xib new file mode 100644 index 0000000..2fe383e --- /dev/null +++ b/Classes/GameBoardViewController.xib @@ -0,0 +1,248 @@ + + + + 1280 + 11C74 + 1938 + 1138.23 + 567.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 933 + + + YES + IBUIScrollView + IBUIView + IBUILabel + IBProxyObject + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + YES + + + 292 + {{20, 20}, {61, 21}} + + + NO + YES + NO + IBCocoaTouchFramework + gomoku + + 1 + MCAwIDAAA + + + 1 + 10 + + 1 + 17 + + + Helvetica + 17 + 16 + + + + + 268 + {{0, 59}, {320, 320}} + + + YES + YES + IBCocoaTouchFramework + NO + NO + 0.0 + 2 + NO + + + {{0, 20}, {320, 460}} + + + + 3 + MQA + + 2 + + + + IBCocoaTouchFramework + + + + + YES + + + view + + + + 3 + + + + boardScrollView + + + + 9 + + + + delegate + + + + 8 + + + + + YES + + 0 + + YES + + + + + + 1 + + + YES + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + 6 + + + + + + + YES + + YES + -1.CustomClassName + -1.IBPluginDependency + -2.CustomClassName + -2.IBPluginDependency + 1.IBPluginDependency + 4.IBPluginDependency + 6.IBPluginDependency + + + YES + GameBoardViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + + + + YES + + + + + 9 + + + + YES + + GameBoardViewController + UIViewController + + boardScrollView + UIScrollView + + + boardScrollView + + boardScrollView + UIScrollView + + + + IBProjectSource + ./Classes/GameBoardViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + 933 + + diff --git a/Classes/GomokuAppDelegate.h b/Classes/GomokuAppDelegate.h new file mode 100644 index 0000000..87e523e --- /dev/null +++ b/Classes/GomokuAppDelegate.h @@ -0,0 +1,21 @@ +// +// gomokuAppDelegate.h +// gomoku +// +// Created by Konstantin Gredeskoul on 5/2/10. +// + +#import + + +@class GomokuViewController; + +@interface GomokuAppDelegate : NSObject { + UIWindow *window; + UINavigationController *navController; +} + +@property (nonatomic, retain) IBOutlet UIWindow *window; + +@end + diff --git a/Classes/GomokuAppDelegate.m b/Classes/GomokuAppDelegate.m new file mode 100644 index 0000000..59a7f3b --- /dev/null +++ b/Classes/GomokuAppDelegate.m @@ -0,0 +1,37 @@ +// +// gomokuAppDelegate.m +// gomoku +// +// Created by Konstantin Gredeskoul on 5/2/10. +// + +#import "GomokuAppDelegate.h" +#import "GomokuViewController.h" +#import "GameBoardViewController.h" + +@implementation GomokuAppDelegate + +@synthesize window; + +- (void)applicationDidFinishLaunching:(UIApplication *)application { + GomokuViewController *mainController = [[[GomokuViewController alloc] initWithNibName:@"GomokuViewController" bundle:nil] autorelease]; + GameBoardViewController *gameBoardController = [[[GameBoardViewController alloc] initWithNibName:@"GameBoardViewController" bundle:nil] autorelease]; + + mainController.gameBoardController = gameBoardController; + gameBoardController.mainController = mainController; + + navController = [[UINavigationController alloc] initWithRootViewController:mainController]; + + [window addSubview:navController.view]; + [window makeKeyAndVisible]; +} + + +- (void)dealloc { + [navController release]; + [window release]; + [super dealloc]; +} + + +@end diff --git a/Classes/GomokuViewController.h b/Classes/GomokuViewController.h new file mode 100644 index 0000000..179cb69 --- /dev/null +++ b/Classes/GomokuViewController.h @@ -0,0 +1,27 @@ +// +// gomokuViewController.h +// gomoku +// +// Created by Konstantin Gredeskoul on 5/2/10. +// + +#import +#import "GameBoardViewController.h" +#import "Game.h" +#import "Move.h" + +@interface GomokuViewController : UIViewController{ + GameBoardViewController* gameBoardController; + Game *game; +} + +@property(nonatomic, retain) GameBoardViewController *gameBoardController; +@property(nonatomic, assign) Game *game; + +- (IBAction) startSinglePlayerGame:(id) sender; +- (IBAction) startTwoPlayerGame:(id) sender; +- (void) startGameWithPlayers: (int) playerCount; +- (void) makeMove: (Move *) move; + +@end + diff --git a/Classes/GomokuViewController.m b/Classes/GomokuViewController.m new file mode 100644 index 0000000..b04c1c7 --- /dev/null +++ b/Classes/GomokuViewController.m @@ -0,0 +1,53 @@ +// +// gomokuViewController.m +// + +#import "GomokuViewController.h" +#import "Player.h" +#import "UIPlayer.h" +#import "Game.h" + + +@implementation GomokuViewController + +@synthesize gameBoardController; +@synthesize game; + +- (IBAction) startSinglePlayerGame:(id) sender { + [self startGameWithPlayers:1]; +} + +- (IBAction) startTwoPlayerGame:(id) sender { + [self startGameWithPlayers:2]; +} + +- (void) startGameWithPlayers: (int) playerCount { + if (game != NULL) { + [game release]; + game = NULL; + } + + game = [[Game alloc] initGame]; + game.delegate = gameBoardController; + + [game addPlayer:[[[UIPlayer alloc] initWithGame:game] autorelease]]; + [game addPlayer:[[[UIPlayer alloc] initWithGame:game] autorelease]]; + [game startGame]; + + NSLog(@"created game with players: %@", self.game); + [self.navigationController pushViewController:gameBoardController animated:YES]; +} + +- (void) makeMove: (Move *) move { + if ([self.game isMoveValid:move]) { + [self.game makeMove:move]; + } +} + +- (void)dealloc { + [gameBoardController release]; + [game release]; + [super dealloc]; +} + +@end diff --git a/Classes/Move.h b/Classes/Move.h new file mode 100644 index 0000000..cc02da1 --- /dev/null +++ b/Classes/Move.h @@ -0,0 +1,23 @@ +// +// Move.h +// gomoku +// +// Created by Konstantin Gredeskoul on 5/3/10. +// Copyright 2010 Konstantin Gredeskoul, shared under MIT license. All rights reserved. +// + +#import + + +@interface Move : NSObject { + int x; + int y; +} + +@property (nonatomic) int x; +@property (nonatomic) int y; + +- (Move *) initWithX: (int) xCoordinate AndY: (int) yCoordinate; +- (BOOL)isEqualToMove:(Move *)aMove; + +@end diff --git a/Classes/Move.m b/Classes/Move.m new file mode 100644 index 0000000..0b6b077 --- /dev/null +++ b/Classes/Move.m @@ -0,0 +1,46 @@ +// +// Move.m +// gomoku +// +// Created by Konstantin Gredeskoul on 5/3/10. +// Copyright 2010 Konstantin Gredeskoul, shared under MIT license. All rights reserved. +// + +#import "Move.h" + + +@implementation Move + +@synthesize x; +@synthesize y; + +- (Move *) initWithX: (int) xCoordinate AndY: (int) yCoordinate { + self = [super init]; + if (self) { + [self setX:xCoordinate]; + [self setY:yCoordinate]; + } + return self; +} + +- (NSString *)description { + return [NSString stringWithFormat:@"Move(x:%d y:%d)", self.x, self.y]; +} + +- (BOOL)isEqual:(id)other { + if (other == self) + return YES; + if (!other || ![other isKindOfClass:[self class]]) + return NO; + return [self isEqualToMove:((Move *)other)]; +} + +- (BOOL)isEqualToMove:(Move *)aMove { + if (self == aMove) + return YES; + if (self.x != aMove.x || self.y != aMove.y) + return NO; + return YES; +} + +@end diff --git a/Classes/Player.h b/Classes/Player.h new file mode 100644 index 0000000..67f447b --- /dev/null +++ b/Classes/Player.h @@ -0,0 +1,20 @@ +// +// Player.h +// gomoku +// +// Created by Konstantin Gredeskoul on 5/3/10. +// Copyright 2010 Konstantin Gredeskoul, shared under MIT license. All rights reserved. +// + +#import +#import "Move.h" + + +@protocol Player + +- (void) startThinking; +- (void) stopThinking; +- (void) makeMove: (Move *) move; +- (void) game; + +@end diff --git a/Classes/UIPlayer.h b/Classes/UIPlayer.h new file mode 100644 index 0000000..fb34ce0 --- /dev/null +++ b/Classes/UIPlayer.h @@ -0,0 +1,21 @@ +// +// UIPlayer.h +// gomoku +// +// Created by Konstantin Gredeskoul on 5/3/10. +// Copyright 2010 Konstantin Gredeskoul, shared under MIT license. All rights reserved. +// + +#import +#import "Player.h" +#import "Game.h" + +@interface UIPlayer : NSObject { + Game *game; +} + +-(UIPlayer *)initWithGame:(Game *)thisGame; + +@property(nonatomic, retain) Game *game; + +@end diff --git a/Classes/UIPlayer.m b/Classes/UIPlayer.m new file mode 100644 index 0000000..155cb33 --- /dev/null +++ b/Classes/UIPlayer.m @@ -0,0 +1,42 @@ +// +// UIPlayer.m +// gomoku +// +// Created by Konstantin Gredeskoul on 5/3/10. +// Copyright 2010 Konstantin Gredeskoul, shared under MIT license. All rights reserved. +// + +#import "UIPlayer.h" + +@implementation UIPlayer + +@synthesize game; + +-(UIPlayer *)initWithGame:(Game *) thisGame { + if (self = [super init]) { + self.game = thisGame; + } + return self; +} + +- (void) startThinking { + // notifies the view that it should switch into user entry mode + // view must be able to +} + +- (void) stopThinking { +} + +- (void) makeMove: (Move *) move { + // pass through + // [game makeMove:move]; +} + + +- (void) dealloc { + [game release]; + [super dealloc]; +} + + +@end diff --git a/Default.png b/Default.png new file mode 100644 index 0000000000000000000000000000000000000000..37f2520086b425fadeaa1e4a986bcbe262d81159 GIT binary patch literal 7859 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 literal 0 HcmV?d00001 diff --git a/Frameworks/OCMock.framework/Headers b/Frameworks/OCMock.framework/Headers new file mode 120000 index 0000000..a177d2a --- /dev/null +++ b/Frameworks/OCMock.framework/Headers @@ -0,0 +1 @@ +Versions/Current/Headers \ No newline at end of file diff --git a/Frameworks/OCMock.framework/OCMock b/Frameworks/OCMock.framework/OCMock new file mode 120000 index 0000000..c388ea8 --- /dev/null +++ b/Frameworks/OCMock.framework/OCMock @@ -0,0 +1 @@ +Versions/Current/OCMock \ No newline at end of file diff --git a/Frameworks/OCMock.framework/Resources b/Frameworks/OCMock.framework/Resources new file mode 120000 index 0000000..953ee36 --- /dev/null +++ b/Frameworks/OCMock.framework/Resources @@ -0,0 +1 @@ +Versions/Current/Resources \ No newline at end of file diff --git a/Frameworks/OCMock.framework/Versions/A/Headers/NSNotificationCenter+OCMAdditions.h b/Frameworks/OCMock.framework/Versions/A/Headers/NSNotificationCenter+OCMAdditions.h new file mode 100644 index 0000000..ae2e37d --- /dev/null +++ b/Frameworks/OCMock.framework/Versions/A/Headers/NSNotificationCenter+OCMAdditions.h @@ -0,0 +1,15 @@ +//--------------------------------------------------------------------------------------- +// $Id: NSNotificationCenter+OCMAdditions.h$ +// Copyright (c) 2009 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + +@class OCMockObserver; + + +@interface NSNotificationCenter(OCMAdditions) + +- (void)addMockObserver:(OCMockObserver *)notificationObserver name:(NSString *)notificationName object:(id)notificationSender; + +@end diff --git a/Frameworks/OCMock.framework/Versions/A/Headers/OCMArg.h b/Frameworks/OCMock.framework/Versions/A/Headers/OCMArg.h new file mode 100644 index 0000000..b327512 --- /dev/null +++ b/Frameworks/OCMock.framework/Versions/A/Headers/OCMArg.h @@ -0,0 +1,30 @@ +//--------------------------------------------------------------------------------------- +// $Id: $ +// Copyright (c) 2009 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + +@interface OCMArg : NSObject + +// constraining arguments + ++ (id)any; ++ (void *)anyPointer; ++ (id)isNil; ++ (id)isNotNil; ++ (id)isNotEqual:(id)value; ++ (id)checkWithSelector:(SEL)selector onObject:(id)anObject; + +// manipulating arguments + ++ (id *)setTo:(id)value; + +// internal use only + ++ (id)resolveSpecialValues:(NSValue *)value; + +@end + +#define OCMOCK_ANY [OCMArg any] +#define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(typeof(variable))] diff --git a/Frameworks/OCMock.framework/Versions/A/Headers/OCMConstraint.h b/Frameworks/OCMock.framework/Versions/A/Headers/OCMConstraint.h new file mode 100644 index 0000000..8381dab --- /dev/null +++ b/Frameworks/OCMock.framework/Versions/A/Headers/OCMConstraint.h @@ -0,0 +1,48 @@ +//--------------------------------------------------------------------------------------- +// $Id: $ +// Copyright (c) 2007-2009 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + +@interface OCMConstraint : NSObject + ++ (id)constraint; +- (BOOL)evaluate:(id)value; + +// if you are looking for any, isNil, etc, they have moved to OCMArg + ++ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject; ++ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject withValue:(id)aValue; + +// try to use [OCMArg checkWith...] instead of constraintWithSelector in here + +@end + +@interface OCMAnyConstraint : OCMConstraint +@end + +@interface OCMIsNilConstraint : OCMConstraint +@end + +@interface OCMIsNotNilConstraint : OCMConstraint +@end + +@interface OCMIsNotEqualConstraint : OCMConstraint +{ + @public + id testValue; +} + +@end + +@interface OCMInvocationConstraint : OCMConstraint +{ + @public + NSInvocation *invocation; +} + +@end + +#define CONSTRAINT(aSelector) [OCMConstraint constraintWithSelector:aSelector onObject:self] +#define CONSTRAINTV(aSelector, aValue) [OCMConstraint constraintWithSelector:aSelector onObject:self withValue:(aValue)] diff --git a/Frameworks/OCMock.framework/Versions/A/Headers/OCMock.h b/Frameworks/OCMock.framework/Versions/A/Headers/OCMock.h new file mode 100644 index 0000000..892b3cc --- /dev/null +++ b/Frameworks/OCMock.framework/Versions/A/Headers/OCMock.h @@ -0,0 +1,10 @@ +//--------------------------------------------------------------------------------------- +// $Id: OCMock.h 39 2009-04-09 05:31:28Z erik $ +// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import +#import +#import +#import +#import diff --git a/Frameworks/OCMock.framework/Versions/A/Headers/OCMockObject.h b/Frameworks/OCMock.framework/Versions/A/Headers/OCMockObject.h new file mode 100644 index 0000000..a334b57 --- /dev/null +++ b/Frameworks/OCMock.framework/Versions/A/Headers/OCMockObject.h @@ -0,0 +1,41 @@ +//--------------------------------------------------------------------------------------- +// $Id: OCMockObject.h 52 2009-08-14 07:21:10Z erik $ +// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + +@interface OCMockObject : NSProxy +{ + BOOL isNice; + BOOL expectationOrderMatters; + NSMutableArray *recorders; + NSMutableArray *expectations; + NSMutableArray *exceptions; +} + ++ (id)mockForClass:(Class)aClass; ++ (id)mockForProtocol:(Protocol *)aProtocol; ++ (id)partialMockForObject:(NSObject *)anObject; + ++ (id)niceMockForClass:(Class)aClass; ++ (id)niceMockForProtocol:(Protocol *)aProtocol; + ++ (id)observerMock; + +- (id)init; + +- (void)setExpectationOrderMatters:(BOOL)flag; + +- (id)stub; +- (id)expect; + +- (void)verify; + +// internal use only + +- (id)getNewRecorder; +- (BOOL)handleInvocation:(NSInvocation *)anInvocation; +- (void)handleUnRecordedInvocation:(NSInvocation *)anInvocation; + +@end diff --git a/Frameworks/OCMock.framework/Versions/A/Headers/OCMockRecorder.h b/Frameworks/OCMock.framework/Versions/A/Headers/OCMockRecorder.h new file mode 100644 index 0000000..fea7b86 --- /dev/null +++ b/Frameworks/OCMock.framework/Versions/A/Headers/OCMockRecorder.h @@ -0,0 +1,28 @@ +//--------------------------------------------------------------------------------------- +// $Id: OCMockRecorder.h 50 2009-07-16 06:48:19Z erik $ +// Copyright (c) 2004-2009 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + +@interface OCMockRecorder : NSProxy +{ + id signatureResolver; + NSInvocation *recordedInvocation; + NSMutableArray *invocationHandlers; +} + +- (id)initWithSignatureResolver:(id)anObject; + +- (BOOL)matchesInvocation:(NSInvocation *)anInvocation; +- (void)releaseInvocation; + +- (id)andReturn:(id)anObject; +- (id)andReturnValue:(NSValue *)aValue; +- (id)andThrow:(NSException *)anException; +- (id)andPost:(NSNotification *)aNotification; +- (id)andCall:(SEL)selector onObject:(id)anObject; + +- (NSArray *)invocationHandlers; + +@end diff --git a/Frameworks/OCMock.framework/Versions/A/OCMock b/Frameworks/OCMock.framework/Versions/A/OCMock new file mode 100755 index 0000000000000000000000000000000000000000..303e93375d12f6f5f04002921cb9fbc853d0da05 GIT binary patch literal 291796 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%0A8*62Ay}uE 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 M^)7kzEgz8lf1+9m2><{9 literal 0 HcmV?d00001 diff --git a/Frameworks/OCMock.framework/Versions/A/Resources/Info.plist b/Frameworks/OCMock.framework/Versions/A/Resources/Info.plist new file mode 100644 index 0000000..4634d14 --- /dev/null +++ b/Frameworks/OCMock.framework/Versions/A/Resources/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + OCMock + CFBundleIdentifier + com.mulle-kybernetik.OCMock + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + OCMock + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.29 + CFBundleSignature + ???? + CFBundleVersion + 1 + NSHumanReadableCopyright + Copyright © 2004-2009 Mulle Kybernetik. + + diff --git a/Frameworks/OCMock.framework/Versions/A/Resources/License.txt b/Frameworks/OCMock.framework/Versions/A/Resources/License.txt new file mode 100644 index 0000000..e2c1396 --- /dev/null +++ b/Frameworks/OCMock.framework/Versions/A/Resources/License.txt @@ -0,0 +1,15 @@ + + Copyright (c) 2004-2009 by Mulle Kybernetik. All rights reserved. + + Permission to use, copy, modify and distribute this software and its documentation + is hereby granted, provided that both the copyright notice and this permission + notice appear in all copies of the software, derivative works or modified versions, + and any portions thereof, and that both notices appear in supporting documentation, + and that credit is given to Mulle Kybernetik in all documents and publicity + pertaining to direct or indirect use of this code or its derivatives. + + THIS IS EXPERIMENTAL SOFTWARE AND IT IS KNOWN TO HAVE BUGS, SOME OF WHICH MAY HAVE + SERIOUS CONSEQUENCES. THE COPYRIGHT HOLDER ALLOWS FREE USE OF THIS SOFTWARE IN ITS + "AS IS" CONDITION. THE COPYRIGHT HOLDER DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY + DAMAGES WHATSOEVER RESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE + OR OF ANY DERIVATIVE WORK. \ No newline at end of file diff --git a/Frameworks/OCMock.framework/Versions/Current b/Frameworks/OCMock.framework/Versions/Current new file mode 120000 index 0000000..8c7e5a6 --- /dev/null +++ b/Frameworks/OCMock.framework/Versions/Current @@ -0,0 +1 @@ +A \ No newline at end of file diff --git a/Frameworks/hamcrest.framework/Headers b/Frameworks/hamcrest.framework/Headers new file mode 120000 index 0000000..a177d2a --- /dev/null +++ b/Frameworks/hamcrest.framework/Headers @@ -0,0 +1 @@ +Versions/Current/Headers \ No newline at end of file diff --git a/Frameworks/hamcrest.framework/Resources b/Frameworks/hamcrest.framework/Resources new file mode 120000 index 0000000..953ee36 --- /dev/null +++ b/Frameworks/hamcrest.framework/Resources @@ -0,0 +1 @@ +Versions/Current/Resources \ No newline at end of file diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCAllOf.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCAllOf.h new file mode 100644 index 0000000..77fdc44 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCAllOf.h @@ -0,0 +1,44 @@ +#import + + +/** + Calculates the logical conjunction of multiple matchers. + + Evaluation is shortcut, so subsequent matchers are not called if an earlier matcher returns + @c NO. +*/ +@interface HCAllOf : HCBaseMatcher +{ + NSArray* matchers; +} + ++ (HCAllOf*) allOf:(NSArray*)theMatchers; +- (id) initWithMatchers:(NSArray*)theMatchers; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Evaluates to @c YES only if @b all of the passed in matchers evaluate to @c YES. + + @param matcher Comma-separated list of matchers ending with @c nil. +*/ +id HC_allOf(id matcher, ...); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_allOf, available if HC_SHORTHAND is defined. +*/ +#define allOf HC_allOf + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCAnyOf.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCAnyOf.h new file mode 100644 index 0000000..cc64c90 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCAnyOf.h @@ -0,0 +1,44 @@ +#import + + +/** + Calculates the logical disjunction of multiple matchers. + + Evaluation is shortcut, so the subsequent matchers are not called if an earlier matcher returns + @c YES. +*/ +@interface HCAnyOf : HCBaseMatcher +{ + NSArray* matchers; +} + ++ (HCAnyOf*) anyOf:(NSArray*)theMatchers; +- (id) initWithMatchers:(NSArray*)theMatchers; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Evaluates to @c YES if @b any of the passed in matchers evaluate to @c YES. + + @param matcher Comma-separated list of matchers ending with @c nil. +*/ +id HC_anyOf(id matcher, ...); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_anyOf, available if HC_SHORTHAND is defined. +*/ +#define anyOf HC_anyOf + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCBaseDescription.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCBaseDescription.h new file mode 100644 index 0000000..2328678 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCBaseDescription.h @@ -0,0 +1,14 @@ +#import +#import + + +/** + Base class for all HCDescription implementations. +*/ +@interface HCBaseDescription : NSObject +@end + + +@interface HCBaseDescription (SubclassMustImplement) +- (void) append:(NSString*)string; +@end diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCBaseMatcher.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCBaseMatcher.h new file mode 100644 index 0000000..abf8b5b --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCBaseMatcher.h @@ -0,0 +1,13 @@ +#import +#import + + +/** + Base class for all Matcher implementations. + + Most implementations can just implement matches: and let matches:describingMismatchTo: call + it. But if it makes more sense to generate the mismatch description during the matching, + override matches:describingMismatchTo: and have matches: call it with a nil description. +*/ +@interface HCBaseMatcher : NSObject +@end diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCDescribedAs.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCDescribedAs.h new file mode 100644 index 0000000..767dd68 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCDescribedAs.h @@ -0,0 +1,48 @@ +#import + + +/** + Provides a custom description to another matcher. +*/ +@interface HCDescribedAs : HCBaseMatcher +{ + NSString* descriptionTemplate; + id matcher; + NSArray* values; +} + ++ (HCDescribedAs*) describedAs:(NSString*)description + forMatcher:(id)aMatcher + overValues:(NSArray*)templateValues; +- (id) initWithDescription:(NSString*)description + forMatcher:(id)aMatcher + overValues:(NSArray*)templateValues; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Wraps an existing matcher and overrides the description when it fails. + + Optional values following the matcher are substituted for \%0, \%1, etc. + The last argument must be nil. +*/ +id HC_describedAs(NSString* description, id matcher, ...); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_describedAs, available if HC_SHORTHAND is defined. +*/ +#define describedAs HC_describedAs + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCDescription.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCDescription.h new file mode 100644 index 0000000..bdc11cb --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCDescription.h @@ -0,0 +1,38 @@ +#import + +@protocol HCSelfDescribing; + + +/** + A description of an HCMatcher. + + An HCMatcher will describe itself to a description which can later be used for reporting. +*/ +@protocol HCDescription + +/** + Appends some plain text to the description. + + @return self +*/ +- (id) appendText:(NSString*)text; + +/** + Appends description of HCSelfDescribing value to self. + + @return self +*/ +- (id) appendDescriptionOf:(id)value; + +/** + Appends an arbitary value to the description. +*/ +- (id) appendValue:(id)value; + +/** + Appends a list of objects to the description. +*/ +- (id) appendList:(NSArray*)values + start:(NSString*)start separator:(NSString*)separator end:(NSString*)end; + +@end diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCHasDescription.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCHasDescription.h new file mode 100644 index 0000000..876d256 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCHasDescription.h @@ -0,0 +1,38 @@ +#import + + +@interface HCHasDescription : HCBaseMatcher +{ + id descriptionMatcher; +} + ++ (HCHasDescription*) hasDescription:(id)theDescriptionMatcher; +- (id) initWithDescription:(id)theDescriptionMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Evaluates whether [item description] satisfies a given matcher. + + Example: hasDescription(equalTo(result)) +*/ +id HC_hasDescription(id item); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_hasDescription, available if HC_SHORTHAND is defined. +*/ +#define hasDescription HC_hasDescription + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCIs.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIs.h new file mode 100644 index 0000000..828d330 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIs.h @@ -0,0 +1,58 @@ +#import + + +/** + Decorates another HCMatcher, retaining the behavior but allowing tests to be slightly more + expressive. + + For example: +@code +assertThat(cheese, equalTo(smelly)) +@endcode + vs. +@code +assertThat(cheese, is(equalTo(smelly))) +@endcode +*/ +@interface HCIs : HCBaseMatcher +{ + id matcher; +} + ++ (HCIs*) is:(id)aMatcher; +- (id) initWithMatcher:(id)aMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Decorates an item, providing shortcuts to the frequently used is(equalTo(x)). + + For example: +@code +assertThat(cheese, is(equalTo(smelly))) +@endcode + vs. +@code +assertThat(cheese, is(smelly)) +@endcode +*/ +id HC_is(id item); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_is, available if HC_SHORTHAND is defined. +*/ +#define is HC_is + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsAnything.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsAnything.h new file mode 100644 index 0000000..f8f2c30 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsAnything.h @@ -0,0 +1,53 @@ +#import + + +/** + A matcher that always returns @c YES. +*/ +@interface HCIsAnything : HCBaseMatcher +{ + NSString* description; +} + ++ (HCIsAnything*) isAnything; ++ (HCIsAnything*) isAnythingWithDescription:(NSString*)aDescription; +- (id) init; +- (id) initWithDescription:(NSString*)aDescription; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + This matcher always evaluates to @c YES. +*/ +id HC_anything(); + +/** + This matcher always evaluates to YES. + + @param aDescription A meaningful string used when describing itself. +*/ +id HC_anythingWithDescription(NSString* aDescription); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_anything, available if HC_SHORTHAND is defined. +*/ +#define anything HC_anything + +/** + Shorthand for HC_anythingWithDescription, available if HC_SHORTHAND is defined. +*/ +#define anythingWithDescription HC_anythingWithDescription + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsCloseTo.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsCloseTo.h new file mode 100644 index 0000000..c020ef8 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsCloseTo.h @@ -0,0 +1,40 @@ +#import + + +/** + Is the value a number equal to a value within some range of acceptable error? +*/ +@interface HCIsCloseTo : HCBaseMatcher +{ + double value; + double error; +} + ++ (HCIsCloseTo*) isCloseTo:(double)aValue within:(double)anError; +- (id) initWithValue:(double)aValue error:(double)anError; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Is the value a number equal to a value within some range of acceptable error? +*/ +id HC_closeTo(double aValue, double anError); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_closeTo, available if HC_SHORTHAND is defined. +*/ +#define closeTo HC_closeTo + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsCollectionContaining.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsCollectionContaining.h new file mode 100644 index 0000000..87d8ea5 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsCollectionContaining.h @@ -0,0 +1,43 @@ +#import + + +@interface HCIsCollectionContaining : HCBaseMatcher +{ + id elementMatcher; +} + ++ (HCIsCollectionContaining*) isCollectionContaining:(id)anElementMatcher; +- (id) initWithMatcher:(id)anElementMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_hasItem(id item); + +/** + @param item comma-separated list of items ending with nil. +*/ +id HC_hasItems(id item, ...); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_hasItem, available if HC_SHORTHAND is defined. +*/ +#define hasItem HC_hasItem + +/** + Shorthand for HC_hasItems, available if HC_SHORTHAND is defined. +*/ +#define hasItems HC_hasItems + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsCollectionOnlyContaining.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsCollectionOnlyContaining.h new file mode 100644 index 0000000..d176d73 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsCollectionOnlyContaining.h @@ -0,0 +1,52 @@ +#import + + +/** + Matches collections that only contain elements satisfying a given matcher. + + This matcher will never match an empty collection. +*/ +@interface HCIsCollectionOnlyContaining : HCBaseMatcher +{ + id matcher; +} + ++ (HCIsCollectionOnlyContaining*) isCollectionOnlyContaining:(id)aMatcher; +- (id) initWithMatcher:(id)aMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Matches collections that only contain elements satisfying any of a list of items. + + For example, + [NSArray arrayWithObjects:@"a", "b", @"c", nil] + would satisfy + onlyContains(lessThan(@"d"), nil). + + If an item is not a matcher, it is equivalent to equalTo(item), so the array in the example + above would also satisfy + onlyContains(@"a", @"b", @"c", nil). + + @param item comma-separated list of items ending with nil. +*/ +id HC_onlyContains(id item, ...); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_onlyContains, available if HC_SHORTHAND is defined. +*/ +#define onlyContains HC_onlyContains + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsDictionaryContaining.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsDictionaryContaining.h new file mode 100644 index 0000000..0cbadcd --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsDictionaryContaining.h @@ -0,0 +1,35 @@ +#import + + +@interface HCIsDictionaryContaining : HCBaseMatcher +{ + id keyMatcher; + id valueMatcher; +} + ++ (HCIsDictionaryContaining*) isDictionaryContainingKey:(id)theKeyMatcher + value:(id)theValueMatcher; +- (id) initWithKeyMatcher:(id)theKeyMatcher valueMatcher:(id)theValueMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_hasEntry(id key, id value); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_hasEntry, available if HC_SHORTHAND is defined. +*/ +#define hasEntry HC_hasEntry + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsDictionaryContainingKey.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsDictionaryContainingKey.h new file mode 100644 index 0000000..fd37b13 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsDictionaryContainingKey.h @@ -0,0 +1,33 @@ +#import + + +@interface HCIsDictionaryContainingKey : HCBaseMatcher +{ + id keyMatcher; +} + ++ (HCIsDictionaryContainingKey*) isDictionaryContainingKey:(id)theKeyMatcher; +- (id) initWithKeyMatcher:(id)theKeyMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_hasKey(id item); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_hasKey, available if HC_SHORTHAND is defined. +*/ +#define hasKey HC_hasKey + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsDictionaryContainingValue.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsDictionaryContainingValue.h new file mode 100644 index 0000000..201929b --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsDictionaryContainingValue.h @@ -0,0 +1,33 @@ +#import + + +@interface HCIsDictionaryContainingValue : HCBaseMatcher +{ + id valueMatcher; +} + ++ (HCIsDictionaryContainingValue*) isDictionaryContainingValue:(id)theValueMatcher; +- (id) initWithValueMatcher:(id)theValueMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_hasValue(id item); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_hasValue, available if HC_SHORTHAND is defined. +*/ +#define hasValue HC_hasValue + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsEqual.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsEqual.h new file mode 100644 index 0000000..c8781a9 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsEqual.h @@ -0,0 +1,39 @@ +#import + + +/** + Is the object equal to another object, as tested by the isEqual: method? +*/ +@interface HCIsEqual : HCBaseMatcher +{ + id object; +} + ++ (HCIsEqual*) isEqualTo:(id)equalArg; +- (id) initEqualTo:(id)equalArg; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Is the object equal to another object, as tested by the isEqual: method? +*/ +id HC_equalTo(id equalArg); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_equalTo, available if HC_SHORTHAND is defined. +*/ +#define equalTo HC_equalTo + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsEqualIgnoringCase.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsEqualIgnoringCase.h new file mode 100644 index 0000000..d7b20a0 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsEqualIgnoringCase.h @@ -0,0 +1,36 @@ +#import + + +/** + Tests if a string is equal to another string, regardless of the case. +*/ +@interface HCIsEqualIgnoringCase : HCBaseMatcher +{ + NSString* string; +} + ++ (HCIsEqualIgnoringCase*) isEqualIgnoringCase:(NSString*)aString; +- (id) initWithString:(NSString*)aString; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_equalToIgnoringCase(NSString* aString); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_endsWith, available if HC_SHORTHAND is defined. +*/ +#define equalToIgnoringCase HC_equalToIgnoringCase + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsEqualIgnoringWhiteSpace.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsEqualIgnoringWhiteSpace.h new file mode 100644 index 0000000..111a2d8 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsEqualIgnoringWhiteSpace.h @@ -0,0 +1,37 @@ +#import + + +/** + Tests if a string is equal to another string, ignoring any changes in whitespace. +*/ +@interface HCIsEqualIgnoringWhiteSpace : HCBaseMatcher +{ + NSString* originalString; + NSString* strippedString; +} + ++ (HCIsEqualIgnoringWhiteSpace*) isEqualIgnoringWhiteSpace:(NSString*)aString; +- (id) initWithString:(NSString*)aString; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_equalToIgnoringWhiteSpace(NSString* aString); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_endsWith, available if HC_SHORTHAND is defined. +*/ +#define equalToIgnoringWhiteSpace HC_equalToIgnoringWhiteSpace + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsIn.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsIn.h new file mode 100644 index 0000000..13bc79e --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsIn.h @@ -0,0 +1,33 @@ +#import + + +@interface HCIsIn : HCBaseMatcher +{ + id collection; +} + ++ (HCIsIn*) isInCollection:(id)aCollection; +- (id) initWithCollection:(id)aCollection; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_isIn(id collection); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_isIn, available if HC_SHORTHAND is defined. +*/ +#define isIn HC_isIn + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsInstanceOf.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsInstanceOf.h new file mode 100644 index 0000000..b676916 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsInstanceOf.h @@ -0,0 +1,39 @@ +#import + + +/** + Tests whether the value is an instance of a class (including subclasses). +*/ +@interface HCIsInstanceOf : HCBaseMatcher +{ + Class theClass; +} + ++ (HCIsInstanceOf*) isInstanceOf:(Class)type; +- (id) initWithType:(Class)type; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Is the value an instance of a particular type? +*/ +id HC_instanceOf(Class type); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_instanceOf, available if HC_SHORTHAND is defined. +*/ +#define instanceOf HC_instanceOf + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsNil.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsNil.h new file mode 100644 index 0000000..7c0c823 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsNil.h @@ -0,0 +1,47 @@ +#import + + +/** + Is the value @c nil? +*/ +@interface HCIsNil : HCBaseMatcher +{ +} + ++ (HCIsNil*) isNil; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Matches if the value is @c nil. +*/ +id HC_nilValue(); + +/** + Matches if the value is not @c nil. +*/ +id HC_notNilValue(); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_nilValue, available if HC_SHORTHAND is defined. +*/ +#define nilValue HC_nilValue + +/** + Shorthand for HC_notNilValue, available if HC_SHORTHAND is defined. +*/ +#define notNilValue HC_notNilValue + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsNot.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsNot.h new file mode 100644 index 0000000..e7bb22f --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsNot.h @@ -0,0 +1,48 @@ +#import + + +/** + Calculates the logical negation of a matcher. +*/ +@interface HCIsNot : HCBaseMatcher +{ + id matcher; +} + ++ (HCIsNot*) isNot:(id)aMatcher; +- (id) initNot:(id)aMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Inverts the rule, providing a shortcut to the frequently used isNot(equalTo(x)). + + For example: +@code +assertThat(cheese, isNot(equalTo(smelly))) +@endcode + vs. +@code +assertThat(cheese, isNot(smelly)) +@endcode +*/ +id HC_isNot(id item); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_isNot, available if HC_SHORTHAND is defined. +*/ +#define isNot HC_isNot + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsSame.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsSame.h new file mode 100644 index 0000000..e3c810c --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCIsSame.h @@ -0,0 +1,39 @@ +#import + + +/** + Is the value the same object as another value? +*/ +@interface HCIsSame : HCBaseMatcher +{ + id object; +} + ++ (HCIsSame*) isSameAs:(id)anObject; +- (id) initSameAs:(id)anObject; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Evaluates to @c YES only when the argument is this same object. +*/ +id HC_sameInstance(id anObject); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_sameInstance, available if HC_SHORTHAND is defined. +*/ +#define sameInstance HC_sameInstance + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCMatcher.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCMatcher.h new file mode 100644 index 0000000..93ec2e6 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCMatcher.h @@ -0,0 +1,44 @@ +#import + + +/** + A matcher over acceptable values. + + A matcher is able to describe itself to give feedback when it fails. + + HCMatcher implementations should @b not directly implement this protocol. + Instead, @b extend the HCBaseMatcher class, which will ensure that the HCMatcher API can grow + to support new features and remain compatible with all HCMatcher implementations. +*/ +@protocol HCMatcher + +/** + Evaluates the matcher for argument @a item. + + @param item The object against which the matcher is evaluated. + @return @c YES if @a item matches, otherwise @c NO. +*/ +- (BOOL) matches:(id)item; + +/** + Evaluates the matcher for argument @a item. + + @param item The object against which the matcher is evaluated. + @param mismatchDescription The description to be built or appended to if @item does not match. + @return @c YES if @a item matches, otherwise @c NO. +*/ +- (BOOL) matches:(id)item describingMismatchTo:(id)mismatchDescription; + +/** + Generates a description of why the matcher has not accepted the item. + + The description will be part of a larger description of why a matching failed, so it should be + concise. + This method assumes that @c matches:item is false, but will not check this. + + @param item The item that the HCMatcher has rejected. + @param mismatchDescription The description to be built or appended to. +*/ +- (void) describeMismatchOf:(id)item to:(id)mismatchDescription; + +@end diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCMatcherAssert.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCMatcherAssert.h new file mode 100644 index 0000000..53ca6ce --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCMatcherAssert.h @@ -0,0 +1,29 @@ +@protocol HCMatcher; + + +#ifdef __cplusplus +extern "C" { +#endif + +void HC_assertThatWithLocation(id actual, id matcher, + const char* fileName, int lineNumber); + +#ifdef __cplusplus +} +#endif + +/** + OCUnit integration asserting that actual value satisfies matcher. +*/ +#define HC_assertThat(actual, matcher) \ + HC_assertThatWithLocation(actual, matcher, __FILE__, __LINE__) + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_assertThat, available if HC_SHORTHAND is defined. +*/ +#define assertThat HC_assertThat + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCOrderingComparison.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCOrderingComparison.h new file mode 100644 index 0000000..5337f85 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCOrderingComparison.h @@ -0,0 +1,72 @@ +#import + + +@interface HCOrderingComparison : HCBaseMatcher +{ + id value; + NSComparisonResult minCompare; + NSComparisonResult maxCompare; +} + ++ (HCOrderingComparison*) compare:(id)aValue + minCompare:(NSComparisonResult)min + maxCompare:(NSComparisonResult)max; +- (id) initComparing:(id)aValue + minCompare:(NSComparisonResult)min + maxCompare:(NSComparisonResult)max; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Is value > expected? +*/ +id HC_greaterThan(id aValue); + +/** + Is value >= expected? +*/ +id HC_greaterThanOrEqualTo(id aValue); + +/** + Is value < expected? +*/ +id HC_lessThan(id aValue); + +/** + Is value <= expected? +*/ +id HC_lessThanOrEqualTo(id aValue); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_greaterThan, available if HC_SHORTHAND is defined. +*/ +#define greaterThan HC_greaterThan + +/** + Shorthand for HC_greaterThan, available if HC_SHORTHAND is defined. +*/ +#define greaterThanOrEqualTo HC_greaterThanOrEqualTo + +/** + Shorthand for HC_greaterThan, available if HC_SHORTHAND is defined. +*/ +#define lessThan HC_lessThan + +/** + Shorthand for HC_lessThanOrEqualTo, available if HC_SHORTHAND is defined. +*/ +#define lessThanOrEqualTo HC_lessThanOrEqualTo + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCSelfDescribing.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCSelfDescribing.h new file mode 100644 index 0000000..c4d836e --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCSelfDescribing.h @@ -0,0 +1,19 @@ +@protocol HCDescription; + + +/** + The ability of an object to describe itself. +*/ +@protocol HCSelfDescribing + +/** + Generates a description of the object. + + The description may be part of a description of a larger object of which this is just a + component, so it should be worded appropriately. + + @param description The description to be built or appended to. +*/ +- (void) describeTo:(id)description; + +@end diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCStringContains.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCStringContains.h new file mode 100644 index 0000000..80b2f08 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCStringContains.h @@ -0,0 +1,34 @@ +#import + + +/** + Tests if the argument is a string that contains a substring. +*/ +@interface HCStringContains : HCSubstringMatcher +{ +} + ++ (HCStringContains*) stringContains:(NSString*)aSubstring; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_containsString(NSString* aSubstring); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_containsString, available if HC_SHORTHAND is defined. +*/ +#define containsString HC_containsString + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCStringDescription.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCStringDescription.h new file mode 100644 index 0000000..b264e20 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCStringDescription.h @@ -0,0 +1,26 @@ +#import + +@protocol HCSelfDescribing; + + +/** + An HCDescription that is stored as a string. +*/ +@interface HCStringDescription : HCBaseDescription +{ + NSMutableString* accumulator; +} + +/** + Returns the description of an HCSelfDescribing object as a string. + + @param selfDescribing The object to be described. + @return The description of the object. +*/ ++ (NSString*) stringFrom:(id)selfDescribing; + ++ (HCStringDescription*) stringDescription; + +- (id) init; + +@end diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCStringEndsWith.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCStringEndsWith.h new file mode 100644 index 0000000..ba9e4e0 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCStringEndsWith.h @@ -0,0 +1,34 @@ +#import + + +/** + Tests if the argument is a string that ends with a substring. +*/ +@interface HCStringEndsWith : HCSubstringMatcher +{ +} + ++ (HCStringEndsWith*) stringEndsWith:(NSString*)aSubstring; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_endsWith(NSString* aSubstring); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_endsWith, available if HC_SHORTHAND is defined. +*/ +#define endsWith HC_endsWith + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCStringStartsWith.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCStringStartsWith.h new file mode 100644 index 0000000..e877066 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCStringStartsWith.h @@ -0,0 +1,34 @@ +#import + + +/** + Tests if the argument is a string that starts with a substring. +*/ +@interface HCStringStartsWith : HCSubstringMatcher +{ +} + ++ (HCStringStartsWith*) stringStartsWith:(NSString*)aSubstring; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_startsWith(NSString* aSubstring); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_startsWith, available if HC_SHORTHAND is defined. +*/ +#define startsWith HC_startsWith + +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCSubstringMatcher.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCSubstringMatcher.h new file mode 100644 index 0000000..ca4a8f3 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCSubstringMatcher.h @@ -0,0 +1,11 @@ +#import + + +@interface HCSubstringMatcher : HCBaseMatcher +{ + NSString* substring; +} + +- (id) initWithSubstring:(NSString*)aSubstring; + +@end diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/HCWrapShortcut.h b/Frameworks/hamcrest.framework/Versions/A/Headers/HCWrapShortcut.h new file mode 100644 index 0000000..8d0e2d2 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/HCWrapShortcut.h @@ -0,0 +1,12 @@ +@protocol HCMatcher; + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_wrapShortcut(id item); + +#ifdef __cplusplus +} +#endif diff --git a/Frameworks/hamcrest.framework/Versions/A/Headers/hamcrest.h b/Frameworks/hamcrest.framework/Versions/A/Headers/hamcrest.h new file mode 100644 index 0000000..b6d5508 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Headers/hamcrest.h @@ -0,0 +1,36 @@ +// Unit test integration +#import + +// Core +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +// Library: Collection +#import +#import +#import +#import +#import +#import + +// Library: Number +#import +#import + +// Library: Object +#import + +// Library: Text +#import +#import +#import +#import +#import diff --git a/Frameworks/hamcrest.framework/Versions/A/Resources/English.lproj/InfoPlist.strings b/Frameworks/hamcrest.framework/Versions/A/Resources/English.lproj/InfoPlist.strings new file mode 100644 index 0000000000000000000000000000000000000000..edc71d9d5bfac7079d7e8b1a5a45ef1715cf6892 GIT binary patch literal 220 zcmZvW%?`m(5Ju11Q#6)cv|=R@D;pBA;0Z3;60}WQgg5e%IO$p@x!?SJbLM_ODKQZ% zD)s~}oOqFOuy8;$&eW6zk$8UCHTos1b76SGGjiCaPXUPk8S&L36gg^a29f9J6$U;qFB literal 0 HcmV?d00001 diff --git a/Frameworks/hamcrest.framework/Versions/A/Resources/Info.plist b/Frameworks/hamcrest.framework/Versions/A/Resources/Info.plist new file mode 100644 index 0000000..b941f8d --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/A/Resources/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + hamcrest + CFBundleIdentifier + org.hamcrest + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + hamcrest + CFBundlePackageType + FMWK + CFBundleSignature + hamc + CFBundleVersion + 1.0 + + diff --git a/Frameworks/hamcrest.framework/Versions/A/hamcrest b/Frameworks/hamcrest.framework/Versions/A/hamcrest new file mode 100755 index 0000000000000000000000000000000000000000..47fda77a464789ff0d480bdf3ffa229ea67e244a GIT binary patch literal 108984 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 E13*W?y8r+H literal 0 HcmV?d00001 diff --git a/Frameworks/hamcrest.framework/Versions/Current b/Frameworks/hamcrest.framework/Versions/Current new file mode 120000 index 0000000..8c7e5a6 --- /dev/null +++ b/Frameworks/hamcrest.framework/Versions/Current @@ -0,0 +1 @@ +A \ No newline at end of file diff --git a/Frameworks/hamcrest.framework/hamcrest b/Frameworks/hamcrest.framework/hamcrest new file mode 120000 index 0000000..3d182b5 --- /dev/null +++ b/Frameworks/hamcrest.framework/hamcrest @@ -0,0 +1 @@ +Versions/Current/hamcrest \ No newline at end of file diff --git a/GomokuViewController.xib b/GomokuViewController.xib new file mode 100644 index 0000000..068f4dc --- /dev/null +++ b/GomokuViewController.xib @@ -0,0 +1,245 @@ + + + + 528 + 11C74 + 1938 + 1138.23 + 567.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 933 + + + YES + IBProxyObject + IBUIView + IBUIButton + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + YES + + + 292 + {{72, 69}, {166, 37}} + + + NO + IBCocoaTouchFramework + 0 + 0 + 1 + Single Player Game + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{72, 125}, {166, 37}} + + + NO + IBCocoaTouchFramework + 0 + 0 + 1 + Two Player Game + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + {{0, 20}, {320, 460}} + + + + 3 + MC43NQA + + 2 + + + NO + + IBCocoaTouchFramework + + + + + YES + + + view + + + + 7 + + + + startSinglePlayerGame: + + + 7 + + 12 + + + + startTwoPlayerGame: + + + 7 + + 15 + + + + + YES + + 0 + + YES + + + + + + -1 + + + File's Owner + + + -2 + + + + + 6 + + + YES + + + + + + + 8 + + + + + 13 + + + + + + + YES + + YES + -1.CustomClassName + -1.IBPluginDependency + -2.CustomClassName + -2.IBPluginDependency + 13.IBPluginDependency + 6.IBPluginDependency + 8.IBPluginDependency + + + YES + GomokuViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + + + + YES + + + + + 15 + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + 933 + + diff --git a/Info.plist b/Info.plist new file mode 100644 index 0000000..62de76e --- /dev/null +++ b/Info.plist @@ -0,0 +1,54 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIconFiles + + icon.png + icon-114.png + icon-57.png + + CFBundleIcons + + CFBundlePrimaryIcon + + CFBundleIconFiles + + icon.png + icon-114.png + icon-57.png + + UIPrerenderedIcon + + + + CFBundleIdentifier + com.polygroovers.${PRODUCT_NAME:identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + NSMainNibFile + MainWindow + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + + diff --git a/MainWindow.xib b/MainWindow.xib new file mode 100644 index 0000000..08dee70 --- /dev/null +++ b/MainWindow.xib @@ -0,0 +1,415 @@ + + + + 528 + 10D573 + 740 + 1038.29 + 460.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 62 + + + YES + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + YES + + + + YES + + IBFilesOwner + + + IBFirstResponder + + + + + 292 + {320, 480} + + 1 + MSAxIDEAA + + NO + NO + + + + + + YES + + + delegate + + + + 4 + + + + window + + + + 14 + + + + + YES + + 0 + + + + + + -1 + + + File's Owner + + + 3 + + + gomoku App Delegate + + + -2 + + + + + 12 + + + + + + + YES + + YES + -1.CustomClassName + -2.CustomClassName + 12.IBEditorWindowLastContentRect + 12.IBPluginDependency + 3.CustomClassName + 3.IBPluginDependency + + + YES + UIApplication + UIResponder + {{525, 346}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + GomokuAppDelegate + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 16 + + + + YES + + GomokuAppDelegate + NSObject + + YES + + YES + viewController + window + + + YES + GomokuViewController + UIWindow + + + + IBUserSource + + + + + GomokuViewController + UIViewController + + startSinglePlayerGame: + id + + + button + UIButton + + + IBUserSource + + + + + + YES + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSNetServices.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPort.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSStream.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSXMLParser.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIAccessibility.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UINibLoading.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIResponder.h + + + + UIApplication + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIApplication.h + + + + UIButton + UIControl + + IBFrameworkSource + UIKit.framework/Headers/UIButton.h + + + + UIControl + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIControl.h + + + + UIResponder + NSObject + + + + UISearchBar + UIView + + IBFrameworkSource + UIKit.framework/Headers/UISearchBar.h + + + + UISearchDisplayController + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UISearchDisplayController.h + + + + UIView + + IBFrameworkSource + UIKit.framework/Headers/UITextField.h + + + + UIView + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIView.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UINavigationController.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UITabBarController.h + + + + UIViewController + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIViewController.h + + + + UIWindow + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIWindow.h + + + + + 0 + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + gomoku.xcodeproj + 3 + 3.1 + + diff --git a/README b/README new file mode 100644 index 0000000..e1fb59b --- /dev/null +++ b/README @@ -0,0 +1,4 @@ +== Gomoku == + +This is a project to create an open source implementation of five in a row +for iOS. It also serves as a study project for iOS development. diff --git a/Resources/BoardSquare_0.png b/Resources/BoardSquare_0.png new file mode 100644 index 0000000000000000000000000000000000000000..15f622a8cd235c2e8001db3d958a07b584c923ed GIT binary patch literal 5013 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 literal 0 HcmV?d00001 diff --git a/Resources/BoardSquare_1.png b/Resources/BoardSquare_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f275198b9f13c2970b7f03ec73cdb5988b79fef4 GIT binary patch literal 5717 zcmbVQXH-+$whn}jbfqIP^qx>ckxpn5iWH?wfP_v8p({mDK#<;~s|X56l_H9SE+A5+ zw+PakpcGMgc+Nfdy&reHH^$pz?7h}pYkuGCe|DUii9Q1zHyr=~U@$a*o1d?$e_k5$ z^KX5DiO~7NMbNb-SYXhEKqMXo&~n8%qd%@3h5e*>qVU-fM^d(Yl5{gLd6B+ zBaQr{BOT;}Jx8CDX#`=BE?y`C$QkA4;j0GTebWjCdAO>9Zz>o=jIlZ>cMpRQJjx=( z#L^|i%SG80tf3B44N^HL@IeufpdcS_Uq6)~HSk}&D(Cw@$1-5hUn&GIHSpg~SsR;y zbTD`nNI@DRs(R;yAudl6&abpz(DChIcW^uO$Ms0to(;VR#xgu#mGsd5w20r)n?+|>j#>W39_VxQ$qRvw$6NJRdK&2rvK0bfq`b*o7 zV2=84H~yoxpJgx>C1Z~A!}#M}&g+2|_y>HRyZ_zLAH{QTR7~+6=S4w!!!a)YJ}6&; zAzTf7ek1Mb;i>|GDnX!7MR|y#ECi+mg(}NxLv$1rbfH?ha&Sdu=sz6)39Bd%lZDAC zLgW<`w@~nuE)9Ezp*gA{}rpEgGV6= z7`!D0LN7=(sHx(LW|GcQSQyWk4@Jp4z)==j3*S!x54C0>EUT z_L8LZIO=-3M`l}C)2~}9p|HUH!0NterLR$Kj8V$Z#K@R2$u#eAm#6B6A5b?nhN?~< zhP)}L%5n*PbJ#&|BK5%E3bTQ}sc4s7uu8cF`__2!us+`1Tn8aPxWntyCRx)VX74r| zR5 z+A!9ikHj+3Ug%~BCIXAbAztwof9^5Xj~^!cpmTQjDe22n((c)D)!Fgs#A@N-A>*kN zA+&W07d=s@8k6gx$g+PKOB#sA`qf#i0^5i30!wl6$+;C{QSH!S_#Iw9Zfg^kISqcP z2r|X9pTCm^`Oo62us)%!fLV{6%JI$GvdAsfTS!PZLf-kiaQA`_n1O*93{fu=j&gOA z@0sGQ&>p$MdK|^DL$f!e$=k#7(RX*^D&&qD3E0kZxr-}Sm)JaYIcMNqS!3+AYT9nk zCzCx6P7$cJ_Y5y>_VZ(^jzbNJvU9=+BBACmRScsH(q@cje{EdktOG8%(r;w?g2hi_#d$>` ze=3>Mr!)5JR5vH)D`t^YcezfVn_6X*lyn^qqX=(2T3wn~vom|l7wRQf$U7HW6nwZ3 zq?zBJuiub+$CmQ`LdxwS1VV|c#4$U$v)$ZLsR?j}KekLVy5G6eu0%$wu7_ih@dpq_ z{2Xhg6l#4l;EVI_%|fFOk_pCyy)v*1 zN`i(=L>(5&`vBK14g1)1FPZJIo_nZ_=)`P5Tk4Wo0D8isM>bNVX){R)7IaDNQkIrP8|i_fAJd33&VO392yJTrR$D=% zh%is3`k39xFi@}kGuGCg8a=nmvBotS@|rg#Xt!Or39NSzqNdN%G3FMWSm=af%v&z! z4Tr3LyYL~=4MDvhizK{zqS{VxLR||@iu{~Wz1yU?)7%oS+D9dqrq#AjVEb&>KF+8G zRfl}w`4!TfX9_w!IH7N7m$cvL-CGnC^%rGwK7`mFzai5Du4QmS?sZbrJ|1)+;>hk2|uH|R!3J)z6pWektQ4~ z+DgWWs13BEzG%GWJ;@HY-@+X=9-;bUvtEPAV*28eE!S%BFV%GC>-F0XEDJ)g=ZOi*@713;> z*7t>63T;l-@yZS+g*{7ygM+)CP(7MVO>cmrk>97bZW@i)*UG%r;*ikOxgOG9Pe7d= zhnLE|9k-Rpr+h%19-9W3Nh=CWQSM0(SfqR%GsZwIcWQXJO*w@?yetylaB#J2ZkRj2P!c z{Y6vZ<~@cw43)UcKCl-ox0omt6whM_+#|-M(ipn zypMv~kk|&WogeE+mC|V}&k}r@K8SwnzCf#btJep$plem$MU__ZV&1icjQE!o>O3km z22ojB`c4sLHdV=@bP3cENZ+{3jjTNyq0mVYmOLWumu89zqlH?@YxAeStKlex z(dlBjZO!~#$RbMHuRY@49>b>#NaIs4)*nd=$HoRNB1g6Fm9m8LaO5Il+^Vt_v_OOWT?Ji>ug^tO(hIbEu4K+^lbR<|ztZ+!yexi0$c;(K z+K4H^4G+O!KvVk)e%{7*jiE#2zkO-qsMxERV@~=6?>9f9ebB;6l3luVGMk3Ah)e&- z$9J{9T&c>5PmA03Ps>6pB6tudrlfvU8Id{m#BAA)?YIAKF`=vv&w;S2(g*D3W(}p5qABCjG z-;W=PUH%ETFL;3d_Nh+;YAXjrxLjq6`xcfl+mJdWKRk_w`So&oJu8zW@s!tPV73<< ze-kdM{>tk9K5H8wo=SAB$g7C@S)KDi+>mgBk?NU=KZw$MJjjt8CA6 z)bzIFgJ!p@yW>l_+A#dtIEX+?W@AIv&P9q|47!3T9V-;BAqTgL ze%Vabl`-$%^TZ;GVkn;BigD=phgmjETw!$;<1VdQx5m8GB!&pIydxZ!>?2Rw~n*a$)U`alC8^W&B(?p0yCxPz5u-0WFN_lQ3hPG+&1H`{E&{WcHMB`WJJF5Q_OQ?6M6N~ z7Y;|xbxnn-Ezi@3pYk|H@FYKhBRH1v0N%55*6EyG1y3bLAjbz;54KKpO`jmwu<>S4 zK&J3CFRSE}_NXY+9vOqMy$PdNJ?SS-644Y+;z9_zx@rB>WDem@cngCdsFpwok{+;~zd+>&mjTSaKA}Xko{3@kohUnywBm ztsjVAsw|o+O-k>@-*Y{|9Rp8T{pgg4vj^V^sImFUH$^$$r)_zZ5#j9f0;Q@fcbRU; zRy?cfs;{&YOM#dyld~FCT4}zuCtZ6Q+}rVSJx;i;=dxI zY&HAi)49u|3{SC~gkLqswj8UQ+jN=H{hd)p9nM1~zJN=Pg^dwe)k&-$T z0T($pa~ReVGB#d|50)O3IeC3E%mQvY<1W66B9z-mv8e(%OhdM8Ybq*X4s%CB%QNF> zdQEOmCKcnT`(B;xFsS$-^Z+IRY~f z=w~@YsRNvcc{di@Rbv*ZQ+%ce9=2FOY~cItuyLa>K3dC(oZJpzn4N7P z99sN%&3DQWUA6q;Etqe+aeylLzKEBGr?AK4Y0=`DSa8f^NUV7>1#Z>+JtSMV`|$BY zaVoR>8WE0r6?D9-LJ?VX_w%*9T<@kVW*6SHy5-FMrumABfhe)jUC#li`Ku5ZgxKHA z>&;^|OF^#aJC58l!9Uo#KFy)_s2O+(k_$@1cfRA-ec?^k%@Ba+?+L@9O zcE56*EZ=)~n=zr4s`{yBy#IQ;RAE(4*25tFO68$q!6z$?F#jQ)*aB6i?_JNmQfi7d zhJ%~;xMJK&OZ0ECk64Zy*1sY^g`CAxBh=cnj)9yJoIt^3eP+?q0rr}v&!1hLGo2-5 zbdXxgOs}opB@#*JfRaD;S9-~XFModY8tR(BE47{O{ujh)H+=vA literal 0 HcmV?d00001 diff --git a/Resources/BoardSquare_2.png b/Resources/BoardSquare_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d52777e775d2f93b718db7c164009b2f606ccad8 GIT binary patch literal 5542 zcmbVQXEa=GyHITh%O>(h)9&^(W69*U`Rx- z5k!lqgM9M7Z@zPWeCs=FoxRrH&vQS|eO-6|vtw`T-=d{rry?REqJ?Xz8(pjlzu(Iw z7vI`v`T`dV8&1OeJTK4}WXgV?2&5Yd2e3yuxu6w!x0~8{0WJ=Tyk=5*Ks`@2l(UOg02XB& zpl^ZeiX(y2K!7wz0tA7|$jFERz(5dC5(t(AfyF^GFbEh11OonfcrUDB9UNgs z>YD%9x{wrkopCr%n53kyudjqJL;{0#k_5@g$^GU4gT*g2#J&B|IE0@#+MDkWgF4C^ ziFNVBxnR(M-;4-*j1Nwc_rlY^L-6p_)B86u+WVhGU8GFX58){Zk^oA2c>Ip*FKus} z5$b>3_>bD&CjOo%Nh6du#s`bMsD~rpAMi!){=1>yiWlC%46rU2MM1c$V~{=`C^QbP zuE=|FBjMoU00V+#fgq3!6et4*O3Q*ka$r@Unv|3VNJRspE+Yr}!||W6GEix-G(-jp zm6C#jKpG%fIjEW%R7C@-22oX)g-HFu!qMJ11R9C@W7p-v?mt+_f5pPouqXr$gEhfm z-2ZgIZD$M)0}O!C4R$=}WKznbOG(M1RT-u}DwFNA*&4+?!TG1!aISgWA9m@0-(aCH?EzsY9H zSnNgv1HaY|y+%%*Z*^(^ulr^<0-FzmzO}-6XCOpc+fz@|;@k%qy9+^?Yin%7va89z z@B;$qngnHkNGHW=8?j)g2VPXx9;%Q-*iAT_Q}b3tm(+s=x1gFpHssU1_xB4uPyMEW z?1kJuw_%ljfV&56VJnN85#5hk>^j;;zQ^)-naL&2VOc_Cq4pV|0C#A~uDQ)bNug(_ zO5c5w$!=<|PuA)ms}5TxSt}Zhuk>ufnoEv8fWI5y$9iw#p((#$!peRb5!9r?o(Txm zu;a}(%8ZhcsEFs^b{gHRYTf1*A~)4%ch`?v^xuLk9IGBrO&3iJy{^6KE>4?`kY$Yu z@BkJ)335*%Qa$`7I(**Ty1mmW6BanV-Qtd@-n1myw3$+>9GTsg%@@LPj&Ll(!FILn z{d3K|18@5GlCAt_pIbabNid}lGC2cpRa8GWwmUVEC155RC;&uc=BG_F5)(c5zjxII z`D`q6&rQj7!C_T%|k z4QR!Kh*;{LN8^5;v~qY+d$K-wT~3@-{l#7`SJG*3Kd8!5>{I1g5!z4vN=j#TjF}d! zA!1dqXP?^~CR^31j+`Yv2qGD)-~8%B*nRt@nd?xVCOigXW^VShX_KjRVuCD+GD4{8 za(O645!-hgJ;D9rtPkmXD*=rGFz&PT-nox9fl7?-!fUt>seUAJZenyN!dKRv zuIa;WrTq27`l&{@?GHHH@tySKaLymjc4+L0?-q}~?f~MzK*)NB)_iWRwK?RBYtuUI&6xD`s&v#f%xqh0TgdUj{%U0#?-h>@nYkuqqLNrcf?xF> zoAqoUCDXQbAunodGd<1W0$5IA*T(>|}G` zj<-$u5eX_fcXCB^vzD^SYJ!OC`$Ys7y+9TY_%*_`Y3!f-C zY;z)9Po$sJCSo}VAUH5uwMCHzd2!4Bc zliycnBHJ8s&P<>qn2b6QM|EgaM&fcABl{HmDVP@BW0W1|A^Ow7LCwJru3_fd9>{xg zz(7LMAbSmm*tjAx$DBK+v?O@>1>2x{*6{rU>AXo>07R=U+gF!8LDX95lND~auDkNy z)Fah$I+CnZQv`Kd1Y7W9E)^H!Sr3J>R8g7b(gF^`9QKOmvs2vcnr* zU>`HLzwUb!#bZ;{qRv{()%t+c?zR4MyjHnV92rwt14}FaI9l1&+IMm+1x|UGGSI~h)5{%ZxzNb-t719{?L z#~lHE*=XsAfw-*PyCFvq&x+iT%#UV2zcvHrMnrp?cuI;a<={#;8y9a<4VfOfg6`UD z=DYeKv-u+-ChNq+sgW>{Q)nX|#ivcCQSJ#(-HHn2)JB zI!8Wev9edt_mCNJ_bXi`TB{WX+UZ_0M})!hUIC*II<=G6q-LVt6h7a(J9HGO<=a}Lr)#thhPIe?{)`P<&iIJlkvqYS7fo7 zQMevKpR!u(+zU@A%*0pfXm&@&>(Q7}wQxQyGRk0wS&`L8KMJc4_)0;JKMpFedijZo zUB!kt?iNv!6a)ED+`7Q?KOLM`X%>9(>4=qZ48QRQ(vV%8D23&-V)Gic;^VN?|HN3)WXli1-VxOw?f9} z2~>cmn0_Kxvn31rmDrlFp{(nTw>gi#w6|w2L#TKjvqip47c-6o*?Sl{lnh6P$uq#O zhmF8oRYkH?cQmgTiZfMGK&oe{0wa8yxl_2O^YGzmy1EUBHm`gS9q2p#<`K{}05&zq97 z1(vtoGW@iRn7`fFIAK(%no=ZSJTK~fM)B5bGT$g6pVzh~T={N))}27oM_YzCoAf&1 z*>Dc)Bx5Jnp$mDC06>nFH&bfw7+YYe$W0%~604f27?Bdq>k2Zh9a4O_WV)bGBSipvDEasJA0lj%aSil+$wqd83Swnc>?|}MRDJTX z%#nOOzz&Xrc#4MDJ3uXpUS#xA$lmVx`MHPM;}#X8z$DU>q%oti$$awq`NT#lMN@yE z;8AEWc)*4H^DUd)5Fw`huZgD=chc>EI zN(ZfkN$0L_un~b5KS09w>W;J$I8*BBC`N!rEwkmq;EA1319v59 zOeo=ex6Y~5D@2RWn4=@}CZl9KRn8c+T4aOIunk_EKln8dIw{sc4y_?3^+D>PLD{uizx>Q%S>Wz|*WjDN=#KT7aOJZbdUF zY6TmNPVC*%b-ZKCmIf30T$JM=>_5iswDw350RGAeZf2PF+qB>z*AJ z5G!#rQR#kX7gLb}-QZI#S`Tr$97*QAaYR+*bZ0`*(TFC6#5!7L&IutRa;9Znl{Ex3 zkC9^bHfqbfd2`+FJO9iV?J%$s7hR09b|95q*OKW;M^1oI|0Ou9_qV>46aW27(>qBo z9r|?zc0BE#mm<>+6FJ>N-w(^n_nKL zTm}=(1aHR=b{F4rj??b=UZ8agmtNylx_nK6pSn!ArgpJOXKrbTWxr&(truP7pz+W@ z&{DZY;nz-ch-%}U?nJCZ+sq5Kr4RDTW@-<)oo7B2DbA{F80NYDqL(QGk8MRX7gg_t z`V&Qp#O~KKF^}*kEfTqO;3l`%mkpNnxX)B-6M6-=-*1fL2k?-=X4}`hj|-9+%UTp5 zmZm9=2?#-_zJxVfvGiae5~iO#7T@gJwTq&hxq{*igxBq`eMh4K%qNe27C$ zJz7<9c19z;eYHuSk88?nkB4l-?~01hy(_JE>j@GSHS;nQTA%QGFP!JQbmlt$@Fg*M zPw+aKoLeLFa7=R)<(1N|sRXW!}8fwDO{VUf28;ew>l1Z{kL;8k>>A*YAZ07bK(?4$cDdo}A z3bwh)7=D+CdoRFuFz!4M_CROkChcA0VkqjwnN@Owe}3n2%27_oVbuSFW3oP|TfmWO}T$;l*X%z={OoQfs% zxy3B01i9))+*UGgcSQ^>wZ+?WZWiw#oVmC#j@ZVHHzClaT?MqHWmo6Uk%3FSg>P>i zfj!RJ}XSeaKo2c&q*XIlZ)%*IxO{A}q!n8VgYENB&yO*AXsas^h>9(iFjAc209t zpv#InXRp6+B|~F%t~vh9d>=Ya`v`G#XZt8C@^)~Jrhqa1(5MuKFG;S~CbWXTE)AAZ>M3BMNx$71{K}R zCWTvn=6u?bpwQ{}tp{`2pffDk-JpSA*lgRng~OMuM%F7IA}Ag4Wg){N6Ay)D%cQJD z!wcy?s)RMljn087_vUDEbo~qbY#1B4^gBib8S)|L zQj;Pg=w3}vZqU|54+W1V`tfPGe@2jH?Ukq>bbO7@$X_(G-&*^eH1EwFcREc)CzhZs z4;v$;F5S9ne6r)!b<8E3Goa3KKjf9@vAfY~YbQG*%OL8J6)6t#EUAqeNCd4u;!;&P R&-?x76t1DKUao2v_AhGS0DJ%d literal 0 HcmV?d00001 diff --git a/Test.plist b/Test.plist new file mode 100644 index 0000000..af9a1ca --- /dev/null +++ b/Test.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.yourcompany.${PRODUCT_NAME:identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + + diff --git a/Tests/GTM/GTMDefines.h b/Tests/GTM/GTMDefines.h new file mode 100644 index 0000000..b88193c --- /dev/null +++ b/Tests/GTM/GTMDefines.h @@ -0,0 +1,241 @@ +// +// GTMDefines.h +// +// Copyright 2008 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy +// of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. +// + +// ============================================================================ + +#include +#include + +// Not all MAC_OS_X_VERSION_10_X macros defined in past SDKs +#ifndef MAC_OS_X_VERSION_10_5 + #define MAC_OS_X_VERSION_10_5 1050 +#endif +#ifndef MAC_OS_X_VERSION_10_6 + #define MAC_OS_X_VERSION_10_6 1060 +#endif + +// ---------------------------------------------------------------------------- +// CPP symbols that can be overridden in a prefix to control how the toolbox +// is compiled. +// ---------------------------------------------------------------------------- + + +// By setting the GTM_CONTAINERS_VALIDATION_FAILED_LOG and +// GTM_CONTAINERS_VALIDATION_FAILED_ASSERT macros you can control what happens +// when a validation fails. If you implement your own validators, you may want +// to control their internals using the same macros for consistency. +#ifndef GTM_CONTAINERS_VALIDATION_FAILED_ASSERT + #define GTM_CONTAINERS_VALIDATION_FAILED_ASSERT 0 +#endif + +// Give ourselves a consistent way to do inlines. Apple's macros even use +// a few different actual definitions, so we're based off of the foundation +// one. +#if !defined(GTM_INLINE) + #if defined (__GNUC__) && (__GNUC__ == 4) + #define GTM_INLINE static __inline__ __attribute__((always_inline)) + #else + #define GTM_INLINE static __inline__ + #endif +#endif + +// Give ourselves a consistent way of doing externs that links up nicely +// when mixing objc and objc++ +#if !defined (GTM_EXTERN) + #if defined __cplusplus + #define GTM_EXTERN extern "C" + #else + #define GTM_EXTERN extern + #endif +#endif + +// Give ourselves a consistent way of exporting things if we have visibility +// set to hidden. +#if !defined (GTM_EXPORT) + #define GTM_EXPORT __attribute__((visibility("default"))) +#endif + +// _GTMDevLog & _GTMDevAssert +// +// _GTMDevLog & _GTMDevAssert are meant to be a very lightweight shell for +// developer level errors. This implementation simply macros to NSLog/NSAssert. +// It is not intended to be a general logging/reporting system. +// +// Please see http://code.google.com/p/google-toolbox-for-mac/wiki/DevLogNAssert +// for a little more background on the usage of these macros. +// +// _GTMDevLog log some error/problem in debug builds +// _GTMDevAssert assert if conditon isn't met w/in a method/function +// in all builds. +// +// To replace this system, just provide different macro definitions in your +// prefix header. Remember, any implementation you provide *must* be thread +// safe since this could be called by anything in what ever situtation it has +// been placed in. +// + +// We only define the simple macros if nothing else has defined this. +#ifndef _GTMDevLog + +#ifdef DEBUG + #define _GTMDevLog(...) NSLog(__VA_ARGS__) +#else + #define _GTMDevLog(...) do { } while (0) +#endif + +#endif // _GTMDevLog + +// Declared here so that it can easily be used for logging tracking if +// necessary. See GTMUnitTestDevLog.h for details. +@class NSString; +GTM_EXTERN void _GTMUnitTestDevLog(NSString *format, ...); + +#ifndef _GTMDevAssert +// we directly invoke the NSAssert handler so we can pass on the varargs +// (NSAssert doesn't have a macro we can use that takes varargs) +#if !defined(NS_BLOCK_ASSERTIONS) + #define _GTMDevAssert(condition, ...) \ + do { \ + if (!(condition)) { \ + [[NSAssertionHandler currentHandler] \ + handleFailureInFunction:[NSString stringWithUTF8String:__PRETTY_FUNCTION__] \ + file:[NSString stringWithUTF8String:__FILE__] \ + lineNumber:__LINE__ \ + description:__VA_ARGS__]; \ + } \ + } while(0) +#else // !defined(NS_BLOCK_ASSERTIONS) + #define _GTMDevAssert(condition, ...) do { } while (0) +#endif // !defined(NS_BLOCK_ASSERTIONS) + +#endif // _GTMDevAssert + +// _GTMCompileAssert +// _GTMCompileAssert is an assert that is meant to fire at compile time if you +// want to check things at compile instead of runtime. For example if you +// want to check that a wchar is 4 bytes instead of 2 you would use +// _GTMCompileAssert(sizeof(wchar_t) == 4, wchar_t_is_4_bytes_on_OS_X) +// Note that the second "arg" is not in quotes, and must be a valid processor +// symbol in it's own right (no spaces, punctuation etc). + +// Wrapping this in an #ifndef allows external groups to define their own +// compile time assert scheme. +#ifndef _GTMCompileAssert + // We got this technique from here: + // http://unixjunkie.blogspot.com/2007/10/better-compile-time-asserts_29.html + + #define _GTMCompileAssertSymbolInner(line, msg) _GTMCOMPILEASSERT ## line ## __ ## msg + #define _GTMCompileAssertSymbol(line, msg) _GTMCompileAssertSymbolInner(line, msg) + #define _GTMCompileAssert(test, msg) \ + typedef char _GTMCompileAssertSymbol(__LINE__, msg) [ ((test) ? 1 : -1) ] +#endif // _GTMCompileAssert + +// Macro to allow fast enumeration when building for 10.5 or later, and +// reliance on NSEnumerator for 10.4. Remember, NSDictionary w/ FastEnumeration +// does keys, so pick the right thing, nothing is done on the FastEnumeration +// side to be sure you're getting what you wanted. +#ifndef GTM_FOREACH_OBJECT + #if TARGET_OS_IPHONE || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5) + #define GTM_FOREACH_OBJECT(element, collection) \ + for (element in collection) + #define GTM_FOREACH_KEY(element, collection) \ + for (element in collection) + #else + #define GTM_FOREACH_OBJECT(element, collection) \ + for (NSEnumerator * _ ## element ## _enum = [collection objectEnumerator]; \ + (element = [_ ## element ## _enum nextObject]) != nil; ) + #define GTM_FOREACH_KEY(element, collection) \ + for (NSEnumerator * _ ## element ## _enum = [collection keyEnumerator]; \ + (element = [_ ## element ## _enum nextObject]) != nil; ) + #endif +#endif + +// ============================================================================ + +// ---------------------------------------------------------------------------- +// CPP symbols defined based on the project settings so the GTM code has +// simple things to test against w/o scattering the knowledge of project +// setting through all the code. +// ---------------------------------------------------------------------------- + +// Provide a single constant CPP symbol that all of GTM uses for ifdefing +// iPhone code. +#if TARGET_OS_IPHONE // iPhone SDK + // For iPhone specific stuff + #define GTM_IPHONE_SDK 1 + #if TARGET_IPHONE_SIMULATOR + #define GTM_IPHONE_SIMULATOR 1 + #else + #define GTM_IPHONE_DEVICE 1 + #endif // TARGET_IPHONE_SIMULATOR +#else + // For MacOS specific stuff + #define GTM_MACOS_SDK 1 +#endif + +// Provide a symbol to include/exclude extra code for GC support. (This mainly +// just controls the inclusion of finalize methods). +#ifndef GTM_SUPPORT_GC + #if GTM_IPHONE_SDK + // iPhone never needs GC + #define GTM_SUPPORT_GC 0 + #else + // We can't find a symbol to tell if GC is supported/required, so best we + // do on Mac targets is include it if we're on 10.5 or later. + #if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4 + #define GTM_SUPPORT_GC 0 + #else + #define GTM_SUPPORT_GC 1 + #endif + #endif +#endif + +// To simplify support for 64bit (and Leopard in general), we provide the type +// defines for non Leopard SDKs +#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4 + // NSInteger/NSUInteger and Max/Mins + #ifndef NSINTEGER_DEFINED + #if __LP64__ || NS_BUILD_32_LIKE_64 + typedef long NSInteger; + typedef unsigned long NSUInteger; + #else + typedef int NSInteger; + typedef unsigned int NSUInteger; + #endif + #define NSIntegerMax LONG_MAX + #define NSIntegerMin LONG_MIN + #define NSUIntegerMax ULONG_MAX + #define NSINTEGER_DEFINED 1 + #endif // NSINTEGER_DEFINED + // CGFloat + #ifndef CGFLOAT_DEFINED + #if defined(__LP64__) && __LP64__ + // This really is an untested path (64bit on Tiger?) + typedef double CGFloat; + #define CGFLOAT_MIN DBL_MIN + #define CGFLOAT_MAX DBL_MAX + #define CGFLOAT_IS_DOUBLE 1 + #else /* !defined(__LP64__) || !__LP64__ */ + typedef float CGFloat; + #define CGFLOAT_MIN FLT_MIN + #define CGFLOAT_MAX FLT_MAX + #define CGFLOAT_IS_DOUBLE 0 + #endif /* !defined(__LP64__) || !__LP64__ */ + #define CGFLOAT_DEFINED 1 + #endif // CGFLOAT_DEFINED +#endif // MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4 diff --git a/Tests/GTM/GTMIPhoneUnitTestDelegate.h b/Tests/GTM/GTMIPhoneUnitTestDelegate.h new file mode 100644 index 0000000..4583b5d --- /dev/null +++ b/Tests/GTM/GTMIPhoneUnitTestDelegate.h @@ -0,0 +1,38 @@ +// +// GTMIPhoneUnitTestDelegate.h +// +// Copyright 2008 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy +// of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. +// + +#import + +// Application delegate that runs all test methods in registered classes +// extending SenTestCase. The application is terminated afterwards. +// You can also run the tests directly from your application by invoking +// runTests and clean up, restore data, etc. before the application +// terminates. +@interface GTMIPhoneUnitTestDelegate : NSObject { + @private + NSUInteger totalFailures_; + NSUInteger totalSuccesses_; +} +// Runs through all the registered classes and runs test methods on any +// that are subclasses of SenTestCase. Prints results and run time to +// the default output. +- (void)runTests; +// Fetch the number of successes or failures from the last runTests. +- (NSUInteger)totalSuccesses; +- (NSUInteger)totalFailures; +@end diff --git a/Tests/GTM/GTMIPhoneUnitTestDelegate.m b/Tests/GTM/GTMIPhoneUnitTestDelegate.m new file mode 100644 index 0000000..39de1f5 --- /dev/null +++ b/Tests/GTM/GTMIPhoneUnitTestDelegate.m @@ -0,0 +1,206 @@ +// +// GTMIPhoneUnitTestDelegate.m +// +// Copyright 2008 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy +// of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. +// + +#import "GTMIPhoneUnitTestDelegate.h" + +#import "GTMDefines.h" +#if !GTM_IPHONE_SDK +#error GTMIPhoneUnitTestDelegate for iPhone only +#endif +#import +#import +#import +#import "GTMSenTestCase.h" + +// Used for sorting methods below +static int MethodSort(const void *a, const void *b) { + const char *nameA = sel_getName(method_getName(*(Method*)a)); + const char *nameB = sel_getName(method_getName(*(Method*)b)); + return strcmp(nameA, nameB); +} + +// Return YES if class is subclass (1 or more generations) of SenTestCase +static BOOL IsTestFixture(Class aClass) { + BOOL iscase = NO; + Class testCaseClass = [SenTestCase class]; + Class superclass; + for (superclass = aClass; + !iscase && superclass; + superclass = class_getSuperclass(superclass)) { + iscase = superclass == testCaseClass ? YES : NO; + } + return iscase; +} + +@implementation GTMIPhoneUnitTestDelegate + +// Run through all the registered classes and run test methods on any +// that are subclasses of SenTestCase. Terminate the application upon +// test completion. +- (void)applicationDidFinishLaunching:(UIApplication *)application { + [self runTests]; + + if (!getenv("GTM_DISABLE_TERMINATION")) { + // To help using xcodebuild, make the exit status 0/1 to signal the tests + // success/failure. + int exitStatus = (([self totalFailures] == 0U) ? 0 : 1); + exit(exitStatus); + } +} + +// Run through all the registered classes and run test methods on any +// that are subclasses of SenTestCase. Print results and run time to +// the default output. +- (void)runTests { + int count = objc_getClassList(NULL, 0); + NSMutableData *classData + = [NSMutableData dataWithLength:sizeof(Class) * count]; + Class *classes = (Class*)[classData mutableBytes]; + _GTMDevAssert(classes, @"Couldn't allocate class list"); + objc_getClassList(classes, count); + totalFailures_ = 0; + totalSuccesses_ = 0; + NSString *suiteName = [[NSBundle mainBundle] bundlePath]; + NSDate *suiteStartDate = [NSDate date]; + NSString *suiteStartString + = [NSString stringWithFormat:@"Test Suite '%@' started at %@\n", + suiteName, suiteStartDate]; + fputs([suiteStartString UTF8String], stderr); + fflush(stderr); + for (int i = 0; i < count; ++i) { + Class currClass = classes[i]; + if (IsTestFixture(currClass)) { + NSDate *fixtureStartDate = [NSDate date]; + NSString *fixtureName = NSStringFromClass(currClass); + NSString *fixtureStartString + = [NSString stringWithFormat:@"Test Suite '%@' started at %@\n", + fixtureName, fixtureStartDate]; + int fixtureSuccesses = 0; + int fixtureFailures = 0; + fputs([fixtureStartString UTF8String], stderr); + fflush(stderr); + id testcase = [[currClass alloc] init]; + _GTMDevAssert(testcase, @"Unable to instantiate Test Suite: '%@'\n", + fixtureName); + unsigned int methodCount; + Method *methods = class_copyMethodList(currClass, &methodCount); + if (!methods) { + // If the class contains no methods, head on to the next class + NSString *output = [NSString stringWithFormat:@"Test Suite '%@' " + @"finished at %@.\nExecuted 0 tests, with 0 " + @"failures (0 unexpected) in 0 (0) seconds\n", + fixtureName, fixtureStartDate]; + + fputs([output UTF8String], stderr); + continue; + } + // This handles disposing of methods for us even if an + // exception should fly. + [NSData dataWithBytesNoCopy:methods + length:sizeof(Method) * methodCount]; + // Sort our methods so they are called in Alphabetical order just + // because we can. + qsort(methods, methodCount, sizeof(Method), MethodSort); + for (size_t j = 0; j < methodCount; ++j) { + Method currMethod = methods[j]; + SEL sel = method_getName(currMethod); + char *returnType = NULL; + const char *name = sel_getName(sel); + // If it starts with test, takes 2 args (target and sel) and returns + // void run it. + if (strstr(name, "test") == name) { + returnType = method_copyReturnType(currMethod); + if (returnType) { + // This handles disposing of returnType for us even if an + // exception should fly. Length +1 for the terminator, not that + // the length really matters here, as we never reference inside + // the data block. + [NSData dataWithBytesNoCopy:returnType + length:strlen(returnType) + 1]; + } + } + if (returnType // True if name starts with "test" + && strcmp(returnType, @encode(void)) == 0 + && method_getNumberOfArguments(currMethod) == 2) { + BOOL failed = NO; + NSDate *caseStartDate = [NSDate date]; + @try { + [testcase performTest:sel]; + } @catch (NSException *exception) { + failed = YES; + } + if (failed) { + fixtureFailures += 1; + } else { + fixtureSuccesses += 1; + } + NSTimeInterval caseEndTime + = [[NSDate date] timeIntervalSinceDate:caseStartDate]; + NSString *caseEndString + = [NSString stringWithFormat:@"Test Case '-[%@ %s]' %@ (%0.3f " + @"seconds).\n", + fixtureName, name, + failed ? @"failed" : @"passed", + caseEndTime]; + fputs([caseEndString UTF8String], stderr); + fflush(stderr); + } + } + [testcase release]; + NSDate *fixtureEndDate = [NSDate date]; + NSTimeInterval fixtureEndTime + = [fixtureEndDate timeIntervalSinceDate:fixtureStartDate]; + NSString *fixtureEndString + = [NSString stringWithFormat:@"Test Suite '%@' finished at %@.\n" + @"Executed %d tests, with %d failures (%d " + @"unexpected) in %0.3f (%0.3f) seconds\n\n", + fixtureName, fixtureEndDate, + fixtureSuccesses + fixtureFailures, + fixtureFailures, fixtureFailures, + fixtureEndTime, fixtureEndTime]; + + fputs([fixtureEndString UTF8String], stderr); + fflush(stderr); + totalSuccesses_ += fixtureSuccesses; + totalFailures_ += fixtureFailures; + } + } + NSDate *suiteEndDate = [NSDate date]; + NSTimeInterval suiteEndTime + = [suiteEndDate timeIntervalSinceDate:suiteStartDate]; + NSString *suiteEndString + = [NSString stringWithFormat:@"Test Suite '%@' finished at %@.\n" + @"Executed %d tests, with %d failures (%d " + @"unexpected) in %0.3f (%0.3f) seconds\n\n", + suiteName, suiteEndDate, + totalSuccesses_ + totalFailures_, + totalFailures_, totalFailures_, + suiteEndTime, suiteEndTime]; + fputs([suiteEndString UTF8String], stderr); + fflush(stderr); +} + +- (NSUInteger)totalSuccesses { + return totalSuccesses_; +} + +- (NSUInteger)totalFailures { + return totalFailures_; +} + +@end diff --git a/Tests/GTM/GTMIPhoneUnitTestMain.m b/Tests/GTM/GTMIPhoneUnitTestMain.m new file mode 100644 index 0000000..2a0a70d --- /dev/null +++ b/Tests/GTM/GTMIPhoneUnitTestMain.m @@ -0,0 +1,33 @@ +// +// GTMIPhoneUnitTestMain.m +// +// Copyright 2008 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy +// of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. +// + +#import "GTMDefines.h" +#if !GTM_IPHONE_SDK + #error GTMIPhoneUnitTestMain for iPhone only +#endif +#import + +// Creates an application that runs all tests from classes extending +// SenTestCase, outputs results and test run time, and terminates right +// afterwards. +int main(int argc, char *argv[]) { + NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; + int retVal = UIApplicationMain(argc, argv, nil, @"GTMIPhoneUnitTestDelegate"); + [pool release]; + return retVal; +} diff --git a/Tests/GTM/GTMSenTestCase.h b/Tests/GTM/GTMSenTestCase.h new file mode 100644 index 0000000..1d35591 --- /dev/null +++ b/Tests/GTM/GTMSenTestCase.h @@ -0,0 +1,1004 @@ +// +// GTMSenTestCase.h +// +// Copyright 2007-2008 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy +// of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. +// + +// Portions of this file fall under the following license, marked with +// SENTE_BEGIN - SENTE_END +// +// Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. +// +// Use of this source code is governed by the following license: +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// (1) Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// (2) Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +// OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Note: this license is equivalent to the FreeBSD license. +// +// This notice may not be removed from this file. + +// Some extra test case macros that would have been convenient for SenTestingKit +// to provide. I didn't stick GTM in front of the Macro names, so that they would +// be easy to remember. + +#import "GTMDefines.h" + +#if (!GTM_IPHONE_SDK) +#import +#else +#import +NSString *STComposeString(NSString *, ...); +#endif + +// Generates a failure when a1 != noErr +// Args: +// a1: should be either an OSErr or an OSStatus +// description: A format string as in the printf() function. Can be nil or +// an empty string but must be present. +// ...: A variable number of arguments to the format string. Can be absent. +#define STAssertNoErr(a1, description, ...) \ +do { \ + @try {\ + OSStatus a1value = (a1); \ + if (a1value != noErr) { \ + NSString *_expression = [NSString stringWithFormat:@"Expected noErr, got %ld for (%s)", a1value, #a1]; \ + if (description) { \ + _expression = [NSString stringWithFormat:@"%@: %@", _expression, STComposeString(description, ##__VA_ARGS__)]; \ + } \ + [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:_expression]]; \ + } \ + }\ + @catch (id anException) {\ + [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) == noErr fails", #a1] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while(0) + +// Generates a failure when a1 != a2 +// Args: +// a1: received value. Should be either an OSErr or an OSStatus +// a2: expected value. Should be either an OSErr or an OSStatus +// description: A format string as in the printf() function. Can be nil or +// an empty string but must be present. +// ...: A variable number of arguments to the format string. Can be absent. +#define STAssertErr(a1, a2, description, ...) \ +do { \ + @try {\ + OSStatus a1value = (a1); \ + OSStatus a2value = (a2); \ + if (a1value != a2value) { \ + NSString *_expression = [NSString stringWithFormat:@"Expected %s(%ld) but got %ld for (%s)", #a2, a2value, a1value, #a1]; \ + if (description) { \ + _expression = [NSString stringWithFormat:@"%@: %@", _expression, STComposeString(description, ##__VA_ARGS__)]; \ + } \ + [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:_expression]]; \ + } \ + }\ + @catch (id anException) {\ + [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) == (%s) fails", #a1, #a2] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while(0) + + +// Generates a failure when a1 is NULL +// Args: +// a1: should be a pointer (use STAssertNotNil for an object) +// description: A format string as in the printf() function. Can be nil or +// an empty string but must be present. +// ...: A variable number of arguments to the format string. Can be absent. +#define STAssertNotNULL(a1, description, ...) \ +do { \ + @try {\ + const void* a1value = (a1); \ + if (a1value == NULL) { \ + NSString *_expression = [NSString stringWithFormat:@"(%s) != NULL", #a1]; \ + if (description) { \ + _expression = [NSString stringWithFormat:@"%@: %@", _expression, STComposeString(description, ##__VA_ARGS__)]; \ + } \ + [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:_expression]]; \ + } \ + }\ + @catch (id anException) {\ + [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) != NULL fails", #a1] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while(0) + +// Generates a failure when a1 is not NULL +// Args: +// a1: should be a pointer (use STAssertNil for an object) +// description: A format string as in the printf() function. Can be nil or +// an empty string but must be present. +// ...: A variable number of arguments to the format string. Can be absent. +#define STAssertNULL(a1, description, ...) \ +do { \ + @try {\ + const void* a1value = (a1); \ + if (a1value != NULL) { \ + NSString *_expression = [NSString stringWithFormat:@"(%s) == NULL", #a1]; \ + if (description) { \ + _expression = [NSString stringWithFormat:@"%@: %@", _expression, STComposeString(description, ##__VA_ARGS__)]; \ + } \ + [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:_expression]]; \ + } \ + }\ + @catch (id anException) {\ + [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) == NULL fails", #a1] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while(0) + +// Generates a failure when a1 is equal to a2. This test is for C scalars, +// structs and unions. +// Args: +// a1: argument 1 +// a2: argument 2 +// description: A format string as in the printf() function. Can be nil or +// an empty string but must be present. +// ...: A variable number of arguments to the format string. Can be absent. +#define STAssertNotEquals(a1, a2, description, ...) \ +do { \ + @try {\ + if (@encode(__typeof__(a1)) != @encode(__typeof__(a2))) { \ + [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:[@"Type mismatch -- " stringByAppendingString:STComposeString(description, ##__VA_ARGS__)]]]; \ + } else { \ + __typeof__(a1) a1value = (a1); \ + __typeof__(a2) a2value = (a2); \ + NSValue *a1encoded = [NSValue value:&a1value withObjCType:@encode(__typeof__(a1))]; \ + NSValue *a2encoded = [NSValue value:&a2value withObjCType:@encode(__typeof__(a2))]; \ + if ([a1encoded isEqualToValue:a2encoded]) { \ + NSString *_expression = [NSString stringWithFormat:@"(%s) != (%s)", #a1, #a2]; \ + if (description) { \ + _expression = [NSString stringWithFormat:@"%@: %@", _expression, STComposeString(description, ##__VA_ARGS__)]; \ + } \ + [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:_expression]]; \ + } \ + } \ + } \ + @catch (id anException) {\ + [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) != (%s)", #a1, #a2] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while(0) + +// Generates a failure when a1 is equal to a2. This test is for objects. +// Args: +// a1: argument 1. object. +// a2: argument 2. object. +// description: A format string as in the printf() function. Can be nil or +// an empty string but must be present. +// ...: A variable number of arguments to the format string. Can be absent. +#define STAssertNotEqualObjects(a1, a2, desc, ...) \ +do { \ + @try {\ + id a1value = (a1); \ + id a2value = (a2); \ + if ( (@encode(__typeof__(a1value)) == @encode(id)) && \ + (@encode(__typeof__(a2value)) == @encode(id)) && \ + ![(id)a1value isEqual:(id)a2value] ) continue; \ + NSString *_expression = [NSString stringWithFormat:@"%s('%@') != %s('%@')", #a1, [a1 description], #a2, [a2 description]]; \ + if (desc) { \ + _expression = [NSString stringWithFormat:@"%@: %@", _expression, STComposeString(desc, ##__VA_ARGS__)]; \ + } \ + [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:_expression]]; \ + }\ + @catch (id anException) {\ + [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) != (%s)", #a1, #a2] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(desc, ##__VA_ARGS__)]]; \ + }\ +} while(0) + +// Generates a failure when a1 is not 'op' to a2. This test is for C scalars. +// Args: +// a1: argument 1 +// a2: argument 2 +// op: operation +// description: A format string as in the printf() function. Can be nil or +// an empty string but must be present. +// ...: A variable number of arguments to the format string. Can be absent. +#define STAssertOperation(a1, a2, op, description, ...) \ +do { \ + @try {\ + if (@encode(__typeof__(a1)) != @encode(__typeof__(a2))) { \ + [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:[@"Type mismatch -- " stringByAppendingString:STComposeString(description, ##__VA_ARGS__)]]]; \ + } else { \ + __typeof__(a1) a1value = (a1); \ + __typeof__(a2) a2value = (a2); \ + if (!(a1value op a2value)) { \ + double a1DoubleValue = a1value; \ + double a2DoubleValue = a2value; \ + NSString *_expression = [NSString stringWithFormat:@"%s (%lg) %s %s (%lg)", #a1, a1DoubleValue, #op, #a2, a2DoubleValue]; \ + if (description) { \ + _expression = [NSString stringWithFormat:@"%@: %@", _expression, STComposeString(description, ##__VA_ARGS__)]; \ + } \ + [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:_expression]]; \ + } \ + } \ + } \ + @catch (id anException) {\ + [self failWithException:[NSException \ + failureInRaise:[NSString stringWithFormat:@"(%s) %s (%s)", #a1, #op, #a2] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while(0) + +// Generates a failure when a1 is not > a2. This test is for C scalars. +// Args: +// a1: argument 1 +// a2: argument 2 +// op: operation +// description: A format string as in the printf() function. Can be nil or +// an empty string but must be present. +// ...: A variable number of arguments to the format string. Can be absent. +#define STAssertGreaterThan(a1, a2, description, ...) \ + STAssertOperation(a1, a2, >, description, ##__VA_ARGS__) + +// Generates a failure when a1 is not >= a2. This test is for C scalars. +// Args: +// a1: argument 1 +// a2: argument 2 +// op: operation +// description: A format string as in the printf() function. Can be nil or +// an empty string but must be present. +// ...: A variable number of arguments to the format string. Can be absent. +#define STAssertGreaterThanOrEqual(a1, a2, description, ...) \ + STAssertOperation(a1, a2, >=, description, ##__VA_ARGS__) + +// Generates a failure when a1 is not < a2. This test is for C scalars. +// Args: +// a1: argument 1 +// a2: argument 2 +// op: operation +// description: A format string as in the printf() function. Can be nil or +// an empty string but must be present. +// ...: A variable number of arguments to the format string. Can be absent. +#define STAssertLessThan(a1, a2, description, ...) \ + STAssertOperation(a1, a2, <, description, ##__VA_ARGS__) + +// Generates a failure when a1 is not <= a2. This test is for C scalars. +// Args: +// a1: argument 1 +// a2: argument 2 +// op: operation +// description: A format string as in the printf() function. Can be nil or +// an empty string but must be present. +// ...: A variable number of arguments to the format string. Can be absent. +#define STAssertLessThanOrEqual(a1, a2, description, ...) \ + STAssertOperation(a1, a2, <=, description, ##__VA_ARGS__) + +// Generates a failure when string a1 is not equal to string a2. This call +// differs from STAssertEqualObjects in that strings that are different in +// composition (precomposed vs decomposed) will compare equal if their final +// representation is equal. +// ex O + umlaut decomposed is the same as O + umlaut composed. +// Args: +// a1: string 1 +// a2: string 2 +// description: A format string as in the printf() function. Can be nil or +// an empty string but must be present. +// ...: A variable number of arguments to the format string. Can be absent. +#define STAssertEqualStrings(a1, a2, description, ...) \ +do { \ + @try {\ + id a1value = (a1); \ + id a2value = (a2); \ + if (a1value == a2value) continue; \ + if ([a1value isKindOfClass:[NSString class]] && \ + [a2value isKindOfClass:[NSString class]] && \ + [a1value compare:a2value options:0] == NSOrderedSame) continue; \ + [self failWithException:[NSException failureInEqualityBetweenObject: a1value \ + andObject: a2value \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ + }\ + @catch (id anException) {\ + [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) == (%s)", #a1, #a2] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while(0) + +// Generates a failure when string a1 is equal to string a2. This call +// differs from STAssertEqualObjects in that strings that are different in +// composition (precomposed vs decomposed) will compare equal if their final +// representation is equal. +// ex O + umlaut decomposed is the same as O + umlaut composed. +// Args: +// a1: string 1 +// a2: string 2 +// description: A format string as in the printf() function. Can be nil or +// an empty string but must be present. +// ...: A variable number of arguments to the format string. Can be absent. +#define STAssertNotEqualStrings(a1, a2, description, ...) \ +do { \ + @try {\ + id a1value = (a1); \ + id a2value = (a2); \ + if ([a1value isKindOfClass:[NSString class]] && \ + [a2value isKindOfClass:[NSString class]] && \ + [a1value compare:a2value options:0] != NSOrderedSame) continue; \ + [self failWithException:[NSException failureInEqualityBetweenObject: a1value \ + andObject: a2value \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ + }\ + @catch (id anException) {\ + [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) != (%s)", #a1, #a2] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while(0) + +// Generates a failure when c-string a1 is not equal to c-string a2. +// Args: +// a1: string 1 +// a2: string 2 +// description: A format string as in the printf() function. Can be nil or +// an empty string but must be present. +// ...: A variable number of arguments to the format string. Can be absent. +#define STAssertEqualCStrings(a1, a2, description, ...) \ +do { \ + @try {\ + const char* a1value = (a1); \ + const char* a2value = (a2); \ + if (a1value == a2value) continue; \ + if (strcmp(a1value, a2value) == 0) continue; \ + [self failWithException:[NSException failureInEqualityBetweenObject: [NSString stringWithUTF8String:a1value] \ + andObject: [NSString stringWithUTF8String:a2value] \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ + }\ + @catch (id anException) {\ + [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) == (%s)", #a1, #a2] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while(0) + +// Generates a failure when c-string a1 is equal to c-string a2. +// Args: +// a1: string 1 +// a2: string 2 +// description: A format string as in the printf() function. Can be nil or +// an empty string but must be present. +// ...: A variable number of arguments to the format string. Can be absent. +#define STAssertNotEqualCStrings(a1, a2, description, ...) \ +do { \ + @try {\ + const char* a1value = (a1); \ + const char* a2value = (a2); \ + if (strcmp(a1value, a2value) != 0) continue; \ + [self failWithException:[NSException failureInEqualityBetweenObject: [NSString stringWithUTF8String:a1value] \ + andObject: [NSString stringWithUTF8String:a2value] \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ + }\ + @catch (id anException) {\ + [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) != (%s)", #a1, #a2] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while(0) + +#if GTM_IPHONE_SDK + +// SENTE_BEGIN +/*" Generates a failure when !{ [a1 isEqualTo:a2] } is false + (or one is nil and the other is not). + _{a1 The object on the left.} + _{a2 The object on the right.} + _{description A format string as in the printf() function. Can be nil or + an empty string but must be present.} + _{... A variable number of arguments to the format string. Can be absent.} +"*/ +#define STAssertEqualObjects(a1, a2, description, ...) \ +do { \ + @try {\ + id a1value = (a1); \ + id a2value = (a2); \ + if (a1value == a2value) continue; \ + if ( (@encode(__typeof__(a1value)) == @encode(id)) && \ + (@encode(__typeof__(a2value)) == @encode(id)) && \ + [(id)a1value isEqual: (id)a2value] ) continue; \ + [self failWithException:[NSException failureInEqualityBetweenObject: a1value \ + andObject: a2value \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ + }\ + @catch (id anException) {\ + [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) == (%s)", #a1, #a2] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while(0) + + +/*" Generates a failure when a1 is not equal to a2. This test is for + C scalars, structs and unions. + _{a1 The argument on the left.} + _{a2 The argument on the right.} + _{description A format string as in the printf() function. Can be nil or + an empty string but must be present.} + _{... A variable number of arguments to the format string. Can be absent.} +"*/ +#define STAssertEquals(a1, a2, description, ...) \ +do { \ + @try {\ + if (@encode(__typeof__(a1)) != @encode(__typeof__(a2))) { \ + [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:[@"Type mismatch -- " stringByAppendingString:STComposeString(description, ##__VA_ARGS__)]]]; \ + } else { \ + __typeof__(a1) a1value = (a1); \ + __typeof__(a2) a2value = (a2); \ + NSValue *a1encoded = [NSValue value:&a1value withObjCType: @encode(__typeof__(a1))]; \ + NSValue *a2encoded = [NSValue value:&a2value withObjCType: @encode(__typeof__(a2))]; \ + if (![a1encoded isEqualToValue:a2encoded]) { \ + [self failWithException:[NSException failureInEqualityBetweenValue: a1encoded \ + andValue: a2encoded \ + withAccuracy: nil \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ + } \ + } \ + } \ + @catch (id anException) {\ + [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) == (%s)", #a1, #a2] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while(0) + +#define STAbsoluteDifference(left,right) (MAX(left,right)-MIN(left,right)) + + +/*" Generates a failure when a1 is not equal to a2 within + or - accuracy is false. + This test is for scalars such as floats and doubles where small differences + could make these items not exactly equal, but also works for all scalars. + _{a1 The scalar on the left.} + _{a2 The scalar on the right.} + _{accuracy The maximum difference between a1 and a2 for these values to be + considered equal.} + _{description A format string as in the printf() function. Can be nil or + an empty string but must be present.} + _{... A variable number of arguments to the format string. Can be absent.} +"*/ + +#define STAssertEqualsWithAccuracy(a1, a2, accuracy, description, ...) \ +do { \ + @try {\ + if (@encode(__typeof__(a1)) != @encode(__typeof__(a2))) { \ + [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:[@"Type mismatch -- " stringByAppendingString:STComposeString(description, ##__VA_ARGS__)]]]; \ + } else { \ + __typeof__(a1) a1value = (a1); \ + __typeof__(a2) a2value = (a2); \ + __typeof__(accuracy) accuracyvalue = (accuracy); \ + if (STAbsoluteDifference(a1value, a2value) > accuracyvalue) { \ + NSValue *a1encoded = [NSValue value:&a1value withObjCType:@encode(__typeof__(a1))]; \ + NSValue *a2encoded = [NSValue value:&a2value withObjCType:@encode(__typeof__(a2))]; \ + NSValue *accuracyencoded = [NSValue value:&accuracyvalue withObjCType:@encode(__typeof__(accuracy))]; \ + [self failWithException:[NSException failureInEqualityBetweenValue: a1encoded \ + andValue: a2encoded \ + withAccuracy: accuracyencoded \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ + } \ + } \ + } \ + @catch (id anException) {\ + [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) == (%s)", #a1, #a2] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while(0) + + + +/*" Generates a failure unconditionally. + _{description A format string as in the printf() function. Can be nil or + an empty string but must be present.} + _{... A variable number of arguments to the format string. Can be absent.} +"*/ +#define STFail(description, ...) \ +[self failWithException:[NSException failureInFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(description, ##__VA_ARGS__)]] + + + +/*" Generates a failure when a1 is not nil. + _{a1 An object.} + _{description A format string as in the printf() function. Can be nil or + an empty string but must be present.} + _{... A variable number of arguments to the format string. Can be absent.} +"*/ +#define STAssertNil(a1, description, ...) \ +do { \ + @try {\ + id a1value = (a1); \ + if (a1value != nil) { \ + NSString *_a1 = [NSString stringWithUTF8String: #a1]; \ + NSString *_expression = [NSString stringWithFormat:@"((%@) == nil)", _a1]; \ + [self failWithException:[NSException failureInCondition: _expression \ + isTrue: NO \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ + } \ + }\ + @catch (id anException) {\ + [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) == nil fails", #a1] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while(0) + + +/*" Generates a failure when a1 is nil. + _{a1 An object.} + _{description A format string as in the printf() function. Can be nil or + an empty string but must be present.} + _{... A variable number of arguments to the format string. Can be absent.} +"*/ +#define STAssertNotNil(a1, description, ...) \ +do { \ + @try {\ + id a1value = (a1); \ + if (a1value == nil) { \ + NSString *_a1 = [NSString stringWithUTF8String: #a1]; \ + NSString *_expression = [NSString stringWithFormat:@"((%@) != nil)", _a1]; \ + [self failWithException:[NSException failureInCondition: _expression \ + isTrue: NO \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ + } \ + }\ + @catch (id anException) {\ + [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) != nil fails", #a1] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while(0) + + +/*" Generates a failure when expression evaluates to false. + _{expr The expression that is tested.} + _{description A format string as in the printf() function. Can be nil or + an empty string but must be present.} + _{... A variable number of arguments to the format string. Can be absent.} +"*/ +#define STAssertTrue(expr, description, ...) \ +do { \ + BOOL _evaluatedExpression = (expr);\ + if (!_evaluatedExpression) {\ + NSString *_expression = [NSString stringWithUTF8String: #expr];\ + [self failWithException:[NSException failureInCondition: _expression \ + isTrue: NO \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ + } \ +} while (0) + + +/*" Generates a failure when expression evaluates to false and in addition will + generate error messages if an exception is encountered. + _{expr The expression that is tested.} + _{description A format string as in the printf() function. Can be nil or + an empty string but must be present.} + _{... A variable number of arguments to the format string. Can be absent.} +"*/ +#define STAssertTrueNoThrow(expr, description, ...) \ +do { \ + @try {\ + BOOL _evaluatedExpression = (expr);\ + if (!_evaluatedExpression) {\ + NSString *_expression = [NSString stringWithUTF8String: #expr];\ + [self failWithException:[NSException failureInCondition: _expression \ + isTrue: NO \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ + } \ + } \ + @catch (id anException) {\ + [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) ", #expr] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while (0) + + +/*" Generates a failure when the expression evaluates to true. + _{expr The expression that is tested.} + _{description A format string as in the printf() function. Can be nil or + an empty string but must be present.} + _{... A variable number of arguments to the format string. Can be absent.} +"*/ +#define STAssertFalse(expr, description, ...) \ +do { \ + BOOL _evaluatedExpression = (expr);\ + if (_evaluatedExpression) {\ + NSString *_expression = [NSString stringWithUTF8String: #expr];\ + [self failWithException:[NSException failureInCondition: _expression \ + isTrue: YES \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ + } \ +} while (0) + + +/*" Generates a failure when the expression evaluates to true and in addition + will generate error messages if an exception is encountered. + _{expr The expression that is tested.} + _{description A format string as in the printf() function. Can be nil or + an empty string but must be present.} + _{... A variable number of arguments to the format string. Can be absent.} +"*/ +#define STAssertFalseNoThrow(expr, description, ...) \ +do { \ + @try {\ + BOOL _evaluatedExpression = (expr);\ + if (_evaluatedExpression) {\ + NSString *_expression = [NSString stringWithUTF8String: #expr];\ + [self failWithException:[NSException failureInCondition: _expression \ + isTrue: YES \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ + } \ + } \ + @catch (id anException) {\ + [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"!(%s) ", #expr] \ + exception:anException \ + inFile:[NSString stringWithUTF8String:__FILE__] \ + atLine:__LINE__ \ + withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while (0) + + +/*" Generates a failure when expression does not throw an exception. + _{expression The expression that is evaluated.} + _{description A format string as in the printf() function. Can be nil or + an empty string but must be present.} + _{... A variable number of arguments to the format string. Can be absent. +"*/ +#define STAssertThrows(expr, description, ...) \ +do { \ + @try { \ + (expr);\ + } \ + @catch (id anException) { \ + continue; \ + }\ + [self failWithException:[NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ + exception: nil \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ +} while (0) + + +/*" Generates a failure when expression does not throw an exception of a + specific class. + _{expression The expression that is evaluated.} + _{specificException The specified class of the exception.} + _{description A format string as in the printf() function. Can be nil or + an empty string but must be present.} + _{... A variable number of arguments to the format string. Can be absent.} +"*/ +#define STAssertThrowsSpecific(expr, specificException, description, ...) \ +do { \ + @try { \ + (expr);\ + } \ + @catch (specificException *anException) { \ + continue; \ + }\ + @catch (id anException) {\ + NSString *_descrip = STComposeString(@"(Expected exception: %@) %@", NSStringFromClass([specificException class]), description);\ + [self failWithException:[NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ + exception: anException \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(_descrip, ##__VA_ARGS__)]]; \ + continue; \ + }\ + NSString *_descrip = STComposeString(@"(Expected exception: %@) %@", NSStringFromClass([specificException class]), description);\ + [self failWithException:[NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ + exception: nil \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(_descrip, ##__VA_ARGS__)]]; \ +} while (0) + + +/*" Generates a failure when expression does not throw an exception of a + specific class with a specific name. Useful for those frameworks like + AppKit or Foundation that throw generic NSException w/specific names + (NSInvalidArgumentException, etc). + _{expression The expression that is evaluated.} + _{specificException The specified class of the exception.} + _{aName The name of the specified exception.} + _{description A format string as in the printf() function. Can be nil or + an empty string but must be present.} + _{... A variable number of arguments to the format string. Can be absent.} + +"*/ +#define STAssertThrowsSpecificNamed(expr, specificException, aName, description, ...) \ +do { \ + @try { \ + (expr);\ + } \ + @catch (specificException *anException) { \ + if ([aName isEqualToString: [anException name]]) continue; \ + NSString *_descrip = STComposeString(@"(Expected exception: %@ (name: %@)) %@", NSStringFromClass([specificException class]), aName, description);\ + [self failWithException: \ + [NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ + exception: anException \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(_descrip, ##__VA_ARGS__)]]; \ + continue; \ + }\ + @catch (id anException) {\ + NSString *_descrip = STComposeString(@"(Expected exception: %@) %@", NSStringFromClass([specificException class]), description);\ + [self failWithException: \ + [NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ + exception: anException \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(_descrip, ##__VA_ARGS__)]]; \ + continue; \ + }\ + NSString *_descrip = STComposeString(@"(Expected exception: %@) %@", NSStringFromClass([specificException class]), description);\ + [self failWithException: \ + [NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ + exception: nil \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(_descrip, ##__VA_ARGS__)]]; \ +} while (0) + + +/*" Generates a failure when expression does throw an exception. + _{expression The expression that is evaluated.} + _{description A format string as in the printf() function. Can be nil or + an empty string but must be present.} + _{... A variable number of arguments to the format string. Can be absent.} +"*/ +#define STAssertNoThrow(expr, description, ...) \ +do { \ + @try { \ + (expr);\ + } \ + @catch (id anException) { \ + [self failWithException:[NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ + exception: anException \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ + }\ +} while (0) + + +/*" Generates a failure when expression does throw an exception of the specitied + class. Any other exception is okay (i.e. does not generate a failure). + _{expression The expression that is evaluated.} + _{specificException The specified class of the exception.} + _{description A format string as in the printf() function. Can be nil or + an empty string but must be present.} + _{... A variable number of arguments to the format string. Can be absent.} +"*/ +#define STAssertNoThrowSpecific(expr, specificException, description, ...) \ +do { \ + @try { \ + (expr);\ + } \ + @catch (specificException *anException) { \ + [self failWithException:[NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ + exception: anException \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ + }\ + @catch (id anythingElse) {\ + ; \ + }\ +} while (0) + + +/*" Generates a failure when expression does throw an exception of a + specific class with a specific name. Useful for those frameworks like + AppKit or Foundation that throw generic NSException w/specific names + (NSInvalidArgumentException, etc). + _{expression The expression that is evaluated.} + _{specificException The specified class of the exception.} + _{aName The name of the specified exception.} + _{description A format string as in the printf() function. Can be nil or + an empty string but must be present.} + _{... A variable number of arguments to the format string. Can be absent.} + +"*/ +#define STAssertNoThrowSpecificNamed(expr, specificException, aName, description, ...) \ +do { \ + @try { \ + (expr);\ + } \ + @catch (specificException *anException) { \ + if ([aName isEqualToString: [anException name]]) { \ + NSString *_descrip = STComposeString(@"(Expected exception: %@ (name: %@)) %@", NSStringFromClass([specificException class]), aName, description);\ + [self failWithException: \ + [NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ + exception: anException \ + inFile: [NSString stringWithUTF8String:__FILE__] \ + atLine: __LINE__ \ + withDescription: STComposeString(_descrip, ##__VA_ARGS__)]]; \ + } \ + continue; \ + }\ + @catch (id anythingElse) {\ + ; \ + }\ +} while (0) + + + +@interface NSException (GTMSenTestAdditions) ++ (NSException *)failureInFile:(NSString *)filename + atLine:(int)lineNumber + withDescription:(NSString *)formatString, ...; ++ (NSException *)failureInCondition:(NSString *)condition + isTrue:(BOOL)isTrue + inFile:(NSString *)filename + atLine:(int)lineNumber + withDescription:(NSString *)formatString, ...; ++ (NSException *)failureInEqualityBetweenObject:(id)left + andObject:(id)right + inFile:(NSString *)filename + atLine:(int)lineNumber + withDescription:(NSString *)formatString, ...; ++ (NSException *)failureInEqualityBetweenValue:(NSValue *)left + andValue:(NSValue *)right + withAccuracy:(NSValue *)accuracy + inFile:(NSString *)filename + atLine:(int) ineNumber + withDescription:(NSString *)formatString, ...; ++ (NSException *)failureInRaise:(NSString *)expression + inFile:(NSString *)filename + atLine:(int)lineNumber + withDescription:(NSString *)formatString, ...; ++ (NSException *)failureInRaise:(NSString *)expression + exception:(NSException *)exception + inFile:(NSString *)filename + atLine:(int)lineNumber + withDescription:(NSString *)formatString, ...; +@end + +// SENTE_END + +@interface SenTestCase : NSObject { + SEL currentSelector_; +} + +- (void)setUp; +- (void)invokeTest; +- (void)tearDown; +- (void)performTest:(SEL)sel; +- (void)failWithException:(NSException*)exception; +@end + +GTM_EXTERN NSString *const SenTestFailureException; + +GTM_EXTERN NSString *const SenTestFilenameKey; +GTM_EXTERN NSString *const SenTestLineNumberKey; + +#endif // GTM_IPHONE_SDK + +// All unittest cases in GTM should inherit from GTMTestCase. It makes sure +// to set up our logging system correctly to verify logging calls. +// See GTMUnitTestDevLog.h for details +@interface GTMTestCase : SenTestCase +@end diff --git a/Tests/GTM/GTMSenTestCase.m b/Tests/GTM/GTMSenTestCase.m new file mode 100644 index 0000000..8482c5a --- /dev/null +++ b/Tests/GTM/GTMSenTestCase.m @@ -0,0 +1,362 @@ +// +// GTMSenTestCase.m +// +// Copyright 2007-2008 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy +// of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. +// + +#import "GTMSenTestCase.h" +#import + +#if !GTM_IPHONE_SDK +#import "GTMGarbageCollection.h" +#endif // !GTM_IPHONE_SDK + +#if GTM_IPHONE_SDK +#import + +@interface NSException (GTMSenTestPrivateAdditions) ++ (NSException *)failureInFile:(NSString *)filename + atLine:(int)lineNumber + reason:(NSString *)reason; +@end + +@implementation NSException (GTMSenTestPrivateAdditions) ++ (NSException *)failureInFile:(NSString *)filename + atLine:(int)lineNumber + reason:(NSString *)reason { + NSDictionary *userInfo = + [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInteger:lineNumber], SenTestLineNumberKey, + filename, SenTestFilenameKey, + nil]; + + return [self exceptionWithName:SenTestFailureException + reason:reason + userInfo:userInfo]; +} +@end + +@implementation NSException (GTMSenTestAdditions) + ++ (NSException *)failureInFile:(NSString *)filename + atLine:(int)lineNumber + withDescription:(NSString *)formatString, ... { + + NSString *testDescription = @""; + if (formatString) { + va_list vl; + va_start(vl, formatString); + testDescription = + [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease]; + va_end(vl); + } + + NSString *reason = testDescription; + + return [self failureInFile:filename atLine:lineNumber reason:reason]; +} + ++ (NSException *)failureInCondition:(NSString *)condition + isTrue:(BOOL)isTrue + inFile:(NSString *)filename + atLine:(int)lineNumber + withDescription:(NSString *)formatString, ... { + + NSString *testDescription = @""; + if (formatString) { + va_list vl; + va_start(vl, formatString); + testDescription = + [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease]; + va_end(vl); + } + + NSString *reason = [NSString stringWithFormat:@"'%@' should be %s. %@", + condition, isTrue ? "TRUE" : "FALSE", testDescription]; + + return [self failureInFile:filename atLine:lineNumber reason:reason]; +} + ++ (NSException *)failureInEqualityBetweenObject:(id)left + andObject:(id)right + inFile:(NSString *)filename + atLine:(int)lineNumber + withDescription:(NSString *)formatString, ... { + + NSString *testDescription = @""; + if (formatString) { + va_list vl; + va_start(vl, formatString); + testDescription = + [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease]; + va_end(vl); + } + + NSString *reason = + [NSString stringWithFormat:@"'%@' should be equal to '%@'. %@", + [left description], [right description], testDescription]; + + return [self failureInFile:filename atLine:lineNumber reason:reason]; +} + ++ (NSException *)failureInEqualityBetweenValue:(NSValue *)left + andValue:(NSValue *)right + withAccuracy:(NSValue *)accuracy + inFile:(NSString *)filename + atLine:(int)lineNumber + withDescription:(NSString *)formatString, ... { + + NSString *testDescription = @""; + if (formatString) { + va_list vl; + va_start(vl, formatString); + testDescription = + [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease]; + va_end(vl); + } + + NSString *reason; + if (accuracy) { + reason = + [NSString stringWithFormat:@"'%@' should be equal to '%@'. %@", + left, right, testDescription]; + } else { + reason = + [NSString stringWithFormat:@"'%@' should be equal to '%@' +/-'%@'. %@", + left, right, accuracy, testDescription]; + } + + return [self failureInFile:filename atLine:lineNumber reason:reason]; +} + ++ (NSException *)failureInRaise:(NSString *)expression + inFile:(NSString *)filename + atLine:(int)lineNumber + withDescription:(NSString *)formatString, ... { + + NSString *testDescription = @""; + if (formatString) { + va_list vl; + va_start(vl, formatString); + testDescription = + [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease]; + va_end(vl); + } + + NSString *reason = [NSString stringWithFormat:@"'%@' should raise. %@", + expression, testDescription]; + + return [self failureInFile:filename atLine:lineNumber reason:reason]; +} + ++ (NSException *)failureInRaise:(NSString *)expression + exception:(NSException *)exception + inFile:(NSString *)filename + atLine:(int)lineNumber + withDescription:(NSString *)formatString, ... { + + NSString *testDescription = @""; + if (formatString) { + va_list vl; + va_start(vl, formatString); + testDescription = + [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease]; + va_end(vl); + } + + NSString *reason; + if ([[exception name] isEqualToString:SenTestFailureException]) { + // it's our exception, assume it has the right description on it. + reason = [exception reason]; + } else { + // not one of our exception, use the exceptions reason and our description + reason = [NSString stringWithFormat:@"'%@' raised '%@'. %@", + expression, [exception reason], testDescription]; + } + + return [self failureInFile:filename atLine:lineNumber reason:reason]; +} + +@end + +NSString *STComposeString(NSString *formatString, ...) { + NSString *reason = @""; + if (formatString) { + va_list vl; + va_start(vl, formatString); + reason = + [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease]; + va_end(vl); + } + return reason; +} + +NSString *const SenTestFailureException = @"SenTestFailureException"; +NSString *const SenTestFilenameKey = @"SenTestFilenameKey"; +NSString *const SenTestLineNumberKey = @"SenTestLineNumberKey"; + +@interface SenTestCase (SenTestCasePrivate) +// our method of logging errors ++ (void)printException:(NSException *)exception fromTestName:(NSString *)name; +@end + +@implementation SenTestCase +- (void)failWithException:(NSException*)exception { + [exception raise]; +} + +- (void)setUp { +} + +- (void)performTest:(SEL)sel { + currentSelector_ = sel; + @try { + [self invokeTest]; + } @catch (NSException *exception) { + [[self class] printException:exception + fromTestName:NSStringFromSelector(sel)]; + [exception raise]; + } +} + ++ (void)printException:(NSException *)exception fromTestName:(NSString *)name { + NSDictionary *userInfo = [exception userInfo]; + NSString *filename = [userInfo objectForKey:SenTestFilenameKey]; + NSNumber *lineNumber = [userInfo objectForKey:SenTestLineNumberKey]; + NSString *className = NSStringFromClass([self class]); + if ([filename length] == 0) { + filename = @"Unknown.m"; + } + fprintf(stderr, "%s:%ld: error: -[%s %s] : %s\n", + [filename UTF8String], + (long)[lineNumber integerValue], + [className UTF8String], + [name UTF8String], + [[exception reason] UTF8String]); + fflush(stderr); +} + +- (void)invokeTest { + NSException *e = nil; + @try { + // Wrap things in autorelease pools because they may + // have an STMacro in their dealloc which may get called + // when the pool is cleaned up + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + // We don't log exceptions here, instead we let the person that called + // this log the exception. This ensures they are only logged once but the + // outer layers get the exceptions to report counts, etc. + @try { + [self setUp]; + @try { + [self performSelector:currentSelector_]; + } @catch (NSException *exception) { + e = [exception retain]; + } + [self tearDown]; + } @catch (NSException *exception) { + e = [exception retain]; + } + [pool release]; + } @catch (NSException *exception) { + e = [exception retain]; + } + if (e) { + [e autorelease]; + [e raise]; + } +} + +- (void)tearDown { +} + +- (NSString *)description { + // This matches the description OCUnit would return to you + return [NSString stringWithFormat:@"-[%@ %@]", [self class], + NSStringFromSelector(currentSelector_)]; +} +@end + +#endif // GTM_IPHONE_SDK + +@implementation GTMTestCase : SenTestCase +- (void)invokeTest { + Class devLogClass = NSClassFromString(@"GTMUnitTestDevLog"); + if (devLogClass) { + [devLogClass performSelector:@selector(enableTracking)]; + [devLogClass performSelector:@selector(verifyNoMoreLogsExpected)]; + + } + [super invokeTest]; + if (devLogClass) { + [devLogClass performSelector:@selector(verifyNoMoreLogsExpected)]; + [devLogClass performSelector:@selector(disableTracking)]; + } +} +@end + +// Leak detection +#if !GTM_IPHONE_DEVICE +// Don't want to get leaks on the iPhone Device as the device doesn't +// have 'leaks'. The simulator does though. + +static void _GTMRunLeaks(void) { + // This is an atexit handler. It runs leaks for us to check if we are + // leaking anything in our tests. + const char* cExclusionsEnv = getenv("GTM_LEAKS_SYMBOLS_TO_IGNORE"); + NSMutableString *exclusions = [NSMutableString string]; + if (cExclusionsEnv) { + NSString *exclusionsEnv = [NSString stringWithUTF8String:cExclusionsEnv]; + NSArray *exclusionsArray = [exclusionsEnv componentsSeparatedByString:@","]; + NSString *exclusion; + NSCharacterSet *wcSet = [NSCharacterSet whitespaceCharacterSet]; + GTM_FOREACH_OBJECT(exclusion, exclusionsArray) { + exclusion = [exclusion stringByTrimmingCharactersInSet:wcSet]; + [exclusions appendFormat:@"-exclude \"%@\" ", exclusion]; + } + } + NSString *string + = [NSString stringWithFormat:@"/usr/bin/leaks %@%d" + @"| /usr/bin/sed -e 's/Leak: /Leaks:0: warning: Leak /'", + exclusions, getpid()]; + int ret = system([string UTF8String]); + if (ret) { + fprintf(stderr, "%s:%d: Error: Unable to run leaks. 'system' returned: %d", + __FILE__, __LINE__, ret); + fflush(stderr); + } +} + +static __attribute__((constructor)) void _GTMInstallLeaks(void) { + BOOL checkLeaks = YES; +#if !GTM_IPHONE_SDK + checkLeaks = GTMIsGarbageCollectionEnabled() ? NO : YES; +#endif // !GTM_IPHONE_SDK + if (checkLeaks) { + checkLeaks = getenv("GTM_ENABLE_LEAKS") ? YES : NO; + if (checkLeaks) { + if (checkLeaks) { + fprintf(stderr, "Leak Checking Enabled\n"); + fflush(stderr); + int ret = atexit(&_GTMRunLeaks); + _GTMDevAssert(ret == 0, + @"Unable to install _GTMRunLeaks as an atexit handler (%d)", + errno); + } + } + } +} + +#endif // !GTM_IPHONE_DEVICE diff --git a/Tests/GTM/RunIPhoneUnitTest.sh b/Tests/GTM/RunIPhoneUnitTest.sh new file mode 100755 index 0000000..ccf1456 --- /dev/null +++ b/Tests/GTM/RunIPhoneUnitTest.sh @@ -0,0 +1,108 @@ +#!/bin/sh +# RunIPhoneUnitTest.sh +# Copyright 2008 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy +# of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. +# +# Runs all unittests through the iPhone simulator. We don't handle running them +# on the device. To run on the device just choose "run". +# Controlling environment variables: +# +# GTM_DISABLE_ZOMBIES - +# Set to a non-zero value to turn on zombie checks. You will probably +# want to turn this off if you enable leaks. +# +# GTM_ENABLE_LEAKS - +# Set to a non-zero value to turn on the leaks check. You will probably want +# to disable zombies, otherwise you will get a lot of false positives. +# +# GTM_DISABLE_TERMINATION +# Set to a non-zero value so that the app doesn't terminate when it's finished +# running tests. This is useful when using it with external tools such +# as Instruments. +# +# GTM_LEAKS_SYMBOLS_TO_IGNORE +# List of comma separated symbols that leaks should ignore. Mainly to control +# leaks in frameworks you don't have control over. +# Search this file for GTM_LEAKS_SYMBOLS_TO_IGNORE to see examples. +# Please feel free to add other symbols as you find them but make sure to +# reference Radars or other bug systems so we can track them. +# +# GTM_REMOVE_GCOV_DATA +# Before starting the test, remove any *.gcda files for the current run so +# you won't get errors when the source file has changed and the data can't +# be merged. +# + +ScriptDir=$(dirname $(echo $0 | sed -e "s,^\([^/]\),$(pwd)/\1,")) +ScriptName=$(basename "$0") +ThisScript="${ScriptDir}/${ScriptName}" + +GTMXcodeNote() { + echo ${ThisScript}:${1}: note: GTM ${2} +} + +if [ "$PLATFORM_NAME" == "iphonesimulator" ]; then + # We kill the iPhone simulator because otherwise we run into issues where + # the unittests fail becuase the simulator is currently running, and + # at this time the iPhone SDK won't allow two simulators running at the same + # time. + /usr/bin/killall "iPhone Simulator" + + if [ $GTM_REMOVE_GCOV_DATA ]; then + if [ "${OBJECT_FILE_DIR}-${CURRENT_VARIANT}" != "-" ]; then + if [ -d "${OBJECT_FILE_DIR}-${CURRENT_VARIANT}" ]; then + GTMXcodeNote ${LINENO} "Removing any .gcda files" + (cd "${OBJECT_FILE_DIR}-${CURRENT_VARIANT}" && \ + find . -type f -name "*.gcda" -print0 | xargs -0 rm -f ) + fi + fi + fi + + export DYLD_ROOT_PATH="$SDKROOT" + export DYLD_FRAMEWORK_PATH="$CONFIGURATION_BUILD_DIR" + export IPHONE_SIMULATOR_ROOT="$SDKROOT" + export CFFIXED_USER_HOME="$TEMP_FILES_DIR/iPhone Simulator User Dir" + + # See http://developer.apple.com/technotes/tn2004/tn2124.html for an + # explanation of these environment variables. + + export MallocScribble=YES + export MallocPreScribble=YES + export MallocGuardEdges=YES + export MallocStackLogging=YES + export NSAutoreleaseFreedObjectCheckEnabled=YES + export OBJC_DEBUG_FRAGILE_SUPERCLASSES=YES + + if [ ! $GTM_DISABLE_ZOMBIES ]; then + GTMXcodeNote ${LINENO} "Enabling zombies" + export CFZombieLevel=3 + export NSZombieEnabled=YES + fi + + # Cleanup user home and documents directory + if [ -d "$CFFIXED_USER_HOME" ]; then + rm -rf "$CFFIXED_USER_HOME" + fi + mkdir "$CFFIXED_USER_HOME" + mkdir "$CFFIXED_USER_HOME/Documents" + + # 6251475 iPhone simulator leaks @ CFHTTPCookieStore shutdown if + # CFFIXED_USER_HOME empty + GTM_LEAKS_SYMBOLS_TO_IGNORE="CFHTTPCookieStore" + + "$TARGET_BUILD_DIR/$EXECUTABLE_PATH" -RegisterForSystemEvents +else + GTMXcodeNote ${LINENO} "Skipping running of unittests for device build." +fi +exit 0 diff --git a/Tests/gomokuExampleTest.m b/Tests/gomokuExampleTest.m new file mode 100644 index 0000000..ec0a80e --- /dev/null +++ b/Tests/gomokuExampleTest.m @@ -0,0 +1,27 @@ +// +// gomokuExampleTest.m +// gomoku +// +// Created by Konstantin Gredeskoul on 5/2/10. +// + +#import "GTMSenTestCase.h" +#define HC_SHORTHAND +#import +#import + +@interface gomokuExampleTest : SenTestCase +@end + +@implementation gomokuExampleTest + +- (void) testMethod { + assertThat(@"foo", is(@"foo")); + assertThat(@"foo", isNot(@"bar")); +} + +- (void) testFailingTest { + assertThat([NSNumber numberWithInt:5], lessThan([NSNumber numberWithInt:1])); +} + +@end diff --git a/Tests/gomokuViewControllerTest.m b/Tests/gomokuViewControllerTest.m new file mode 100644 index 0000000..95e4fe9 --- /dev/null +++ b/Tests/gomokuViewControllerTest.m @@ -0,0 +1,42 @@ +// +// gomokuViewControllerTest.m +// gomoku +// +// Created by Konstantin Gredeskoul on 5/2/10. +// + + +#import "GTMSenTestCase.h" +#define HC_SHORTHAND +#import +#import +#import "GomokuViewController.h" + +@interface gomokuViewControllerTest : SenTestCase +GomokuViewController *controller; +@end + +@implementation gomokuViewControllerTest + +- (void) setUp { + controller = [[GomokuViewController alloc] initWithNibName:@"gomokuViewController" bundle:nil]; + [controller loadView]; +} + +- (void) tearDown { + [controller release]; + controller = nil; +} + +- (void) testgomokuViewControllerIBOutlets { + assertThat(controller, notNilValue()); + assertThat(controller.view, notNilValue()); + assertThat(controller.button, notNilValue()); +} + +- (void) testgomokuViewControllerIBActions { + assertThat(controller, notNilValue()); + assertThat([controller.button actionsForTarget:controller forControlEvent:UIControlEventTouchUpInside], onlyContains(@"buttonTapped:", nil)); +} + +@end \ No newline at end of file diff --git a/doc/allis1994.pdf b/doc/allis1994.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f8f74dc6ddbe31bb7bb3268c86eb161c80c6febf GIT binary patch literal 94267 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� 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 literal 0 HcmV?d00001 diff --git a/doc/oo-responsibilities.txt b/doc/oo-responsibilities.txt new file mode 100644 index 0000000..8ea1e4f --- /dev/null +++ b/doc/oo-responsibilities.txt @@ -0,0 +1,54 @@ +Class Responsibilities +class GomokuGame < Game +- assigns player1 and player2 to one of the supported Player types (user selected) +- each player is assigned PlayerColor BLACK|WHITE +- starts the game, creates a blank board. +- sends the BLACK player msg to startThinking(), passing a read-only board as an argument +- updates UI with "Player 1 is thinking..." +- at some point later receives a message makeAMove(move) from the player +- validates the move, and updates the board with the move x/y if the move is valid +- checks for the win/loss; + if found notifies both players and stops the game. + if no loss/win, passes control to player2, +- repeat until win/loss found. +- self destruct + + This class is additionally responsible for: + +- canceling the game +- maintaining move history +- providing undo functionality +- maintains a set of rules to define valid and invalid moves: + - isMoveValid(board, move) : BOOL + [used by Game class itself to validate player moves, but can also be offered in optimized form to the AI logic. In which case has to be able to support also C-optimized data struct argument] + +class Board +- representation of the game board at a particular point in time. Basically our data struct. +- each node may be 0 (blank), WHITE or BLACK. +- note: number of occupied cells determines uniquely next player color. + +class Move (x,y) +- represents a single move attempt coordinates (0-19,0-19). + +interface Player +- provides a convenience superclass, to be subclassed for each player type. +- subclasses must responds to startThinking(game, board) message +- responds to stopThinking() message (used to cancel the game) +- calls back the game to makeAMove(move), which may throw an exception (InvalidMove, CellOccupied, etc). + +class UIPlayer < Player + // represents a manual player that uses the graphical UI to make a move + // is linked with the View + startThinking(game, board) : notifies the View to start receiving events from the user and passes itself (player) as a reference + makeAMove(move) is called directly by the view via the player instance. + if exception is thrown, the view handles it. + if move is accepted the view switched away from the user-input mode. + +class AIPlayer < Player + // represents an algorithm. + startThinking(game, board) kicks off the algorithm in another thread and returns + makeAMove() is called by the thread upon completion + stopThinking() interrupts the thinking thread if it's running. + +class NetworkPlayer < Player + // future: player that receives/sends game moves from another network device. diff --git a/doc/uml-sequence.pdf b/doc/uml-sequence.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2c678c8b611826c2b12511319ed6e02f3e715b5e GIT binary patch literal 45946 zcmeFZWpo`&mL)7^X4aJ~W@biOL=cMt}>>a6GF9Ar&7gh95`<`GSEpKu*r^D@1?@@BHEr}7-J zeoXH^aa>Pvq;a(kP04)a!zryhaKnyK^`vI`XnXP4G>_=os-k04$N#M&aciu;^huWYZE5DF-MMh<)wTkgCvbcT@L8EaR*IybC4$) zVJ#ozK{h&F&n-HG<~AopB6!^QJs;`6y;Zi*-#>wRPbEdVT~x)Nph%RQ9A>-cL004v z#g!5oHSbv+lA}t?mlH-Z`Wv+E8OUKh=q~CyXAlg9qIlo&gst=SJdg9BwMe z(BMr!OlNXYEj^w3`MfIKfo8V2l#TK=w={Y_UGZlYhZ9cg(Ah=Muhg|gKMtJ282ED zg=>`fhW_Klm~Bvn%?E_dVAkn$EEANQ(XXrBj6JDWX&zbmpLOkmk`y;B>bH9&6nTXs zS^Av7G)UN4_CHAmCb%%^^e&EjfQiGdmfPkURIDb7r?t4<4V;uTpCQB;1@D$>W$L=` z%Ys?42YGErpjHXcao#XZ`jF<_6;}FCBKLv{52Bessu9T8`W2|9g3zEkCnYC0=@FfBMpPd znfF;788tOKK(UqzzGfbGQb43Tcb4Bp6f!n|OtWYdk!H*twKuYmpL65rv%B!uCL=Q% z%=pPlU-%lw;NPqo*Xp6;kFU<6D8$)IrMQ<$r`Wi^`j%6_oqGwEU-p+gmgrPajWs

f{8e-1d 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 v{%#<0eA@k?|k)qaI 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�-A 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

  • ^C}1tesqwsGJqh7y8XnwnEdDPv4J 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 + + + + ApplicationVersion + + com.omnigroup.OmniGraffle + 138.17.0.133677 + + CreationDate + 2010-06-19 16:03:12 -0700 + Creator + Konstantin Gredeskoul + GraphDocumentVersion + 6 + GuidesLocked + NO + GuidesVisible + YES + ImageCounter + 1 + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2010-06-19 17:29:19 -0700 + Modifier + Konstantin Gredeskoul + NotesVisible + NO + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSLeftMargin + + float + 18 + + NSOrientation + + int + 1 + + NSPaperSize + + size + {792, 612} + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + QuickLookPreview + + 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 + VRJNTABfUSFXv4vzC2yK6gjOWXVb3YeMPixcDRCjjSrGD7gLBVI2fql8IJJSITGkTB/Z + q3NBCin9d/8FnxVyfgplbmRzdHJlYW0KZW5kb2JqCjYgMCBvYmoKMzQ1NAplbmRvYmoK + MyAwIG9iago8PCAvVHlwZSAvUGFnZSAvUGFyZW50IDQgMCBSIC9SZXNvdXJjZXMgNyAw + IFIgL0NvbnRlbnRzIDUgMCBSIC9NZWRpYUJveCBbMCAwIDc1NiA1NTNdCj4+CmVuZG9i + ago3IDAgb2JqCjw8IC9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMg + L0ltYWdlSSBdIC9Db2xvclNwYWNlIDw8IC9DczEgOCAwIFIKL0NzMiAzNSAwIFIgPj4g + L0ZvbnQgPDwgL0YyLjAgMzcgMCBSIC9GMS4wIDM2IDAgUiA+PiAvWE9iamVjdCA8PCAv + SW01IDE3IDAgUgovSW0yIDExIDAgUiAvSW0xMCAyNyAwIFIgL0ltMyAxMyAwIFIgL0lt + NyAyMSAwIFIgL0ltMSA5IDAgUiAvSW04IDIzIDAgUiAvSW02CjE5IDAgUiAvSW05IDI1 + IDAgUiAvSW0xMyAzMyAwIFIgL0ltMTIgMzEgMCBSIC9JbTQgMTUgMCBSIC9JbTExIDI5 + IDAgUiA+PiA+PgplbmRvYmoKMTcgMCBvYmoKPDwgL0xlbmd0aCAxOCAwIFIgL1R5cGUg + L1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzNDIgL0hlaWdodCA2OCAvSW50 + ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSAzOCAwIFIgL0ludGVudCAvUGVyY2VwdHVh + bCAvU01hc2sgMzkgMCBSIC9CaXRzUGVyQ29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVE + ZWNvZGUgPj4Kc3RyZWFtCngB7dAxAQAAAMKg9U9tCy+IQGHAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBn4DAxCXAAEKZW5kc3RyZWFtCmVu + ZG9iagoxOCAwIG9iagozMjgKZW5kb2JqCjExIDAgb2JqCjw8IC9MZW5ndGggMTIgMCBS + IC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzMwIC9IZWlnaHQg + OTIgL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgMzggMCBSIC9JbnRlbnQgL1Bl + cmNlcHR1YWwgL1NNYXNrIDQxIDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0ZXIg + L0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QAQ0AAADCoPdP7ewBESgMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwY+MGPXAAEKZW5kc3RyZWFtCmVuZG9i + agoxMiAwIG9iago0MjAKZW5kb2JqCjI3IDAgb2JqCjw8IC9MZW5ndGggMjggMCBSIC9U + eXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzc0IC9IZWlnaHQgOTIg + L0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgMzggMCBSIC9JbnRlbnQgL1BlcmNl + cHR1YWwgL1NNYXNrIDQzIDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0ZXIgL0Zs + YXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QgQAAAADDoPlTX+AIhVBhwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGPgDA5NHAAEKZW5kc3RyZWFtCmVuZG9i + agoyOCAwIG9iago0NzQKZW5kb2JqCjEzIDAgb2JqCjw8IC9MZW5ndGggMTQgMCBSIC9U + eXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzQyIC9IZWlnaHQgMTE2 + IC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDM4IDAgUiAvSW50ZW50IC9QZXJj + ZXB0dWFsIC9TTWFzayA0NSAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9G + bGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0DEBAAAAwqD1T20JT4hAYcCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQPPgQHQ + 9wABCmVuZHN0cmVhbQplbmRvYmoKMTQgMCBvYmoKNTQzCmVuZG9iagoyMSAwIG9iago8 + PCAvTGVuZ3RoIDIyIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dp + ZHRoIDYyOCAvSGVpZ2h0IDE4OCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSAz + OCAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgNDcgMCBSIC9CaXRzUGVyQ29t + cG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dABDQAAAMKg + 909tDwcRKAwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMPA5MGfbAAEKZW5kc3RyZWFtCmVuZG9iagoyMiAwIG9i + agoxNTY3CmVuZG9iago5IDAgb2JqCjw8IC9MZW5ndGggMTAgMCBSIC9UeXBlIC9YT2Jq + ZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzMwIC9IZWlnaHQgNjggL0ludGVycG9s + YXRlCnRydWUgL0NvbG9yU3BhY2UgMzggMCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwgL1NN + YXNrIDQ5IDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVjb2Rl + ID4+CnN0cmVhbQp4Ae3QgQAAAADDoPlTH+SFUGHAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgIGvgQEHBwABCmVuZHN0cmVhbQplbmRvYmoKMTAgMCBvYmoKMzE2 + CmVuZG9iagoyMyAwIG9iago8PCAvTGVuZ3RoIDI0IDAgUiAvVHlwZSAvWE9iamVjdCAv + U3VidHlwZSAvSW1hZ2UgL1dpZHRoIDYyOCAvSGVpZ2h0IDY4IC9JbnRlcnBvbGF0ZQp0 + cnVlIC9Db2xvclNwYWNlIDM4IDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayA1 + MSAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+Pgpz + dHJlYW0KeAHt0DEBAAAAwqD1T20ND4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBj4Ghj0fwABCmVuZHN0cmVhbQplbmRvYmoKMjQgMCBv + YmoKNTgyCmVuZG9iagoxOSAwIG9iago8PCAvTGVuZ3RoIDIwIDAgUiAvVHlwZSAvWE9i + amVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDYyOCAvSGVpZ2h0IDE2NCAvSW50ZXJw + b2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSAzOCAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAv + U01hc2sgNTMgMCBSIC9CaXRzUGVyQ29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNv + ZGUgPj4Kc3RyZWFtCngB7dAxAQAAAMKg9U9tDQ+IQGHAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + jwMDtywAAQplbmRzdHJlYW0KZW5kb2JqCjIwIDAgb2JqCjEzNzEKZW5kb2JqCjI1IDAg + b2JqCjw8IC9MZW5ndGggMjYgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFn + ZSAvV2lkdGggMzA2IC9IZWlnaHQgNjggL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3Bh + Y2UgMzggMCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwgL1NNYXNrIDU1IDAgUiAvQml0c1Bl + ckNvbXBvbmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QgQAA + AADDoPlTH+SFUGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMPA4MPPYAAEKZW5kc3RyZWFtCmVuZG9iagoy + NiAwIG9iagoyOTQKZW5kb2JqCjMzIDAgb2JqCjw8IC9MZW5ndGggMzQgMCBSIC9UeXBl + IC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzc0IC9IZWlnaHQgMTE2IC9J + bnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDM4IDAgUiAvSW50ZW50IC9QZXJjZXB0 + dWFsIC9TTWFzayA1NyAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0 + ZURlY29kZSA+PgpzdHJlYW0KeAHt0DEBAAAAwqD1T20MH4hAYcCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBj4DAz8dwABCmVu + ZHN0cmVhbQplbmRvYmoKMzQgMCBvYmoKNTkxCmVuZG9iagozMSAwIG9iago8PCAvTGVu + Z3RoIDMyIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDMw + NiAvSGVpZ2h0IDkyIC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDM4IDAgUiAv + SW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayA1OSAwIFIgL0JpdHNQZXJDb21wb25lbnQK + OCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0DEBAAAAwqD1T20KP4hA + YcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDLwGBkn3AAEKZW5kc3RyZWFtCmVuZG9iagozMiAwIG9iagozOTIKZW5k + b2JqCjE1IDAgb2JqCjw8IC9MZW5ndGggMTYgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0 + eXBlIC9JbWFnZSAvV2lkdGggMzQyIC9IZWlnaHQgMTQwIC9JbnRlcnBvbGF0ZQp0cnVl + IC9Db2xvclNwYWNlIDM4IDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayA2MSAw + IFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJl + YW0KeAHt0AENAAAAwqD3T20ON4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAge+BATE2AAEKZW5kc3RyZWFt + CmVuZG9iagoxNiAwIG9iago2NTAKZW5kb2JqCjI5IDAgb2JqCjw8IC9MZW5ndGggMzAg + MCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzc0IC9IZWln + aHQgNjggL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgMzggMCBSIC9JbnRlbnQg + L1BlcmNlcHR1YWwgL1NNYXNrIDYzIDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0 + ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QAQ0AAADCoPdPbQ43iEBhwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMvA4MKhcAAQplbmRzdHJlYW0KZW5kb2JqCjMwIDAgb2Jq + CjM1NgplbmRvYmoKNjEgMCBvYmoKPDwgL0xlbmd0aCA2MiAwIFIgL1R5cGUgL1hPYmpl + Y3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzNDIgL0hlaWdodCAxNDAgL0NvbG9yU3Bh + Y2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQg + OCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt3dtXE/cWB3AggdwnmSQk + IRcTEhKYJBACgUiAEgxG7iqCplIRjdJiUSqnVE6pF6qWSrVeKhVri5d6WWKpuDhqPdV1 + /rWzJ4kpSvKT/J7394VZa68fDx/37Bl5mJ2Xh0EBFEABFEABFECBtQL5GKLAWqsNXMPv + KvgnAsz7Av/gANUGQPPykqLwe4TCQgxBQCgUCgS874dlE6ZJ0CKRSJyMBLNGIIUiEhUV + gbkwBUvo2JRpYWERgEqkUplMJpfLFZh3BIAEYGRSiVgsAthExxIGAY8qgPseSAFUrmAY + pUrFYtYJqFRKhmEUcl4WYBP9mm2+JlChT3lTBaNkWbVGqy0u1un0mLUCOl2xVqtRs6yK + hwXX5BzIwsp3Kt+ovKkKRHV6Q4nRaDKbLZg1AmazyWgsMejBVs0qGZlULE62a0bWBCoM + VJkcTIEUPC1Wm63U7sC8I2C3l9qsmywmo0Gv1bCMAtoVWOFdINMTK5+fqSIJNCqr0RmM + IGp3OF3lFRzndnswKQG3m+O4CperzFFqtZhK9FpWmWSFd4EMrNCqgCqWKZSsVm+02Oxl + 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 + m15kS7zIbcstv+caNzKnFy9nvchxIzNuD09vCCdd5LQ9HDfdp1bZf+BHbpvu82HRNey5 + VeuMVgdXFQi1tHV07+yPDe4bGj4Yjx/CpATi8YMH9g8Nxgb6ejuj4cb6arfTZtJrVHKJ + qFCwbtN9fgEMVqlCpdWbrGWcrzbYFI5s6+zZ3rdrYHcMs0Zgz0B/347ervatrc0NAR+g + mg1aFrZcZ1h0n8er8s3KAqutjKv0BzY3trS2Rds7urp7ejFpgZ7u7s6O6NYt4eZQfY3P + 7bJZSorVTLJV319znQesQmhWObAaTFZHuafKHwg2NDa3hFsjkUgbJiUAGFvC4eamUDBQ + 4/NyzgSqUgGtCgMgkyrfrFKFku9Wq91Z4an0+Wvr6oMNIUgjJiHAWzRsDtYFaqqrvJzL + YTNDp6oYGUxVYcG6scr3KjSrSCxLsBotNnuZi3N7K30+v99fg0kLAEe1r8rr4cqdDpvF + ZEiiwlTN1Ko8qwBYJTIFw2p0BqPFarM7nK7yCo5zuz2YlIDbzXFchctV5ii1Wkwlei0L + t78kcf9nGACJZoUZAN0qZ1RqrU5vNJlB1lZqd2DeEbDbS23WTRaT0aDXalgmiQr3//qp + mgeBGSAohCEghXZVqTUAaygxgq3ZglkjYDabjMYSg15XrFWzSkYmFUOnwv2fTTXJWiRO + uCpZFmS1xcU6nR6zVkAHnlqNmmVVjEIOd7+okIAKzcqzCvl2BVeZXMEwSpWKxawTUKmU + DMOTSsE02ahZOjUxA4A14QrjVSyRAq1MLpcrMO8IAAnA8KI8KfQpf/dnHqo8KoRvV3CF + hoUHF9AmIsGsEUihiERFQJq49z+E+ta1QCBI0sI5TGYBoTDRpTwpsVET3ZqA5Tv2bQAY + 867AW5oNi76VTeLCPwMmm8AaKrxEARRAARRAARRAgYTA/wHeYLl/CmVuZHN0cmVhbQpl + bmRvYmoKNjIgMCBvYmoKMjg2MgplbmRvYmoKNDUgMCBvYmoKPDwgL0xlbmd0aCA0NiAw + IFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzNDIgL0hlaWdo + dCAxMTYgL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0Jp + 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 + P9zI/6Iq2YfZLqoycyOfQlWyD7NdVGXmRj6FqmQfZruoysyNfApVyT7MdlGVmRv5FKqS + fZjtoiozN/IpVCX7MNtFVWZu5FOoSvZhtouqzNzIp1CV7MNsF1WZuZFPoSrZh9kuqjJz + I59CVbIPs11UZeZGPoWqZB9mu6jKzI18ClXJPsx2UZWZG/kUqpJ9mO2iKjM38ilUJfsw + 20VVZm7kU6hK9mG2i6rM3MinUJXsw2wXVZm5kU+hKtmH2S6qMnMjn0JVsg+zXVRl5kY+ + hapkH2a7qMrMjXyKnireYiNr2nfp3WLzOkMVb1wyuXF5TBVvB7u/DM3odjDeZHdcWXez + oH+THbsunNldgn7XBewQ4ugD4n5Bt0MIF7vZnN20h3Y3G+y85EF/KZqdl7BLmEed0Gh2 + CWNjRztP2vbR7WiH3Rc9aTFJt/sidgp1dAMlLeh1CsWuto7GtcQFva62VF9r7MDsaLTs + dkGzAzN2C3d0BCctaHULx872njXvp9fZHqcweDZogu4UBiisODHEaTKIuyW9iSE43cYx + wYa0oDXdxgsnMXk0bYreJCZQxalhZ49Goz81DCfcOcbYERb0JtxRyYrTGM+cOklzGiOo + UjUAJ4cemxLq6gtak0NtrDjl1mmgrcslvSm31hn3MDwYJzI7j192saY3kdnGitPDTw0L + P/UfdKaHe1lZrVPZcdL9sdn2x7+gOekept5Rc9nBFRIWHlww8d4aARhOAnYUDsfPD5Ss + U+59vE8OCzo5QNDq6sNi2WjhHIZrATabzYLh1jDe+kxTqzF8G/Xd9gBgjOMCP2g8FnVK + XcDFIAg4UeESBVAABVAABVAABawC/wckduJECmVuZHN0cmVhbQplbmRvYmoKNDYgMCBv + YmoKMjMyNQplbmRvYmoKNTEgMCBvYmoKPDwgL0xlbmd0aCA1MiAwIFIgL1R5cGUgL1hP + YmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCA2MjggL0hlaWdodCA2OCAvQ29sb3JT + cGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVu + dCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2d6VNTZxSHQQPZNwgJ + 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 + /exT6ZGZiACfWf1x6bCThHX5BvISEuC1kyQFu5dY9wshb3sC/HYvxaXDjjl+C9WQvYUA + jx1zKTHpYpsNsUuTfXckMv9NgN8uTRqbw/VXso5bUY2dwaxrcpH3DwJ8dwZzs5pi1u3B + bvTd7gTH7+IE2HejxyaEpca945apU5B+CBBgJxDXJvaXTIoZxfyHfoAAgd0SYPYMiSAA + AiAAAiAAAiAAAiAAAiAAAiDw3yLwFzaOp64KZW5kc3RyZWFtCmVuZG9iago1MiAwIG9i + agoxOTI5CmVuZG9iago1NyAwIG9iago8PCAvTGVuZ3RoIDU4IDAgUiAvVHlwZSAvWE9i + amVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDM3NCAvSGVpZ2h0IDExNiAvQ29sb3JT + cGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVu + dCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3d+0+T5xcAcJBCb29v + 0L4tvayl5VZq6Sp1FdC1BIIi4AXF1U0IWjQrK3YaG5uhDsO0sVEEB+ESRUYEA4yAIUiI + mv1rO29xF6B9eB/d+8P3m3N+UfMcHpIPJ6cvSM/JycFAARRAARRAARRAgf8ngVyMzxSg + qgb4XAf+iTwMaoF/9A4AJg/8bXH4PCJRPsZnCYhEwMh9AfaDT5tvgxeIxZLtkGJQCXxk + E4sL4IsG9Pu4fzTPzy8AcKlMJpfLGYZRYFAKABrQyWRSiYSTJ7tz6HnQV4AcwBmFUqlS + qzUYnyCgVquUSgXYywB+2z1Lm0mjQ51z5gqlSqMpLNJqdTqW1WNQCbCsTqfVFhVqNCql + gnOHeoc2k5mdq3Su0DlzNYizekOx0Wgymy0YVAJms8loLDboWZBXp92h3Dn2DA8zaXRo + 6HIGzIEcvC1Wm63E7sCgFLCX2GxWC9gDPLgzcq69Z2bP5Xq6WAqFriliDUYQtzvKyisq + nc6qKhcGb4GqKqezsqK8zGEHeaOBLdJAuUvF3Gvq3mKHUgd0iVyh0mj1RovNXlrurDro + 9ni8Xu8hDAoBAPN43AernOWldpvFqNdqVAqo9nxRhh4DpQ4vpLI0uslqL6t0uT3emsNf + +WvrIOoxeApwWrX+rw7XeD1uV2WZ3WpKs8vgJTVDsedCqUtkjFKjNZisjgpXtdfnr60/ + Fgg2NDY2NmHwFgCuhmDgWH2t3+etdlU4rCaDVqNkZBIo9t0tZrvU5YCuN9lKnW6v70h9 + oKGp+URLa1v7KQwKgfa21pYTzU0NgfojPq/bWWrjql0pz1TsnDr0FzWgW0udnhr/0WDj + 8ZPtpzvOdV4IYVAJXOg813G6/eTxxuBRf43HWco1GbUCin1Pi4EGUyCRKwtZo9XhrPbV + BZpa2s6eD33X1d1zJRzuxeAtEA5f6enu+i50/mxbS1OgzlftdFiNbCFX7HtaTO4BeGqE + UjdY7BXumrpgc+uZzotdPeFrkR+i/ddjGLwFrvdHf4hcC/d0Xew809ocrKtxV9gtBih2 + eHrc3di5BgNdnTXaylxef6C5rSN06fLVSDR281b8dgKDQuB2/NbNWDRy9fKlUEdbc8Dv + dZXZjCzX2aHF7Pz2NK2uKtJb7JXVvqNNgN4djvTfiCcG7t4bvI9BITB47+5AIn6jPxLu + Bvamo77qSrtFX6TKqF4gZdTaYmupy3sk2HIm1N3bF4sn7g4OPUg+SmFQCDxKPhgavJuI + x/p6u0NnWoJHvK5Sa7FWzUgL9tS6qECq4BpMudtX39jeeSnc92N8YPCXZOrJ05FnGBQC + I0+fpJK/DA7Ef+wLX+psb6z3ucu5FqOQwsvprg4jEsuUhXqzvdLj//r42YuXv4/FB+4/ + TA2Pjo1PTk5h8BaYnBwfGx1OPbw/EI99f/ni2eNf+z2VdrO+UCkTZ1CXK6GtO6q8tQ0n + z3ddjQJ68vHI2MT085mXsxi8BV7OPJ+eGBt5nAT26NWu8ycbar1VDmjsSnkGdXiE0RZ/ + UXawBhpMqCdyI/Hzw8ej41MvZudezS9g8BaYfzU3+2JqfPTxw58TNyI9IWgxNQfLvijW + wkPMnlqHB0eVlmvrh481n/42HI3fGUqNjE/P/Db/enFpGYO3wNLi6/nfZqbHR1JDd+LR + 8Lenm48d5hq7lnuI2d3XQV0N6hUef+BER9e1WGIwOTw2NTO3sLS8srqGwVtgdWV5aWFu + ZmpsODmYiF3r6jgR8HsqQF2dUZ1R64wl8GIabDnXHbn501BqdOIFoK+svVnHoBB4s7YC + 7C8mRlNDP92MdJ9rCcLLaYlRp2Yy1Tqj0Znszi9rG1o7e/pu3Xnw5Nfp2fnFlbX1jbeb + GLwF3m6sr60szs9O//rkwZ1bfT2drQ21XzrtJp0mizprtju9dY1tF65E4/eSw+PP517/ + vrq+sbmFQSGwubG++vvruefjw8l78eiVC22NdV6n3cxmV4cHR1D/Jtx/e/DR04mZV4sr + bwD93XsM3gLvtjY33qwsvpqZePpo8HZ/+BtOvcqxr3p7KHw9cT81Ovlyfml1/S2gf8Dg + LfD+3dbb9dWl+ZeTo6n7ietheHTMpg4/6JUwGtacrvUM6n9g8BT4QFbf8X94uXn58GMY + +NbUdai+6VSoNwa1/mxqdmF5bX1z6/0Hnp8R00Dgw/utzfW15YXZqWdQ67He0Kmm+kMu + +OYUfhCTn4fqwhQJqgvjSr4V1ck+wpyiujCu5FtRnewjzCmqC+NKvhXVyT7CnKK6MK7k + W1Gd7CPMKaoL40q+FdXJPsKcorowruRbUZ3sI8wpqgvjSr4V1ck+wpyiujCu5FtRnewj + zCmqC+NKvhXVyT7CnKK6MK7kW1Gd7CPMKaoL40q+FdXJPsKcorowruRbUZ3sI8wpqgvj + Sr4V1ck+wpyiujCu5FtRnewjzCmqC+NKvhXVyT7CnKK6MK7kW1Gd7CPMKaoL40q+FdXJ + PsKcorowruRbUZ3sI8wpqgvjSr4V1ck+wpzSqOO7fP+jrwHNu3xz9lHn/X5uTCS/t3rX + tLV/vaMdpzfwHtWQIfETpjfgpBKKkSRZUmknleBUHt6zd7In0k7lwQlUFHOmsqfSTaDC + aWu8J6qREimnreFkQd7TA0mJVJMFRThFk/egTGIi1RRNkRgnxvKeCktKpJsYi9OReQ9A + JibSTUfGSeAU075JqTSTwPNw6j3FZHtSKs3Ue26vBm54oFjkkDWVasMDbjOh2FhCSqXY + ZoKbe3iv5tknkWZzD26p4r2Gap9Eui1VuJGNau0aIZlmIxu3aBO3D1JsGcyWSrF9MAc3 + bfLepUlOpNm0Ceq4VZbn4lhiGu1WWdygTLEmmZBKs0GZK3bcFs57J3j2RKpt4aDO9RjY + F84o1YVaVm80mWFPu63ETrkWHtMd9hIb7Gc3m4x6VluoVjKwK5zbWr17z2b69wXS7LCm + XSZXgHsRwBuKjWBvtmBQCZjB21hsAPIiMFfIZbCgPRt6Tu42e4Ek7a7SaEBeq9OxrB6D + SoBldTotiGs0qrQ5bKxOo++YeP/3L8ak2UX5UO7gLmcUSqVKrdZgfIKAWq1SKhWMHOqc + K3QR114yo+ekq517TeXau0QqA3o5wzAKDEoBQAM6mUwK5FDnnHl2dCh6rtzBHeBBHujT + IcWgEvjIJubE80X7mnO9Ju1+IC9vmx4+DONTBQA8jytzYp3/q79zFf9XwEdiUAr8ZQd/ + 5mbt53977/gL5GN8lsAOTvwHCqAACqAACqAACvzPC/wJb/4bzgplbmRzdHJlYW0KZW5k + b2JqCjU4IDAgb2JqCjI0NTAKZW5kb2JqCjM5IDAgb2JqCjw8IC9MZW5ndGggNDAgMCBS + IC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzQyIC9IZWlnaHQg + NjggL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQ + ZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt3Ntb + UlkUAHAvKHIHQUAugqDowQuiKF4Txch7RlqmSRplqZhpkZZpWpZmOV4mR8vSrKyxsrL5 + B2cdYAgVkNO8rvW00e/j4fct1j5n7712VBQGCqAACqAACqAACgQKRGOEFQi0imAM3xXz + K2IxDgv8wgGqCECjoryi8D00WhxGGAEajRYbS/oeL+sx9YLG0+kJ3mBgBAj4UOj0+Hgw + p/lgw2SszzQuLh5AGUwmi8Vis9kcjAMCQAIwLCYjIYEOsJ6MDVMISNRY+N0DKYCyOVwu + j88XYBwR4PN5XC6XwyZlAdaTr6HqqwcV8pQ05XB5AkGiUCRKShKLJRiBAmJxkkgkTBQI + +CQsuHrrQAhWMlPJRCVN+SAqlkiTZTK5QqHECBBQKOQyWbJUAraJAh6XxUxI8KZrUFYP + KhRUFhtMgRQ8lSq1OlWjxTggoNGkqlUpSrlMKhEJBVwOpCuwwrNAsBkrmqypdAYkqkAo + lspAVKNN12VkEoRen4XhE9DrCYLI1OnStKkqpTxZIhLwvKzwLBCEFVIVUBNYHJ5AJJEp + 1Zo0HaHPzjEYjEZjPoZfADjyDLnZWURGulatlEuTEvlcMlthygqqGgsTFdODKldp0jOz + cgzGgsIic0kpRBmGR4C0KCk2F5ry83KzCZ1WrUj2stLJGnC0BERDqiYw2VyBSCpXaTOy + co0mc0lZRaWlymq11mD4BACj2mKpKC81m/IN2US6WgmsUASgtAZJVqiqkKosQJXI1WlE + jtFUXFZZVWOrrWtobGrG8As0NTbW19lOVlsqSovyDXqdh5XLZtBDqcLvnw+oqjTCUGAu + t1hP1Tedtp9tO9eOESBwvq3V3tLcUHuyqqLEZNCnqxVSkYALyUo7WlihAJCpmiiWqbRE + rqm0sqau8Uxre2eXo/uy03kFwyfgdF7uueTobG+zN9fbLGVFecAqlwj53mQ9XFijY+Cp + ClJVqtRk5BSUWmwNLW0XurqdvX0DrsEbQxg+gRuDroG+a1d6HJ3n7E211eWFBkKbIksi + kxVKwGFVKKtkVRXL1OlZRnOlrdHefrHnap9raOS2e3QMwy8wesc9cnOwv9fpuNDaXFtV + WpCjS1VIhDxQpQVX5QklSk1mrqm8BlAdzr7BYffY+MTk1DSGX2DqweT43TsjN/qvdne0 + NtlOmPOItJRkkYDNCFJYY2LjGWy+KFmVlmUsttS1tDuu9A+5xyamHj2efTqP4Rd4Ovtk + ZnrynnvY1dvdYW+wlhZk69RysYDDpMcdma5gsmJwyAKgyzGVWZvaLjr7b7rHp2Zm5xcW + l1Yw/AJLiwvP5h5P3x8bcfVeaj9tO1FkIDRKiZDLCqpKZ3ITJQpNpsF84tSZCz3Xh9zj + 00/m/1h+sbq+/hLDJ7C+/tfqyuKz2YeTYyMDzs6z9VUlxqy0FKmInK6C5CqdxYWyqtUb + S6rqW7uuugB19vnSi7VXrze33mL4BLY232ysry4vzD2auDN0vft8k7XMlK1TyUTkdBV7 + eCUghgaPAKLklPTsAigA7d19w2MPnjxfXn355u27DzsfMXwCOx/ebW9urK0szE6P33I5 + O1psFYW5GWpZEp8dTBUerHgisqwWVthOdzhd7vuP5pdWX21u73za/fwFwyfweffTx/db + G2vLzx9Pjg71dtnrLGYDkUpOVyFU+aCakVsEZfVi79Dog9mFP19uvtvZ/bL37TuGT+Db + 3tfPn95vvVpdnJu+N9J3qa2+qthIaBUSUI0/WgEgV/lJMjVMVpY6u+PazbvTc4urG28/ + /P1l78f+TwyfwP6Pb193P26/Xluenxm/1d99rrG6xKjXKkGVEVI11aN61nF9+N7D+aW1 + 19s7u3vf93/+g+ET+Ln/Yw+SdXN95dnMxO2BnvON1lJU/b/p8VuqWAGOqXW/UQFwtjp2 + VqY+W+GT1fEPkBSfrPAtIKI3HYpvATR8Y43ktZzqGyuurkSyhER1dQVXAv2rfeEG1FYC + cdXavzAddkBt1Zrct8IdFv9GSsgBxR0W3A307/iFG1DaDcSd68g256ntXOMpi8gOklA9 + ZQGFFU8EBZz8CTWkdiIIT6/5T6iFG1A6vRaFJy0jOk1K7aQlqOKp4OOPPlM/FYwn2P3H + 1MMMqJ1gJ5MVuy2O7Sqh2G0BqmQNwM6gA11AwT5Q6gzysmIXW0DDWtAhtS42Tw87NAdi + x2Vge2WQMbWOSy8rdgcfaQY+8gcq3cG+GxfIrmvsZD/Qu37wA8VOdjjV7rshgLzGAm9d + CLhqIWBI+dYFslnA4xqDN4SEuRvE+y8KN4R4mjDwNpvD19cc+kz9NhuP63+44IsRSuCX + FI5QAAVQAAVQAAVQwCvwL/8PPzcKZW5kc3RyZWFtCmVuZG9iago0MCAwIG9iagoxNzYw + CmVuZG9iago0MSAwIG9iago8PCAvTGVuZ3RoIDQyIDAgUiAvVHlwZSAvWE9iamVjdCAv + U3VidHlwZSAvSW1hZ2UgL1dpZHRoIDMzMCAvSGVpZ2h0IDkyIC9Db2xvclNwYWNlCi9E + ZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50IDggL0Zp + bHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7d3rVxPXFgBwHiEh7wd5kYcJCQkk + AWIgGAkgwSCIvBShRhGKhKIogrJE00YRCoJSI0JBQRSQ8qgogqVibWHdf+3uSVyrNmRG + z/12O2d/cOmayQd+7nNmyOy9Jy4OBxbAAlgAC2ABLPDvEIjHsV8A7b8WPp/wdyTiCAv8 + LQI+XwMaUYTPMhhJOKIFGAxGYiJh+kXNsGMEkcliJUeCjeOTBIvFZAIu4xMmeWZ+ckxK + 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 + g+WNp9yQDPNBmnIDknjyEsl4KeTJS3gaGPnQM5RpYERS4gl1sSfxoU2oA0lifeOpibFn + RKJMTYxQ4kmeMceWIk3yjMPTZSmm6CJNl41Q4onHJCOeESYex4Upw9Oj8RTu6MnjaFO4 + of+OWOFgSYzXx5PhPxuIjzoZnmhlDFsm4LcVRL+nIPLvr39bQbgtFL9BI9ZLQ4i3PUTi + i+98CCt+9gd8AEe0wGc++K9YAAtgASyABbDA/7fAfwGXk3bMCmVuZHN0cmVhbQplbmRv + YmoKNDIgMCBvYmoKMjA5OQplbmRvYmoKNDMgMCBvYmoKPDwgL0xlbmd0aCA0NCAwIFIg + L1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzNzQgL0hlaWdodCA5 + MiAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1Bl + ckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3d/U9S + exgAcE0UeQdFUF6CDr4BIZ2kS0oFDmaZ2otl0YvOwlp4MW4tFrv2grNisTItnS8rM5c2 + NaeNmXPV7r92n4PdVQrH863LL+15fnI7j8ft47OHo+f7fb45ORgogAIogAIogAIo8DsJ + 5GL8ogBRNcDP2vEt8jCIBb7p7QBMDvgb4vBzeLx8jF8S4PGAkfkFbAefMt8AL+DzCzdC + gEEk8JWNzy+AXxrQb+P+1Tw/vwDABUKhSCQSi8USDEIBQAM6oVBQWMjIs7sz6HnQV4Ac + wMUSqVQmlyswfkJALpdJpRKwFwL8hnuGNpNChzpnzCVSmUJRVKxUlpSoVGoMIgGVqqRE + qSwuUihkUgnjDvUObSY9O1PpTKEz5nIQV6lLyzQarU6nxyAS0Om0Gk1ZqVoF8vKUO5Q7 + w57mYSaFDg1dJAZzIAdvvcFo3EWZMAgFqF1Go0EP9gAP7mIR097Ts+cyPZ0vgEJXFKtK + NSBOmSoqq6rNZovFisFZwGIxm6urKitMFMhrSlXFCih3AZ/5TN1a7FDqgF4oksgUSrVG + b6TKK82W3Ta7nabpvRgEAgBmt9t2W8yV5ZRRr1ErFTIJVHs+L02PgVKHD1JhCl1roCqq + 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 + bmRvYmoKNjMgMCBvYmoKPDwgL0xlbmd0aCA2NCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1 + YnR5cGUgL0ltYWdlIC9XaWR0aCAzNzQgL0hlaWdodCA2OCAvQ29sb3JTcGFjZQovRGV2 + aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0 + ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2c+1NSWxTH1VDkDYqAKIGgAiIwXFF8 + Bo6Oho/ru8FSRiNNTEObGC0zNUuK0dSbjI/M1NFb5ljZ/QfvOtCdbgp4tv3WrO9P/LDO + nJkPa757n73XWgkJKCSABJAAEkACSAAJ/E4EElG/SIAoG+BdST90BUVM4Ae9JIBJA36E + OLyHwUhG/RIBBgMwUn/AReDDzCPAU5jM1IhYKCIC37ExmSnwpwH6C7h/Z56cnALAWWw2 + h8Phcrk8FCEBgAbo2GxWaipFPj53CvoV8BVADsC5PD5fIBSKUJcgIBQK+HwesGcD+Aj3 + GDYThg55TjHn8QUiUVq6WJyRIZFIUUQEJJKMDLE4PU0kEvB5FHfId7CZ6NipTKcSnWIu + BOISqSxTLs/KzlagiAhkZ2fJ5ZkyqQTIC8PcId0p7FE2M2HoYOgcLjAH5MBboVSpctQa + FCEBdY5KpVQAewAP3Lkcyt6jY0+kPJ3JgkQXpUtkciCu1uTla3V6fUGBAUWbQEGBXq/T + 5udp1EBeLpOkiyDdWUxqTT2f7JDqAD2VwxOIxFK5QqXOzdcXFBrNZovF8geKgAAAM5uN + hQX6/Fy1SiGXikUCHmR7MiOKx0Cqw0LKDkPPUqrzdAaj2VJUXGIrKwdVoGgSoGiV2UqK + iyxmo0GXp1ZmhbGzYUmNkuyJkOqpbC5fJJZlKTVag8litZVVVNkd1TU1NbUo2gQAV7XD + XlVRZrNaTAatRpklE4v4XHYqJPtZi4mkOgegS7NUuXqjxVpaYa+urbvubGxq/hNFQKC5 + qdF5va622l5RarUY9bkqKtv5nGjJTlEHfxECdGWu3lxkq3TU1Dc0t7R3dN1woYgI3Ojq + aG9pbqivcVTaisz6XMpkhDxI9nMWAwaTksrhp0nkSo3eZC231zqb2jpdt3rdfbc9njso + 2gQ8ntt97t5brs62Jmetvdxq0muUckkaleznLCYxCXaNkOoyhVprLCp31DW2dnX39nkG + vfdGRu/7ULQJ3B8duecd9PT1dne1NtY5youMWrVCBskOu8ezxk4ZDLi6RK7KM1hs9rqm + dldP/4B3xPfgoX9iEkVAYML/8IFvxDvQ3+Nqb6qz2yyGPJVcQjk7WMzPn6dh6oJ0qUKt + M1krawG62+MdHfdPTk0/nZ1DERCYfTo9NekfH/V63IC9ttJq0qkV0nRBVOopLK5QnKnM + NVhKHc5Wl/vOsM8/OT07/yLwKogiIPAq8GJ+dnrS7xu+43a1Oh2lFkOuMlMs5LJSzuU6 + I4XFowwm32itqGnu6vEMj/mnZp8HgkvLK3+hCAisLC8FA89np/xjw56eruaaCqsxn7IY + HguW0zMOw2Cy+WnSbLXObLtW39bdP+TzT80tBF+vroU2NjZRtAlsbITWVl8HF+am/L6h + /u62+ms2s06dLU3js5lRqHP4YOuaAktZdUNn78AIQA8srqytb23vvN9F0Sbwfmd7a31t + ZTEA2EcGejsbqsssBRowdj4nCnXYwogzr+YVFoHBuPq845MzC4uroc13u/sHh3+jaBM4 + PNjffbcZWl1cmJkc9/a5wGKKCvOuZophE3Mu12HjKBBTtl5cVddy0zPifzIfXAlt7ewd + fjj6dIyiTeDT0YfDvZ2t0Epw/ol/xHOzpa6qmDJ2MbWJOevrQF0I1LWmErD1nkHfxExg + 6c3mzv7h0fHJ5y8o2gQ+nxwfHe7vbL5ZCsxM+AZ7wNhLTFqgLoxBPUOugsXU4Wx33x17 + NPdyOfR29+Dj8cnX028o2gROv54cfzzYfRtafjn3aOyuu93pgOVUJc+ITT0nTL3DPTT+ + +FlwZX177/Do5Mvpt39QtAl8O/1ycnS4t72+Enz2eHzI3RGmnoPUaRO8TOAlqKPD0HaS + WIHEDoOrKe01M3Yg6WqKO0fa28M4gUQ7RwZ+JdH+EIobSPSVxGDiiQDtr/54gWQnAnj6 + RfuAK24g2ekXnvQSnObGCyU56b2CtxoENxfxQkluNah7U7zBI7ioixlKdIOHt9UEN9Lx + Qgluq7Eyg3bpxQWBJJUZWIVEu8zogkCyKiSsuCMqq4sTTFJxRxVSY3UpQRVprFCC6tIE + rKSmXSsdP5CkkhqoY9cAzcaAuGGkXQPYIUPQBhMnlKRDhkp27Aaj3fMVO5CoGwyoUx6D + nY+EXY7Rwgk6HyPYscuXqKE3ajBJl28CdrQT9a3HDibqaI9gx+kNlxjWcO4R+tMbEsLY + w1MzcFIJ4WySn8OJJpVAbfX3CTHUGCScykM0iud/wYRTeaiS9jD3JJxA9UuzpyIP055A + FW4lwGlrxOPVzjxAPG0tzP0/+MAfdXkCP1jiLySABJAAEkACSAAJ/A4E/gWlosM9CmVu + ZHN0cmVhbQplbmRvYmoKNjQgMCBvYmoKMTc1NgplbmRvYmoKNDcgMCBvYmoKPDwgL0xl + bmd0aCA0OCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCA2 + MjggL0hlaWdodCAxODggL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRl + IHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+Pgpz + dHJlYW0KeAHt2/tT01f+x3G5BHK/QEggISQk3BIuMUINF5WwYVEkVEQQ7AITDTpAgyku + WTMFFZZilrTcVCq4CsoCLlgWLCusK07/te/5RHZ2WqJ8juenne/r/UM70zkencc855zP + 54M9dgwDAQhAAAIQgAAEIAABCEAAAhD4XxSIw0Dg8wXokie/T/x/JwEDARqB/6YTT0ri + k96H3sjvkZgowEDgcwUSE0lDXH5HZhct7kNuScnJwg8jwkCAr8BBM8nJSaRWEt5R1R0U + JxAkkdxEYrFEIpFKpTIMBPgLkGJIN2KxSCjkujuiOi65BHKjkuBIblKZXK5QKlUYCNAJ + KJUKuVxGyhMLhQfVfeyCjSZHzjiuOJlcoVKlpKrVaWkajRYDAb4CGk1amlqdmqIi4ck+ + VMcddR+JjjvluEOOK05JetNo0zN0On1mpgEDAb4CmXq9TpeRrtWoU1VKUp1ImCwQcNHF + eoGNJkce5CRSUhwJjtRmMJpM2WYLBgL8BczZJpPRkKnPINmlKOVS8Seii+Oe5ZJF5JBT + pWrSdaQ3syU3L7/AarXZCjEQ4CFgs9ms1oL8vFyL2ZRl0KVrUlVyqYRER67XGAcdOeZI + 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 + EOAvYM42mYyGTH2GVqNOUXIXa7KA3KyxjrmD6Mj1KiZHnTIllWSXnqEj5WUaMBDgK5Cp + 1+t0GekkuFSVUi6TiD6V3LG46ElHXiSi1SlUKtKdOi1No9FiIMBXQKNJS1OrU1NUSgUp + Tiwkrw+J3Cn3249zBz+TiEaXKCBHHalOIpXJ5QqlUoWBAJ2AkuQml0klH4r7ZHLkdiUn + XXwCqY481glFYhKeRCqVyjAQ4C9AiiHdiMUioTA5SRAt7qOnXPSwO6iOZEe6I+FFR4SB + AF+Bg2aSud4Eidy1+unioq+v3FkXn5CQkMiFh4HA5wmQ3BK44I4u7uCwi3bH/QIy5Jdi + IMBf4EM20X/GfezV4eAN4tC/yC/AQOBzBQ71hP8AAQhAAAIQgAAEIAABCEAAAhD43xD4 + P9XQBsMKZW5kc3RyZWFtCmVuZG9iago0OCAwIG9iago0MjMyCmVuZG9iago1MyAwIG9i + ago8PCAvTGVuZ3RoIDU0IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2Ug + L1dpZHRoIDYyOCAvSGVpZ2h0IDE2NCAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50 + ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVj + b2RlID4+CnN0cmVhbQp4Ae3b+1PTV/7HcbkEcr9ASCAhJCTcEi4xQg0XlbBhUSRURBDs + AhMNOkCDKS5ZMwUVlmKWtNxUKrgKygIuWBYsK6wrTv+17/lEdnZaonyO56ed7+v9QzvT + OR6dxzznnM/ngz12DAMBCEAAAhCAAAQgAAEIQAACEPhfFIjDQODzBeiSJ79P/H8nAQMB + GoH/phNPSuKT3ofeyO+RmCjAQOBzBRITSUNcfkdmFy3uQ25JycnCDyPCQICvwEEzyclJ + pFYS3lHVHRQnECSR3ERisUQikUqlMgwE+AuQYkg3YrFIKOS6O6I6LrkEcqOS4EhuUplc + rlAqVRgI0AkolQq5XEbKEwuFB9V97IKNJkfOOK44mVyhUqWkqtVpaRqNFgMBvgIaTVqa + Wp2aoiLhyT5Uxx11H4mOO+W4Q44rTkl602jTM3Q6fWamAQMBvgKZer1Ol5Gu1ahTVUpS + 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 + iehTyR2Li5505EUiWp1CpSLdqdPSNBotBgJ8BTSatDS1OjVFpVSQ4sRC8vqQyJ1yv/04 + d/AziWh0iQJy1JHqJFKZXK5QKlUYCNAJKElucplU8qG4TyZHbldy0sUnkOrIY51QJCbh + SaRSqQwDAf4CpBjSjVgsEgqTkwTR4j56ykUPu4PqSHakOxJedEQYCPAVOGgmmetNkMhd + q58uLvr6yp118QkJCYlceBgIfJ4AyS2BC+7o4g4Ou2h33C8gQ34pBgL8BT5kE/1n3Mde + HQ7eIA79i/wCDAQ+V+BQT/gPEIAABCAAAQhAAAIQgAAEIACB/w2B/wPMECJ8CmVuZHN0 + cmVhbQplbmRvYmoKNTQgMCBvYmoKNDA2MAplbmRvYmoKNTUgMCBvYmoKPDwgL0xlbmd0 + aCA1NiAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzMDYg + L0hlaWdodCA2OCAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1 + ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVh + bQp4Ae2b61OSWxTG1VDkDoqAKIFc5CYwb6B4DRwcDC/He4OljEaaGIY2MVpmapYUo4kl + 4yUzdaQyx8rOP3jWRs80R/HE29d3P5/44of981nP3u/ea2VkYGECmAAmgAlgApjAnxHI + pLRIMQNSWb90hWL6tfIsAJEGuFNaQIlGy6awaDRAgOD9DlqS1ymsHDo991QMCulsyXR6 + DtgFsP2G2Rmv7OwcgMVgMlksFpvN5lBKsGBYNpPJyM1F1P6fGQJ2BWoRcAEsNofL5fH5 + AsqJz+dxuRzgxgRop8wuKc0kMPAX4sXh8gSCvHyhsKBAJBJTSCJRQYFQmJ8nEPC4HMQM + fAalmRoZchgyGOLFB1oisaRQKi0qLpZRSMXFRVJpoUQsAmr8JDOwGUKWYtNMAoMAY7GB + F+ACVjK5QlGiVFFKyhKFQi4DbgANmLFZKM5SI8tEGUZngMEE+SKJFGgpVZpSrU6vNxiM + FJHBoNfrtKUalRKoSSWifAHYjEFH+X/RZGAxAJbL4vAEQrFUplCqS/WGMpPFQhDENcoI + FmuxmMoM+lK1UiGTioUCHgdclk1LUZdgMQh9ZhJYkVyp0RlNFsJaXmGvqgbVUEJopVX2 + inIrYTEZdRqlvCiJjAnxn8JkmWCxXCabKxBKiuQqrdFM2OxVNXUOZ73L5WqgiGCp9U5H + XU2V3UaYjVqVvEgiFHDZzFww2fmyPLUYC4CJixRqvYmwVdY46hvcNzzNLa1/UUatLc2e + G+6GekdNpY0w6dUK5DIuK5XJEDGoST4Ak6v1Fqu91ulqbGpt6+zquemlkG72dHW2tTY1 + upy1dqtFr0aFyeeAyS6UJRRlTi6LmyeSylV6s63a0eBp6ej23u73Ddzx++9SRH7/nQFf + /21vd0eLp8FRbTPrVXKpKA+Z7EJZZmbByQIsJpEptSZrtdPd3N7T2z/gHw7cD449CFFE + D8aC9wPD/oH+3p72Zrez2mrSKmUSMBmcMM4HGSpKSDGRVKExEnaHu6XT2zc4FAiGHj4K + T05RRpPhRw9DwcDQYJ+3s8XtsBNGjUIqQkkGZfnfY3+SGC9fLFPqzLbaBgDm8wfGJsJT + 0zPP5uYpo7lnM9NT4YmxgN8HyBpqbWadUibO56UklsNg84WFcrWRqHR62r2+u6Oh8NTM + 3MLLyOsoZfQ68nJhbmYqHBq96/O2e5yVhFEtLxTy2YycCx6j5TA4qChLTbYaV2tPn390 + PDw99yISXV6JvaWMYivL0ciLuenw+Ki/r6fVVWMzlaKy5DAg+s9VJY3O5OaJi5U6i/16 + Y0fv4EgoPD2/GH2zuhbf2NikiDY24murb6KL89Ph0Mhgb0fjdbtFpywW53GZ9BTEWFyI + MZWBqKpv6u4fCgKwyFJsbX1re+fjLkX0cWd7a30tthQBZMGh/u6m+irCoIIg47JSEIOt + Ulh4VVNmhaL0DgQmpmYXl1bjmx929w8SnyiixMH+7ofN+OrS4uzURGDAC2VpLdNcLRTC + ZnnBY3C44AlRjJXXudtu+YPhpwvRWHxrZy/x+fDrEUX09fBzYm9nKx6LLjwNB/232tx1 + 5SjIhGizPJ9jQIwPxLTmCoixvuHQ5Gxk+d3mzn7i8Oj423eK6Nvx0WFif2fz3XJkdjI0 + 3AdBVmHWAjH+JcQKpAoIfqen03dv/PH8q5X4+92DL0fHP05+UkQnP46Pvhzsvo+vvJp/ + PH7P1+lxQvQrpAWXEytJEuvyjUw8eR6NrW/vJQ6Pv5/8/Jsi+nny/fgwsbe9Hos+fzIx + 4utKEivBxC79//8BMVyV5KoSJz/J5MenC1KnCxo+wX76ROoES6Pjr6Rdcl9J+Et8c5Pc + lzi+7YE7LTK3PVfwjSLcm5K5UUT3/PjWmtStNX4ZgfcfEi8j+PUNPTCSeX3DL7zoEZvc + Cy/uIkDNEmS6CFAzFO5USb9TJQN3Q0HHF5luKCCGO+7Idtzhrs5r18h0dSKT4c5hMp3D + QAzVJe5OT787/RQZnoBIfwIiA0/ZwDQRqSmbU2R4kiv9Sa6MJLLk9BueFkxvWhD6o84m + LNH4Lp5ITWMiFbWUJZll4anndKeek214eLL+bLo+vcn6JLN/wcGfUFW/OOBfmAAmgAlg + ApgAJkCOwD/JCK76CmVuZHN0cmVhbQplbmRvYmoKNTYgMCBvYmoKMTU5MQplbmRvYmoK + NTkgMCBvYmoKPDwgL0xlbmd0aCA2MCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUg + L0ltYWdlIC9XaWR0aCAzMDYgL0hlaWdodCA5MiAvQ29sb3JTcGFjZQovRGV2aWNlR3Jh + eSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0Zs + YXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2c/U9SbRjHNVHkHRRBeQk6+AaEdJQipQIHs0zt + xdLoRadiLQyjmkyWveCsmKxMS6e4MnNpU3PamDlX7vnXnutGn7U6iJzn1/v+/uTOmT/c + n32v69ycc1/frCwiQoAQIAQIAUKAEPh/BLKxFitmQOrQb+Vgpt8rPwQgMgC3SwsocTi5 + GIvDAQQI3kHQkrx2YeVxufm74mGkvSVzuXlgF8B2ALM9Xrm5eQCLx+cLBAKhUCjCSrBg + WDafz8vPR9TSM0PAcqAWARfAEorEYolUKsNOUqlELBYBNz5A22W2T2kmgYG/EC+RWCKT + FRTK5UVFCoUSIykURUVyeWGBTCYRixAz8BmUZmpkyGHIYIiXFGgplMUlKpVao9FiJI1G + rVKVFCsVQE2aZAY2Q8hSPDSTwKCBCYTAC3ABK61Orz9CGbASdUSv12mBG0ADZkIBamep + kWWjHsblgcFkhYpiFdCiDGXlFZVGo8lkxkQmk9FYWVFeZqCAmqpYUSgDm/G4qP8zTQYW + A2D5ApFEJleqtHqqtNxoOmqxWmmarsZGsFir1XLUZCwvpfRalVIuk4jAZbmcFHUJFoOm + z08CU+uoskqzxUrXHD9hr60DObAQWmmt/cTxGtpqMVeWUTp1Ehkf2n8Kk2WDxfL5QrFM + XqzWGSrMVbTNXus47XTVu91uDyaCpda7nKcdtXYbXWWuMOjUxXKZWMjPB5P9XZa7FhMA + MKVaX2q00LaTDme9p+FcY1NzywVs1NLc1HiuwVPvdJy00RZjqR65TCxIZTJEDGpSCsB0 + pUZrjf2Uy332fMvF1itt7V6M1N52pfViy/mzbtcpe43VWIoKUyoCkzHKEooyL18gLlCo + dAZjla3O6WlsvnzVe7Ojs6vH5+vFRD5fT1dnx03v1cvNjR5nna3KaNCpFAXIZIyyzD4E + OwuwWLGWqrDU1Lkami61Xe/o8t3x3wv03w9iovv9gXv+O76ujuttl5oaXHU1lgpKWwwm + gx3G340MFSV0MYVKX2am7c6G5lbvre7b/kDw0UBoMIyNBkMDj4IB/+3uW97W5gannTaX + 6VUK1MmgLP/c9ieJSQqVWqqyynbKA8A6ff7+h6Hw0NNnkWFsFHn2dCgcetjv93UCMs8p + W1UlpVUWSlISy+MJpfISXamZPulqvOTt7O0LhsJPIyMvo6MxbDQafTkSeRoOBft6O72X + Gl0naXOprkQuFfLyGB7j5PFEqCjLLTaHu6Xtlq/vQWgo8iIae/N2/B02Gn/7JhZ9ERkK + Pejz3WprcTtslnJUliIetP6/qpLD5YsLlBqq0mo/c/by9e67wdDQ8KvY2MTk1MxMHBPN + zExNTozFXg0PhYJ3u69fPnvGbq2kNMoCMZ+bgphADG3MYKJr689f7bgdAGDR1+OT07Mf + 5j7NY6JPcx9mpyfHX0cBWeB2x9Xz9bW0yQCNTCxIQQwelfKSw2VHa6AovV3+h+Hnr15P + TMU/zi98WVzCRItfFuY/xqcmXr96Hn7o7/JCWdYcLTtcIoeHJcNjsLmQyFEbO3664eIN + XyD0ZCQ2PjU793nx6/LKKiZaWf66+Hludmo8NvIkFPDduNhw+jhqZHL0sPy7jwExKRCr + sNqd51o77gTDkejYZHxuYWlldW19AxOtr62uLC3MxSfHopFw8E5H6zmn3VoBxKQpiQml + Raoj0PhdjVc6/Y8ej8Qmpj8CsLWN7wls9H1jDZB9nJ6IjTx+5O+80uiC1n9EVSQVpvKY + UFakpozHauub2rr6Bp68fPN+dn5xeW0jsfljCxP92ExsrC0vzs++f/PyyUBfV1tTfe0x + I6Uuku1DTKGhjHSdu7m9JxB6Fh2b+rDw9dt6YnNrGxttbSbWv31d+DA1Fn0WCvS0N7vr + aCOlUexPDDYXQOyar38wMvp2eu7L8tp3APbzFyb6ub21+X1t+cvc9NvRyGC/7xoiZjIc + SKzF67sfHo5NzHxaXFlP/ABgO5jo18/tH4n1lcVPMxOx4fB9H2wv9iMGL3vyhTKFJumx + FMT+wUI76Yn98d46OycXflbClt9c7fBc8PYGwWPv4vNLqxuJre1fO1jwgkXu/NreSmys + Ls3H34HHgr3eCx5HtRk2/fDDMjeHEGP6gBBjMkl/hRBLz4d5lxBjMkl/hRBLz4d5lxBj + Mkl/hRBLz4d5lxBjMkl/hRBLz4d5lxBjMkl/hRBLz4d5lxBjMkl/hRBLz4d5lxBjMkl/ + hRBLz4d5lw0x8kYR+LF5o5h1ADHy1jr117e9t9bkywiLLyPk6xu7r2/kCy/LL7zkFEGC + 3SkCclJlg+VJFXIaapXVaSgOOXG3tMTqxB2HS051zrM71UlODsfj7E4Ok9PpcAafzen0 + HDIBAXMebCYg0FwSmbJhNWVDJrlgXo3FJBeZFkQDkWymBclEKhq6ZTeRSqae0XA3m6ln + FN5AJuszn6zPIukNkFDBJr0BiJGEELYJISSFprqaTQoNMhlJOmKTdATEUF2SNK3M07R2 + kZHEtswT27JIKiCkH7JKBdxFRpInM0+ezEoiS6Z1knTTzNJNIc9hLxEWxQ2TBN0MEnRR + BEaS2SGS0pxpSnMyNoQkge+lgWeWBJ5k9h84+Bdc9ZsD+YsQIAQIAUKAECAE2BH4Fznz + Fb8KZW5kc3RyZWFtCmVuZG9iago2MCAwIG9iagoxOTcxCmVuZG9iago0OSAwIG9iago8 + PCAvTGVuZ3RoIDUwIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dp + 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 + ls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw + /bBS+fmsUtl+ThrWgZf6b8C8/UUKZW5kc3RyZWFtCmVuZG9iago2NiAwIG9iago3MzcK + ZW5kb2JqCjggMCBvYmoKWyAvSUNDQmFzZWQgNjUgMCBSIF0KZW5kb2JqCjY3IDAgb2Jq + Cjw8IC9MZW5ndGggNjggMCBSIC9OIDEgL0FsdGVybmF0ZSAvRGV2aWNlR3JheSAvRmls + dGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGFUk9IFFEc/s02EoSIQYV4iHcKCZUp + rKyg2nZ1WZVtW5XSohhn37qjszPTm9k1xZMEXaI8dQ+iY3Ts0KGbl6LArEvXIKkgCDx1 + 6PvN7OoohG95O9/7/f1+33tEbZ2m7zspQVRzQ5UrpaduTk2Lgx8pRR3UTlimFfjpYnGM + seu5kr+719Zn0tiy3se1dvv2PbWVZWAh6i22txD6IZFmAB+ZnyhlgLPAHZav2D4BPFgO + rBrwI6IDD5q5MNPRnHSlsi2RU+aiKCqvYjtJrvv5uca+i7WJg/5cj2bWjr2z6qrRTNS0 + 90ShvA+uRBnPX1T2bDUUpw3jnEhDGinyrtXfK0zHEZErEEoGUjVkuZ9qTp114HUYu126 + k+P49hClPslgqIm16bKZHYV9AHYqy+wQ8AXo8bJiD+eBe2H/W1HDk8AnYT9kh3nWrR/2 + F65T4HuEPTXgzhSuxfHaih9eLQFD91QjaIxzTcTT1zlzpIjvMdQZmPdGOaYLMXeWqhM3 + gDthH1mqZgqxXfuu6iXuewJ30+M70Zs5C1ygHElysRXZFNA8CVgUfYuwSQ48Ps4eVeB3 + qJjAHLmJ3M0o9x7VERtno1KBVnqNV8ZP47nxxfhlbBjPgH6sdtd7fP/p4xV117Y+PPmN + etw5rr2dG1VhVnFlC93/xzKEj9knOabB06FZWGvYduQPmsxMsAwoxH8FPpf6khNV3NXu + 7bhFEsxQPixsJbpLVG4p1Oo9g0qsHCvYAHZwksQsWhy4U2u6OXh32CJ6bflNV7Lrhv76 + 9nr72vIebcqoKSgTzbNEZpSxW6Pk3Xjb/WaREZ84Or7nvYpayf5JRRA/hTlaKvIUVfRW + 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 + +mOdQ929MypnGs9ynM09u1kfXj/eYNPQ16jc2HiO69zRJkRTXNNss1vz4Hn98x0tki01 + F1gu5F4EF+MufrrkeWm41ay157LK5ZYrQlcqr5Kv5rRBbYltC+2B7eMdzh1DnaadPdfU + r129LnW9/gbfjYqbzDeP3sLfyry1fTvp9o+uyK757oDuyZ49PaO9Tr3P+6z7Ht8xu3P/ + ruHd3ns6927f17h/o1+tv/OByoP2h0oP2x4pPro6oDhw9bHS47Ynyk86BlUHrw3tGrr1 + VOtp9zP9Z3efmzx/+GL3i6Fh++GXI24j4y99X868Cn317XX86/XR9DH0WM4b0puSt1xv + a9+JvrswrjR+c0J/4tF72/ejkz6Tcx9iPmxMZX4kfiyZ5p1unJGbuTFrODv4yfXT1Fzk + 3Pp81meGz5VfRL5c+ar99dGC08LUt+hv29/zFtkX65cUlnp+WP14uxy2vL6Ss8q+2vBT + 5ee9Nce16fWEDexG6abo5rUts62x7bDt7UivaK9fuQASbhH+/gB8r4drCGe4dhgEAN/1 + u6b4JQGXKxAssyMHcHC+IAy04LwgE1wEUxAzpANFQw3QB3hljkDcQjIhE5ATKFvUANoW + /R6TiGXF9uJiaSRplvB3aWsIGUR/OjN6ORKFgcyIJ6OY0MxYFnpWATYldnOOQM5crsvc + o7w4iipfKH+NwLSQvHAK9YEom5if+CWJDSlj6QKZV3J88j4KpxUnlDlV7FTz1LrVFzUE + NW20jmg/1MXoaejHG9QbvjTGmCiaepjtN6+16Nn9xnLZms5GwFbVzsLe0yHG8aBTmXOz + y03XQbcJ9297EJ4kL4q3rI+mr7mfq39YQHJgXlB58KmQ/NDYMJdwwwj5SL4ocjRNDDJm + K3Y9bj1+ay8iEZfEkMyxTyBFOJWSxpXOup8xg/YA6sB25trBxaz5Q9PZk4ff5rzOHcl7 + fmQ4f/VYcMHPorTjUEnaic9lluXnKlar1E9GVp861VPzvnatju4M31m9+r0NVxq/Nok1 + +5wvb3lwYfOSRKvD5fQrjVcH2pY6WDuVrzle973hdzPgVvDt4K6Q7vCemN69fel3cu+W + 3Wu6393/+sHSI+IAy2PSE9yTrcHFocmnQ8+6nl98UT1cMJL5ct+r+NfRozFjFm+Qbyrf + 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 + 1Sc/NX82r3GsHV6bWFdaz10f31DcSNm4sjG3yb/pvFmweX9ze0t5K3Krcev9Nue23faR + 7bs7/o/xl5fbWT0ARID3LtFvt7cXhQHAFgKwWbC9vV67vb15Gi424H8gXaG//1fsCGPg + PfdKeE8TgL59F3Yu/3b8D5k9cPkKZW5kc3RyZWFtCmVuZG9iago3MCAwIG9iago1OTYz + CmVuZG9iagozOCAwIG9iagpbIC9JQ0NCYXNlZCA2OSAwIFIgXQplbmRvYmoKNzIgMCBv + YmoKPDwgL0xlbmd0aCA3MyAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFt + CngB1VpNbxy5Eb3zV/A4BuJ285udW1aJFzYQYDdSsgevD4osZ2VLK3vk3WDz6/OKH9Wc + bvbMrA8BAkHQiEMW2VWvql4V+7P8Xn6WI36C89I5I/e38gf5s3xx8aTkzZNU6efpRj4f + Byfpt5n4Xr747nZ/c/vpyy/X92J/B1HKYBZ+jJdm8MpZ6ZQbXPRW3jzIF68elJV/fky7 + ToZnjnZopmpRpjqe6utUZ+KgjapSccYs1depQdWp1qpBx1CmOlelhjp1YqleTUPQR6Qq + batY5Vz3sDGLVfI1VPZBvpEWP2+x6p188bfb++svd7/eXjzeP+7vHm6/7O9uJPSVtHxx + mUSP8vJCQIHpn+f0h8yBxwvjME3Kaqn1MCljjMSYHvykjbQ2DGEK8l5eQqfKFpUbGCr6 + IJVK82AViJj8JGDd9/JNPlVvryohDlYZD1suJRA+aKtRvMYJP9ATaJme4PKCzF9PT4f2 + sLUzgY7i6EGe22mYtNdBWuAI/9NXo/Ne0P/5EZI84G6UwNwJed9cESrHcdTy6kZOeeup + 2cYMTlwBHy/NMOJoV+/l7tvHh8ePv/zjmbz6IP9ylXB4/Mz1jHRm8SBtbB4hH/n0Keej + sbT10d7I3d0zeJiWu9tn9GD48O8ycFEHHsvAz+Xvl33+RuzqN/flm/qXZWHmW3n1Oj/1 + yr0NvDS5YIaOlfCjjJrgM2oqsJeYba3EmK3iEo6iiktxCULwlGMQMm4cPAWQDKHkC88B + aDf6CN8iCAmlmn+PI6gnbkaQOEAQ7wIzySWCrh+g0wqfqpXG3cV5GipPl53aBfhDPSE7 + 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 + ZW5kc3RyZWFtCmVuZG9iago3MyAwIG9iagozMjExCmVuZG9iago3MSAwIG9iago8PCAv + VHlwZSAvUGFnZSAvUGFyZW50IDQgMCBSIC9SZXNvdXJjZXMgNzQgMCBSIC9Db250ZW50 + cyA3MiAwIFIgL01lZGlhQm94ClswIDAgNzU2IDU1M10gPj4KZW5kb2JqCjc0IDAgb2Jq + Cjw8IC9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBd + IC9Db2xvclNwYWNlIDw8IC9DczEgOCAwIFIKL0NzMiAzNSAwIFIgPj4gL0ZvbnQgPDwg + L0YzLjAgODUgMCBSIC9GNC4wIDg2IDAgUiA+PiAvWE9iamVjdCA8PCAvSW0xNiA3OSAw + IFIKL0ltMTggODMgMCBSIC9JbTE1IDc3IDAgUiAvSW0xNCA3NSAwIFIgL0ltMTcgODEg + MCBSID4+ID4+CmVuZG9iago3OSAwIG9iago8PCAvTGVuZ3RoIDgwIDAgUiAvVHlwZSAv + WE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDE5MiAvSGVpZ2h0IDcyIC9JbnRl + cnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDg3IDAgUiAvSW50ZW50IC9QZXJjZXB0dWFs + IC9TTWFzayA4OCAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURl + Y29kZSA+PgpzdHJlYW0KeAHt0AENAAAAwqD3T20ON4hAYcCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBj4HhiiAAABCmVuZHN0cmVhbQplbmRvYmoKODAgMCBvYmoKMjA0CmVuZG9i + ago4MyAwIG9iago8PCAvTGVuZ3RoIDg0IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlw + ZSAvSW1hZ2UgL1dpZHRoIDI0OCAvSGVpZ2h0IDcyIC9JbnRlcnBvbGF0ZQp0cnVlIC9D + b2xvclNwYWNlIDg3IDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayA5MCAwIFIg + L0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0K + eAHt0DEBAAAAwqD1T20ND4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDLwPDNFA + AAEKZW5kc3RyZWFtCmVuZG9iago4NCAwIG9iagoyNTcKZW5kb2JqCjc3IDAgb2JqCjw8 + IC9MZW5ndGggNzggMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lk + dGggMTg2IC9IZWlnaHQgNzIgL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgODcg + MCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwgL1NNYXNrIDkyIDAgUiAvQml0c1BlckNvbXBv + bmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QAQ0AAADCoPdP + bQ43iEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwMDrwACc8AABCmVuZHN0cmVhbQplbmRvYmoK + NzggMCBvYmoKMTk5CmVuZG9iago3NSAwIG9iago8PCAvTGVuZ3RoIDc2IDAgUiAvVHlw + ZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDI3MCAvSGVpZ2h0IDcyIC9J + bnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDg3IDAgUiAvSW50ZW50IC9QZXJjZXB0 + dWFsIC9TTWFzayA5NCAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0 + ZURlY29kZSA+PgpzdHJlYW0KeAHt0DEBAAAAwqD1T+1pCYhAYcCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYOADA+PQAAEKZW5kc3RyZWFt + CmVuZG9iago3NiAwIG9iagoyNzgKZW5kb2JqCjgxIDAgb2JqCjw8IC9MZW5ndGggODIg + MCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMTQyIC9IZWln + aHQgNzIgL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgODcgMCBSIC9JbnRlbnQg + L1BlcmNlcHR1YWwgL1NNYXNrIDk2IDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0 + ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QAQ0AAADCoPdPbQ8HESgMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwMD/wAB30AABCmVuZHN0cmVhbQplbmRvYmoKODIg + MCBvYmoKMTU3CmVuZG9iago5NCAwIG9iago8PCAvTGVuZ3RoIDk1IDAgUiAvVHlwZSAv + WE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDI3MCAvSGVpZ2h0IDcyIC9Db2xv + clNwYWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9u + ZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dvZX5JZGAdwQwTZ + F9lkEQRBARVRlERNDMPczaUo00zMUknMTxjluGWpWeYymlsumctkaZaTTc0/N88LLuUy + NRdd8M753YgXXpyvz/Mc4D0nKAgFCSABJIAEkMCvFjiF1/w3OFAgHCQYRzlYFazxZ1D8 + EiBAJIbgM0QiMTgYc/mhiM/CD0Eik0P9oeAju6shk0kk+DcTd0FOrpBdi5AQEkBQqFQa + jUan0xl4CawFVkSjUsCFDB4+kBMbBsMIhv4ACoCgM5hMFpvNwVPYbBaLyWTQMREyyV8f + J3D4MKAuMAsGk8XhcMN4PD5fIBDiJAIBn8fjcTkcNpNJp4GHv1+O58AqAysMzIINEgKh + KFwslkilMnxEKpWIxeEiIZhwOSwmjRoa6i+P4zh8GDAwaHSwAApwkMkVikilCi9RKiMV + 8giZRCwS8sM4TAaUh4/jeA2YGWQKFAYnTCASg4RSpdZEx2i1Op0+8KPTabXaGI0mShWp + kEnChTysPHwcsNUe2VigNAAjlMZgcXhCsUyhjNJodbFxBoPRaEzERYzGBEN8rF4brVYp + IiQiPpft5wg+ViMYBijVhyGRK9Ux+jiDMSk5xZxqgaQFerBFpJ42J5sSE+JjtRqVQhYu + CMM4yCFEAuGY2iCGhFLpTA5PJJGrovXxRpM5NS0j05pls9myAz+wirNWa0a6xZycaIjV + qiOBg8tm0GB0HC2OU7CfkEJpgCGUKKK0cUbT6bTMrGz7+dz8gsIiPKSwoCAv137OZs2w + pCQadBrg4HNZdEooFMfhwYFpQJ+wAUMepTUkmdOttpy8wuLSsoqLDnzkUkV5aUlRQe65 + rAxLcoIeOEQ8DhOK4zgNIlYaXIFYrtLGmyyZ2bkFF8odlVXVNbVOZ13gx+msvX6tutJR + UVqcZ89KNxv1GoVUyGPTqWRolUOD4xQBdlcoDZFMGR2XZLHa80sqLlfVOOsbmly3m92B + n+ZmV1PDzbra6spLpYXnbekpBm2UXCzAiuOoBtYoMDUEYoVabzRn2gtKHVev32hwuVvv + eu55cZE2T2vL7aZ6Z/WV8uLcs5akuGjolTAWHWuVQ7Xh02CFCWXKmHhTejZgVDsbbt/x + eNs7Ort7cJGuzvb7ba3uxvqayooie6bZqIPi4HEYFPKRwUEIJlHobF64PEpvPG3NLXFU + 1zW6Pd6O7t7H/U8G8ZAn/X2Pejrb21pd9TVXygpsaaY4TaQEWgUGx+FNhUAkURhYo2ji + TGm2woqrzsYWT3v3o/7BoeGRMTxkdHjo6cDjng4vcFxzFOecMRu0KpkwDBscRzXIVCZX + KFXGGMxnci5cvn7L7Wnv6Rt8Pjo+MTU1HfiZmnoxMTb8dKC309vaVHe1PD/LYtSr5SIe + 63gNGhPGhkpnTM3KK6+64QKM/mcj45MzL+cXFgM/C/Nzs1MTo0NPHnXca7lV4yjKTjfF + ahRiHhvbVA69/SIQYUvhhUeoY5OgURw1DXe8XX3PRiem5xaXlldWAz8ry0uv5mcnx4YG + HrbfdTkrL+ScSYmPiRTzOXTKUQ3YYFk8bGwkZ9iLrzhdnt96B0cmZuZfray9WX8b+Flf + X1t9vTA7NTbU1+V136wuy7XC4FDCGGVQSEdqAzTYoBFtMGeeL62qd3u7+5+PT88vra6/ + 3Xi/Ffh5v/lufW15cfbFyGBve2tDTUX+2VSjTiUVnqBBZ/PFkTBErbll1Q2tD3oHRyfn + AGNj68M2HvJxa/Pt2uuF6fGhvk6Pq9ZRaLMk6qNkQi6Delxt0Dl8iVKbkJqVX1HTePe3 + x0O/zyyuvNnY2v608znws7Oz/WFzfXXp5YvhgW5vc93l4nPpSbFqbIs9QUMgVWqNFlvB + xVqXp7P/+cTLpbV377c/ff6Ch/y1s7218WZ5fmp08OF9d31lsT3DFKuOEP2LBmywoHHJ + 6WrrGhienHv9x8bWnztfvv4d+Pn65fOnj5vrKwszY097H7TUV5aARpwGafy0BuoU36dZ + QkgomqL7n+sxDbTD7nGABnr3tYcRhGmgd+Z7HOhT254E9pNAJKNP9PsgoIG+7flGA30T + uI8RhL4lPrCAuYE9T0FPEHZJ0NOlb2sDPXn8XgM9lT7wQCcWDiyCgtBplm81gAOddDoA + 8RcHOgXnF0EnJA8qA15BcaDTs/si6GT1PgX2wseBTt3vmqAbGd8XB1Yd6LbOnglWHT4P + dJPLR7LrgV13/N/f8sNAfB4EdAN0r18ABOuYveDocrDv0qd/XT+8C7uvsfsC/gCfObxQ + 9DsSQAJIAAkggV8g8A9hBZHqCmVuZHN0cmVhbQplbmRvYmoKOTUgMCBvYmoKMTcxNQpl + bmRvYmoKOTAgMCBvYmoKPDwgL0xlbmd0aCA5MSAwIFIgL1R5cGUgL1hPYmplY3QgL1N1 + YnR5cGUgL0ltYWdlIC9XaWR0aCAyNDggL0hlaWdodCA3MiAvQ29sb3JTcGFjZQovRGV2 + aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0 + ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2b6VtSaRjGFVH2TTbZBEFkUUSUQiUF + LsxUME1FqZQhyUaMtByZmCyXy5SiTM1IbVzSNEtztCxb5p+b56BezYROMx9Ph/sTH9/f + c9/v8x7eJSkpoUQFEhVIVCBRgR+7Asno1/8zCHhxX5WCSn0dPw5w/gP/PjOw4vGpqBce + DyBICb6HHqPeR04jEIj7IqFNB+MmEghpYB2wf4f8gDo1NQ2QSWQyhUKhUqk0FIpKhbFT + yGQSkYiw4/+VHMFOgXQDNCBTaXQ6g8lkoVRMJoNOpwE+mUg8ID8m7DFs8BqhptEZLFY6 + m8Phcnk8PurE43G5HA47nQXwtH1yxPKjwRG3EbMRaiYw8/gZAqFQJBZL0CaxWCQSCgUZ + fB6HzWICOYlISE1FwI9o7DFsmNgUKlADNBBLpDJZllyBQsmzZDKpRCwUADqQg+XHgicj + c5tAArNZbF6GEJjlCmWOSq3RaLW5aJJWq9Vo1KocpUIuy5QIM7hsFp2KgEPU4w0HuwGb + SKExWBy+UCKTZ+dotHk6vd5gMBSiTAZDgV6vy9NqcrLlUomQzzkEPyLpYDe0NHIMWySV + K9W5Or2h6MRJU0kpyIweIcMtLTadNBYZ9DqtWpmVeQieBlM8zvBksJtIptJZnAyRVKHK + zTcYTSXmMovVZrfbK9AkGK/dZi0vM5eYjIZ8rUohFSGOU0iQ9DjufbspgM0XybI1OoOx + 2GyxVVRWVTuctWfRpVqn01FdVWm3lZuBPE99CE5Mw+Nw33R0hBtSzgRsabZGX2Q6ZbWf + qamta2h0NbvRppZmV2NDnbOm0m41mwp1akWmkMdmUMHwlHhufBqRQk/nCaUKTb6x1FJR + 7TzX5L7Y5vG2+3yX0SSfz9fu9bReaGmqd1bZy0uKEHABF5JOjA96Mg7WMLA7QyJX6YpK + rZWOetf5Nq/viv9q4Fp3D5rU3X0t0OW/4vO2nXfVOU5bSgrzcrLEfA6TSoKgf9PYkJjD + 7OYJZcpcg8lS6Wxwt17q8Ad6evuCN0Mo081gX29PwN/hbW1pcJwuMxVoszOFYDgZgn4U + N4PNl8jV+cZTFYDt8fmv3QiG+u8MDA2jTEMDd/pDwRuBTp/Hfa7GbjbqVGB4OhL0eO40 + EpXJEUizcw3F1up6t+dyV08wdGdoZDR8P4Iu3b8XHh0ZvB3q6/H7PM11ZyymAo1CIuAw + juLGp5FoSMxzdEazvdbV6uu6HuwfuhuOjE9MPkaXpiYmxiPhkcH+IIBfbHLYS4vylDII + emyC/3Mhw+EJZHo6XyxX603lZ86dv9TZE+wfHos8mnoSnZ2dQ5NmZ2ei01PjkdHh/mB3 + p9ddV1l2Qq/KEvFYNKSxxXFT6DC9FVpDia2mqa0jANjhh5NPZp7NLy49R5OWFhfn52am + Jx6MDd/6JXC5taHaGgs6THAyIZ4b2jlHkKnMK4KYu73+G6HBsYdT0bmF5yuray/RpLXV + FytLC7PRyQejA6HrnT+5nPbSQq0iM4N9FDcsYwwOMr1PlFXWXfAFgrdHIpPRZ4vLa+uv + NzbRpI2NV+ury4tz0YnISH/f1Xb32YpTxjylVMChUwip3+YcuJnArdKbLFUNbVd6QkPh + R0/mFldebmxube+gSdt/bG2+frm8ODs9PjZws7vjYj1McF2OTBhr6PHcVCZXmAVtzVrd + 6PH33hqJTM0sAPbWzttddOnd252tjbXl+aeT94d/u/5zW0OV5WS+6nhuFlck1xSU2Bwu + b1ff7dHx6WfP115v7ex+2PuIJu3tvd/d2Xq1ujT3+OHd/l6/pxEam16dJeQwYQE/wm8W + TyzXGErtzub2QHAg/Cg6v7L+Znv3w8fP6NKnvQ/vtjfXl3+PQtD7uryuGlsxcIu4x3PD + MgbcLb7Ar4P3JmYWXrza2nm/9/nLn2jSl8+f9nZ33qyvzD+dCA8Er3pdDltxgUae4P7b + pwsulUjFbM4x2tcwuo5h9bsFm9+peIz+L8ETMPo/FKv7DhjdZ0rB6L4isn+OyX1kbJ4b + YPWcCI6/MXouiNVzYOSaB/bO/ZMwes8DuLF6rweb97gQw7F4bw+4kaRj757mPjj27uUm + YfUe9j449u7dJ8XAYy8OsPXOAo4RDl6YIE+JMPSuBjk/iZHjsPaOKnZyhMl3czHyQ3yo + AKr1FSbxK1GBRAUSFUhU4AetwF8J3baiCmVuZHN0cmVhbQplbmRvYmoKOTEgMCBvYmoK + MTYzMAplbmRvYmoKOTIgMCBvYmoKPDwgL0xlbmd0aCA5MyAwIFIgL1R5cGUgL1hPYmpl + Y3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAxODYgL0hlaWdodCA3MiAvQ29sb3JTcGFj + ZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4 + IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2a+1NSaRjH1VDkDspFuSx4 + ALmJdBYM8RI4OCqK692wlFFJJwwjHSkmbzSmFON1k/EyamaZaTnamDa1/9w+B9tpVmnb + /eXQ2eH70/nt/bzf+b7POed9npSUpJIOJB1IOoCnA6k/hf7TjoE47ZuuJEjfCNIA6F9s + 4JwaaEmk9J9AJBKgYJv4EXyM+xw6g0zOPBclAfq6NJmcAfYB/g/Yv3Knp2cANIVKpdFo + dDqdkRDBwrA8lUrJzMTo/5kdA78CGQFsgKYzmEwWm81JmNhsFpPJAH4qwJ+zfycyMXDw + G+NmMFkcTlY2l8vj8fmCBIjP5/G43OwsDofFZGDs4DtEJj465jhmOMbNBmq+ICdXKBSJ + xZIESCwWCYW5OQI+0LNj7GA7hh6nyMTAIeA0OnADNjBLpDJZHiJPiJA8mUwqAX6AB3Y6 + DYt7fPRULONkChjOyebnCIEakSvzVWqNRqvV4SytVqNRq/KVcgTohTn8bA7YTiFj5/Sy + 6WA5gGfSGCwOVyCUyBBFvkZboDcYUBT9FXfBogaDvkCryVcgMolQwOWwGOB6OilOXsBy + OJzUGLhIiijVOr0BNRZdM1tKQKW4ClvRYr5WZEQNep1aiUhFMXQqHNM4pqeC5ZlUOpPD + zRFJ5SpdIWoyW0rLrbYKu91eibNgyQqbtbzUYjahhTqVXCrK4XKYdGommH4xLueW0wBc + IJIpNHrUVFxqraisqnHUOet/w131zjpHTVVlhbW02ITqNQoZ5jqTFs90jByywgZwqUJj + MJrLbPbq2vqG5pa2dlcC1N7W0txQX1ttt5WZjQaNAgsMmwGmX4oLhCUjk8bM4gulck2h + qcRa6XA2tbpudbm7ez2e2zjL4+ntdnfdcrU2OR2V1hJToUYuFfKzMNMvxSU1DSoiWJ4j + QVR6Y4mtqq6xraOr29PvvesbvOfHWfcGfXe9/Z7uro62xroqW4lRr0IkOWA6VMaLQcfC + AinnC2VKHWq2VjmbXZ09fV6ff3gk8DCIux4GRob9Pm9fT6er2VllNaM6pUzIx5IOcfn7 + azRGzsoWSBB1oamsEsDdHu/gUCA4Oj4Reoy7QhPjo8HA0KDX4wb0yjJToRqRCLJZcckz + KHQ2N1eq0KHFNkejy317wB8IjoempsPPIrjrWXh6KjQeDPgHbrtdjQ5bMapTSHO5bDol + 45LnpAwKAwtLvt5Uaq9v6/QM3A+Mhp6EI3MLi7/jrsWFuUj4SWg0cH/A09lWby816fOx + uDAocEQvpIVEpjKzBGJEbTBfr27q6LnjD4w+nonMLy1HV1fXcNbqanR5aT4y83g04L/T + 09FUfd1sUCNiQRaTSo5DTmNCzOVa1FJR29rV5wPw8Ozi8sr6xtaLbZz1YmtjfWV5cTYM + 6L6+rtbaCguqlUPQmbQ45FBauLm/KAuMEBZXt3coODkzuxRd29zeeb37Bmftvt7Z3lyL + Ls3OTAaHvN0uiIuxQPlLLheKyyXPoSiyuFjMi8qrGm56fIGxqchidH3r5e7e/sE7nHWw + v7f7cms9uhiZGgv4PDcbqsqLsKBzseJyMedAzgZylcFsrWnu6vcHQ+H55bWtnTcH7w6P + jnHW0eG7gzc7W2vL8+FQ0N/f1VxjNRtUQM6OS05n84R5cEBtjha3d/jRVGRpZRPAD48/ + nOCuD8eHgL65shSZejTsdbc4bHBE84Q8Nj2e53QOT4Rorloq6tq6B0bGpueer2/v7h8e + n5yefcJZZ6cnx4f7u9vrz+emx0YGutvqKixXNYiIx/kOOV+MaNASu7O91xeYCM9HN3b2 + 3h+dnH76jLs+nZ4cvd/b2YjOhycCvt52p70E1SBi/vfJoSgC+Q2P78Hk04WVzVdvD48/ + nn3+8gfO+vL57OPx4dtXmysLTycf+Dw3MHKt/P9JTtS0EPaEErYqEvdNRNS3P4mwX1wk + MmG/con7Z0HYv7krhP2Dxu5bCHprQdSbIuLezhH5RpS4t9BYs4WIN/8phO22ADlxO1xE + 7SpiphOzkwvkWF6I2D0/RyfixEIKcadEztGJOJmTEkOPTRURbRoK+i9fJ7mwsTlCTaBh + raMYexrxpv5ibS+CTlrG2P/aAOwh0frGk3xKOpB0IOkAHg78CTgWYSkKZW5kc3RyZWFt + CmVuZG9iago5MyAwIG9iagoxNTkwCmVuZG9iago4OCAwIG9iago8PCAvTGVuZ3RoIDg5 + IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDE5MiAvSGVp + Z2h0IDcyIC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9C + aXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB + 7ZrpW1JpGMZdkH2VTVkEQdkEkUAJTcEwFcVxVxqXQTETB6VMynI0y8xkcisdtdSyNEtz + tCxb5p+b54BzeU3oLF/meObi/sS387uf535fznnfJyYmqmgFohWIVuC0VSD29OjflQa4 + 444Uj6qOOJBq/gMfYXZgxuESTotwOFx8fMjJ31kI0YfR8QQCMSwSWjp8PoGAx0Mpwx7+ + ysEhfUICHtBJZDKFQqFSqTT0BE8HBgqZRCISCeABh3ThRAcIfjykBuABnUqj0xlMJgtl + MRkMOp0GNshE4qGDEwyE8KH2CD2NzmCxEtkcDpfL4/FRE4/H5XI47EQWk0GngQPoAdKC + 4w0g1UeKj9AzgZ3HT0oWCIQikRgtiURCoUCQzOfzOGwWk06lkIiEhATEwDEbUQgfgk+h + Aj3AA7lYIpWmyuQoSpYqlaaIReCBx2Ex6EgLwh2INBCLZJ9AguKz2LwkAbDL5OkKpUqt + 1mgy0JBGo1GrVUpFulwmTREJkrhsFp16aCCyAVB+wCdSaAwWhy8QS2VpCrVGq9PrDQbD + GZRkMGTp9TqtRqVIk0nEAj4nZADWwDEJgvLD0iWH8IUSWboqQ6c3GLNzzJZcUN5/L+Sx + lrPmHJPRoNdqlGmpKUcG4iNXQCyUn0im0lmcJKFErszINJjMlrx8q63QbrcXoSF47vlC + W0F+riXHZMjUKORhAxQSLIEI/nD5KYDPF0rT1DqD6WyetbCouNRR7qz4Dh1VOJ3ljtJi + e2FBntmUpVXJJdABJo1CxEOAvlnACD+khwn4kjS13mg+Z7OXlFVU1tTWN7jQUmNDfW1N + pdNRbLfmmc/oVNABXiKDCg2Ij+TH4YkUeiJPIJGrM0251iKHs7rO1dTS6m73eDrQkMfj + aXO3Nl9srK1yltgLLEadUi5O5rLoFGJkgGLjYO+E8ieJZUqdMddWXF5Vf7HF7en0/ujr + 6fWjod7eHl93V6fH3eyqqyy7YLUYtAqpiM+GBkCAvtlBkfhA+nkCaXqGwWwtdta4mtsu + eX3+vv7AjQGUdCPQ3+f3dXW4mxqqy4vyc/RqeQrSADIE6Dh+BpsvlqkyTeeKAL/V4+25 + GhgYHBoeuYOSRoaHbg30X/Fdbm9prHLYc41aRaqQn4gEKJIfT6IyOcmStAzDWZujytXa + 0e0PDAyNjI6NTwTR0cSD8bG7twcHrvV6PS0NlSUFZmiAOInNOI4fhyfRkPgodKY8e0V9 + s6f7SmBw5N54cHJ65hE6mp2emgyOjw7fCvi97U215edzz2jTJQIOK7QA/ryBxuEIZHoi + XyRT6c0FJdUX27r8gcE794NTs3Pzi4tLaGhxcWH+8czkxNjIYKD38g+uygv52ZlKqZDL + oiELOIKfQof4yzUGS2FZXcslH+CPP5yZW3iyvPrsORp6trr6dOmXx9PBsZGbfT5PU02p + DQIkE8ECIBMi+WH74SSnpGuNEB+X23t14Pb9h7PzSyvPX6xvvEJDG+sv154tL85NB+8N + 3/Bfbq0vP28xaORiPvs4ftg+GRwk/tn5xZXfe3yBn0aDM/NPVtc2Nt9sbaOhra3Xm+tr + q2Bg4u7gte42V0VRnlGblpLEoVMICd/mB/iZwK/Um62lNS2d/oGR8am5pdUXr7a2d3b3 + 0NDurzvbbzbWVhYfTY4NX+/paKoszjfp0iXJHGQDiuSnMrmCVFi+Nkdtq7fv1mhwdmEF + 8Hf23u2jo/fvdnfAwNP56Qd3bvo7W6pLCrIzFVLBSfwsrlCmzrIUlte7u/t/Gpt8/OT5 + xpudvf2PB5/Q0MHBh/d7b1+vry4++nl0sK+rtcZhNeuVwM88vv4snkimNuTanQ3tvsDw + +NT88ovNt7v7Hz99QUefwcDu9qu1p3OTY0PXvO46B2xAwM89mR+2T+Bv9Piu334wvbDy + 8vXO3oeDL19/Q0Nfv3w+2N97u7m2PD91f7i/211fZjNnqVL/z/zYzg/G1y/G90+s/39h + +/0Bh/H3NxwB4+/PWP9+wfj3YzzGv9+R8x9Mn59g+/wK6+eHcPyP8fNbrJ+fI9dH2L2/ + iMH4/RHwY/3+Dtv3p0gDsHx/DfxIgrA7PxA2gN35jRisz8+EDWB3fikmZCA0gYXN+TG4 + kUEyBA6Q0UMMzu8hV0ohB3FYnZ8MXYphen415OAPG8jM62nQEVT0V7QC0QpEK3BqKvA7 + 7gDgzQplbmRzdHJlYW0KZW5kb2JqCjg5IDAgb2JqCjE2MzgKZW5kb2JqCjk2IDAgb2Jq + Cjw8IC9MZW5ndGggOTcgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAv + V2lkdGggMTQyIC9IZWlnaHQgNzIgL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVy + cG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29k + ZSA+PgpzdHJlYW0KeAHtmftTUnkYxtVQ5A7KTS6BBxEBkc6CIV4CBgdFcb1iWOKgpBOG + kY4Uk9fGkmK8bjpeRs0sMy1GG9Om9p/b92A7zSptu7PH3bMzPj/505ePz/N84Zz3TUm5 + 0IUDFw78Ow6knpv+Fj9QpH3TJRz17dQ0+JC/AHVCAgQkUvo5iUSC4zGwHwElWE5AMsjk + zBNRcNLX48jkDPg3AekHPF9Z0tMzAIRCpdJoNDqdzsBNcBgcSaVSMjMxoj/nwWAuQT6A + AiB0BpPJYrM5uIrNZjGZDGCiAtAJz3fiSsCALxgLg8nicLKyuVwej88X4CQ+n8fjcrOz + OBwWk4HxgD8QV3IczBnMGIyFDSR8gTBHJBJLJFKcJJGIRaIcoYAPROwED9iD4SS5XAkY + KAyNDiyAAhxSmVyeiyhwE5Irl8ukwARAwEOnYfVJjpOKdYZMAWM42XyhCEgQhTJfVaBW + azRaHKTRqNUFqnylAgEikZCfzQF7KGSsy2fNAWsAJpPGYHG4ApFUjuTlqzWFOr0eRdGf + cBEcpNfrCjXq/DxELhUJuBwWA9xJJyXJCqyBAlMTMGIZoizQ6vSoofiqyVwKKvvHwk4x + m64WG1C9TlugRGTiBA4VqpzEnFSwJpNKZ3K4QrFModIWoUaTuazCYrXZ7fZKHATH2KyW + ijKzyYgWaVUKmVjI5TDp1Eww53RUJ9bQAEYgluepdaixpMxiq3RUO2tddT/jojpXrbPa + UWmzlJUYUZ06T465w6QlMwejgZzYACPLU+sNpnKrvaqmrr6p2d3qwUmt7uam+rqaKru1 + 3GTQq/OwsNgMMOdMVBBURiaNmcUXyRTqImOppdLpamzx3PR2+Lr8/ls4yO/v8nV4b3pa + Gl3OSkupsUitkIn4WZg5Z6JKTYPbDdYIpYhKZyi1Omob3G1en78ncCfYdzeEg+72Be8E + evw+b5u7odZhLTXoVIhUCObALT9dHCwoaA1fJFdqUZPF4WrytHd2B4KhgcHwgwguehAe + HAgFA92d7Z4ml8NiQrVKuYiPNQei+uPXcYKGlS2QIgVFxvJKgOnwB/r6w5GhkdHxR7ho + fHRkKBLu7wv4OwCnstxYVIBIBdmspDQZFDqbmyPL06IlVmeDp+NWbygcGRmfeBJ9FsNF + z6JPJsZHIuFQ760OT4PTWoJq82Q5XDadknHGG1IGhYEFla8zltnr3O3+3nvhofHH0dj0 + 7NwvuGhudjoWfTw+FL7X629319nLjLp8LCoGBWp8KikSmcrMEkiQAr3pWlVjW+ftUHjo + 0WRsZn5hcXl5BQctLy8uzM/EJh8NhUO3O9saq66Z9AWIRJDFpJKT0NCYUBuFBjXbalq8 + 3UGAiU7NLSytrm282MRBLzbWVpcW5qaigBPs9rbU2MyoRgHFYdKS0MCV4uZcVhYaICiP + L9AfGZucml9cWd/cer39Bgdtv97aXF9ZnJ+aHIv0B3weiMpQqLycw4VLdcYbuOAsLlab + 4gpH/Q1/MDw8EZtbXN14ub2zu/cOB+3t7my/3FhdnItNDIeD/hv1jopirDhc7FKd7g3Q + sIFGpTdZqpu8PaHIeHRmYWVj683eu/j+AQ7aj7/be7O1sbIwEx2PhHq8TdUWk14FNOyk + NHQ2T5QLJbY6mzsCAw8nYvNL6wATP/hwiIs+HMQBZ31pPjbxcCDQ0ey0Qo1zRTw2PZk3 + dA5PjKivmG21bl/v4PCT6eerm9u78YPDo+NPOOj46PAgvru9ufp8+snwYK/PXWszX1Ej + Yh7nOzR8CaJGS+2u1q5geDQ6s7i2tfN+//Do02dc9OnocP/9ztba4kx0NBzsanXZS1E1 + IuF/nwYuONBc9wfvjz2dXVp/9TZ+8PH485dfcdCXz8cfD+JvX60vzT4dux/0X8doNIr/ + Dw2RkiJUiwl1w4n17UekXwYSoX41SWRCPVEQ62mLUE+ilwj1lI69TxHoDYZIb3fEevMl + 2lSAWBMTbNBGlGlSCqEmbUBDrCkkkSa0mDnEmV4DDZYVUSb7JzhE2XqkEGsjdIJDlG1Z + SgInsb0jwiYRZm9fN5vYuvc/37Jio8AETxoxNtCJ0SSBtvMJnt+hgOs89O0zLv66cODC + gfN14DcDmZXVCmVuZHN0cmVhbQplbmRvYmoKOTcgMCBvYmoKMTU3OAplbmRvYmoKOTgg + MCBvYmoKPDwgL0xlbmd0aCA5OSAwIFIgL04gMyAvQWx0ZXJuYXRlIC9EZXZpY2VSR0Ig + L0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB1VlnWBTNsu7ZzLILC0uOS1xy + zkjOSXIOknOOAhJERARECSJRBFFAEBWVYCQZUFEwgAoqiAgIKgoCEu+gn993znPu+Xf/ + 3Hme6Xmnqrq6Zqp6uqoHAPZ5r8jIUAQJgLDw2GgbI12Kk7MLBfsaYAADoAF4wOrlExOp + Y2VlDv7rsTwMoB3mM8kdXf9V7H9nMPj6xfgAAFnBbG/fGJ8wGF8BAKHrExkdCwByFaYP + JsRGwhh1H8ZM0bCBMB7bwQG/8cIO9v6F0ahfMnY2egCg2QDAEby8ogMAIArCdEq8TwCs + h6gPAIYx3DcoHACyE4w1fQK9fAFgL4VlJMLCInZwH4xFvP9FT8C/YC8v7791enkF/I1/ + PwvcEx5YPygmMtQr8dfN/2UTFhoHv69fByPcEsJDd+/4hgU+Z3y99M3gKxd8bkWG/vIZ + LANx+IXb28K0HSwR7r3b8i+s6R9taANjuC9kFRmru4Phdwb5R8Za2f1FT00K1NsNYwJM + L/aLMfij51Swl+mOz+hgemt0nI09jAVh3BUTb2sAYziioA9JgXaOf8ks+frp/0VHIPyD + DE1+yyAYg2JNdsZign3OHxJhtmMDPBZCCZiBUOAH4kA03IYDSWAO9ID+X60k8AdeMCce + 5sWAEPARxmFwjwi4TwSMKX/J6f0HxfBXvwC4379rpAAfWDbu7zF/j0aBx/yjMwj4wvgP + 3QseY4e3Y13MnqCMf8b8I7Gj75c1Mk0yszIbf2xCCaPkUIooXZQGShOlCigoFhQHkEQp + oFRQOigtlDrMUwWG4AOsOeCPjTv6w1r940sjEtUcAmHuzrN7/+ECh1/SQX/f/4cFIOjx + fPv8HwsAiPXbC88DAPQiIhOjgwICYyk68Mz1k6CYhPtISVDkZGRldtj/b46db9ZvYxdt + fn2LIJYn/9D26AKguAnP85l/aGGfAbh4EABOiX9oomfheZ8CwCV2n7jo+N/6UDsXNPwd + pIcjlB3wAAEgAr9nOaAE1IE2MACmwBLYAWfgAcdPIByD0SAB7AP7QRbIBcfAcVAOqsFp + 0ADOg1bQDm6AbnAXPASD4AUYBeNgCsyBBbAM1iEIwkJEiAyxQ7yQECQOyUEqkCZkAJlD + NpAz5AkFQOFQHLQPOgDlQoVQOVQDNUKXoE6oG+qHhqBX0AQ0C32H1hBIBAHBhOBGCCOk + ESoIHYQZwg7hjghARCGSEJmIfEQpohbRjGhDdCMeIl4gxhFziB9IgKRFsiD5kJJIFaQe + 0hLpgvRHRiNTkTnIEmQtsgV5DXkP+Qw5jpxH/kRhUGQUBSUJx6kxyh7lg4pCpaLyUOWo + BlQbqg/1DDWBWkBtoYloLrQ4Wg1tgnZCB6AT0FnoEvRZ9FX0HfQL9BR6GYPBsGCoGGWM + McYZE4xJxuRhqjAXMF2YIcwk5gcWi2XHimM1sJZYL2wsNgtbhm3G3sY+xU5hV3G0OF6c + HM4Q54ILx2XgSnDncLdwT3HTuHUaEo0QjRqNJY0vTSLNUZo6mms0T2imaNbxDHgqXgNv + hw/G78eX4lvwd/Bj+EVaWlp+WlVaa9og2nTaUtqLtPdpJ2h/EhgJYgQ9ghshjpBPqCd0 + EV4RFolEojBRm+hCjCXmExuJvcS3xFU6Mp0UnQmdL10aXQVdG91Tui/0NPRC9Dr0HvRJ + 9CX0l+mf0M+TaEjCJD2SFymVVEHqJI2QfjCQGWQZLBnCGPIYzjH0M8wwYhmFGQ0YfRkz + GU8z9jJOkpFkAbIe2Yd8gFxHvkOeYsIwUZlMmIKZcpnOMz1mWmBmZFZgdmDey1zBfJN5 + nAXJIsxiwhLKcpSllWWYZY2Vm1WH1Y/1MGsL61PWFTZONm02P7YctgtsL9jW2CnsBuwh + 7AXs7exvOFAcYhzWHAkcJznucMxzMnGqc/pw5nC2cr7mQnCJcdlwJXOd5nrE9YObh9uI + O5K7jLuXe56HhUebJ5inmOcWzywvmVeTN4i3mPc27ycKM0WHEkoppfRRFvi4+Iz54vhq + +B7zrfNT+e35M/gv8L8RwAuoCPgLFAv0CCwI8gpaCO4TbBJ8LUQjpCIUKHRC6J7QijBV + 2FH4kHC78AyVjWpCTaI2UcdEiCJaIlEitSLPRTGiKqIholWig2IIMUWxQLEKsSfiCHEl + 8SDxKvEhCbSEqkS4RK3EiCRBUkcyXrJJckKKRcpcKkOqXeqLtKC0i3SB9D3pLRlFmVCZ + OplRWUZZU9kM2Wuy3+XE5HzkKuSeyxPlDeXT5DvkvymIK/gpnFR4qUhWtFA8pNijuKmk + rBSt1KI0qyyo7KlcqTyiwqRipZKncl8VraqrmqZ6Q/WnmpJarFqr2ld1SfUQ9XPqM7uo + u/x21e2a1ODX8NKo0RjXpGh6ap7SHNfi0/LSqtV6ry2g7at9VntaR1QnWKdZ54uujG60 + 7lXdFT01vRS9Ln2kvpF+jv5jA0YDe4Nyg7eG/IYBhk2GC0aKRslGXcZoYzPjAuMRE24T + H5NGkwVTZdMU0z4zgpmtWbnZe3Mx82jzaxYIC1OLIoux3UK7w3e3WwJLE8siyzdWVKso + q+vWGGsr6wrrjzayNvts7tmSbffYnrNdttO1O2o3ai9iH2ff40Dv4ObQ6LDiqO9Y6Dju + JO2U4vTQmcM5yLnDBevi4HLW5Yergetx1yk3Rbcst2F3qvte934PDo9Qj5t76Pd47bns + ifZ09DznueFl6VXr9cPbxLvSe8FHz+eEz5yvtm+x76yfhl+h37S/hn+h/0yARkBRwGyg + VmBJ4HyQXlB50Ldg4+Dq4JUQy5D6kO1Qx9ALYbgwz7DOcMbwkPC+CJ6IvRFDkeKRWZHj + UWpRx6MWos2iz8ZAMe4xHbFMcHL4KE4k7mDcRLxmfEX8aoJDwuW9DHvD9z5KFEs8nDid + ZJh0JhmV7JPcs49v3/59Eyk6KTWpUKp3ak+aQFpm2lS6UXrDfvz+kP0DGTIZhRlLBxwP + XMvkzkzPnDxodLApiy4rOmvkkPqh6mxUdlD248Pyh8sOb+X45jzIlcktyd3I88l7cET2 + SOmR7Xz//MdHlY6ePIY5Fn5suECroKGQoTCpcLLIoqitmFKcU7x0fM/x/hKFkuoT+BNx + J8ZLzUs7ygTLjpVtlAeWv6jQrbhQyVV5uHKlyrfq6Untky3V3NW51Wungk69rDGqaasV + ri05jTkdf/pjnUPdvTMqZxrPcpzNPbtZH14/3mDT0Neo3Nh4juvc0SZEU1zTbLNb8+B5 + /fMdLZItNRdYLuReBBfjLn665HlpuNWsteeyyuWWK0JXKq+Sr+a0QW2JbQvtge3jHc4d + Q52mnT3X1K9dvS51vf4G342Km8w3j97C38q8tX076faPrsiu+e6A7smePT2jvU69z/us + +x7fMbtz/67h3d57Ovdu39e4f6Nfrb/zgcqD9odKD9seKT66OqA4cPWx0uO2J8pPOgZV + B68N7Rq69VTrafcz/Wd3n5s8f/hi94uhYfvhlyNuI+MvfV/OvAp99e11/Ov10fQx9FjO + G9Kbkrdcb2vfib67MK40fnNCf+LRe9v3o5M+k3MfYj5sTGV+JH4smeadbpyRm7kxazg7 + +Mn109Rc5Nz6fNZnhs+VX0S+XPmq/fXRgtPC1Lfob9vf8xbZF+uXFJZ6flj9eLsctry+ + krPKvtrwU+XnvTXHten1hA3sRumm6Oa1LbOtse2w7e1Ir2ivX7kAEm4R/v4AfK+Hawhn + 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 + Q3kTuzmw9eCX/81BN7xWZEFvEYqIbMQYUgGZj5xDmaLOoQnocPRTjArmJBaNjcC+gud5 + KzzLD9Es4n3xw7QWtH0ELcItoiaxj86C7jV9CAmQShkUGYYZw8lYch2TAdMscyGLJstn + 1ho2V3Y29lGOWs4wLg1uOu6PPD28NZQDfMH81gKaghJCPMJkKq0IjShODC9OkuCSlJRy + kM6W6ZCdlmdXMFKMUapTfq6KVlNVD91Vp/FOi1vbRadY96k+k4Gr4SmjWRNV0xyzUQv5 + 3bmWM9YmNg12TPbZjminNBfgmu/O79HjGeet7EvyWwtYD1oJKQnjDz8fKRN1OUYltiNe + PqE1UTrp/D7JlPNp0uk3MwwPdB6EsiwOlWVP5Ejlpuc9yec4GnTsWiG2yLG4/vjKCePS + E2XTFaqVeVUT1VqnLtdKnK4/I3S2rkGk8WKTXHN7i/yFS3CeWHWF4Wpy22SHaef56/gb + oTcHbkt05XR/6jXuq72zec/uftMD8NDuUePA5hOLwcqhuWeqz3NeDI9QXya96h/lGAt8 + U//2zTjPRND79g+YKeePNdOTs7yfbOdS52s/X/nS+fXSwslv2d89FqUXvy6d+eH04+dy + +YrCys1Vw9UnPzV/Nq9xrB1em1hXWs9dH99Q3EjZuLIxt8m/6bxZsHl/c3tLeStyq3Hr + /Tbntt32ke27O/6P8ZeX21k9AESA9y7Rb7e3F4UBwBYCsFmwvb1eu729eRouNuB/IF2h + v/9X7Ahj4D33SnhPE4C+fRd2Lv92/A+ZPXD5CmVuZHN0cmVhbQplbmRvYmoKOTkgMCBv + YmoKNTk2MwplbmRvYmoKODcgMCBvYmoKWyAvSUNDQmFzZWQgOTggMCBSIF0KZW5kb2Jq + CjQgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9D + b3VudCAyIC9LaWRzIFsgMyAwIFIgNzEgMCBSIF0gPj4KZW5kb2JqCjEwMCAwIG9iago8 + PCAvVHlwZSAvQ2F0YWxvZyAvT3V0bGluZXMgMiAwIFIgL1BhZ2VzIDQgMCBSIC9WZXJz + aW9uIC8xLjQgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0xhc3QgMTAxIDAgUiAvRmlyc3Qg + MTAyIDAgUiA+PgplbmRvYmoKMTAyIDAgb2JqCjw8IC9QYXJlbnQgMTAzIDAgUiAvVGl0 + bGUgKFN0cnVjdHVyZSkgL0NvdW50IDAgL0Rlc3QgWyAzIDAgUiAvWFlaIDAgNTUzIDAK + XSAvTmV4dCAxMDQgMCBSID4+CmVuZG9iagoxMDQgMCBvYmoKPDwgL1BhcmVudCAxMDUg + MCBSIC9QcmV2IDEwNiAwIFIgL0NvdW50IDAgL0Rlc3QgWyA3MSAwIFIgL1hZWiAwIDU1 + MyAwIF0gL1RpdGxlCihTZXF1ZW5jZSkgPj4KZW5kb2JqCjEwNiAwIG9iago8PCAvUGFy + ZW50IDEwMyAwIFIgPj4KZW5kb2JqCjEwNSAwIG9iago8PCA+PgplbmRvYmoKMTAzIDAg + b2JqCjw8ID4+CmVuZG9iagoxMDEgMCBvYmoKPDwgL1BhcmVudCAxMDUgMCBSIC9QcmV2 + IDEwNiAwIFIgL0NvdW50IDAgL0Rlc3QgWyA3MSAwIFIgL1hZWiAwIDU1MyAwIF0gL1Rp + dGxlCihTZXF1ZW5jZSkgPj4KZW5kb2JqCjEwNyAwIG9iago8PCAvTGVuZ3RoIDEwOCAw + IFIgL0xlbmd0aDEgMTE0MTYgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB + vXoLeFNVtvDa552TtE3S5tlHkiZt2vQFhTYECk1LX9AGSqHYYqstUAYYUEAsFAQR0EJx + Rp2rgsg/jiMzIo5OKA4GUX8ug8qo3OsDry/UccTXYH1NfUJO/rVPQoXe+ebz+36/yck6 + az/PXnutvddjn7N61bU9kASbgIXmed0rFoH68y0EYMYvWN69Ip5PrUE8sKB3tTOe5/MA + 2JsWrfjZ8nheCgPInp8t60v0T9MBmE4t7unG56i/83gvX4wF8SwZj9izePnqtfG88RTi + FcuuXpCoT30B8xOXd69NjA+nMe+8qnt5T7y9rwJx3oqrr1kdz+f/FXHHilU9ifakDen7 + byBYmgFLQQPLQAIG9Hh1AIgfyR7gsJbWI1QVtf7mypSKr8AgYQHAb73Fmyh+2vX4d9+c + Pu/VbtTUYTuN2p5WYB8hX8kH0BGsf1O7caSG1tJfRgRaCiLQgDAFYTyCr+CAFHyM3App + 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 + Gs+CFvz+Zi5chl/NtMM8+h0l/gjadqKmBHoO3jZ7xty26oKGnmW9PauXLOguqr562ULa + 6sKPfu+JZ0JwOwKNHB5BOI5AQ7ozCMPYmENIQ/AgjEeoQZiDsBBhNcJWhNsR9iI8gnAc + 4RTCGYRhnDCHkIbgiSV++FwYSRM8m780Xz0qr6r8i9rXj6qfNiofGpVvHpVvHZWfOyrf + PSo/f1R+waj8wlF5Va4X0btkVP3PR+WXjcqr3/Be1P+qUfVXj8qvGpW/ZlR+9aj8taPy + vaPya0bl8XAL4P8ByfjwIQplbmRzdHJlYW0KZW5kb2JqCjEwOCAwIG9iago3NTE1CmVu + ZG9iagoxMDkgMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9Bc2NlbnQgNzcw + IC9DYXBIZWlnaHQgNzIwIC9EZXNjZW50IC0yMzAgL0ZsYWdzIDMyCi9Gb250QkJveCBb + LTEwMTggLTQ4MSAxNDM2IDExNTldIC9Gb250TmFtZSAvWFNOVlhCK0hlbHZldGljYS1C + b2xkIC9JdGFsaWNBbmdsZQowIC9TdGVtViAwIC9NYXhXaWR0aCAxNTAwIC9YSGVpZ2h0 + IDY0NCAvRm9udEZpbGUyIDEwNyAwIFIgPj4KZW5kb2JqCjExMCAwIG9iagpbIDcyMiA3 + MjIgNzIyIDAgMCAwIDc3OCAwIDI3OCAwIDAgMCA4MzMgMCAwIDY2NyAwIDAgMCAwIDcy + MiA2NjcgMCAwIDAgMCAwCjAgMCAwIDAgMCA1NTYgNjExIDU1NiA2MTEgNTU2IDAgMCAw + IDI3OCAwIDU1NiAyNzggODg5IDYxMSA2MTEgMCAwIDM4OSA1NTYKMzMzIDYxMSA1NTYg + Nzc4IDAgNTU2IF0KZW5kb2JqCjM3IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBl + IC9UcnVlVHlwZSAvQmFzZUZvbnQgL1hTTlZYQitIZWx2ZXRpY2EtQm9sZCAvRm9udERl + c2NyaXB0b3IKMTA5IDAgUiAvV2lkdGhzIDExMCAwIFIgL0ZpcnN0Q2hhciA2NSAvTGFz + dENoYXIgMTIxIC9FbmNvZGluZyAvTWFjUm9tYW5FbmNvZGluZwo+PgplbmRvYmoKMTEx + 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 + RcpWwxbjFtNutNuoHoFGGypMZw1sKfcmR1q4nWgn3sXtNnGJSZzZYDIC3jYoFbF2UUWB + gjEOjI7ahMlg3q983Ah44YOoBYPpVV4136LI6LSDAHG2JcMMSBfiwgWYBoS1BgiKGxdo + TSYzhzE1bnML2CSohmYi5KCFrMxFND6Mc3iGCERyirl0I5w3GN7Qg2YYxnXa+/D0kmea + n/H64zOS1dkZam6YKtz4NnZgNmN2+MnwN6+GZ3Xw4ksxvMssPpXIjgVTfIjqCmLhTAf4 + GfoNy/xAyWB+BJqMqvBkHmYuns0v5WQw23g/nXVyOeZhk49JAaB6JPAFEKKVC9wwwapk + RiGLQtneD5YkmCe9Wg0VFdAXSNJKC+sP9KplxSk6toMxvF80YHjdigeRX4Q6mGGhtaS1 + pxm/u55BOzaGYHaMBPmkI1IP/4PwU0cynIRlFFBerPQ1jR3wuR++YE+Ft0s5KA8Nhv/O + KEBDUCkqQ+XSfzyMhH/yof/XMBbdLv3nxQT4b4o70STaaVSNpqCp9H/T4KAzFEslHr7g + QbdVjR5RUp4yon5+U33jnBl10hVSNSRBoNeB6G6Khg2+AeqBJpRAED/AqUBFQGOApgLN + B3oAaB3QM0CvAL0O9DbQZaBvgHpgcJRANqBUoCKgMUBTgeYDPQC0DugZoFeAXgd6G+gy + 0DdAPaAYJZANKBWoKNJ7gGyov4yRcwCfNID3D+ChrVvuzxrAZw/ghwzghw/gywfwFQN4 + APO3PK9yAD9uAD9xAH/HAP7OAfykAfzkATwd6Zv1NX0AP2MAP3MAL9ntTfqeNaB+9gC+ + YQA/ZwA/bwA/fwAv/S/oTc+jO+Cb5b93AL9wAL94AL9kAN84gL9vAN80gF86gF82gF9O + +f8PBCJt3wplbmRzdHJlYW0KZW5kb2JqCjExMiAwIG9iagoxMDEzNQplbmRvYmoKMTEz + IDAgb2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvciAvQXNjZW50IDc3MCAvQ2FwSGVp + Z2h0IDcxNyAvRGVzY2VudCAtMjMwIC9GbGFncyAzMgovRm9udEJCb3ggWy05NTEgLTQ4 + MSAxNDQ1IDExMjJdIC9Gb250TmFtZSAvQVhLSEJGK0hlbHZldGljYSAvSXRhbGljQW5n + bGUgMAovU3RlbVYgMCAvTWF4V2lkdGggMTUwMCAvWEhlaWdodCA2MzcgL0ZvbnRGaWxl + MiAxMTEgMCBSID4+CmVuZG9iagoxMTQgMCBvYmoKWyAyNzggMCAwIDAgMCAwIDAgMCAz + MzMgMzMzIDAgMCAyNzggMCAwIDAgMCA1NTYgNTU2IDAgMCAwIDAgMCAwIDAgMjc4IDAg + MAowIDAgMCAwIDAgMCA3MjIgMCAwIDYxMSA3NzggMCAyNzggMCAwIDAgODMzIDAgMCA2 + NjcgMCAwIDY2NyA2MTEgNzIyIDY2NyA5NDQKMCAwIDAgMCAwIDAgMCAwIDAgNTU2IDU1 + NiA1MDAgNTU2IDU1NiAyNzggNTU2IDU1NiAyMjIgMCA1MDAgMjIyIDgzMyA1NTYgNTU2 + CjU1NiAwIDMzMyA1MDAgMjc4IDU1NiA1MDAgNzIyIDAgNTAwIDUwMCBdCmVuZG9iago4 + NiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250 + IC9BWEtIQkYrSGVsdmV0aWNhIC9Gb250RGVzY3JpcHRvcgoxMTMgMCBSIC9XaWR0aHMg + MTE0IDAgUiAvRmlyc3RDaGFyIDMyIC9MYXN0Q2hhciAxMjIgL0VuY29kaW5nIC9NYWNS + b21hbkVuY29kaW5nCj4+CmVuZG9iagoxMTUgMCBvYmoKPDwgL0xlbmd0aCAxMTYgMCBS + IC9MZW5ndGgxIDE2MjIwIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ab17 + eXxURbZ/Vd211/S+pdd0ujv7SgIhgbQhG0sii0qCBsMSCJsCQlhGeFGBSERUkEWYccCF + VSZNyEAA8TEYBBxHwVFUdBxnRMdZ8nTeD50ZoG+/U7eTCPnNm49/zOfdzqn1LlWnTp36 + nlOVJYuXNiENakUMGj9l2sJZSL6KX0GIicxYMG1hPG+k8dszWpZ443kuBernz1o4e0E8 + Lz6LkNI1e/6KvudNuxAKNjc3TZsZr0c3IS6kBfE8HgJxcvOCJcvjeUMXxK/Of3BGX70p + DPnGBdOW930ffQJ57wPTFjRBDFfx4xAkL3zwoSVyFhWLELcuXNzUdz+ug/a9gzCUZqMH + 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 + 5QCFgcYDNQItBGoFehpoF1AE6DTQRaDPgL6hgwOkA/IC5QCFgcYDNQItBGoFehpoF1AE + 6DTQRaDPgL6hjAHSAXmBcoDCQOOBGoEWArUCPQ20K9Z3IbgG0hh5B+UzBuVzB+XzBuWH + D8rfMShfNig/alC+fFC+clC+alC+elAejI/b+lMzKH/noDzw5rb7Jw3K3zUof/eg/D2D + 8pMH5e8dlKfydSu/pw3KTx+UnzEoP3NQXp4jt4zf7EH1zYPycwbl5w3K0/8Hu7V98v+V + 3/J+atHfWv/goDzI2G31iwflHxqUXzIov3RQvmVQftmg/PJB+RWD8itp/n8Ao+OK2wpl + bmRzdHJlYW0KZW5kb2JqCjExNiAwIG9iagoxMDkxNgplbmRvYmoKMTE3IDAgb2JqCjw8 + IC9UeXBlIC9Gb250RGVzY3JpcHRvciAvQXNjZW50IDc3MCAvQ2FwSGVpZ2h0IDczNyAv + RGVzY2VudCAtMjMwIC9GbGFncyAzMgovRm9udEJCb3ggWy05NTEgLTQ4MSAxNDQ1IDEx + MjJdIC9Gb250TmFtZSAvSU5BT1JIK0hlbHZldGljYSAvSXRhbGljQW5nbGUgMAovU3Rl + bVYgMCAvTWF4V2lkdGggMTUwMCAvWEhlaWdodCA1NDAgL0ZvbnRGaWxlMiAxMTUgMCBS + ID4+CmVuZG9iagoxMTggMCBvYmoKWyAyNzggMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDI3 + OCAwIDAgMCAwIDU1NiA1NTYgMCAwIDAgMCAwIDAgMCAyNzggMCAwIDAgMAowIDAgNjY3 + IDY2NyA3MjIgNzIyIDAgNjExIDc3OCA3MjIgMjc4IDAgMCAwIDgzMyAwIDc3OCA2Njcg + MCAwIDY2NyA2MTEgNzIyCjY2NyA5NDQgMCAwIDAgMjc4IDAgMjc4IDAgMCAwIDU1NiA1 + NTYgNTAwIDU1NiA1NTYgMCA1NTYgNTU2IDIyMiAwIDUwMCAyMjIKODMzIDU1NiA1NTYg + NTU2IDAgMzMzIDUwMCAyNzggNTU2IDUwMCA3MjIgNTAwIDUwMCA1MDAgXQplbmRvYmoK + MzYgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1RydWVUeXBlIC9CYXNlRm9u + dCAvSU5BT1JIK0hlbHZldGljYSAvRm9udERlc2NyaXB0b3IKMTE3IDAgUiAvV2lkdGhz + IDExOCAwIFIgL0ZpcnN0Q2hhciAzMiAvTGFzdENoYXIgMTIyIC9FbmNvZGluZyAvTWFj + Um9tYW5FbmNvZGluZwo+PgplbmRvYmoKMTE5IDAgb2JqCjw8IC9MZW5ndGggMTIwIDAg + UiAvTGVuZ3RoMSAxMDE0MCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAG9 + Ogt0VNW1+9zvfJOZSeYbwszNzGTyT/gkw5BAbkISAiEQAsEEk5oBQgOCBsQgIhZBGwi2 + alsFKa9qS1vE2k6CxUGURyn+pUXFJyJKrahYjFiLnwpz5+1zZ0ghz9XlWs/Ve2ffff5n + n7332Wefc2bVyhu7wAjrgYWm+eGexaA+/pcAyNGFy8M9iXhaCeL+hb2rPIk4nwPAfn9x + z3eXJ+KaCIDO991la5L10z4CMHd3d4UXJfLhIuIympCIk/GIfd3LV92UiFuOIW5fdv3C + ZH7akxgvWR6+Kdk/nMS457rw8q5Eef9OxDk919+wKhmfi7ipZ2VXsjxpRfr+DART7bAU + tLAMNMCACd92APGMzgcc5tJ8hKrClgevSa34DMwatbmfB4rW08Az0pP//OLkxYD+Vm0d + ltOq5WkG1hFylVwAA8H8N/W3DufQXPrYo9CcH4V6hMkI4xHy8gc08hPkbkjvOC9riZsD + vfu48+MDpAj5/776jZAi2WAE7cKNFe6FGzfW51ZpSQMEOQJuUgs+FdcM+h5xR8nkQZ8X + 0aQEYgaDmRgDWRv0uWPBBe6LwaiGyBnuL30/dn+B8Lmv0v2Zb4z7ZSx3NDjVfaQK8wfd + L+ZFGUQv+KIckVPdz/luc/8+mOt+LFjuHgxg2qB7oArRXvfO4G3uX9yupvw8T0UP+aJk + +6D7QYr2uh/A9u/bqGbcm6i4IYF6blc7un6Piq7bE2Ue2ete7st2L8CKRNa7O3zL3O2+ + kHtuVZT4B92NtNpe94zAEXcD7XrQLSc6Kku0XupTKR6b6LbAt9+dk+ghi5aW09we3wx3 + JrZf8OB97gLfd9xVeVGy6/H6nDxffeC+sig5r/ZBERJK0XUJtDDwFPk1TIVcMh/85P49 + 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 + FxvHLGYeQJ1bFz/DtaDOOXFOzZCLdDaXLc82wTZP7BIFF1oqwZZi1PG+dL3LqAu4HHrX + KFLmcGaM+pfSUXlaQo2xY6onEgqh5lHHg1zu/9F1V6RLLyXNTx6yBVb+qAyv8JSznMc2 + Zd3cT+cWk4+46tj1HcVzeuUlzOwLB7bzY9MqCn7buZ+5JxN5l4K2RsK7ZwOE6L9JIAp8 + cRQ0CIDAIuiKn8Dx4NkDrndPoNW4FDIkQyVjiJRBXTl1x5rG9BHpV7tJrnJYefORR5Xj + 1BHfzVVfPMeaLxxgXRffx3DSz7cqU7km5BE9gXhD7gno5ukW6+7V7dS9qkMjTwRhlGg2 + Fooe4yRxjLFB7BDpjF0trjEa7allxj7tJv02fVQvpKcbNEbGYzAELHq9ThAZt0YTwH09 + DRp1VoNeqxFELbiZgjS3KTVdtKEypBj1higx7MEMHWLZkPYjjbPLans4oRW9M883nnZc + DIVCFIbd28rG07HTaODU3T2yg+DmnsfVo/mmm58el9zY0zC6iqFiKqwVuHy4ia0sOJkE + Elxi0AnIDpABX94MlzOfU3rIpI/fwV18/7Jbn8ouKiIbXmYYncW8zMCtvHiS9V04qrxw + L2EFPKJhqLLjPwPo7fLXPXZM9KFdz8Z7zQIYh7f69KZ8KtTjrf1MmIU2ezY04233VXhD + PZ/+Ywmlb0Ggj0DPf2ZVT2+tr8mv71rW27VqycJwYfX1yxbRUpcejOD/BoCuT3A3woMI + EYSDCEcR/oLwSaICMSH2IJQgyAhNCJ0IPQjrEe5GeBAhgnAwnnwAn+EwwTOwK+PVI+Lq + 9L+s/NQR+dNGxJGGK9pvGRGfNyIeHhGn47+cPlUOl/W/ZET+tSPiy0bE1f+5XVb/uhH5 + 14+IrxwRXzUifuOI+OoR8TU0/r8XP57WCmVuZHN0cmVhbQplbmRvYmoKMTIwIDAgb2Jq + CjY1NTUKZW5kb2JqCjEyMSAwIG9iago8PCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL0Fz + Y2VudCA3NzAgL0NhcEhlaWdodCA3MjAgL0Rlc2NlbnQgLTIzMCAvRmxhZ3MgMzIKL0Zv + bnRCQm94IFstMTAxOCAtNDgxIDE0MzYgMTE1OV0gL0ZvbnROYW1lIC9PQkpYSEQrSGVs + dmV0aWNhLUJvbGQgL0l0YWxpY0FuZ2xlCjAgL1N0ZW1WIDAgL01heFdpZHRoIDE1MDAg + L1hIZWlnaHQgNjQ0IC9Gb250RmlsZTIgMTE5IDAgUiA+PgplbmRvYmoKMTIyIDAgb2Jq + ClsgNzIyIDcyMiA3MjIgMCAwIDAgNzc4IDAgMjc4IDAgMCAwIDAgMCAwIDY2NyAwIDAg + MCAwIDcyMiA2NjcgMCAwIDAgMCAwIDAKMCAwIDAgMCA1NTYgMCAwIDYxMSA1NTYgMCAw + IDAgMjc4IDAgNTU2IDI3OCA4ODkgNjExIDYxMSAwIDAgMzg5IDAgMzMzIDYxMQowIDc3 + OCAwIDU1NiBdCmVuZG9iago4NSAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAv + VHJ1ZVR5cGUgL0Jhc2VGb250IC9PQkpYSEQrSGVsdmV0aWNhLUJvbGQgL0ZvbnREZXNj + cmlwdG9yCjEyMSAwIFIgL1dpZHRocyAxMjIgMCBSIC9GaXJzdENoYXIgNjUgL0xhc3RD + aGFyIDEyMSAvRW5jb2RpbmcgL01hY1JvbWFuRW5jb2RpbmcKPj4KZW5kb2JqCjEyMyAw + IG9iagooTWFjIE9TIFggMTAuNi40IFF1YXJ0eiBQREZDb250ZXh0KQplbmRvYmoKMTI0 + IDAgb2JqCihEOjIwMTAwNjIwMDAyOTI4WjAwJzAwJykKZW5kb2JqCjEgMCBvYmoKPDwg + L1Byb2R1Y2VyIDEyMyAwIFIgL0NyZWF0aW9uRGF0ZSAxMjQgMCBSIC9Nb2REYXRlIDEy + NCAwIFIgPj4KZW5kb2JqCnhyZWYKMCAxMjUKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAw + MTE2NzI4IDAwMDAwIG4gCjAwMDAwNzc5OTggMDAwMDAgbiAKMDAwMDAwMzU3MCAwMDAw + MCBuIAowMDAwMDc3ODI3IDAwMDAwIG4gCjAwMDAwMDAwMjIgMDAwMDAgbiAKMDAwMDAw + MzU1MCAwMDAwMCBuIAowMDAwMDAzNjc0IDAwMDAwIG4gCjAwMDAwNDk1MjggMDAwMDAg + biAKMDAwMDAwODUzMSAwMDAwMCBuIAowMDAwMDA5MDY2IDAwMDAwIG4gCjAwMDAwMDQ1 + NjQgMDAwMDAgbiAKMDAwMDAwNTIwNCAwMDAwMCBuIAowMDAwMDA1OTM4IDAwMDAwIG4g + CjAwMDAwMDY3MDIgMDAwMDAgbiAKMDAwMDAxMzUxOSAwMDAwMCBuIAowMDAwMDE0Mzkw + IDAwMDAwIG4gCjAwMDAwMDM5OTYgMDAwMDAgbiAKMDAwMDAwNDU0NCAwMDAwMCBuIAow + MDAwMDA5OTA4IDAwMDAwIG4gCjAwMDAwMTE1MDAgMDAwMDAgbiAKMDAwMDAwNjcyMiAw + MDAwMCBuIAowMDAwMDA4NTEwIDAwMDAwIG4gCjAwMDAwMDkwODYgMDAwMDAgbiAKMDAw + MDAwOTg4OCAwMDAwMCBuIAowMDAwMDExNTIxIDAwMDAwIG4gCjAwMDAwMTIwMzUgMDAw + MDAgbiAKMDAwMDAwNTIyNCAwMDAwMCBuIAowMDAwMDA1OTE4IDAwMDAwIG4gCjAwMDAw + MTQ0MTAgMDAwMDAgbiAKMDAwMDAxNDk4NiAwMDAwMCBuIAowMDAwMDEyODg3IDAwMDAw + IG4gCjAwMDAwMTM0OTkgMDAwMDAgbiAKMDAwMDAxMjA1NSAwMDAwMCBuIAowMDAwMDEy + ODY3IDAwMDAwIG4gCjAwMDAwNTAzOTIgMDAwMDAgbiAKMDAwMDEwOTE5MSAwMDAwMCBu + IAowMDAwMDg2NTE1IDAwMDAwIG4gCjAwMDAwNTY1MTYgMDAwMDAgbiAKMDAwMDAyNTQy + MyAwMDAwMCBuIAowMDAwMDI3Mzc0IDAwMDAwIG4gCjAwMDAwMjczOTUgMDAwMDAgbiAK + MDAwMDAyOTY4NSAwMDAwMCBuIAowMDAwMDI5NzA2IDAwMDAwIG4gCjAwMDAwMzIwNjQg + MDAwMDAgbiAKMDAwMDAxODA4MSAwMDAwMCBuIAowMDAwMDIwNTk4IDAwMDAwIG4gCjAw + MDAwMzQwNTMgMDAwMDAgbiAKMDAwMDAzODQ3NyAwMDAwMCBuIAowMDAwMDQ2NzU3IDAw + MDAwIG4gCjAwMDAwNDg2NDcgMDAwMDAgbiAKMDAwMDAyMDYxOSAwMDAwMCBuIAowMDAw + MDIyNzM5IDAwMDAwIG4gCjAwMDAwMzg0OTggMDAwMDAgbiAKMDAwMDA0Mjc1MCAwMDAw + MCBuIAowMDAwMDQyNzcxIDAwMDAwIG4gCjAwMDAwNDQ1NTMgMDAwMDAgbiAKMDAwMDAy + Mjc2MCAwMDAwMCBuIAowMDAwMDI1NDAyIDAwMDAwIG4gCjAwMDAwNDQ1NzQgMDAwMDAg + biAKMDAwMDA0NjczNiAwMDAwMCBuIAowMDAwMDE1MDA2IDAwMDAwIG4gCjAwMDAwMTgw + NjAgMDAwMDAgbiAKMDAwMDAzMjA4NSAwMDAwMCBuIAowMDAwMDM0MDMyIDAwMDAwIG4g + CjAwMDAwNDg2NjggMDAwMDAgbiAKMDAwMDA0OTUwOCAwMDAwMCBuIAowMDAwMDQ5NTY0 + IDAwMDAwIG4gCjAwMDAwNTAzNzIgMDAwMDAgbiAKMDAwMDA1MDQyOSAwMDAwMCBuIAow + MDAwMDU2NDk1IDAwMDAwIG4gCjAwMDAwNTk4NjEgMDAwMDAgbiAKMDAwMDA1NjU1MyAw + MDAwMCBuIAowMDAwMDU5ODQwIDAwMDAwIG4gCjAwMDAwNTk5NjggMDAwMDAgbiAKMDAw + MDA2MTU3NyAwMDAwMCBuIAowMDAwMDYyMDc1IDAwMDAwIG4gCjAwMDAwNjExMzggMDAw + MDAgbiAKMDAwMDA2MTU1NyAwMDAwMCBuIAowMDAwMDYwMTk3IDAwMDAwIG4gCjAwMDAw + NjA2MjEgMDAwMDAgbiAKMDAwMDA2MjA5NSAwMDAwMCBuIAowMDAwMDYyNDcyIDAwMDAw + IG4gCjAwMDAwNjA2NDEgMDAwMDAgbiAKMDAwMDA2MTExOCAwMDAwMCBuIAowMDAwMTE2 + NDUwIDAwMDAwIG4gCjAwMDAwOTc0NjAgMDAwMDAgbiAKMDAwMDA3Nzc5MCAwMDAwMCBu + IAowMDAwMDY4MDYzIDAwMDAwIG4gCjAwMDAwNjk4OTIgMDAwMDAgbiAKMDAwMDA2NDQx + OSAwMDAwMCBuIAowMDAwMDY2MjQwIDAwMDAwIG4gCjAwMDAwNjYyNjEgMDAwMDAgbiAK + MDAwMDA2ODA0MiAwMDAwMCBuIAowMDAwMDYyNDkyIDAwMDAwIG4gCjAwMDAwNjQzOTgg + MDAwMDAgbiAKMDAwMDA2OTkxMyAwMDAwMCBuIAowMDAwMDcxNjgyIDAwMDAwIG4gCjAw + MDAwNzE3MDMgMDAwMDAgbiAKMDAwMDA3Nzc2OSAwMDAwMCBuIAowMDAwMDc3OTE3IDAw + MDAwIG4gCjAwMDAwNzgzNTMgMDAwMDAgbiAKMDAwMDA3ODA0OCAwMDAwMCBuIAowMDAw + MDc4MzMwIDAwMDAwIG4gCjAwMDAwNzgxNTggMDAwMDAgbiAKMDAwMDA3ODMwNyAwMDAw + MCBuIAowMDAwMDc4MjY4IDAwMDAwIG4gCjAwMDAwNzg0NjMgMDAwMDAgbiAKMDAwMDA4 + NjA3MSAwMDAwMCBuIAowMDAwMDg2MDkzIDAwMDAwIG4gCjAwMDAwODYzMjYgMDAwMDAg + biAKMDAwMDA4NjY5NyAwMDAwMCBuIAowMDAwMDk2OTI1IDAwMDAwIG4gCjAwMDAwOTY5 + NDggMDAwMDAgbiAKMDAwMDA5NzE3NSAwMDAwMCBuIAowMDAwMDk3NjM3IDAwMDAwIG4g + CjAwMDAxMDg2NDYgMDAwMDAgbiAKMDAwMDEwODY2OSAwMDAwMCBuIAowMDAwMTA4ODk2 + IDAwMDAwIG4gCjAwMDAxMDkzNjggMDAwMDAgbiAKMDAwMDExNjAxNiAwMDAwMCBuIAow + MDAwMTE2MDM4IDAwMDAwIG4gCjAwMDAxMTYyNzEgMDAwMDAgbiAKMDAwMDExNjYzMiAw + MDAwMCBuIAowMDAwMTE2Njg1IDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgMTI1IC9S + b290IDEwMCAwIFIgL0luZm8gMSAwIFIgL0lEIFsgPDJkZGNmZjQwNWUzNzdmY2UwODZm + YjRkOTAzNGQzOGVjPgo8MmRkY2ZmNDA1ZTM3N2ZjZTA4NmZiNGQ5MDM0ZDM4ZWM+IF0g + Pj4Kc3RhcnR4cmVmCjExNjgwNgolJUVPRgozIDAgb2JqCjw8L1R5cGUgL1BhZ2UgL0Nv + bnRlbnRzIDUgMCBSIC9NZWRpYUJveCBbMCAwIDc1NiA1NTNdIC9QYXJlbnQgNCAwIFIg + L1Jlc291cmNlcyA3IDAgUiA+PgplbmRvYmoKNzEgMCBvYmoKPDwvVHlwZSAvUGFnZSAv + Q29udGVudHMgNzIgMCBSIC9NZWRpYUJveCBbMCAwIDc1NiA1NTNdIC9QYXJlbnQgNCAw + IFIgL1Jlc291cmNlcyA3NCAwIFIgPj4KZW5kb2JqCjEgMCBvYmoKPDwvQXV0aG9yIChL + b25zdGFudGluIEdyZWRlc2tvdWwpL0NyZWF0aW9uRGF0ZSAoRDoyMDEwMDYxOTIzMDMw + MFopL0NyZWF0b3IgKE9tbmlHcmFmZmxlIDUuMi4zKS9Nb2REYXRlIChEOjIwMTAwNjIw + MDAyOTAwWikvUHJvZHVjZXIgMTIzIDAgUiAvVGl0bGUgKHVtbC5ncmFmZmxlKT4+CmVu + ZG9iagp4cmVmCjEgMQowMDAwMTE5Njc3IDAwMDAwIG4gCjMgMQowMDAwMTE5NDY4IDAw + MDAwIG4gCjcxIDEKMDAwMDExOTU3MSAwMDAwMCBuIAp0cmFpbGVyCjw8L0lEIFs8MmRk + Y2ZmNDA1ZTM3N2ZjZTA4NmZiNGQ5MDM0ZDM4ZWM+IDwyZGRjZmY0MDVlMzc3ZmNlMDg2 + ZmI0ZDkwMzRkMzhlYz5dIC9JbmZvIDEgMCBSIC9QcmV2IDExNjgwNiAvUm9vdCAxMDAg + MCBSIC9TaXplIDEyNT4+CnN0YXJ0eHJlZgoxMTk4NTUKJSVFT0YK + + QuickLookThumbnail + + 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 + AG8AcgAgAEwAQwBEAEMAbwBsAG8AcgAgAEwAQwBEAEYAYQByAGcAZQAtAEwAQwBEAEwA + QwBEACAAYwBvAHUAbABlAHUAcgBMAEMARAAgAEMAbwBsAG8AcgBpAGQAbwBMAEMARAAg + AGEAIABDAG8AcgBlAHNfaYJyACAATABDAEQATABDAEQAIABjAG8AbABvAHIwqzDpMPwA + IABMAEMARAQmBDIENQRCBD0EPgQ5ACAEFgQaAC0ENAQ4BEEEPwQ7BDUEOQBGAOQAcgBn + AC0ATABDAERfaYJybbJmdphveTpWaABGAGEAcgBiAC0ATABDAEQAVgDkAHIAaQAtAEwA + QwBEAEwAQwBEACAAYwBvAGwAbwByAGnO7LfsACAATABDAEQAAHRleHQAAAAAQ29weXJp + Z2h0IEFwcGxlLCBJbmMuLCAyMDEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA + 81IAAQAAAAEWz1hZWiAAAAAAAABfQgAANf0AAAboWFlaIAAAAAAAAG3tAACwhQAAGyxY + WVogAAAAAAAAKaYAABl9AACxGWN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAt + ADIANgA7AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCjAKgA + rQCyALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4 + AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB + +gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALr + AvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBME + IAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWG + BZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysH + PQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAkl + CToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1EL + aQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3e + DfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQ + uRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MTpBPF + E+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0X + QRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrs + GxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+Hukf + Ex8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNm + I5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfcKA0o + PyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1B + LXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy + 1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiM + OMg5BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+ + 4D8hP2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVV + RZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpM + cky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1Oq + U/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0Vb + lVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OX + Y+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2una/9s + V2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUo + dYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+ + wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhp + iM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS + 45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc951k + ndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfgqFKo + xKk3qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQl + tJy1E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XA + cMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1 + zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ + 8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf + 56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1 + UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf//cGFyYQAAAAAAAwAA + AAJmZgAA8qcAAA1ZAAAT0AAACsB2Y2d0AAAAAAAAAAAAAwEAAAIAAAACAAgAFAAmAD8A + XgCEALAA5QEVAUEBcgGoAeQCJgJvAr4DFAN3A+EEUwTNBVMF4gZ5BxcHwwh0CS0J9ArG + C6EMgg1mDksPMhAgERMSChMEFAUVBxYPFyMYNhlMGmgbixyzHdsfCCA5IWwioSPnJTMm + fSfKKRgqZSuxLPwuSC+RMNkyITNjNKM14TcbOFQ5jDrBO/M9JD5SP41Ay0IGQz1EdkWn + RthIBkk1Sl5LgUyiTcJO3U/2UQ5SI1M5VE1VYFZzV4VYmVmsWr1b0FzhXfFfAmAQYSBi + MWM+ZExlW2ZtZ3tojGmaaqBrjmx0bVpuRm8zcCFxE3IJcwNz/nT7dft2/ngCeQh6EXsa + fCN9Jn4gfxyAF4ESgguDBIP/hPqF84bsh+eI44neitqL14zUjdaO+JBqkfmTf5UBln+X + 7ZlPmqqb+J07nnCfoKDCoeKi+qQOpSGmQ6d4qLSp76sqrGOtmq7Kr/2xLLJWs4C0qbXN + tvS4F7k3ule7ZLxlvWe+ar9qwGvBbsJzw3jEgMWLxpnHq8jBydrK9MwNzRbOEM8Iz/7Q + 89Hj0tHTwNSw1Z/WkdeE2HzZdtpy23PcTd0D3ZzeOt7c34fgN+Ds4aniauMx4/vkyeWY + 5mjnN+gF6Mvpguo16ubrl+xP7Q/t3O7A77zw2/Iv88P1t/hY/Eb//wAAAAEABgAOABkA + KgA+AFcAdQCXAL8A6wEbAU0BgwG/AgACTgKjAv0DZgPWBFAE1AVgBfQGlAc+B/EIqQlq + CjULCAvcDLINiw5pD0wQMhEZEgcS/RPzFO0V8Bb3F/8ZDBogGzscVB1xHpQftiDeIhIj + TySIJcYnAyhAKX0qtyv0LTAuZi+eMNIyBDM0NF81iTayN9g4/DoeO0E8bj2fPsw/+EEi + QkhDbESORbBGzUflSPtKEEsgTC5NOk5ET01QWVFgUmdTblR0VXtWgFeIWI5ZlFqbW6Fc + p12vXrRfuWDCYcti02PbZOJl4GbMZ7Jolml/amtrV2xGbTluMW8pcCNxIHIfcyB0JHUq + djB3NXg4eTR6MnsvfCx9J34ifx+AG4EWghCDDIQIhQOF/4b7h/eI94oRi3CM5Y5Sj76R + JJKAk9OVH5Zil5yYzZn3mxycPJ1YnnCfiaC0ofqjSKSSpd+nJ6hsqayq7KwqrWSumq/R + sQSyOLNptJi1yrcHuEW5hLrGvAO9Pb57v7bA7MIiw1TEhcWzxuHIC8kzylbLbMx5zYPO + iM+L0InRhdJ/03rUdNVw1mzXbthy2Xjag9uJ3Ibdft51323gZuFe4ljjUeRL5UjmRudF + 6EbpSOpM61DsS+027hju7u/B8JHxZfJA8yT0GPUn9lj3tPlU+1r9+v//AAAACAAQABkA + IQApADoAUQBtAI0AsgDcAQcBKAFNAXUBoAHOAgACPAJ9AsIDCwNfA7cEFQR9BOoFXgXW + BlcG4AdtB/8IkAklCb0KVwr0C5IMNQzbDYQOMQ7jD5YQTREGEcMShBNIFA0U1hWdFmoX + QhghGPwZ3Rq7G5oceR1XHjgfFx/zINEhrSKHI2AkOCUOJeMmuCeLKF0pLyoQKvQr1yy4 + LZgudy9UMDIxDjHpMsEzlzRtNUE2FDbmN7c4iDlaOik69zvGPJU9ZD4xPwI/0UCgQXBC + QUMRQ+FEsUWARlFHIUfySMFJj0pbSxpL10yVTVVOGU7cT6JQbFE5UgVS01OiVHNVRVYY + VuxXv1iTWWdaPVsYW/JczV2mXoBfXGA4YRJh7GLIY6Rkf2VcZjhnE2fwaMxppGp5a0xs + Imz3bclumG9ncDFw9nG4cnZzLXPhdJN1P3Xudqd3gXhneU96PHssfBx9EH4JfwN//oD7 + gfmC+IP4hPaF8ob4iBmJTYqCi7uM8Y4nj2OQn5HbkxuUW5WdluGYJ5lumrWb+Z0xnl2f + iaC0od+jB6QxpV6mkqfHqQOqRauOrN2uMa+NsOiyRrOotQu2dLffuVG6xrw+vbi/OsC+ + wkTDzsVVxuDIbcoPy7nNUs7o0ILSLdPq1cDXx9oK3I3ff+L250/tGPYD//8AAG5kaW4A + AAAAAAAGNgAAmH8AAFfbAABULAAAkA0AACkPAAAXCgAAUA0AAFQ5AAH64QAB49cAAR64 + AAMBAAACAAAALwB3ALwA+wE4AXIBrAHkAh0CVAKKAsAC9wMwA2sDpgPiBB8EXQSbBNsF + GwVaBZsF3QYfBmIGpAboBy0Hcge4B/4ISAiOCNQJGgliCasJ9Ao/CosK2AsnC3cLyAwb + DG8MxQ0cDXYN0Q4vDo4O8A9TD7gQHxCIEPQRYRHREj4SqxMZE4oT/hRyFOoVZRXgFmAW + 3xdjF+sYdhkCGZIaJhq8G1Ub8RyOHS4d0R51HxwfxCBtIRwhySJ6Iy4j5CSbJVcmEibQ + J5IoVikaKd8qqCtxLD8tDy38LvUv8TDpMeIy3TPWNM01wja6N7E4qDmfOpg7jzyHPYI+ + fz+IQJtBq0LAQ9hE9kYTRzBIVEl6SqFLyUz1TiFPT1CAUbJS0lPCVIZVTVYXVudXuFiL + WWJaQVsoXBRdBV3/Xv9gC2EiYj5jZ2SUZcpnCmhMaZFquWvbbPpuHG9AcGZxkHK+c/R1 + KHZfd5944Xone298vn4Mf12AuYIRg3OE+IaGiBOJoYs5jNCOY4/6kZGTJJS3lkiX1Jle + muecb533n5ShVqMepOymwKihqoisca5asEiyM7Qetf+347nBu5y+HcFIxFDHMMnvzJfP + KdGs1CjWodkh26PeSeEz5DbnOeoT7LbvFfE38xX0u/Yv9334rfmn+pr7U/wN/Kj9J/2m + /iX+wf9g//8AAABHAJUA2gEZAVUBkAHJAgECOgJyAqoC5AMgA10DmwPaBBsEXASdBOAF + JAVnBasF8QY3Bn0GwwcLB1QHnQfnCDMIfgjICREJXQmpCfYKRQqVCuYLOQuOC+MMOgyU + DO4NSw2qDgsObg7UDzwPpRAREH8Q8BFjEdcSSRK6Ey4TpRQdFJgVFhWWFhkWnRckF7AY + PxjRGWUZ/hqaGzkb2xx/HSQdzh56Hygf2SCLIUEh9iKwI2wkKCToJasmbCczJ/0oximP + Kl4rKyv/LNEtuy6zL7EwrTGnMqQzoDSaNZI2jTeHOIE5ezp2O3A8az1pPmk/cECAQY5C + oEO1RNBF7EcGSCdJTEpyS5lMw03wTx5QT1GDUq5TrVR/VVRWLFcLV+hYylmxWp9bk1yK + XYtekV+fYLZh02L4ZCRlU2aMZ8hpBWoxa0dsWW1obn9vk3Ctccly63QSdTl2YneTeMZ5 + /ns3fHZ9tX72gD6Bh4LQhBCFToaQh9CJEIpWi6KM7Y43j4iQ4JI1k5SU9JZal8KZLZqe + nBOdjZ8RoK6iVaQDpbmnd6lBqw+s5K63sJKyaLRCtg+34bmuu3W9UL8/wTTDMMUpxyXJ + I8sjzSfPKNEo0yfVJ9cm2SfbJN0r31zhruQo5rHpSOvN7jfwfvKQ9G/2IPej+P76Lvs8 + /Df9B/3N/sr//wAAAEwAwQEoAYYB3gI1AogC3AM0A44D6wRKBKoFDAVuBdIGOAaeBwUH + bwfZCEgIsgkaCYcJ8wpkCtYLTQvEDD8Mvg0+DcQOTQ7aD2sQABCYETUR1hJuEwcTpBRF + FOkVkhY+Fu0XoRhbGRgZ2xqiG20cPR0OHeYewh+hIIMhaiJRIz4kLCUeJhMnCygJKQgq + CisQLBwtLS5WL4gwuDHnMxk0RzVzNqQ31DkFOjk7bDykPd8/HUBaQZRC0kQURVtGoEfp + STlKikvbTTNOi0/oUUlSqFQUVYhXBVh/WgBbjl0iXsJgdWI3ZBBl+mf7afdrlm0ibq1w + MHGzczh0uHYzd7J5L3qtfC19rX8vgL2CRoO5hQGGTYeZiOGKLouAjM+OGo9pkLqSB5NX + lKeV95dImJeZ55s5nIyd4Z8/oLOiLKOnpSWmpKgoqbCrMqy3rjOvsbEssp20EbV7tuO4 + Srmtuwq8bL3NvyzAisHqw0jEosX9x1TIq8oAy1TMqc39z03QnNHr0znUitXW1yfYetnJ + 2xrcaN2n3t3gHuFp4rfkBuVZ5qHn4+kf6lPrfuyi7bTuue+x8J7xiPJe8y/z7/Sl9Vj1 + +faa9zT3vfhG+M/5Pvms+hr6ifrh+zb7i/vg/DX8ffy0/Ov9Iv1Z/ZH9yP3//jf+cP6p + /uL/G/9U/43/xv//AABzZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMA + AAPcAADAbG1tb2QAAAAAAAAGEAAAnIUAAAAAxHyvAAAAAAAAAAAAAAAAAAAAAAA= + + ReadOnly + NO + Sheets + + + ActiveLayerIndex + 0 + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {756, 553}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + DisplayScale + 1 0/72 in = 1.0000 in + GraphicsList + + + Class + TableGroup + Graphics + + + Bounds + {{453.846, 443.846}, {165, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 114 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs20 \cf0 Move} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{453.846, 455.846}, {165, 36}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 115 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs20 \cf0 int x\ +int y\ +int color} + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 114 + 115 + + + ID + 113 + + + Bounds + {{239.07, 162.069}, {90, 22}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Color + + w + 0 + + Font + Helvetica + Size + 10 + + ID + 112 + Line + + ID + 109 + Position + 0.67704164981842041 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs20 \cf0 UIPlayerInputable} + + Wrap + NO + + + Bounds + {{155.808, 192.077}, {78, 22}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Color + + w + 0 + + Font + Helvetica + Size + 10 + + ID + 111 + Line + + ID + 110 + Position + 0.70049923658370972 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs20 \cf0 boardDrawable} + + Wrap + NO + + + Class + LineGraphic + Head + + ID + 48 + + ID + 110 + Points + + {194.808, 354.115} + {194.808, 138.5} + + Style + + stroke + + HeadArrow + FilledArrow + HeadScale + 1.125 + TailArrow + 0 + + + Tail + + ID + 52 + + + + Class + LineGraphic + Head + + ID + 48 + + ID + 109 + Points + + {406.825, 246.052} + {225.513, 138.256} + + Style + + stroke + + HeadArrow + FilledArrow + HeadScale + 1.125 + TailArrow + 0 + + + Tail + + ID + 105 + + + + Class + LineGraphic + Head + + ID + 92 + + ID + 108 + Points + + {417.347, 245.808} + {417.347, 152.5} + + Style + + stroke + + HeadArrow + UMLInheritance + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 105 + + + + Class + TableGroup + Graphics + + + Bounds + {{351.847, 246.308}, {131, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 105 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs20 \cf0 UIPlayer} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{351.847, 258.308}, {131, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 106 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs20 \cf0 boardViewController} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{351.847, 270.308}, {131, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 107 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs20 \cf0 moveChosen: move} + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 105 + 106 + 107 + + + ID + 104 + + + Class + LineGraphic + Head + + ID + 52 + + ID + 103 + Points + + {92.3969, 270.638} + {187.603, 354.285} + + Style + + stroke + + HeadArrow + FilledArrow + HeadScale + 1.125 + TailArrow + 0 + + + Tail + + ID + 44 + + + + Class + LineGraphic + Head + + ID + 88 + + ID + 101 + Points + + {341.039, 402.61} + {453.346, 402.607} + + Style + + stroke + + HeadArrow + FilledArrow + HeadScale + 1.125 + TailArrow + 0 + + + Tail + + ID + 53 + + + + Class + TableGroup + Graphics + + + Bounds + {{351.847, 92}, {131, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 90 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs20 \cf0 AbstractPlayer} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{351.847, 104}, {131, 24}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 91 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs20 \cf0 game\ +color} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{351.847, 128}, {131, 24}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 92 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs20 \cf0 startThinking: board\ +stopThinking} + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 90 + 91 + 92 + + + ID + 89 + + + Class + TableGroup + Graphics + + + Bounds + {{453.846, 354.615}, {165, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 86 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs20 \cf0 Board} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{453.846, 366.615}, {165, 24}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 87 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs20 \cf0 size\ +matrix : int[][]} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{453.846, 390.615}, {165, 24}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 88 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs20 \cf0 saveMove: move\ +isGameOver: boolean} + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 86 + 87 + 88 + + + ID + 85 + + + Bounds + {{310.334, 213.835}, {16, 22}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Color + + w + 0 + + Font + Helvetica + Size + 10 + + ID + 97 + Line + + ID + 96 + Position + 0.57292914390563965 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs20 \cf0 2} + + Wrap + NO + + + Class + LineGraphic + Head + + ID + 91 + + ID + 96 + Points + + {200.603, 354.245} + {406.093, 128.37} + + Style + + stroke + + HeadArrow + FilledArrow + HeadScale + 1.125 + TailArrow + 0 + + + Tail + + ID + 52 + + + + Class + TableGroup + Graphics + + + Bounds + {{502.154, 246.308}, {131, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 73 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs20 \cf0 AIPlayer} + VerticalPad + 0 + + TextPlacement + 0 + + + ID + 72 + + + Class + LineGraphic + Head + + ID + 92 + + ID + 99 + Points + + {559.223, 246.009} + {433.808, 152.299} + + Style + + stroke + + HeadArrow + UMLInheritance + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 73 + + + + Class + TableGroup + Graphics + + + Bounds + {{49.0769, 354.615}, {291.462, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 52 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs20 \cf0 Game} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{49.0769, 366.615}, {291.462, 72}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 53 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs20 \cf0 board : Board\ +players[]: Player\ +moveHistory[] : Move\ +currentPlayerIndex: int\ +gameStarted: boolean\ +} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{49.0769, 438.615}, {291.462, 60}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 54 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs20 \cf0 initGameWithPlayersAndSize: player1, player2, size\ +startGame\ +stopGame\ +makeMove: move, player\ +} + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 52 + 53 + 54 + + + ID + 51 + + + Class + LineGraphic + Head + + ID + 48 + + ID + 49 + Points + + {91.6202, 221.957} + {176.234, 138.351} + + Style + + stroke + + HeadArrow + FilledArrow + HeadScale + 1.125 + TailArrow + 0 + + + Tail + + ID + 42 + + + + Class + TableGroup + Graphics + + + Bounds + {{120.731, 42}, {148.154, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 46 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs20 \cf0 GameBoardViewController} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{120.731, 54}, {148.154, 48}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 47 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs20 \cf0 boardScrollView\ +boardView\ +cells\ +mainController} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{120.731, 102}, {148.154, 36}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 48 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs20 \cf0 selectBoardCell: cell\ +acceptUserInputFor: player\ +showMove: move} + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 46 + 47 + 48 + + + ID + 45 + + + Class + TableGroup + Graphics + + + Bounds + {{13.8461, 222.308}, {142.692, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 42 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs20 \cf0 GomokuViewController} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{13.8461, 234.308}, {142.692, 24}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 43 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs20 \cf0 gameBoardController\ +game} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{13.8461, 258.308}, {142.692, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + FontInfo + + Font + Helvetica-Bold + Size + 11 + + ID + 44 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs20 \cf0 startGameWithPlayers: int} + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 42 + 43 + 44 + + + ID + 28 + + + GridInfo + + HPages + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + Orientation + 2 + PrintOnePage + + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Structure + UniqueID + 1 + VPages + 1 + + + ActiveLayerIndex + 0 + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {756, 553}} + Class + SolidGraphic + ID + 2 + Style + + fill + + GradientColor + + w + 0.666667 + + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + DisplayScale + 1 0/72 in = 1.0000 in + GraphicsList + + + Bounds + {{247.118, 325.762}, {71, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 113 + Line + + ID + 112 + Offset + 10.909090042114258 + Position + 0.50593727827072144 + RotationType + 0 + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 showMove: move} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 112 + Points + + {351, 341.665} + {216, 342.665} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{304.106, 252.179}, {73.8941, 24}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 10 + + ID + 28 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 changePlayer ()} + VerticalPad + 0 + + + + AllowLabelDrop + + Class + LineGraphic + ID + 10 + Points + + {351, 269.575} + {387, 280.575} + {393.206, 252.179} + {351, 252.179} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.4285709857940674 + LineType + 1 + TailArrow + FilledArrow + TailScale + 0.85714292526245117 + + + + + Bounds + {{246.326, 226.928}, {71, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 111 + Line + + ID + 110 + Offset + 10.909090042114258 + Position + 0.51180315017700195 + RotationType + 0 + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 showMove: move} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 110 + Points + + {351, 242.825} + {216, 243.825} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{394.744, 226.416}, {69, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 107 + Line + + ID + 106 + Offset + 10.909090042114258 + Position + 0.63375240564346313 + RotationType + 0 + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 saveMove: move} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 106 + Points + + {351, 242.825} + {474.462, 242.825} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{503.513, 91.882}, {60, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 105 + Line + + ID + 104 + Offset + 10.909090042114258 + Position + 0.78016763925552368 + RotationType + 0 + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 setColor: black} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 104 + Points + + {351, 109.071} + {585, 108.071} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{597.907, 100.666}, {60, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 103 + Line + + ID + 102 + Offset + 10.909090042114258 + Position + 0.87907141447067261 + RotationType + 0 + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 setColor: white} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 102 + Points + + {351, 117.075} + {666, 117.075} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{366.841, 306.649}, {91, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 101 + Line + + ID + 100 + Offset + 10.909090042114258 + Position + 0.80526745319366455 + RotationType + 0 + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 makeMove: self, move} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 100 + Points + + {666, 323.058} + {351, 323.058} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{577.228, 278.366}, {83, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 99 + Line + + ID + 98 + Offset + 10.909090042114258 + Position + 0.85005682706832886 + RotationType + 0 + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 startThinking : board} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 98 + Points + + {351, 295.752} + {666, 294.602} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{390.667, 325.256}, {71, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 97 + Line + + ID + 96 + Offset + 10.909090042114258 + Position + 0.60883080959320068 + RotationType + 0 + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 saveMove : move} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 96 + Points + + {351, 341.665} + {474.462, 341.665} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{373.023, 199.755}, {91, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 93 + Line + + ID + 92 + Offset + 10.909090042114258 + Position + 0.71143835783004761 + RotationType + 0 + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 makeMove: self, move} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 92 + Points + + {585, 216.164} + {351, 216.164} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{495.822, 180.64}, {81, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 91 + Line + + ID + 90 + Offset + 10.909090042114258 + Position + 0.86817306280136108 + RotationType + 0 + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 moveChosen: move} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 90 + Points + + {216, 198.047} + {585, 196.897} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{230.701, 145.584}, {109, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 89 + Line + + ID + 88 + Offset + 10.909090042114258 + Position + 0.81246292591094971 + RotationType + 0 + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 acceptUserInputFor: player} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 88 + Points + + {585, 161.993} + {216, 161.993} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{496.087, 127.785}, {80, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 87 + Line + + ID + 86 + Offset + 10.909090042114258 + Position + 0.79116803407669067 + RotationType + 0 + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 startThinking: board} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 86 + Points + + {351, 144.985} + {585, 143.985} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{157.154, 127.733}, {49, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 85 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 makeVisible} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 84 + Points + + {70.7692, 143.985} + {216.524, 144.147} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{293.296, 109.308}, {43, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 83 + Line + + ID + 82 + Offset + 10.909090042114258 + Position + 0.86834287643432617 + RotationType + 0 + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 startGame} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 82 + Points + + {71.3955, 123.851} + {351.604, 126} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + Tail + + ID + 33 + Position + 0.23756600916385651 + + + + Bounds + {{375.514, 83.7037}, {69, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 81 + Line + + ID + 80 + Offset + 10.909090042114258 + Position + 0.47798973321914673 + RotationType + 0 + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 initWithSize: size} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 80 + Points + + {351, 100.113} + {474.462, 100.113} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{166.486, 73.8577}, {175, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 79 + Line + + ID + 78 + Offset + 10.909090042114258 + Position + 0.65294283628463745 + RotationType + 0 + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 initGameWithPlayers: player1, player2, size} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 78 + Points + + {71.2631, 90.7687} + {351.154, 90} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + Tail + + ID + 33 + Position + 0.15970343351364136 + + + + Bounds + {{613.767, 54}, {38, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 77 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 initPlayer} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 76 + Points + + {70.7692, 72} + {666, 71.0607} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{452.489, 38.5829}, {124, 11}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 31 + Line + + ID + 6 + Offset + 10.909090042114258 + Position + 0.86283284425735474 + RotationType + 0 + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\fs18 \cf0 initPlayer: boardViewController} + VerticalPad + 0 + + Wrap + NO + + + AllowLabelDrop + + Class + LineGraphic + ID + 6 + Points + + {70.7692, 54} + {585, 55.1497} + + Style + + stroke + + HeadArrow + StickArrow + HeadScale + 1.4285709857940674 + TailArrow + 0 + TailScale + 0.5 + + + + + Class + Group + Graphics + + + AllowLabelDrop + + Class + LineGraphic + FontInfo + + Font + Helvetica-Bold + Size + 10 + + ID + 62 + Points + + {217.115, 22.9135} + {217.115, 447.797} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.4285709857940674 + Pattern + 1 + TailArrow + 0 + TailScale + 0.5 + + + Tail + + ID + 63 + + + + Bounds + {{166.154, 8.41375}, {101.923, 13.9998}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica-Bold + Size + 10 + + ID + 63 + Shape + Rectangle + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs18 \cf0 \ul \ulc0 BoardViewController} + VerticalPad + 0 + + + + ID + 61 + + + Class + Group + Graphics + + + AllowLabelDrop + + Class + LineGraphic + FontInfo + + Font + Helvetica-Bold + Size + 10 + + ID + 74 + Points + + {667.668, 22.9137} + {667.668, 447.797} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.4285709857940674 + Pattern + 1 + TailArrow + 0 + TailScale + 0.5 + + + Tail + + ID + 75 + + + + Bounds + {{630.721, 8.41389}, {73.8941, 13.9998}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica-Bold + Size + 10 + + ID + 75 + Shape + Rectangle + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs18 \cf0 \ul \ulc0 AIPlayer} + VerticalPad + 0 + + + + ID + 73 + + + Class + Group + Graphics + + + AllowLabelDrop + + Class + LineGraphic + FontInfo + + Font + Helvetica-Bold + Size + 10 + + ID + 68 + Points + + {476.787, 22.9143} + {476.787, 447.797} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.4285709857940674 + Pattern + 1 + TailArrow + 0 + TailScale + 0.5 + + + Tail + + ID + 69 + + + + Bounds + {{452.287, 8.4145}, {49, 13.9998}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica-Bold + Size + 10 + + ID + 69 + Shape + Rectangle + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs18 \cf0 \ul \ulc0 Board} + VerticalPad + 0 + + + + ID + 67 + + + Class + Group + Graphics + + + AllowLabelDrop + + Class + LineGraphic + FontInfo + + Font + Helvetica-Bold + Size + 10 + + ID + 71 + Points + + {586.178, 22.9137} + {586.178, 447.797} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.4285709857940674 + Pattern + 1 + TailArrow + 0 + TailScale + 0.5 + + + Tail + + ID + 72 + + + + Bounds + {{549.231, 8.41386}, {73.8941, 13.9998}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica-Bold + Size + 10 + + ID + 72 + Shape + Rectangle + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs18 \cf0 \ul \ulc0 UIPlayer} + VerticalPad + 0 + + + + ID + 70 + + + Class + Group + Graphics + + + AllowLabelDrop + + Class + LineGraphic + FontInfo + + Font + Helvetica-Bold + Size + 10 + + ID + 65 + Points + + {350.654, 22.9136} + {350.654, 447.797} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.4285709857940674 + Pattern + 1 + TailArrow + 0 + TailScale + 0.5 + + + Tail + + ID + 66 + + + + Bounds + {{315.154, 8.4138}, {71, 13.9998}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica-Bold + Size + 10 + + ID + 66 + Shape + Rectangle + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs18 \cf0 \ul \ulc0 Game} + VerticalPad + 0 + + + + ID + 64 + + + Bounds + {{14.6154, 8.41366}, {112.692, 13.9997}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica-Bold + Size + 10 + + ID + 60 + Shape + Rectangle + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs18 \cf0 \ul \ulc0 GomokuViewController} + VerticalPad + 0 + + + + AllowLabelDrop + + Class + LineGraphic + FontInfo + + Font + Helvetica-Bold + Size + 10 + + ID + 33 + Points + + {70.9914, 22.9133} + {72.6923, 447.797} + + Style + + stroke + + HeadArrow + 0 + HeadScale + 1.4285709857940674 + Pattern + 1 + TailArrow + 0 + TailScale + 0.5 + + + Tail + + ID + 60 + + + + GridInfo + + SnapsToGrid + YES + + HPages + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + Orientation + 2 + PrintOnePage + + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Sequence + UniqueID + 2 + VPages + 1 + + + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UseEntirePage + + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + + name + Structure + + + Frame + {{9, 50}, {1250, 828}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{-45, 33.8462}, {846.923, 518.462}} + Zoom + 1.2999999523162842 + ZoomValues + + + Structure + 1.2999999523162842 + 1 + + + Sequence + 1.2999999523162842 + 1 + + + + saveQuickLookFiles + YES + + diff --git a/gomoku.xcodeproj/kig.pbxuser b/gomoku.xcodeproj/kig.pbxuser new file mode 100644 index 0000000..bd31180 --- /dev/null +++ b/gomoku.xcodeproj/kig.pbxuser @@ -0,0 +1,3278 @@ +// !$*UTF8*$! +{ + 133EAF0511928897004BDF4C /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 133EAF0611928897004BDF4C /* Move.m */; + rLen = 0; + rLoc = 22; + rType = 1; + }; + 133EAF0611928897004BDF4C /* Move.m */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + name = Move.m; + path = /Users/kig/Coding/xcode/gomoku/Classes/Move.m; + sourceTree = ""; + }; + 133EAF0811928897004BDF4C /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 133EAF0911928897004BDF4C /* Board.m */; + rLen = 0; + rLoc = 33; + rType = 1; + }; + 133EAF0911928897004BDF4C /* Board.m */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + name = Board.m; + path = /Users/kig/Coding/xcode/gomoku/Classes/Board.m; + sourceTree = ""; + }; + 136FD0B6118FAF1E0098C789 /* Game.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {942, 554}}"; + sepNavSelRange = "{691, 0}"; + sepNavVisRange = "{0, 770}"; + sepNavWindowFrame = "{{38, 130}, {1135, 748}}"; + }; + }; + 136FD0B7118FAF1E0098C789 /* Game.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1076, 1078}}"; + sepNavSelRange = "{1414, 0}"; + sepNavVisRange = "{694, 766}"; + sepNavWindowFrame = "{{366, 152}, {1135, 748}}"; + }; + }; + 136FD0BC118FAF350098C789 /* Player.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {772, 467}}"; + sepNavSelRange = "{183, 0}"; + sepNavVisRange = "{0, 305}"; + sepNavWindowFrame = "{{107, 341}, {1135, 748}}"; + }; + }; + 136FD0BE118FAFAB0098C789 /* UIPlayer.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1243, 322}}"; + sepNavSelRange = "{285, 0}"; + sepNavVisRange = "{0, 366}"; + sepNavWindowFrame = "{{84, 130}, {1135, 748}}"; + }; + }; + 136FD0BF118FAFAB0098C789 /* UIPlayer.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {772, 602}}"; + sepNavSelRange = "{223, 0}"; + sepNavVisRange = "{0, 562}"; + sepNavWindowFrame = "{{453, 310}, {1135, 748}}"; + }; + }; + 136FD101118FB48C0098C789 /* Move.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {772, 467}}"; + sepNavSelRange = "{273, 0}"; + sepNavVisRange = "{0, 354}"; + sepNavWindowFrame = "{{268, 194}, {1135, 748}}"; + }; + }; + 136FD102118FB48C0098C789 /* Move.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {772, 467}}"; + sepNavSelRange = "{467, 0}"; + sepNavVisRange = "{0, 495}"; + sepNavWindowFrame = "{{622, 168}, {1135, 748}}"; + }; + }; + 136FD16A118FB8C30098C789 /* Player.h */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = Player.h; + path = /Users/kig/Coding/xcode/gomoku/Classes/Player.h; + sourceTree = ""; + }; + 136FD19C118FD0530098C789 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD16A118FB8C30098C789 /* Player.h */; + name = "Player.h: 19"; + rLen = 0; + rLoc = 358; + rType = 0; + vrLen = 365; + vrLoc = 0; + }; + 136FD1AC118FD2790098C789 /* Board.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {772, 467}}"; + sepNavSelRange = "{527, 0}"; + sepNavVisRange = "{0, 527}"; + sepNavWindowFrame = "{{417, 95}, {1135, 748}}"; + }; + }; + 136FD1AD118FD2790098C789 /* Board.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {772, 840}}"; + sepNavSelRange = "{1175, 0}"; + sepNavVisRange = "{588, 761}"; + sepNavWindowFrame = "{{233, 241}, {1135, 748}}"; + }; + }; + 138A7415118E42EC00CAB602 /* gomoku */ = { + isa = PBXExecutable; + activeArgIndices = ( + ); + argumentStrings = ( + ); + autoAttachOnCrash = 1; + breakpointsEnabled = 1; + configStateDict = { + }; + customDataFormattersEnabled = 1; + dataTipCustomDataFormattersEnabled = 1; + dataTipShowTypeColumn = 1; + dataTipSortType = 0; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + executableSystemSymbolLevel = 0; + executableUserSymbolLevel = 0; + libgmallocEnabled = 0; + name = gomoku; + savedGlobals = { + }; + showTypeColumn = 0; + sourceDirectories = ( + ); + variableFormatDictionary = { + }; + }; + 138A7416118E42EC00CAB602 /* gomoku Unit Tests */ = { + isa = PBXExecutable; + activeArgIndices = ( + ); + argumentStrings = ( + ); + autoAttachOnCrash = 1; + breakpointsEnabled = 0; + configStateDict = { + }; + customDataFormattersEnabled = 1; + dataTipCustomDataFormattersEnabled = 1; + dataTipShowTypeColumn = 1; + dataTipSortType = 0; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + enableDebugStr = 1; + environmentEntries = ( + ); + executableSystemSymbolLevel = 0; + executableUserSymbolLevel = 0; + libgmallocEnabled = 0; + name = "gomoku Unit Tests"; + showTypeColumn = 0; + sourceDirectories = ( + ); + }; + 138A741E118E42ED00CAB602 /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + repositoryNamesForRoots = { + "" = ""; + }; + }; + }; + 138A741F118E42ED00CAB602 /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; + 13BAE074119377820078F138 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BE118FAFAB0098C789 /* UIPlayer.h */; + name = "UIPlayer.h: 22"; + rLen = 0; + rLoc = 366; + rType = 0; + vrLen = 362; + vrLoc = 0; + }; + 13BAE0A7119379BC0078F138 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1D3623240D0F684500981E51 /* GomokuAppDelegate.h */; + name = "GomokuAppDelegate.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 338; + vrLoc = 0; + }; + 13BAE0A9119379BC0078F138 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 22"; + rLen = 0; + rLoc = 594; + rType = 0; + vrLen = 500; + vrLoc = 0; + }; + 13BAE0BE11937EC70078F138 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD1AD118FD2790098C789 /* Board.m */; + name = "Board.m: 25"; + rLen = 0; + rLoc = 583; + rType = 0; + vrLen = 767; + vrLoc = 0; + }; + 13BAE0BF11937EC70078F138 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BC118FAF350098C789 /* Player.h */; + name = "Player.h: 11"; + rLen = 0; + rLoc = 183; + rType = 0; + vrLen = 305; + vrLoc = 0; + }; + 13BAE0C111937EC70078F138 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD101118FB48C0098C789 /* Move.h */; + name = "Move.h: 18"; + rLen = 0; + rLoc = 273; + rType = 0; + vrLen = 354; + vrLoc = 0; + }; + 13BAE0C511937EC70078F138 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1D3623250D0F684500981E51 /* GomokuAppDelegate.m */; + name = "GomokuAppDelegate.m: 20"; + rLen = 0; + rLoc = 338; + rType = 0; + vrLen = 925; + vrLoc = 27; + }; + 13BAE0C611937EC70078F138 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C620619118E3FA800641403 /* BoardCell.h */; + name = "BoardCell.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 348; + vrLoc = 0; + }; + 13BAE0C711937EC70078F138 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62061A118E3FA800641403 /* BoardCell.m */; + name = "BoardCell.m: 16"; + rLen = 0; + rLoc = 222; + rType = 0; + vrLen = 663; + vrLoc = 128; + }; + 13BAE0C811937EC70078F138 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 59"; + rLen = 0; + rLoc = 1582; + rType = 0; + vrLen = 1053; + vrLoc = 0; + }; + 13BAE0C911937EC70078F138 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058A118E2FD700641403 /* GameBoardViewController.h */; + name = "GameBoardViewController.h: 12"; + rLen = 0; + rLoc = 183; + rType = 0; + vrLen = 591; + vrLoc = 0; + }; + 13E52A5C1194E7F500040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 14"; + rLen = 0; + rLoc = 217; + rType = 0; + vrLen = 677; + vrLoc = 44; + }; + 13E52A801194FC4D00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BF118FAFAB0098C789 /* UIPlayer.m */; + name = "UIPlayer.m: 15"; + rLen = 47; + rLoc = 211; + rType = 0; + vrLen = 625; + vrLoc = 0; + }; + 13E52ACF119502E900040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD102118FB48C0098C789 /* Move.m */; + name = "Move.m: 27"; + rLen = 0; + rLoc = 415; + rType = 0; + vrLen = 494; + vrLoc = 0; + }; + 13E52AD0119502E900040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B6118FAF1E0098C789 /* Game.h */; + name = "Game.h: 17"; + rLen = 14; + rLoc = 297; + rType = 0; + vrLen = 635; + vrLoc = 0; + }; + 13E52AD1119502E900040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 28"; + rLen = 0; + rLoc = 573; + rType = 0; + vrLen = 852; + vrLoc = 178; + }; + 13E52AD2119502E900040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD1AC118FD2790098C789 /* Board.h */; + name = "Board.h: 16"; + rLen = 0; + rLoc = 286; + rType = 0; + vrLen = 456; + vrLoc = 0; + }; + 13E52AD3119502E900040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD1AD118FD2790098C789 /* Board.m */; + name = "Board.m: 25"; + rLen = 0; + rLoc = 583; + rType = 0; + vrLen = 1027; + vrLoc = 0; + }; + 13E52AEB1195056400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD1AD118FD2790098C789 /* Board.m */; + name = "Board.m: 25"; + rLen = 0; + rLoc = 583; + rType = 0; + vrLen = 1027; + vrLoc = 0; + }; + 13E52AEC1195056400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058A118E2FD700641403 /* GameBoardViewController.h */; + name = "GameBoardViewController.h: 12"; + rLen = 0; + rLoc = 183; + rType = 0; + vrLen = 591; + vrLoc = 0; + }; + 13E52AED1195056400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 59"; + rLen = 0; + rLoc = 1582; + rType = 0; + vrLen = 936; + vrLoc = 1264; + }; + 13E52AEE1195056400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BF118FAFAB0098C789 /* UIPlayer.m */; + name = "UIPlayer.m: 15"; + rLen = 47; + rLoc = 211; + rType = 0; + vrLen = 619; + vrLoc = 0; + }; + 13E52AEF1195056400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD101118FB48C0098C789 /* Move.h */; + name = "Move.h: 18"; + rLen = 0; + rLoc = 273; + rType = 0; + vrLen = 354; + vrLoc = 0; + }; + 13E52AF01195056400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 49"; + rLen = 0; + rLoc = 1157; + rType = 0; + vrLen = 777; + vrLoc = 178; + }; + 13E52AF11195056400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B6118FAF1E0098C789 /* Game.h */; + name = "Game.h: 14"; + rLen = 0; + rLoc = 265; + rType = 0; + vrLen = 754; + vrLoc = 0; + }; + 13E52AF21195056400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD1AC118FD2790098C789 /* Board.h */; + name = "Board.h: 16"; + rLen = 0; + rLoc = 286; + rType = 0; + vrLen = 456; + vrLoc = 0; + }; + 13E52AF31195056400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 23"; + rLen = 0; + rLoc = 473; + rType = 0; + vrLen = 915; + vrLoc = 0; + }; + 13E52AF41195056400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 24"; + rLen = 0; + rLoc = 623; + rType = 0; + vrLen = 1056; + vrLoc = 30; + }; + 13E52AF9119505CC00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 473; + rType = 0; + vrLen = 784; + vrLoc = 141; + }; + 13E52AFA119505CC00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52AFB119505CC00040946 /* asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920 */; + name = "asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 206; + vrLoc = 0; + }; + 13E52AFB119505CC00040946 /* asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920 */ = { + isa = PBXFileReference; + path = "asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920"; + sourceTree = ""; + }; + 13E52AFC119505CC00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52AFD119505CC00040946 /* asm objc_exception_throw 0x976044d1 */; + name = "asm objc_exception_throw 0x976044d1: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 964; + vrLoc = 0; + }; + 13E52AFD119505CC00040946 /* asm objc_exception_throw 0x976044d1 */ = { + isa = PBXFileReference; + path = "asm objc_exception_throw 0x976044d1"; + sourceTree = ""; + }; + 13E52AFE119505CC00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52AFF119505CC00040946 /* asm +[NSObject doesNotRecognizeSelector:] 0x302d7000 */; + name = "asm +[NSObject doesNotRecognizeSelector:] 0x302d7000: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1088; + vrLoc = 1144; + }; + 13E52AFF119505CC00040946 /* asm +[NSObject doesNotRecognizeSelector:] 0x302d7000 */ = { + isa = PBXFileReference; + path = "asm +[NSObject doesNotRecognizeSelector:] 0x302d7000"; + sourceTree = ""; + }; + 13E52B00119505CC00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B01119505CC00040946 /* asm ___forwarding___ 0x3026df87 */; + name = "asm ___forwarding___ 0x3026df87: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 998; + vrLoc = 2111; + }; + 13E52B01119505CC00040946 /* asm ___forwarding___ 0x3026df87 */ = { + isa = PBXFileReference; + path = "asm ___forwarding___ 0x3026df87"; + sourceTree = ""; + }; + 13E52B02119505CC00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B03119505CC00040946 /* asm __forwarding_prep_0___ 0x3024a070 */; + name = "asm __forwarding_prep_0___ 0x3024a070: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 982; + vrLoc = 0; + }; + 13E52B03119505CC00040946 /* asm __forwarding_prep_0___ 0x3024a070 */ = { + isa = PBXFileReference; + path = "asm __forwarding_prep_0___ 0x3024a070"; + sourceTree = ""; + }; + 13E52B04119505CC00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + rLen = 0; + rLoc = 19; + rType = 1; + }; + 13E52B05119505CC00040946 /* GomokuViewController.m */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + name = GomokuViewController.m; + path = /Users/kig/Coding/xcode/gomoku/Classes/GomokuViewController.m; + sourceTree = ""; + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {691, 756}}"; + sepNavSelRange = "{911, 0}"; + sepNavVisRange = "{179, 907}"; + sepNavWindowFrame = "{{199, 257}, {1135, 748}}"; + }; + }; + 13E52B06119505CC00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 472; + rType = 0; + vrLen = 772; + vrLoc = 319; + }; + 13E52B091195061200040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 54"; + rLen = 0; + rLoc = 1266; + rType = 0; + vrLen = 878; + vrLoc = 201; + }; + 13E52B0A1195061200040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 24"; + rLen = 0; + rLoc = 623; + rType = 0; + vrLen = 1087; + vrLoc = 3; + }; + 13E52B0B1195061200040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 26"; + rLen = 0; + rLoc = 712; + rType = 0; + vrLen = 1087; + vrLoc = 3; + }; + 13E52B0C1195061800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 26"; + rLen = 0; + rLoc = 712; + rType = 0; + vrLen = 924; + vrLoc = 3; + }; + 13E52B171195061800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 472; + rType = 0; + vrLen = 824; + vrLoc = 180; + }; + 13E52B181195061800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 25"; + rLen = 0; + rLoc = 670; + rType = 0; + vrLen = 1096; + vrLoc = 0; + }; + 13E52B211195064700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 26"; + rLen = 0; + rLoc = 712; + rType = 0; + vrLen = 1117; + vrLoc = 3; + }; + 13E52B221195064700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 33"; + rLen = 0; + rLoc = 977; + rType = 0; + vrLen = 1126; + vrLoc = 0; + }; + 13E52B251195066500040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 26"; + rLen = 0; + rLoc = 712; + rType = 0; + vrLen = 828; + vrLoc = 269; + }; + 13E52B261195066500040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B271195066500040946 /* asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920 */; + name = "asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 206; + vrLoc = 0; + }; + 13E52B271195066500040946 /* asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920 */ = { + isa = PBXFileReference; + path = "asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920"; + sourceTree = ""; + }; + 13E52B281195066500040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + rLen = 0; + rLoc = 19; + rType = 1; + }; + 13E52B291195066500040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 25"; + rLen = 0; + rLoc = 623; + rType = 0; + vrLen = 833; + vrLoc = 218; + }; + 13E52B2C1195068900040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 473; + rType = 0; + vrLen = 1117; + vrLoc = 3; + }; + 13E52B2D1195068900040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B6118FAF1E0098C789 /* Game.h */; + name = "Game.h: 30"; + rLen = 0; + rLoc = 628; + rType = 0; + vrLen = 754; + vrLoc = 0; + }; + 13E52B2E1195068900040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 54"; + rLen = 0; + rLoc = 1266; + rType = 0; + vrLen = 877; + vrLoc = 202; + }; + 13E52B2F1195068900040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 31"; + rLen = 0; + rLoc = 546; + rType = 0; + vrLen = 877; + vrLoc = 202; + }; + 13E52B321195068E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 31"; + rLen = 0; + rLoc = 546; + rType = 0; + vrLen = 877; + vrLoc = 202; + }; + 13E52B331195069000040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 24"; + rLen = 0; + rLoc = 623; + rType = 0; + vrLen = 598; + vrLoc = 364; + }; + 13E52B341195069000040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B351195069000040946 /* asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920 */; + name = "asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 206; + vrLoc = 0; + }; + 13E52B351195069000040946 /* asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920 */ = { + isa = PBXFileReference; + path = "asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920"; + sourceTree = ""; + }; + 13E52B361195069000040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 31"; + rLen = 0; + rLoc = 546; + rType = 0; + vrLen = 598; + vrLoc = 301; + }; + 13E52B3B1195075C00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058A118E2FD700641403 /* GameBoardViewController.h */; + name = "GameBoardViewController.h: 12"; + rLen = 0; + rLoc = 183; + rType = 0; + vrLen = 591; + vrLoc = 0; + }; + 13E52B3C1195075C00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 59"; + rLen = 0; + rLoc = 1582; + rType = 0; + vrLen = 1209; + vrLoc = 0; + }; + 13E52B3D1195075C00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BE118FAFAB0098C789 /* UIPlayer.h */; + name = "UIPlayer.h: 17"; + rLen = 0; + rLoc = 287; + rType = 0; + vrLen = 358; + vrLoc = 0; + }; + 13E52B3E1195075C00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BF118FAFAB0098C789 /* UIPlayer.m */; + name = "UIPlayer.m: 12"; + rLen = 0; + rLoc = 191; + rType = 0; + vrLen = 622; + vrLoc = 0; + }; + 13E52B3F1195075C00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BC118FAF350098C789 /* Player.h */; + name = "Player.h: 11"; + rLen = 0; + rLoc = 183; + rType = 0; + vrLen = 305; + vrLoc = 0; + }; + 13E52B401195075C00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 31"; + rLen = 0; + rLoc = 546; + rType = 0; + vrLen = 900; + vrLoc = 301; + }; + 13E52B411195075C00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 22"; + rLen = 0; + rLoc = 594; + rType = 0; + vrLen = 500; + vrLoc = 0; + }; + 13E52B421195075C00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 24"; + rLen = 0; + rLoc = 493; + rType = 0; + vrLen = 1140; + vrLoc = 41; + }; + 13E52B431195075C00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 437; + rType = 0; + vrLen = 1102; + vrLoc = 41; + }; + 13E52B461195076900040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 23"; + rLen = 0; + rLoc = 471; + rType = 0; + vrLen = 1102; + vrLoc = 41; + }; + 13E52B491195078D00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 23"; + rLen = 0; + rLoc = 471; + rType = 0; + vrLen = 1110; + vrLoc = 41; + }; + 13E52B4C1195078D00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 406; + rType = 0; + vrLen = 655; + vrLoc = 179; + }; + 13E52B4D1195078D00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 417; + rType = 0; + vrLen = 1151; + vrLoc = 0; + }; + 13E52B50119507B300040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 31"; + rLen = 0; + rLoc = 546; + rType = 0; + vrLen = 598; + vrLoc = 301; + }; + 13E52B51119507B300040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B52119507B300040946 /* asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920 */; + name = "asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 206; + vrLoc = 0; + }; + 13E52B52119507B300040946 /* asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920 */ = { + isa = PBXFileReference; + path = "asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920"; + sourceTree = ""; + }; + 13E52B53119507B300040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + rLen = 0; + rLoc = 19; + rType = 1; + }; + 13E52B54119507B300040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 625; + vrLoc = 89; + }; + 13E52B571195087400040946 /* XCBuildMessageTextBookmark */ = { + isa = PBXTextBookmark; + comments = "'WHITE' undeclared (first use in this function)"; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + fallbackIsa = XCBuildMessageTextBookmark; + rLen = 1; + rLoc = 50; + rType = 1; + }; + 13E52B5A1195087A00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 22"; + rLen = 0; + rLoc = 594; + rType = 0; + vrLen = 500; + vrLoc = 0; + }; + 13E52B5B1195087A00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD1AD118FD2790098C789 /* Board.m */; + name = "Board.m: 25"; + rLen = 0; + rLoc = 583; + rType = 0; + vrLen = 987; + vrLoc = 0; + }; + 13E52B5C1195087A00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD1AC118FD2790098C789 /* Board.h */; + name = "Board.h: 29"; + rLen = 0; + rLoc = 527; + rType = 0; + vrLen = 527; + vrLoc = 0; + }; + 13E52B5D1195087A00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BF118FAFAB0098C789 /* UIPlayer.m */; + name = "UIPlayer.m: 15"; + rLen = 0; + rLoc = 223; + rType = 0; + vrLen = 612; + vrLoc = 18; + }; + 13E52B5E1195087A00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BE118FAFAB0098C789 /* UIPlayer.h */; + name = "UIPlayer.h: 17"; + rLen = 0; + rLoc = 285; + rType = 0; + vrLen = 366; + vrLoc = 0; + }; + 13E52B5F1195087A00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 59"; + rLen = 0; + rLoc = 1582; + rType = 0; + vrLen = 1209; + vrLoc = 0; + }; + 13E52B601195087A00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 38"; + rLen = 0; + rLoc = 433; + rType = 0; + vrLen = 1036; + vrLoc = 0; + }; + 13E52B611195087A00040946 /* XCBuildMessageTextBookmark */ = { + isa = PBXTextBookmark; + comments = "'WHITE' undeclared (first use in this function)"; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + fallbackIsa = XCBuildMessageTextBookmark; + rLen = 1; + rLoc = 50; + rType = 1; + }; + 13E52B621195087A00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 43"; + rLen = 0; + rLoc = 1039; + rType = 0; + vrLen = 784; + vrLoc = 178; + }; + 13E52B651195087A00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 43"; + rLen = 0; + rLoc = 1066; + rType = 0; + vrLen = 904; + vrLoc = 0; + }; + 13E52B681195088000040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 43"; + rLen = 0; + rLoc = 1039; + rType = 0; + vrLen = 784; + vrLoc = 178; + }; + 13E52B6B119508B800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 43"; + rLen = 0; + rLoc = 1039; + rType = 0; + vrLen = 784; + vrLoc = 178; + }; + 13E52B6E119508B800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 705; + vrLoc = 180; + }; + 13E52B6F119508B800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 28"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 1013; + vrLoc = 0; + }; + 13E52B74119508C600040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 43"; + rLen = 0; + rLoc = 1039; + rType = 0; + vrLen = 784; + vrLoc = 178; + }; + 13E52B75119508C600040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 598; + vrLoc = 179; + }; + 13E52B76119508C600040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 1018; + vrLoc = 0; + }; + 13E52B79119508DE00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 43"; + rLen = 0; + rLoc = 1039; + rType = 0; + vrLen = 389; + vrLoc = 573; + }; + 13E52B7A119508DE00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B7B119508DE00040946 /* asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920 */; + name = "asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 206; + vrLoc = 0; + }; + 13E52B7B119508DE00040946 /* asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920 */ = { + isa = PBXFileReference; + path = "asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920"; + sourceTree = ""; + }; + 13E52B7C119508DE00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + rLen = 0; + rLoc = 19; + rType = 1; + }; + 13E52B7D119508DE00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 602; + vrLoc = 179; + }; + 13E52B80119508E100040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 43"; + rLen = 0; + rLoc = 1039; + rType = 0; + vrLen = 784; + vrLoc = 178; + }; + 13E52B81119508E100040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 933; + vrLoc = 0; + }; + 13E52B88119508EA00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 933; + vrLoc = 0; + }; + 13E52B8A119508EE00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 933; + vrLoc = 0; + }; + 13E52B8B119508F100040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 933; + vrLoc = 0; + }; + 13E52B8D1195090C00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B8E1195090C00040946 /* asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920 */; + name = "asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 206; + vrLoc = 0; + }; + 13E52B8E1195090C00040946 /* asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920 */ = { + isa = PBXFileReference; + path = "asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920"; + sourceTree = ""; + }; + 13E52B8F1195090C00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + rLen = 0; + rLoc = 19; + rType = 1; + }; + 13E52B901195090C00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 602; + vrLoc = 179; + }; + 13E52B911195096800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 22"; + rLen = 0; + rLoc = 594; + rType = 0; + vrLen = 500; + vrLoc = 0; + }; + 13E52B921195096800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 933; + vrLoc = 0; + }; + 13E52B931195096800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BF118FAFAB0098C789 /* UIPlayer.m */; + name = "UIPlayer.m: 15"; + rLen = 0; + rLoc = 223; + rType = 0; + vrLen = 612; + vrLoc = 18; + }; + 13E52B941195096800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BE118FAFAB0098C789 /* UIPlayer.h */; + name = "UIPlayer.h: 17"; + rLen = 0; + rLoc = 285; + rType = 0; + vrLen = 366; + vrLoc = 0; + }; + 13E52B951195096800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BE118FAFAB0098C789 /* UIPlayer.h */; + name = "UIPlayer.h: 17"; + rLen = 0; + rLoc = 285; + rType = 0; + vrLen = 366; + vrLoc = 0; + }; + 13E52B961195098400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 602; + vrLoc = 179; + }; + 13E52B971195098400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BE118FAFAB0098C789 /* UIPlayer.h */; + name = "UIPlayer.h: 17"; + rLen = 0; + rLoc = 285; + rType = 0; + vrLen = 366; + vrLoc = 0; + }; + 13E52B9A119509DC00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD1AD118FD2790098C789 /* Board.m */; + name = "Board.m: 25"; + rLen = 0; + rLoc = 583; + rType = 0; + vrLen = 987; + vrLoc = 0; + }; + 13E52B9B119509DC00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD1AC118FD2790098C789 /* Board.h */; + name = "Board.h: 29"; + rLen = 0; + rLoc = 527; + rType = 0; + vrLen = 527; + vrLoc = 0; + }; + 13E52B9C119509DC00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD102118FB48C0098C789 /* Move.m */; + name = "Move.m: 27"; + rLen = 0; + rLoc = 415; + rType = 0; + vrLen = 494; + vrLoc = 0; + }; + 13E52B9D119509DC00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BF118FAFAB0098C789 /* UIPlayer.m */; + name = "UIPlayer.m: 15"; + rLen = 0; + rLoc = 223; + rType = 0; + vrLen = 612; + vrLoc = 18; + }; + 13E52B9E119509DC00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BE118FAFAB0098C789 /* UIPlayer.h */; + name = "UIPlayer.h: 17"; + rLen = 0; + rLoc = 286; + rType = 0; + vrLen = 366; + vrLoc = 0; + }; + 13E52B9F119509DC00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 22"; + rLen = 0; + rLoc = 594; + rType = 0; + vrLen = 500; + vrLoc = 0; + }; + 13E52BA0119509DC00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 933; + vrLoc = 0; + }; + 13E52BA1119509DC00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 920; + vrLoc = 0; + }; + 13E52BA4119509E400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 920; + vrLoc = 0; + }; + 13E52BA711950A0400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 880; + vrLoc = 0; + }; + 13E52BAC11950A3200040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 924; + vrLoc = 0; + }; + 13E52BAF11950A3200040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 24"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 572; + vrLoc = 88; + }; + 13E52BB011950A3200040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 40"; + rLen = 0; + rLoc = 433; + rType = 0; + vrLen = 1079; + vrLoc = 0; + }; + 13E52BB111950A5F00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BE118FAFAB0098C789 /* UIPlayer.h */; + name = "UIPlayer.h: 17"; + rLen = 0; + rLoc = 285; + rType = 0; + vrLen = 366; + vrLoc = 0; + }; + 13E52BB211950A5F00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + rLen = 0; + rLoc = 19; + rType = 1; + }; + 13E52BB311950A5F00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 569; + vrLoc = 88; + }; + 13E52BB611950A8E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 30"; + rLen = 0; + rLoc = 533; + rType = 0; + vrLen = 757; + vrLoc = 157; + }; + 13E52BB711950A8E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B6118FAF1E0098C789 /* Game.h */; + name = "Game.h: 30"; + rLen = 0; + rLoc = 655; + rType = 0; + vrLen = 735; + vrLoc = 0; + }; + 13E52BB811950A8E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058A118E2FD700641403 /* GameBoardViewController.h */; + name = "GameBoardViewController.h: 12"; + rLen = 0; + rLoc = 183; + rType = 0; + vrLen = 591; + vrLoc = 0; + }; + 13E52BB911950A8E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 59"; + rLen = 0; + rLoc = 1582; + rType = 0; + vrLen = 1262; + vrLoc = 0; + }; + 13E52BBA11950A8E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 22"; + rLen = 0; + rLoc = 321; + rType = 0; + vrLen = 1028; + vrLoc = 0; + }; + 13E52BBB11950A8E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 32"; + rLen = 0; + rLoc = 433; + rType = 0; + vrLen = 1036; + vrLoc = 0; + }; + 13E52BBC11950A8E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 34"; + rLen = 0; + rLoc = 433; + rType = 0; + vrLen = 1060; + vrLoc = 0; + }; + 13E52BC111950B0100040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 23"; + rLen = 0; + rLoc = 594; + rType = 0; + vrLen = 550; + vrLoc = 0; + }; + 13E52BC211950B0100040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058A118E2FD700641403 /* GameBoardViewController.h */; + name = "GameBoardViewController.h: 12"; + rLen = 0; + rLoc = 183; + rType = 0; + vrLen = 591; + vrLoc = 0; + }; + 13E52BC311950B0100040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 32"; + rLen = 49; + rLoc = 433; + rType = 0; + vrLen = 1022; + vrLoc = 30; + }; + 13E52BC411950B0100040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 34"; + rLen = 0; + rLoc = 988; + rType = 0; + vrLen = 875; + vrLoc = 3; + }; + 13E52BC511950B0100040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 24"; + rLen = 0; + rLoc = 433; + rType = 0; + vrLen = 878; + vrLoc = 0; + }; + 13E52BC711950B0700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 24"; + rLen = 0; + rLoc = 433; + rType = 0; + vrLen = 875; + vrLoc = 3; + }; + 13E52BC811950B0700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 24"; + rLen = 0; + rLoc = 433; + rType = 0; + vrLen = 875; + vrLoc = 3; + }; + 13E52BC911950B0A00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 24"; + rLen = 0; + rLoc = 433; + rType = 0; + vrLen = 875; + vrLoc = 3; + }; + 13E52BCA11950B0A00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 24"; + rLen = 0; + rLoc = 433; + rType = 0; + vrLen = 878; + vrLoc = 0; + }; + 13E52BCC11950B2000040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 24"; + rLen = 0; + rLoc = 433; + rType = 0; + vrLen = 573; + vrLoc = 122; + }; + 13E52BCD11950B2000040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52BCE11950B2000040946 /* asm objc_msgSend 0x975ffec0 */; + rLen = 0; + rLoc = 9223372036854775807; + rType = 0; + }; + 13E52BCE11950B2000040946 /* asm objc_msgSend 0x975ffec0 */ = { + isa = PBXFileReference; + path = "asm objc_msgSend 0x975ffec0"; + sourceTree = ""; + }; + 13E52BCF11950B2000040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52BD011950B2000040946 /* asm objc_msgSend 0x975ffec0 */; + name = "asm objc_msgSend 0x975ffec0: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 991; + vrLoc = 0; + }; + 13E52BD011950B2000040946 /* asm objc_msgSend 0x975ffec0 */ = { + isa = PBXFileReference; + path = "asm objc_msgSend 0x975ffec0"; + sourceTree = ""; + }; + 13E52BD311950C0400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 24"; + rLen = 0; + rLoc = 433; + rType = 0; + vrLen = 875; + vrLoc = 3; + }; + 13E52BD411950C0400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 35"; + rLen = 34; + rLoc = 697; + rType = 0; + vrLen = 716; + vrLoc = 573; + }; + 13E52BD511950C0400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B6118FAF1E0098C789 /* Game.h */; + name = "Game.h: 30"; + rLen = 0; + rLoc = 655; + rType = 0; + vrLen = 735; + vrLoc = 0; + }; + 13E52BD611950C0400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B6118FAF1E0098C789 /* Game.h */; + name = "Game.h: 31"; + rLen = 0; + rLoc = 691; + rType = 0; + vrLen = 770; + vrLoc = 0; + }; + 13E52BD711950C0400040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 24"; + rLen = 0; + rLoc = 433; + rType = 0; + vrLen = 878; + vrLoc = 0; + }; + 13E52BD911950C0600040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B6118FAF1E0098C789 /* Game.h */; + name = "Game.h: 31"; + rLen = 0; + rLoc = 691; + rType = 0; + vrLen = 770; + vrLoc = 0; + }; + 13E52BDA11950C0B00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B6118FAF1E0098C789 /* Game.h */; + name = "Game.h: 31"; + rLen = 0; + rLoc = 691; + rType = 0; + vrLen = 770; + vrLoc = 0; + }; + 13E52BDB11950C0B00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 24"; + rLen = 0; + rLoc = 433; + rType = 0; + vrLen = 878; + vrLoc = 0; + }; + 13E52BDD11950C1E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 24"; + rLen = 0; + rLoc = 433; + rType = 0; + vrLen = 602; + vrLoc = 180; + }; + 13E52BDE11950C1E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B6118FAF1E0098C789 /* Game.h */; + name = "Game.h: 31"; + rLen = 0; + rLoc = 691; + rType = 0; + vrLen = 445; + vrLoc = 212; + }; + 13E52BDF11950C1E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52BE011950C1E00040946 /* asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920 */; + name = "asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 206; + vrLoc = 0; + }; + 13E52BE011950C1E00040946 /* asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920 */ = { + isa = PBXFileReference; + path = "asm ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ 0x302ac920"; + sourceTree = ""; + }; + 13E52BE111950C1E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52BE211950C1E00040946 /* Game.m */; + rLen = 0; + rLoc = 26; + rType = 1; + }; + 13E52BE211950C1E00040946 /* Game.m */ = { + isa = PBXFileReference; + name = Game.m; + path = /Users/kig/Coding/xcode/gomoku/Classes/Game.m; + sourceTree = ""; + }; + 13E52BE311950C1E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 23"; + rLen = 0; + rLoc = 393; + rType = 0; + vrLen = 450; + vrLoc = 274; + }; + 13E52BE611950C7900040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B6118FAF1E0098C789 /* Game.h */; + name = "Game.h: 31"; + rLen = 0; + rLoc = 691; + rType = 0; + vrLen = 770; + vrLoc = 0; + }; + 13E52BE711950C7900040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 62"; + rLen = 0; + rLoc = 1290; + rType = 0; + vrLen = 736; + vrLoc = 649; + }; + 13E52BEA11950C7900040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 27"; + rLen = 0; + rLoc = 517; + rType = 0; + vrLen = 450; + vrLoc = 274; + }; + 13E52BEB11950C7900040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 27"; + rLen = 0; + rLoc = 517; + rType = 0; + vrLen = 863; + vrLoc = 76; + }; + 13E52BEC11950C7900040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 24"; + rLen = 0; + rLoc = 433; + rType = 0; + vrLen = 878; + vrLoc = 0; + }; + 13E52BEF11950C7D00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 62"; + rLen = 0; + rLoc = 1290; + rType = 0; + vrLen = 736; + vrLoc = 649; + }; + 13E52BF011950C8700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52BF111950C8700040946 /* asm objc_msgSend 0x975ffec0 */; + name = "asm objc_msgSend 0x975ffec0: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 773; + vrLoc = 0; + }; + 13E52BF111950C8700040946 /* asm objc_msgSend 0x975ffec0 */ = { + isa = PBXFileReference; + path = "asm objc_msgSend 0x975ffec0"; + sourceTree = ""; + }; + 13E52BF211950C8700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 62"; + rLen = 0; + rLoc = 1290; + rType = 0; + vrLen = 315; + vrLoc = 1025; + }; + 13E52BF311950D1600040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 33"; + rLen = 0; + rLoc = 609; + rType = 0; + vrLen = 712; + vrLoc = 760; + }; + 13E52BF411950D2F00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 33"; + rLen = 0; + rLoc = 609; + rType = 0; + vrLen = 351; + vrLoc = 1014; + }; + 13E52BF511950D2F00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52BF611950D2F00040946 /* GameBoardViewController.m */; + rLen = 0; + rLoc = 68; + rType = 1; + }; + 13E52BF611950D2F00040946 /* GameBoardViewController.m */ = { + isa = PBXFileReference; + name = GameBoardViewController.m; + path = /Users/kig/Coding/xcode/gomoku/Classes/GameBoardViewController.m; + sourceTree = ""; + }; + 13E52BF711950D2F00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 69"; + rLen = 0; + rLoc = 2010; + rType = 0; + vrLen = 597; + vrLoc = 1593; + }; + 13E52C0A11950E7800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 33"; + rLen = 0; + rLoc = 609; + rType = 0; + vrLen = 712; + vrLoc = 760; + }; + 13E52C0B11950E7800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1D3623250D0F684500981E51 /* GomokuAppDelegate.m */; + name = "GomokuAppDelegate.m: 8"; + rLen = 1; + rLoc = 95; + rType = 0; + vrLen = 991; + vrLoc = 0; + }; + 13E52C0C11950E7800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 23"; + rLen = 0; + rLoc = 594; + rType = 0; + vrLen = 550; + vrLoc = 0; + }; + 13E52C0D11950E7800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058A118E2FD700641403 /* GameBoardViewController.h */; + name = "GameBoardViewController.h: 18"; + rLen = 0; + rLoc = 362; + rType = 0; + vrLen = 625; + vrLoc = 0; + }; + 13E52C0E11950E7800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 69"; + rLen = 0; + rLoc = 2034; + rType = 0; + vrLen = 999; + vrLoc = 1221; + }; + 13E52C0F11950E7800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 27"; + rLen = 0; + rLoc = 574; + rType = 0; + vrLen = 844; + vrLoc = 0; + }; + 13E52C1011950E7800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 12"; + rLen = 0; + rLoc = 179; + rType = 0; + vrLen = 843; + vrLoc = 0; + }; + 13E52C1111950E7800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 27"; + rLen = 0; + rLoc = 517; + rType = 0; + vrLen = 872; + vrLoc = 76; + }; + 13E52C1711950E7D00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 12"; + rLen = 0; + rLoc = 179; + rType = 0; + vrLen = 843; + vrLoc = 0; + }; + 13E52C1911950EAB00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52C1A11950EAB00040946 /* asm mach_msg_trap 0x980d72f0 */; + name = "asm mach_msg_trap 0x980d72f0: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 158; + vrLoc = 0; + }; + 13E52C1A11950EAB00040946 /* asm mach_msg_trap 0x980d72f0 */ = { + isa = PBXFileReference; + path = "asm mach_msg_trap 0x980d72f0"; + sourceTree = ""; + }; + 13E52C1B11950EAB00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52C1C11950EAB00040946 /* asm objc_msgSend 0x975ffec0 */; + name = "asm objc_msgSend 0x975ffec0: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 773; + vrLoc = 0; + }; + 13E52C1C11950EAB00040946 /* asm objc_msgSend 0x975ffec0 */ = { + isa = PBXFileReference; + path = "asm objc_msgSend 0x975ffec0"; + sourceTree = ""; + }; + 13E52C1D11950EAB00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52BF611950D2F00040946 /* GameBoardViewController.m */; + rLen = 0; + rLoc = 68; + rType = 1; + }; + 13E52C1E11950EAB00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 69"; + rLen = 0; + rLoc = 2010; + rType = 0; + vrLen = 606; + vrLoc = 1606; + }; + 13E52C1F11950EAB00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + rLen = 0; + rLoc = 43; + rType = 1; + }; + 13E52C2011950EAB00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 36"; + rLen = 34; + rLoc = 857; + rType = 0; + vrLen = 443; + vrLoc = 449; + }; + 13E52C2311950EB700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 36"; + rLen = 34; + rLoc = 857; + rType = 0; + vrLen = 833; + vrLoc = 88; + }; + 13E52C2411950EB700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 23"; + rLen = 0; + rLoc = 594; + rType = 0; + vrLen = 550; + vrLoc = 0; + }; + 13E52C2511950EB700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 23"; + rLen = 0; + rLoc = 586; + rType = 0; + vrLen = 583; + vrLoc = 0; + }; + 13E52C2611950EB700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 27"; + rLen = 0; + rLoc = 517; + rType = 0; + vrLen = 872; + vrLoc = 76; + }; + 13E52C2811950EBA00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 23"; + rLen = 0; + rLoc = 586; + rType = 0; + vrLen = 583; + vrLoc = 0; + }; + 13E52C2911950EBB00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 23"; + rLen = 0; + rLoc = 586; + rType = 0; + vrLen = 583; + vrLoc = 0; + }; + 13E52C2A11950EBB00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 27"; + rLen = 0; + rLoc = 517; + rType = 0; + vrLen = 872; + vrLoc = 76; + }; + 13E52C2E11950EDE00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 23"; + rLen = 0; + rLoc = 586; + rType = 0; + vrLen = 583; + vrLoc = 0; + }; + 13E52C3111950EDE00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 37"; + rLen = 0; + rLoc = 959; + rType = 0; + vrLen = 464; + vrLoc = 449; + }; + 13E52C3211950EDE00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 37"; + rLen = 0; + rLoc = 966; + rType = 0; + vrLen = 896; + vrLoc = 30; + }; + 13E52C3311950EDE00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 27"; + rLen = 0; + rLoc = 517; + rType = 0; + vrLen = 872; + vrLoc = 76; + }; + 13E52C3811950F1E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 23"; + rLen = 0; + rLoc = 586; + rType = 0; + vrLen = 583; + vrLoc = 0; + }; + 13E52C3911950F1E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 38"; + rLen = 0; + rLoc = 958; + rType = 0; + vrLen = 950; + vrLoc = 30; + }; + 13E52C3A11950F1E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 27"; + rLen = 0; + rLoc = 517; + rType = 0; + vrLen = 872; + vrLoc = 76; + }; + 13E52C3D11950F3C00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 23"; + rLen = 0; + rLoc = 586; + rType = 0; + vrLen = 493; + vrLoc = 89; + }; + 13E52C3E11950F3C00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52BF611950D2F00040946 /* GameBoardViewController.m */; + rLen = 0; + rLoc = 68; + rType = 1; + }; + 13E52C3F11950F3C00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 39"; + rLen = 0; + rLoc = 959; + rType = 0; + vrLen = 491; + vrLoc = 451; + }; + 13E52C4011950F3C00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52C4111950F3C00040946 /* asm objc_msgSend 0x975ffec0 */; + rLen = 0; + rLoc = 9223372036854775807; + rType = 0; + }; + 13E52C4111950F3C00040946 /* asm objc_msgSend 0x975ffec0 */ = { + isa = PBXFileReference; + path = "asm objc_msgSend 0x975ffec0"; + sourceTree = ""; + }; + 13E52C4211950F3C00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52C4311950F3C00040946 /* asm objc_msgSend 0x975ffec0 */; + name = "asm objc_msgSend 0x975ffec0: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 773; + vrLoc = 0; + }; + 13E52C4311950F3C00040946 /* asm objc_msgSend 0x975ffec0 */ = { + isa = PBXFileReference; + path = "asm objc_msgSend 0x975ffec0"; + sourceTree = ""; + }; + 13E52C4411950F3E00040946 /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + }; + 13E52C4711950F6700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 23"; + rLen = 0; + rLoc = 586; + rType = 0; + vrLen = 584; + vrLoc = 0; + }; + 13E52C4A11950F6700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 17"; + rLen = 0; + rLoc = 327; + rType = 0; + vrLen = 584; + vrLoc = 0; + }; + 13E52C4B11950F6700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 27"; + rLen = 0; + rLoc = 517; + rType = 0; + vrLen = 872; + vrLoc = 76; + }; + 13E52C4C11950F6700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 36"; + rLen = 0; + rLoc = 859; + rType = 0; + vrLen = 957; + vrLoc = 3; + }; + 13E52C5011950F9B00040946 /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; + }; + 13E52C5311950FAD00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 23"; + rLen = 0; + rLoc = 586; + rType = 0; + vrLen = 584; + vrLoc = 0; + }; + 13E52C5411950FAD00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 69"; + rLen = 0; + rLoc = 2010; + rType = 0; + vrLen = 743; + vrLoc = 1477; + }; + 13E52C5511950FAD00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 69"; + rLen = 0; + rLoc = 2010; + rType = 0; + vrLen = 745; + vrLoc = 1475; + }; + 13E52C5611950FAD00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 11"; + rLen = 0; + rLoc = 182; + rType = 0; + vrLen = 601; + vrLoc = 0; + }; + 13E52C5711950FAD00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 36"; + rLen = 0; + rLoc = 859; + rType = 0; + vrLen = 957; + vrLoc = 3; + }; + 13E52C5811950FAD00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 12"; + rLen = 0; + rLoc = 179; + rType = 0; + vrLen = 888; + vrLoc = 85; + }; + 13E52C5911950FAD00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 16"; + rLen = 0; + rLoc = 242; + rType = 0; + vrLen = 872; + vrLoc = 76; + }; + 13E52C5E1195100A00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 69"; + rLen = 0; + rLoc = 2010; + rType = 0; + vrLen = 745; + vrLoc = 1475; + }; + 13E52C5F1195100A00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 37"; + rLen = 0; + rLoc = 771; + rType = 0; + vrLen = 945; + vrLoc = 85; + }; + 13E52C601195100A00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 25"; + rLen = 0; + rLoc = 594; + rType = 0; + vrLen = 601; + vrLoc = 0; + }; + 13E52C611195100A00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 16"; + rLen = 0; + rLoc = 242; + rType = 0; + vrLen = 872; + vrLoc = 76; + }; + 13E52C631195100D00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 69"; + rLen = 0; + rLoc = 2010; + rType = 0; + vrLen = 745; + vrLoc = 1475; + }; + 13E52C641195100F00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 69"; + rLen = 0; + rLoc = 2010; + rType = 0; + vrLen = 745; + vrLoc = 1475; + }; + 13E52C651195100F00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 25"; + rLen = 0; + rLoc = 594; + rType = 0; + vrLen = 601; + vrLoc = 0; + }; + 13E52C661195100F00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 37"; + rLen = 0; + rLoc = 771; + rType = 0; + vrLen = 945; + vrLoc = 85; + }; + 13E52C671195100F00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 16"; + rLen = 0; + rLoc = 242; + rType = 0; + vrLen = 872; + vrLoc = 76; + }; + 13E52C69119510A800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 69"; + rLen = 0; + rLoc = 2010; + rType = 0; + vrLen = 745; + vrLoc = 1475; + }; + 13E52C6A119510A800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 63"; + rLen = 0; + rLoc = 1193; + rType = 0; + vrLen = 351; + vrLoc = 1014; + }; + 13E52C6B119510A800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 63"; + rLen = 0; + rLoc = 1193; + rType = 0; + vrLen = 950; + vrLoc = 440; + }; + 13E52C6C119510A800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 25"; + rLen = 0; + rLoc = 594; + rType = 0; + vrLen = 601; + vrLoc = 0; + }; + 13E52C6D119510A800040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 37"; + rLen = 0; + rLoc = 771; + rType = 0; + vrLen = 945; + vrLoc = 85; + }; + 13E52C74119510F100040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 69"; + rLen = 0; + rLoc = 2010; + rType = 0; + vrLen = 745; + vrLoc = 1475; + }; + 13E52C75119510F100040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 44"; + rLen = 0; + rLoc = 966; + rType = 0; + vrLen = 940; + vrLoc = 141; + }; + 13E52C76119510F100040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 25"; + rLen = 0; + rLoc = 594; + rType = 0; + vrLen = 601; + vrLoc = 0; + }; + 13E52C7B1195113700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 69"; + rLen = 0; + rLoc = 2010; + rType = 0; + vrLen = 745; + vrLoc = 1475; + }; + 13E52C7E1195113700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 63"; + rLen = 0; + rLoc = 1193; + rType = 0; + vrLen = 326; + vrLoc = 1143; + }; + 13E52C7F1195113700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 73"; + rLen = 0; + rLoc = 1414; + rType = 0; + vrLen = 806; + vrLoc = 683; + }; + 13E52C801195113700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 43"; + rLen = 0; + rLoc = 925; + rType = 0; + vrLen = 504; + vrLoc = 577; + }; + 13E52C811195113700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 43"; + rLen = 0; + rLoc = 925; + rType = 0; + vrLen = 940; + vrLoc = 141; + }; + 13E52C821195113700040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */; + name = "GomokuViewController.h: 25"; + rLen = 0; + rLoc = 594; + rType = 0; + vrLen = 601; + vrLoc = 0; + }; + 13E52C841195117600040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 69"; + rLen = 0; + rLoc = 2010; + rType = 0; + vrLen = 574; + vrLoc = 1646; + }; + 13E52C851195117600040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 44"; + rLen = 0; + rLoc = 862; + rType = 0; + vrLen = 393; + vrLoc = 666; + }; + 13E52C861195117600040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 43"; + rLen = 0; + rLoc = 925; + rType = 0; + vrLen = 504; + vrLoc = 577; + }; + 13E52C871195117600040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52BE211950C1E00040946 /* Game.m */; + rLen = 0; + rLoc = 62; + rType = 1; + }; + 13E52C881195117600040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 63"; + rLen = 0; + rLoc = 1193; + rType = 0; + vrLen = 360; + vrLoc = 797; + }; + 13E52C8A119511B300040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 53"; + rLen = 0; + rLoc = 1085; + rType = 0; + vrLen = 772; + vrLoc = 25; + }; + 13E52C8B119511B300040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058A118E2FD700641403 /* GameBoardViewController.h */; + name = "GameBoardViewController.h: 18"; + rLen = 0; + rLoc = 362; + rType = 0; + vrLen = 605; + vrLoc = 0; + }; + 13E52C8C119511B300040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 69"; + rLen = 0; + rLoc = 2010; + rType = 0; + vrLen = 745; + vrLoc = 1475; + }; + 13E52C8D119511B300040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 70"; + rLen = 0; + rLoc = 2009; + rType = 0; + vrLen = 1036; + vrLoc = 500; + }; + 13E52C8E119511B300040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 42"; + rLen = 0; + rLoc = 911; + rType = 0; + vrLen = 907; + vrLoc = 179; + }; + 13E52C8F119511B300040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 73"; + rLen = 0; + rLoc = 1414; + rType = 0; + vrLen = 806; + vrLoc = 683; + }; + 13E52C901195121E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD101118FB48C0098C789 /* Move.h */; + name = "Move.h: 18"; + rLen = 0; + rLoc = 273; + rType = 0; + vrLen = 354; + vrLoc = 0; + }; + 13E52C911195121E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD1AC118FD2790098C789 /* Board.h */; + name = "Board.h: 29"; + rLen = 0; + rLoc = 527; + rType = 0; + vrLen = 527; + vrLoc = 0; + }; + 13E52C921195121E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD1AD118FD2790098C789 /* Board.m */; + name = "Board.m: 46"; + rLen = 0; + rLoc = 1175; + rType = 0; + vrLen = 761; + vrLoc = 588; + }; + 13E52C931195121E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD102118FB48C0098C789 /* Move.m */; + name = "Move.m: 27"; + rLen = 0; + rLoc = 467; + rType = 0; + vrLen = 495; + vrLoc = 0; + }; + 13E52C941195121E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BF118FAFAB0098C789 /* UIPlayer.m */; + name = "UIPlayer.m: 15"; + rLen = 0; + rLoc = 223; + rType = 0; + vrLen = 562; + vrLoc = 0; + }; + 13E52C951195121E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0BC118FAF350098C789 /* Player.h */; + name = "Player.h: 11"; + rLen = 0; + rLoc = 183; + rType = 0; + vrLen = 305; + vrLoc = 0; + }; + 13E52C961195121E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 27"; + rLen = 0; + rLoc = 517; + rType = 0; + vrLen = 697; + vrLoc = 136; + }; + 13E52C971195121E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; + name = "GameBoardViewController.m: 36"; + rLen = 0; + rLoc = 1100; + rType = 0; + vrLen = 953; + vrLoc = 601; + }; + 13E52C981195121E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8C62058A118E2FD700641403 /* GameBoardViewController.h */; + name = "GameBoardViewController.h: 18"; + rLen = 0; + rLoc = 362; + rType = 0; + vrLen = 605; + vrLoc = 0; + }; + 13E52C991195121E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 37"; + rLen = 0; + rLoc = 734; + rType = 0; + vrLen = 822; + vrLoc = 218; + }; + 13E52C9A1195121E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 37"; + rLen = 0; + rLoc = 734; + rType = 0; + vrLen = 771; + vrLoc = 85; + }; + 13E52C9B1195121E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 13E52B05119505CC00040946 /* GomokuViewController.m */; + name = "GomokuViewController.m: 42"; + rLen = 0; + rLoc = 911; + rType = 0; + vrLen = 907; + vrLoc = 179; + }; + 13E52C9C1195121E00040946 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 136FD0B7118FAF1E0098C789 /* Game.m */; + name = "Game.m: 72"; + rLen = 0; + rLoc = 1414; + rType = 0; + vrLen = 766; + vrLoc = 694; + }; + 1D3623240D0F684500981E51 /* GomokuAppDelegate.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1059, 474}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 338}"; + }; + }; + 1D3623250D0F684500981E51 /* GomokuAppDelegate.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1083, 577}}"; + sepNavSelRange = "{95, 1}"; + sepNavVisRange = "{0, 991}"; + sepNavWindowFrame = "{{15, 125}, {1135, 748}}"; + }; + }; + 1D6058900D05DD3D006BFB54 /* gomoku */ = { + activeExec = 0; + executables = ( + 138A7415118E42EC00CAB602 /* gomoku */, + ); + }; + 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {604, 392}}"; + sepNavSelRange = "{594, 0}"; + sepNavVisRange = "{3, 598}"; + sepNavWindowFrame = "{{95, 534}, {663, 524}}"; + }; + }; + 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {942, 686}}"; + sepNavSelRange = "{471, 0}"; + sepNavVisRange = "{41, 969}"; + sepNavWindowFrame = "{{199, 257}, {1135, 748}}"; + }; + }; + 29B97313FDCFA39411CA2CEA /* Project object */ = { + activeBuildConfigurationName = Debug; + activeExecutable = 138A7415118E42EC00CAB602 /* gomoku */; + activeTarget = 1D6058900D05DD3D006BFB54 /* gomoku */; + addToTargets = ( + 1D6058900D05DD3D006BFB54 /* gomoku */, + 8C9E036F0F6F3A3A002BA557 /* gomoku Unit Tests */, + ); + codeSenseManager = 138A741F118E42ED00CAB602 /* Code sense */; + executables = ( + 138A7415118E42EC00CAB602 /* gomoku */, + 138A7416118E42EC00CAB602 /* gomoku Unit Tests */, + ); + perUserDictionary = { + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 764, + 20, + 48, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXPerProjectTemplateStateSaveDate = 294978287; + PBXWorkspaceStateSaveDate = 294978287; + }; + perUserProjectItems = { + 133EAF0511928897004BDF4C = 133EAF0511928897004BDF4C /* PBXTextBookmark */; + 133EAF0811928897004BDF4C = 133EAF0811928897004BDF4C /* PBXTextBookmark */; + 136FD19C118FD0530098C789 = 136FD19C118FD0530098C789 /* PBXTextBookmark */; + 13BAE074119377820078F138 = 13BAE074119377820078F138 /* PBXTextBookmark */; + 13BAE0A7119379BC0078F138 = 13BAE0A7119379BC0078F138 /* PBXTextBookmark */; + 13BAE0A9119379BC0078F138 = 13BAE0A9119379BC0078F138 /* PBXTextBookmark */; + 13BAE0BE11937EC70078F138 = 13BAE0BE11937EC70078F138 /* PBXTextBookmark */; + 13BAE0BF11937EC70078F138 = 13BAE0BF11937EC70078F138 /* PBXTextBookmark */; + 13BAE0C111937EC70078F138 = 13BAE0C111937EC70078F138 /* PBXTextBookmark */; + 13BAE0C511937EC70078F138 = 13BAE0C511937EC70078F138 /* PBXTextBookmark */; + 13BAE0C611937EC70078F138 = 13BAE0C611937EC70078F138 /* PBXTextBookmark */; + 13BAE0C711937EC70078F138 = 13BAE0C711937EC70078F138 /* PBXTextBookmark */; + 13BAE0C811937EC70078F138 = 13BAE0C811937EC70078F138 /* PBXTextBookmark */; + 13BAE0C911937EC70078F138 = 13BAE0C911937EC70078F138 /* PBXTextBookmark */; + 13E52A5C1194E7F500040946 = 13E52A5C1194E7F500040946 /* PBXTextBookmark */; + 13E52A801194FC4D00040946 = 13E52A801194FC4D00040946 /* PBXTextBookmark */; + 13E52ACF119502E900040946 = 13E52ACF119502E900040946 /* PBXTextBookmark */; + 13E52AD0119502E900040946 = 13E52AD0119502E900040946 /* PBXTextBookmark */; + 13E52AD1119502E900040946 = 13E52AD1119502E900040946 /* PBXTextBookmark */; + 13E52AD2119502E900040946 = 13E52AD2119502E900040946 /* PBXTextBookmark */; + 13E52AD3119502E900040946 = 13E52AD3119502E900040946 /* PBXTextBookmark */; + 13E52AEB1195056400040946 /* PBXTextBookmark */ = 13E52AEB1195056400040946 /* PBXTextBookmark */; + 13E52AEC1195056400040946 /* PBXTextBookmark */ = 13E52AEC1195056400040946 /* PBXTextBookmark */; + 13E52AED1195056400040946 /* PBXTextBookmark */ = 13E52AED1195056400040946 /* PBXTextBookmark */; + 13E52AEE1195056400040946 /* PBXTextBookmark */ = 13E52AEE1195056400040946 /* PBXTextBookmark */; + 13E52AEF1195056400040946 /* PBXTextBookmark */ = 13E52AEF1195056400040946 /* PBXTextBookmark */; + 13E52AF01195056400040946 /* PBXTextBookmark */ = 13E52AF01195056400040946 /* PBXTextBookmark */; + 13E52AF11195056400040946 /* PBXTextBookmark */ = 13E52AF11195056400040946 /* PBXTextBookmark */; + 13E52AF21195056400040946 /* PBXTextBookmark */ = 13E52AF21195056400040946 /* PBXTextBookmark */; + 13E52AF31195056400040946 /* PBXTextBookmark */ = 13E52AF31195056400040946 /* PBXTextBookmark */; + 13E52AF41195056400040946 /* PBXTextBookmark */ = 13E52AF41195056400040946 /* PBXTextBookmark */; + 13E52AF9119505CC00040946 /* PBXTextBookmark */ = 13E52AF9119505CC00040946 /* PBXTextBookmark */; + 13E52AFA119505CC00040946 /* PBXTextBookmark */ = 13E52AFA119505CC00040946 /* PBXTextBookmark */; + 13E52AFC119505CC00040946 /* PBXTextBookmark */ = 13E52AFC119505CC00040946 /* PBXTextBookmark */; + 13E52AFE119505CC00040946 /* PBXTextBookmark */ = 13E52AFE119505CC00040946 /* PBXTextBookmark */; + 13E52B00119505CC00040946 /* PBXTextBookmark */ = 13E52B00119505CC00040946 /* PBXTextBookmark */; + 13E52B02119505CC00040946 /* PBXTextBookmark */ = 13E52B02119505CC00040946 /* PBXTextBookmark */; + 13E52B04119505CC00040946 /* PBXTextBookmark */ = 13E52B04119505CC00040946 /* PBXTextBookmark */; + 13E52B06119505CC00040946 /* PBXTextBookmark */ = 13E52B06119505CC00040946 /* PBXTextBookmark */; + 13E52B091195061200040946 /* PBXTextBookmark */ = 13E52B091195061200040946 /* PBXTextBookmark */; + 13E52B0A1195061200040946 /* PBXTextBookmark */ = 13E52B0A1195061200040946 /* PBXTextBookmark */; + 13E52B0B1195061200040946 /* PBXTextBookmark */ = 13E52B0B1195061200040946 /* PBXTextBookmark */; + 13E52B0C1195061800040946 /* PBXTextBookmark */ = 13E52B0C1195061800040946 /* PBXTextBookmark */; + 13E52B171195061800040946 /* PBXTextBookmark */ = 13E52B171195061800040946 /* PBXTextBookmark */; + 13E52B181195061800040946 /* PBXTextBookmark */ = 13E52B181195061800040946 /* PBXTextBookmark */; + 13E52B211195064700040946 /* PBXTextBookmark */ = 13E52B211195064700040946 /* PBXTextBookmark */; + 13E52B221195064700040946 /* PBXTextBookmark */ = 13E52B221195064700040946 /* PBXTextBookmark */; + 13E52B251195066500040946 /* PBXTextBookmark */ = 13E52B251195066500040946 /* PBXTextBookmark */; + 13E52B261195066500040946 /* PBXTextBookmark */ = 13E52B261195066500040946 /* PBXTextBookmark */; + 13E52B281195066500040946 /* PBXTextBookmark */ = 13E52B281195066500040946 /* PBXTextBookmark */; + 13E52B291195066500040946 /* PBXTextBookmark */ = 13E52B291195066500040946 /* PBXTextBookmark */; + 13E52B2C1195068900040946 /* PBXTextBookmark */ = 13E52B2C1195068900040946 /* PBXTextBookmark */; + 13E52B2D1195068900040946 /* PBXTextBookmark */ = 13E52B2D1195068900040946 /* PBXTextBookmark */; + 13E52B2E1195068900040946 /* PBXTextBookmark */ = 13E52B2E1195068900040946 /* PBXTextBookmark */; + 13E52B2F1195068900040946 /* PBXTextBookmark */ = 13E52B2F1195068900040946 /* PBXTextBookmark */; + 13E52B321195068E00040946 /* PBXTextBookmark */ = 13E52B321195068E00040946 /* PBXTextBookmark */; + 13E52B331195069000040946 /* PBXTextBookmark */ = 13E52B331195069000040946 /* PBXTextBookmark */; + 13E52B341195069000040946 /* PBXTextBookmark */ = 13E52B341195069000040946 /* PBXTextBookmark */; + 13E52B361195069000040946 /* PBXTextBookmark */ = 13E52B361195069000040946 /* PBXTextBookmark */; + 13E52B3B1195075C00040946 /* PBXTextBookmark */ = 13E52B3B1195075C00040946 /* PBXTextBookmark */; + 13E52B3C1195075C00040946 /* PBXTextBookmark */ = 13E52B3C1195075C00040946 /* PBXTextBookmark */; + 13E52B3D1195075C00040946 /* PBXTextBookmark */ = 13E52B3D1195075C00040946 /* PBXTextBookmark */; + 13E52B3E1195075C00040946 /* PBXTextBookmark */ = 13E52B3E1195075C00040946 /* PBXTextBookmark */; + 13E52B3F1195075C00040946 /* PBXTextBookmark */ = 13E52B3F1195075C00040946 /* PBXTextBookmark */; + 13E52B401195075C00040946 /* PBXTextBookmark */ = 13E52B401195075C00040946 /* PBXTextBookmark */; + 13E52B411195075C00040946 /* PBXTextBookmark */ = 13E52B411195075C00040946 /* PBXTextBookmark */; + 13E52B421195075C00040946 /* PBXTextBookmark */ = 13E52B421195075C00040946 /* PBXTextBookmark */; + 13E52B431195075C00040946 /* PBXTextBookmark */ = 13E52B431195075C00040946 /* PBXTextBookmark */; + 13E52B461195076900040946 /* PBXTextBookmark */ = 13E52B461195076900040946 /* PBXTextBookmark */; + 13E52B491195078D00040946 /* PBXTextBookmark */ = 13E52B491195078D00040946 /* PBXTextBookmark */; + 13E52B4C1195078D00040946 /* PBXTextBookmark */ = 13E52B4C1195078D00040946 /* PBXTextBookmark */; + 13E52B4D1195078D00040946 /* PBXTextBookmark */ = 13E52B4D1195078D00040946 /* PBXTextBookmark */; + 13E52B50119507B300040946 /* PBXTextBookmark */ = 13E52B50119507B300040946 /* PBXTextBookmark */; + 13E52B51119507B300040946 /* PBXTextBookmark */ = 13E52B51119507B300040946 /* PBXTextBookmark */; + 13E52B53119507B300040946 /* PBXTextBookmark */ = 13E52B53119507B300040946 /* PBXTextBookmark */; + 13E52B54119507B300040946 /* PBXTextBookmark */ = 13E52B54119507B300040946 /* PBXTextBookmark */; + 13E52B571195087400040946 /* XCBuildMessageTextBookmark */ = 13E52B571195087400040946 /* XCBuildMessageTextBookmark */; + 13E52B5A1195087A00040946 /* PBXTextBookmark */ = 13E52B5A1195087A00040946 /* PBXTextBookmark */; + 13E52B5B1195087A00040946 /* PBXTextBookmark */ = 13E52B5B1195087A00040946 /* PBXTextBookmark */; + 13E52B5C1195087A00040946 /* PBXTextBookmark */ = 13E52B5C1195087A00040946 /* PBXTextBookmark */; + 13E52B5D1195087A00040946 /* PBXTextBookmark */ = 13E52B5D1195087A00040946 /* PBXTextBookmark */; + 13E52B5E1195087A00040946 /* PBXTextBookmark */ = 13E52B5E1195087A00040946 /* PBXTextBookmark */; + 13E52B5F1195087A00040946 /* PBXTextBookmark */ = 13E52B5F1195087A00040946 /* PBXTextBookmark */; + 13E52B601195087A00040946 /* PBXTextBookmark */ = 13E52B601195087A00040946 /* PBXTextBookmark */; + 13E52B611195087A00040946 /* XCBuildMessageTextBookmark */ = 13E52B611195087A00040946 /* XCBuildMessageTextBookmark */; + 13E52B621195087A00040946 /* PBXTextBookmark */ = 13E52B621195087A00040946 /* PBXTextBookmark */; + 13E52B651195087A00040946 /* PBXTextBookmark */ = 13E52B651195087A00040946 /* PBXTextBookmark */; + 13E52B681195088000040946 /* PBXTextBookmark */ = 13E52B681195088000040946 /* PBXTextBookmark */; + 13E52B6B119508B800040946 /* PBXTextBookmark */ = 13E52B6B119508B800040946 /* PBXTextBookmark */; + 13E52B6E119508B800040946 /* PBXTextBookmark */ = 13E52B6E119508B800040946 /* PBXTextBookmark */; + 13E52B6F119508B800040946 /* PBXTextBookmark */ = 13E52B6F119508B800040946 /* PBXTextBookmark */; + 13E52B74119508C600040946 /* PBXTextBookmark */ = 13E52B74119508C600040946 /* PBXTextBookmark */; + 13E52B75119508C600040946 /* PBXTextBookmark */ = 13E52B75119508C600040946 /* PBXTextBookmark */; + 13E52B76119508C600040946 /* PBXTextBookmark */ = 13E52B76119508C600040946 /* PBXTextBookmark */; + 13E52B79119508DE00040946 /* PBXTextBookmark */ = 13E52B79119508DE00040946 /* PBXTextBookmark */; + 13E52B7A119508DE00040946 /* PBXTextBookmark */ = 13E52B7A119508DE00040946 /* PBXTextBookmark */; + 13E52B7C119508DE00040946 /* PBXTextBookmark */ = 13E52B7C119508DE00040946 /* PBXTextBookmark */; + 13E52B7D119508DE00040946 /* PBXTextBookmark */ = 13E52B7D119508DE00040946 /* PBXTextBookmark */; + 13E52B80119508E100040946 /* PBXTextBookmark */ = 13E52B80119508E100040946 /* PBXTextBookmark */; + 13E52B81119508E100040946 /* PBXTextBookmark */ = 13E52B81119508E100040946 /* PBXTextBookmark */; + 13E52B88119508EA00040946 /* PBXTextBookmark */ = 13E52B88119508EA00040946 /* PBXTextBookmark */; + 13E52B8A119508EE00040946 /* PBXTextBookmark */ = 13E52B8A119508EE00040946 /* PBXTextBookmark */; + 13E52B8B119508F100040946 /* PBXTextBookmark */ = 13E52B8B119508F100040946 /* PBXTextBookmark */; + 13E52B8D1195090C00040946 /* PBXTextBookmark */ = 13E52B8D1195090C00040946 /* PBXTextBookmark */; + 13E52B8F1195090C00040946 /* PBXTextBookmark */ = 13E52B8F1195090C00040946 /* PBXTextBookmark */; + 13E52B901195090C00040946 /* PBXTextBookmark */ = 13E52B901195090C00040946 /* PBXTextBookmark */; + 13E52B911195096800040946 /* PBXTextBookmark */ = 13E52B911195096800040946 /* PBXTextBookmark */; + 13E52B921195096800040946 /* PBXTextBookmark */ = 13E52B921195096800040946 /* PBXTextBookmark */; + 13E52B931195096800040946 /* PBXTextBookmark */ = 13E52B931195096800040946 /* PBXTextBookmark */; + 13E52B941195096800040946 /* PBXTextBookmark */ = 13E52B941195096800040946 /* PBXTextBookmark */; + 13E52B951195096800040946 /* PBXTextBookmark */ = 13E52B951195096800040946 /* PBXTextBookmark */; + 13E52B961195098400040946 /* PBXTextBookmark */ = 13E52B961195098400040946 /* PBXTextBookmark */; + 13E52B971195098400040946 /* PBXTextBookmark */ = 13E52B971195098400040946 /* PBXTextBookmark */; + 13E52B9A119509DC00040946 /* PBXTextBookmark */ = 13E52B9A119509DC00040946 /* PBXTextBookmark */; + 13E52B9B119509DC00040946 /* PBXTextBookmark */ = 13E52B9B119509DC00040946 /* PBXTextBookmark */; + 13E52B9C119509DC00040946 /* PBXTextBookmark */ = 13E52B9C119509DC00040946 /* PBXTextBookmark */; + 13E52B9D119509DC00040946 /* PBXTextBookmark */ = 13E52B9D119509DC00040946 /* PBXTextBookmark */; + 13E52B9E119509DC00040946 /* PBXTextBookmark */ = 13E52B9E119509DC00040946 /* PBXTextBookmark */; + 13E52B9F119509DC00040946 /* PBXTextBookmark */ = 13E52B9F119509DC00040946 /* PBXTextBookmark */; + 13E52BA0119509DC00040946 /* PBXTextBookmark */ = 13E52BA0119509DC00040946 /* PBXTextBookmark */; + 13E52BA1119509DC00040946 /* PBXTextBookmark */ = 13E52BA1119509DC00040946 /* PBXTextBookmark */; + 13E52BA4119509E400040946 /* PBXTextBookmark */ = 13E52BA4119509E400040946 /* PBXTextBookmark */; + 13E52BA711950A0400040946 /* PBXTextBookmark */ = 13E52BA711950A0400040946 /* PBXTextBookmark */; + 13E52BAC11950A3200040946 /* PBXTextBookmark */ = 13E52BAC11950A3200040946 /* PBXTextBookmark */; + 13E52BAF11950A3200040946 /* PBXTextBookmark */ = 13E52BAF11950A3200040946 /* PBXTextBookmark */; + 13E52BB011950A3200040946 /* PBXTextBookmark */ = 13E52BB011950A3200040946 /* PBXTextBookmark */; + 13E52BB111950A5F00040946 /* PBXTextBookmark */ = 13E52BB111950A5F00040946 /* PBXTextBookmark */; + 13E52BB211950A5F00040946 /* PBXTextBookmark */ = 13E52BB211950A5F00040946 /* PBXTextBookmark */; + 13E52BB311950A5F00040946 /* PBXTextBookmark */ = 13E52BB311950A5F00040946 /* PBXTextBookmark */; + 13E52BB611950A8E00040946 /* PBXTextBookmark */ = 13E52BB611950A8E00040946 /* PBXTextBookmark */; + 13E52BB711950A8E00040946 /* PBXTextBookmark */ = 13E52BB711950A8E00040946 /* PBXTextBookmark */; + 13E52BB811950A8E00040946 /* PBXTextBookmark */ = 13E52BB811950A8E00040946 /* PBXTextBookmark */; + 13E52BB911950A8E00040946 /* PBXTextBookmark */ = 13E52BB911950A8E00040946 /* PBXTextBookmark */; + 13E52BBA11950A8E00040946 /* PBXTextBookmark */ = 13E52BBA11950A8E00040946 /* PBXTextBookmark */; + 13E52BBB11950A8E00040946 /* PBXTextBookmark */ = 13E52BBB11950A8E00040946 /* PBXTextBookmark */; + 13E52BBC11950A8E00040946 /* PBXTextBookmark */ = 13E52BBC11950A8E00040946 /* PBXTextBookmark */; + 13E52BC111950B0100040946 /* PBXTextBookmark */ = 13E52BC111950B0100040946 /* PBXTextBookmark */; + 13E52BC211950B0100040946 /* PBXTextBookmark */ = 13E52BC211950B0100040946 /* PBXTextBookmark */; + 13E52BC311950B0100040946 /* PBXTextBookmark */ = 13E52BC311950B0100040946 /* PBXTextBookmark */; + 13E52BC411950B0100040946 /* PBXTextBookmark */ = 13E52BC411950B0100040946 /* PBXTextBookmark */; + 13E52BC511950B0100040946 /* PBXTextBookmark */ = 13E52BC511950B0100040946 /* PBXTextBookmark */; + 13E52BC711950B0700040946 /* PBXTextBookmark */ = 13E52BC711950B0700040946 /* PBXTextBookmark */; + 13E52BC811950B0700040946 /* PBXTextBookmark */ = 13E52BC811950B0700040946 /* PBXTextBookmark */; + 13E52BC911950B0A00040946 /* PBXTextBookmark */ = 13E52BC911950B0A00040946 /* PBXTextBookmark */; + 13E52BCA11950B0A00040946 /* PBXTextBookmark */ = 13E52BCA11950B0A00040946 /* PBXTextBookmark */; + 13E52BCC11950B2000040946 /* PBXTextBookmark */ = 13E52BCC11950B2000040946 /* PBXTextBookmark */; + 13E52BCD11950B2000040946 /* PBXTextBookmark */ = 13E52BCD11950B2000040946 /* PBXTextBookmark */; + 13E52BCF11950B2000040946 /* PBXTextBookmark */ = 13E52BCF11950B2000040946 /* PBXTextBookmark */; + 13E52BD311950C0400040946 /* PBXTextBookmark */ = 13E52BD311950C0400040946 /* PBXTextBookmark */; + 13E52BD411950C0400040946 /* PBXTextBookmark */ = 13E52BD411950C0400040946 /* PBXTextBookmark */; + 13E52BD511950C0400040946 /* PBXTextBookmark */ = 13E52BD511950C0400040946 /* PBXTextBookmark */; + 13E52BD611950C0400040946 /* PBXTextBookmark */ = 13E52BD611950C0400040946 /* PBXTextBookmark */; + 13E52BD711950C0400040946 /* PBXTextBookmark */ = 13E52BD711950C0400040946 /* PBXTextBookmark */; + 13E52BD911950C0600040946 /* PBXTextBookmark */ = 13E52BD911950C0600040946 /* PBXTextBookmark */; + 13E52BDA11950C0B00040946 /* PBXTextBookmark */ = 13E52BDA11950C0B00040946 /* PBXTextBookmark */; + 13E52BDB11950C0B00040946 /* PBXTextBookmark */ = 13E52BDB11950C0B00040946 /* PBXTextBookmark */; + 13E52BDD11950C1E00040946 /* PBXTextBookmark */ = 13E52BDD11950C1E00040946 /* PBXTextBookmark */; + 13E52BDE11950C1E00040946 /* PBXTextBookmark */ = 13E52BDE11950C1E00040946 /* PBXTextBookmark */; + 13E52BDF11950C1E00040946 /* PBXTextBookmark */ = 13E52BDF11950C1E00040946 /* PBXTextBookmark */; + 13E52BE111950C1E00040946 /* PBXTextBookmark */ = 13E52BE111950C1E00040946 /* PBXTextBookmark */; + 13E52BE311950C1E00040946 /* PBXTextBookmark */ = 13E52BE311950C1E00040946 /* PBXTextBookmark */; + 13E52BE611950C7900040946 /* PBXTextBookmark */ = 13E52BE611950C7900040946 /* PBXTextBookmark */; + 13E52BE711950C7900040946 /* PBXTextBookmark */ = 13E52BE711950C7900040946 /* PBXTextBookmark */; + 13E52BEA11950C7900040946 /* PBXTextBookmark */ = 13E52BEA11950C7900040946 /* PBXTextBookmark */; + 13E52BEB11950C7900040946 /* PBXTextBookmark */ = 13E52BEB11950C7900040946 /* PBXTextBookmark */; + 13E52BEC11950C7900040946 /* PBXTextBookmark */ = 13E52BEC11950C7900040946 /* PBXTextBookmark */; + 13E52BEF11950C7D00040946 /* PBXTextBookmark */ = 13E52BEF11950C7D00040946 /* PBXTextBookmark */; + 13E52BF011950C8700040946 /* PBXTextBookmark */ = 13E52BF011950C8700040946 /* PBXTextBookmark */; + 13E52BF211950C8700040946 /* PBXTextBookmark */ = 13E52BF211950C8700040946 /* PBXTextBookmark */; + 13E52BF311950D1600040946 /* PBXTextBookmark */ = 13E52BF311950D1600040946 /* PBXTextBookmark */; + 13E52BF411950D2F00040946 /* PBXTextBookmark */ = 13E52BF411950D2F00040946 /* PBXTextBookmark */; + 13E52BF511950D2F00040946 /* PBXTextBookmark */ = 13E52BF511950D2F00040946 /* PBXTextBookmark */; + 13E52BF711950D2F00040946 /* PBXTextBookmark */ = 13E52BF711950D2F00040946 /* PBXTextBookmark */; + 13E52C0A11950E7800040946 /* PBXTextBookmark */ = 13E52C0A11950E7800040946 /* PBXTextBookmark */; + 13E52C0B11950E7800040946 /* PBXTextBookmark */ = 13E52C0B11950E7800040946 /* PBXTextBookmark */; + 13E52C0C11950E7800040946 /* PBXTextBookmark */ = 13E52C0C11950E7800040946 /* PBXTextBookmark */; + 13E52C0D11950E7800040946 /* PBXTextBookmark */ = 13E52C0D11950E7800040946 /* PBXTextBookmark */; + 13E52C0E11950E7800040946 /* PBXTextBookmark */ = 13E52C0E11950E7800040946 /* PBXTextBookmark */; + 13E52C0F11950E7800040946 /* PBXTextBookmark */ = 13E52C0F11950E7800040946 /* PBXTextBookmark */; + 13E52C1011950E7800040946 /* PBXTextBookmark */ = 13E52C1011950E7800040946 /* PBXTextBookmark */; + 13E52C1111950E7800040946 /* PBXTextBookmark */ = 13E52C1111950E7800040946 /* PBXTextBookmark */; + 13E52C1711950E7D00040946 /* PBXTextBookmark */ = 13E52C1711950E7D00040946 /* PBXTextBookmark */; + 13E52C1911950EAB00040946 /* PBXTextBookmark */ = 13E52C1911950EAB00040946 /* PBXTextBookmark */; + 13E52C1B11950EAB00040946 /* PBXTextBookmark */ = 13E52C1B11950EAB00040946 /* PBXTextBookmark */; + 13E52C1D11950EAB00040946 /* PBXTextBookmark */ = 13E52C1D11950EAB00040946 /* PBXTextBookmark */; + 13E52C1E11950EAB00040946 /* PBXTextBookmark */ = 13E52C1E11950EAB00040946 /* PBXTextBookmark */; + 13E52C1F11950EAB00040946 /* PBXTextBookmark */ = 13E52C1F11950EAB00040946 /* PBXTextBookmark */; + 13E52C2011950EAB00040946 /* PBXTextBookmark */ = 13E52C2011950EAB00040946 /* PBXTextBookmark */; + 13E52C2311950EB700040946 /* PBXTextBookmark */ = 13E52C2311950EB700040946 /* PBXTextBookmark */; + 13E52C2411950EB700040946 /* PBXTextBookmark */ = 13E52C2411950EB700040946 /* PBXTextBookmark */; + 13E52C2511950EB700040946 /* PBXTextBookmark */ = 13E52C2511950EB700040946 /* PBXTextBookmark */; + 13E52C2611950EB700040946 /* PBXTextBookmark */ = 13E52C2611950EB700040946 /* PBXTextBookmark */; + 13E52C2811950EBA00040946 /* PBXTextBookmark */ = 13E52C2811950EBA00040946 /* PBXTextBookmark */; + 13E52C2911950EBB00040946 /* PBXTextBookmark */ = 13E52C2911950EBB00040946 /* PBXTextBookmark */; + 13E52C2A11950EBB00040946 /* PBXTextBookmark */ = 13E52C2A11950EBB00040946 /* PBXTextBookmark */; + 13E52C2E11950EDE00040946 /* PBXTextBookmark */ = 13E52C2E11950EDE00040946 /* PBXTextBookmark */; + 13E52C3111950EDE00040946 /* PBXTextBookmark */ = 13E52C3111950EDE00040946 /* PBXTextBookmark */; + 13E52C3211950EDE00040946 /* PBXTextBookmark */ = 13E52C3211950EDE00040946 /* PBXTextBookmark */; + 13E52C3311950EDE00040946 /* PBXTextBookmark */ = 13E52C3311950EDE00040946 /* PBXTextBookmark */; + 13E52C3811950F1E00040946 /* PBXTextBookmark */ = 13E52C3811950F1E00040946 /* PBXTextBookmark */; + 13E52C3911950F1E00040946 /* PBXTextBookmark */ = 13E52C3911950F1E00040946 /* PBXTextBookmark */; + 13E52C3A11950F1E00040946 /* PBXTextBookmark */ = 13E52C3A11950F1E00040946 /* PBXTextBookmark */; + 13E52C3D11950F3C00040946 /* PBXTextBookmark */ = 13E52C3D11950F3C00040946 /* PBXTextBookmark */; + 13E52C3E11950F3C00040946 /* PBXTextBookmark */ = 13E52C3E11950F3C00040946 /* PBXTextBookmark */; + 13E52C3F11950F3C00040946 /* PBXTextBookmark */ = 13E52C3F11950F3C00040946 /* PBXTextBookmark */; + 13E52C4011950F3C00040946 /* PBXTextBookmark */ = 13E52C4011950F3C00040946 /* PBXTextBookmark */; + 13E52C4211950F3C00040946 /* PBXTextBookmark */ = 13E52C4211950F3C00040946 /* PBXTextBookmark */; + 13E52C4411950F3E00040946 /* PBXBookmark */ = 13E52C4411950F3E00040946 /* PBXBookmark */; + 13E52C4711950F6700040946 /* PBXTextBookmark */ = 13E52C4711950F6700040946 /* PBXTextBookmark */; + 13E52C4A11950F6700040946 /* PBXTextBookmark */ = 13E52C4A11950F6700040946 /* PBXTextBookmark */; + 13E52C4B11950F6700040946 /* PBXTextBookmark */ = 13E52C4B11950F6700040946 /* PBXTextBookmark */; + 13E52C4C11950F6700040946 /* PBXTextBookmark */ = 13E52C4C11950F6700040946 /* PBXTextBookmark */; + 13E52C5011950F9B00040946 /* PBXBookmark */ = 13E52C5011950F9B00040946 /* PBXBookmark */; + 13E52C5311950FAD00040946 /* PBXTextBookmark */ = 13E52C5311950FAD00040946 /* PBXTextBookmark */; + 13E52C5411950FAD00040946 /* PBXTextBookmark */ = 13E52C5411950FAD00040946 /* PBXTextBookmark */; + 13E52C5511950FAD00040946 /* PBXTextBookmark */ = 13E52C5511950FAD00040946 /* PBXTextBookmark */; + 13E52C5611950FAD00040946 /* PBXTextBookmark */ = 13E52C5611950FAD00040946 /* PBXTextBookmark */; + 13E52C5711950FAD00040946 /* PBXTextBookmark */ = 13E52C5711950FAD00040946 /* PBXTextBookmark */; + 13E52C5811950FAD00040946 /* PBXTextBookmark */ = 13E52C5811950FAD00040946 /* PBXTextBookmark */; + 13E52C5911950FAD00040946 /* PBXTextBookmark */ = 13E52C5911950FAD00040946 /* PBXTextBookmark */; + 13E52C5E1195100A00040946 /* PBXTextBookmark */ = 13E52C5E1195100A00040946 /* PBXTextBookmark */; + 13E52C5F1195100A00040946 /* PBXTextBookmark */ = 13E52C5F1195100A00040946 /* PBXTextBookmark */; + 13E52C601195100A00040946 /* PBXTextBookmark */ = 13E52C601195100A00040946 /* PBXTextBookmark */; + 13E52C611195100A00040946 /* PBXTextBookmark */ = 13E52C611195100A00040946 /* PBXTextBookmark */; + 13E52C631195100D00040946 /* PBXTextBookmark */ = 13E52C631195100D00040946 /* PBXTextBookmark */; + 13E52C641195100F00040946 /* PBXTextBookmark */ = 13E52C641195100F00040946 /* PBXTextBookmark */; + 13E52C651195100F00040946 /* PBXTextBookmark */ = 13E52C651195100F00040946 /* PBXTextBookmark */; + 13E52C661195100F00040946 /* PBXTextBookmark */ = 13E52C661195100F00040946 /* PBXTextBookmark */; + 13E52C671195100F00040946 /* PBXTextBookmark */ = 13E52C671195100F00040946 /* PBXTextBookmark */; + 13E52C69119510A800040946 /* PBXTextBookmark */ = 13E52C69119510A800040946 /* PBXTextBookmark */; + 13E52C6A119510A800040946 /* PBXTextBookmark */ = 13E52C6A119510A800040946 /* PBXTextBookmark */; + 13E52C6B119510A800040946 /* PBXTextBookmark */ = 13E52C6B119510A800040946 /* PBXTextBookmark */; + 13E52C6C119510A800040946 /* PBXTextBookmark */ = 13E52C6C119510A800040946 /* PBXTextBookmark */; + 13E52C6D119510A800040946 /* PBXTextBookmark */ = 13E52C6D119510A800040946 /* PBXTextBookmark */; + 13E52C74119510F100040946 /* PBXTextBookmark */ = 13E52C74119510F100040946 /* PBXTextBookmark */; + 13E52C75119510F100040946 /* PBXTextBookmark */ = 13E52C75119510F100040946 /* PBXTextBookmark */; + 13E52C76119510F100040946 /* PBXTextBookmark */ = 13E52C76119510F100040946 /* PBXTextBookmark */; + 13E52C7B1195113700040946 /* PBXTextBookmark */ = 13E52C7B1195113700040946 /* PBXTextBookmark */; + 13E52C7E1195113700040946 /* PBXTextBookmark */ = 13E52C7E1195113700040946 /* PBXTextBookmark */; + 13E52C7F1195113700040946 /* PBXTextBookmark */ = 13E52C7F1195113700040946 /* PBXTextBookmark */; + 13E52C801195113700040946 /* PBXTextBookmark */ = 13E52C801195113700040946 /* PBXTextBookmark */; + 13E52C811195113700040946 /* PBXTextBookmark */ = 13E52C811195113700040946 /* PBXTextBookmark */; + 13E52C821195113700040946 /* PBXTextBookmark */ = 13E52C821195113700040946 /* PBXTextBookmark */; + 13E52C841195117600040946 /* PBXTextBookmark */ = 13E52C841195117600040946 /* PBXTextBookmark */; + 13E52C851195117600040946 /* PBXTextBookmark */ = 13E52C851195117600040946 /* PBXTextBookmark */; + 13E52C861195117600040946 /* PBXTextBookmark */ = 13E52C861195117600040946 /* PBXTextBookmark */; + 13E52C871195117600040946 /* PBXTextBookmark */ = 13E52C871195117600040946 /* PBXTextBookmark */; + 13E52C881195117600040946 /* PBXTextBookmark */ = 13E52C881195117600040946 /* PBXTextBookmark */; + 13E52C8A119511B300040946 /* PBXTextBookmark */ = 13E52C8A119511B300040946 /* PBXTextBookmark */; + 13E52C8B119511B300040946 /* PBXTextBookmark */ = 13E52C8B119511B300040946 /* PBXTextBookmark */; + 13E52C8C119511B300040946 /* PBXTextBookmark */ = 13E52C8C119511B300040946 /* PBXTextBookmark */; + 13E52C8D119511B300040946 /* PBXTextBookmark */ = 13E52C8D119511B300040946 /* PBXTextBookmark */; + 13E52C8E119511B300040946 /* PBXTextBookmark */ = 13E52C8E119511B300040946 /* PBXTextBookmark */; + 13E52C8F119511B300040946 /* PBXTextBookmark */ = 13E52C8F119511B300040946 /* PBXTextBookmark */; + 13E52C901195121E00040946 /* PBXTextBookmark */ = 13E52C901195121E00040946 /* PBXTextBookmark */; + 13E52C911195121E00040946 /* PBXTextBookmark */ = 13E52C911195121E00040946 /* PBXTextBookmark */; + 13E52C921195121E00040946 /* PBXTextBookmark */ = 13E52C921195121E00040946 /* PBXTextBookmark */; + 13E52C931195121E00040946 /* PBXTextBookmark */ = 13E52C931195121E00040946 /* PBXTextBookmark */; + 13E52C941195121E00040946 /* PBXTextBookmark */ = 13E52C941195121E00040946 /* PBXTextBookmark */; + 13E52C951195121E00040946 /* PBXTextBookmark */ = 13E52C951195121E00040946 /* PBXTextBookmark */; + 13E52C961195121E00040946 /* PBXTextBookmark */ = 13E52C961195121E00040946 /* PBXTextBookmark */; + 13E52C971195121E00040946 /* PBXTextBookmark */ = 13E52C971195121E00040946 /* PBXTextBookmark */; + 13E52C981195121E00040946 /* PBXTextBookmark */ = 13E52C981195121E00040946 /* PBXTextBookmark */; + 13E52C991195121E00040946 /* PBXTextBookmark */ = 13E52C991195121E00040946 /* PBXTextBookmark */; + 13E52C9A1195121E00040946 /* PBXTextBookmark */ = 13E52C9A1195121E00040946 /* PBXTextBookmark */; + 13E52C9B1195121E00040946 /* PBXTextBookmark */ = 13E52C9B1195121E00040946 /* PBXTextBookmark */; + 13E52C9C1195121E00040946 /* PBXTextBookmark */ = 13E52C9C1195121E00040946 /* PBXTextBookmark */; + }; + sourceControlManager = 138A741E118E42ED00CAB602 /* Source Control */; + userBuildSettings = { + }; + }; + 8C62058A118E2FD700641403 /* GameBoardViewController.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {772, 467}}"; + sepNavSelRange = "{362, 0}"; + sepNavVisRange = "{0, 605}"; + sepNavWindowFrame = "{{84, 242}, {1135, 748}}"; + }; + }; + 8C62058B118E2FD700641403 /* GameBoardViewController.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {845, 1232}}"; + sepNavSelRange = "{1100, 0}"; + sepNavVisRange = "{601, 953}"; + sepNavWindowFrame = "{{637, 308}, {1135, 748}}"; + }; + }; + 8C620619118E3FA800641403 /* BoardCell.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1078, 474}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 348}"; + }; + }; + 8C62061A118E3FA800641403 /* BoardCell.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1078, 630}}"; + sepNavSelRange = "{222, 0}"; + sepNavVisRange = "{128, 663}"; + sepNavWindowFrame = "{{61, 383}, {1135, 748}}"; + }; + }; + 8C9E036F0F6F3A3A002BA557 /* gomoku Unit Tests */ = { + activeExec = 0; + executables = ( + 138A7416118E42EC00CAB602 /* gomoku Unit Tests */, + ); + }; +} diff --git a/gomoku.xcodeproj/kig.perspectivev3 b/gomoku.xcodeproj/kig.perspectivev3 new file mode 100644 index 0000000..af051dc --- /dev/null +++ b/gomoku.xcodeproj/kig.perspectivev3 @@ -0,0 +1,1608 @@ + + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCProjectFormatConflictsModule + Name + Project Format Conflicts List + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + BundleLoadPath + + MaxInstances + n + Module + XCSnapshotModule + Name + Snapshots Tool + + + BundlePath + /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources + Description + AIODescriptionKey + DockingSystemVisible + + Extension + perspectivev3 + FavBarConfig + + PBXProjectModuleGUID + 138A7408118E343800CAB602 + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.defaultV3 + MajorVersion + 34 + MinorVersion + 0 + Name + All-In-One + Notifications + + OpenEditors + + + Content + + PBXProjectModuleGUID + 13E52C2F11950EDE00040946 + PBXProjectModuleLabel + GomokuViewController.m + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 13E52C3011950EDE00040946 + PBXProjectModuleLabel + GomokuViewController.m + _historyCapacity + 0 + bookmark + 13E52C9B1195121E00040946 + history + + 13E52C801195113700040946 + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {750, 645}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 633 370 750 686 0 0 1920 1058 + + + + Content + + PBXProjectModuleGUID + 13E52C7C1195113700040946 + PBXProjectModuleLabel + Game.m + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 13E52C7D1195113700040946 + PBXProjectModuleLabel + Game.m + _historyCapacity + 0 + bookmark + 13E52C9C1195121E00040946 + history + + 13E52C7E1195113700040946 + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {1135, 651}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 366 208 1135 692 0 0 1920 1058 + + + + PerspectiveWidths + + 1134 + 1134 + + Perspectives + + + ChosenToolbarItems + + XCToolbarPerspectiveControl + NSToolbarSeparatorItem + active-combo-popup + action + NSToolbarFlexibleSpaceItem + debugger-enable-breakpoints + build-and-go + com.apple.ide.PBXToolbarStopButton + get-info + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.project + IsVertical + + Layout + + + BecomeActive + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CA23ED40692098700951B8B + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 279 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 080E96DDFE201D6D7F000001 + 8C36CD29117BA91300041B0C + 8C9E03630F6F39C4002BA557 + 8C9E03620F6F39BD002BA557 + 29B97317FDCFA39411CA2CEA + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 18 + 14 + 3 + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {279, 802}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + + GeometryConfiguration + + Frame + {{0, 0}, {296, 820}} + GroupTreeTableConfiguration + + MainColumn + 279 + + RubberWindowFrame + 359 122 1134 861 0 0 1920 1058 + + Module + PBXSmartGroupTreeModule + Proportion + 296pt + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 138A7400118E343800CAB602 + PBXProjectModuleLabel + GomokuViewController.m + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 138A7401118E343800CAB602 + PBXProjectModuleLabel + GomokuViewController.m + _historyCapacity + 0 + bookmark + 13E52C9A1195121E00040946 + history + + 136FD19C118FD0530098C789 + 133EAF0511928897004BDF4C + 133EAF0811928897004BDF4C + 13BAE0A7119379BC0078F138 + 13BAE0C611937EC70078F138 + 13BAE0C711937EC70078F138 + 13E52B9E119509DC00040946 + 13E52BE111950C1E00040946 + 13E52BE611950C7900040946 + 13E52BF511950D2F00040946 + 13E52C0B11950E7800040946 + 13E52C5311950FAD00040946 + 13E52C901195121E00040946 + 13E52C911195121E00040946 + 13E52C921195121E00040946 + 13E52C931195121E00040946 + 13E52C941195121E00040946 + 13E52C951195121E00040946 + 13E52C961195121E00040946 + 13E52C971195121E00040946 + 13E52C981195121E00040946 + 13E52C991195121E00040946 + + + SplitCount + 1 + + StatusBarVisibility + + XCSharingToken + com.apple.Xcode.CommonNavigatorGroupSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {833, 522}} + RubberWindowFrame + 359 122 1134 861 0 0 1920 1058 + + Module + PBXNavigatorGroup + Proportion + 522pt + + + Proportion + 293pt + Tabs + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA23EDF0692099D00951B8B + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{10, 27}, {1003, 266}} + + Module + XCDetailModule + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA23EE00692099D00951B8B + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{10, 27}, {834, 253}} + + Module + PBXProjectFindModule + + + ContentConfiguration + + PBXCVSModuleFilterTypeKey + 1032 + PBXProjectModuleGUID + 1CA23EE10692099D00951B8B + PBXProjectModuleLabel + SCM Results + + GeometryConfiguration + + Frame + {{10, 27}, {834, 253}} + + Module + PBXCVSModule + + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build Results + XCBuildResultsTrigger_Collapse + 1021 + XCBuildResultsTrigger_Open + 1011 + + GeometryConfiguration + + Frame + {{10, 27}, {833, 266}} + RubberWindowFrame + 359 122 1134 861 0 0 1920 1058 + + Module + PBXBuildResultsModule + + + + + Proportion + 833pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDockableTabModule + XCDetailModule + PBXProjectFindModule + PBXCVSModule + PBXBuildResultsModule + + TableOfContents + + 13E52B0D1195061800040946 + 1CA23ED40692098700951B8B + 13E52B0E1195061800040946 + 138A7400118E343800CAB602 + 13E52B0F1195061800040946 + 1CA23EDF0692099D00951B8B + 1CA23EE00692099D00951B8B + 1CA23EE10692099D00951B8B + XCMainBuildResultsModuleGUID + + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarConfiguration + xcode.toolbar.config.defaultV3 + + + ChosenToolbarItems + + XCToolbarPerspectiveControl + NSToolbarSeparatorItem + active-combo-popup + NSToolbarFlexibleSpaceItem + debugger-enable-breakpoints + build-and-go + com.apple.ide.PBXToolbarStopButton + debugger-restart-executable + debugger-pause + debugger-step-over + debugger-step-into + debugger-step-out + NSToolbarFlexibleSpaceItem + servicesModulebreakpoints + debugger-show-console-window + + ControllerClassBaseName + PBXDebugSessionModule + IconName + DebugTabIcon + Identifier + perspective.debug + IsVertical + + Layout + + + ContentConfiguration + + PBXProjectModuleGUID + 1CCC7628064C1048000F2A68 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {1134, 279}} + + Module + PBXDebugCLIModule + Proportion + 279pt + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {552, 261}} + {{552, 0}, {582, 261}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {1134, 261}} + {{0, 261}, {1134, 275}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1CCC7629064C1048000F2A68 + PBXProjectModuleLabel + Debug + + GeometryConfiguration + + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 284}, {1134, 536}} + PBXDebugSessionStackFrameViewKey + + DebugVariablesTableConfiguration + + Name + 254 + Value + 85 + Summary + 218 + + Frame + {{552, 0}, {582, 261}} + + + Module + PBXDebugSessionModule + Proportion + 536pt + + + Name + Debug + ServiceClasses + + XCModuleDock + PBXDebugCLIModule + PBXDebugSessionModule + PBXDebugProcessAndThreadModule + PBXDebugProcessViewModule + PBXDebugThreadViewModule + PBXDebugStackFrameViewModule + PBXNavigatorGroup + + TableOfContents + + 13E52B101195061800040946 + 1CCC7628064C1048000F2A68 + 1CCC7629064C1048000F2A68 + 13E52B111195061800040946 + 13E52B121195061800040946 + 13E52B131195061800040946 + 13E52B141195061800040946 + 138A7400118E343800CAB602 + + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarConfiguration + xcode.toolbar.config.debugV3 + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecification.xcperspec' + StatusbarIsVisible + + TimeStamp + 0.0 + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 1 + Type + Perspectives + UpdateMessage + + WindowJustification + 5 + WindowOrderList + + 13E52C831195113700040946 + 13E52C1311950E7800040946 + 13E52B1A1195061800040946 + 13E52B1B1195061800040946 + 13E52C7C1195113700040946 + 13E52C2F11950EDE00040946 + /Users/kig/Coding/xcode/Gomoku/Gomoku.xcodeproj + + WindowString + 359 122 1134 861 0 0 1920 1058 + WindowToolsV3 + + + Identifier + windowTool.debugger + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {317, 164}} + {{317, 0}, {377, 164}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {694, 164}} + {{0, 164}, {694, 216}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleDrawerSize + {100, 120} + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {694, 380}} + RubberWindowFrame + 321 238 694 422 0 0 1440 878 + + Module + PBXDebugSessionModule + Proportion + 100% + + + Proportion + 100% + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CD10A99069EF8BA00B06720 + 1C0AD2AB069F1E9B00FABCE6 + 1C162984064C10D400B95A72 + 1C0AD2AC069F1E9B00FABCE6 + + ToolbarConfiguration + xcode.toolbar.config.debugV3 + WindowString + 321 238 694 422 0 0 1440 878 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + 0 + + + Identifier + windowTool.build + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CD052900623707200166675 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {500, 215}} + RubberWindowFrame + 192 257 500 500 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 218pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build Results + + GeometryConfiguration + + Frame + {{0, 222}, {500, 236}} + RubberWindowFrame + 192 257 500 500 0 0 1280 1002 + + Module + PBXBuildResultsModule + Proportion + 236pt + + + Proportion + 458pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAA5065D492600B07095 + 1C78EAA6065D492600B07095 + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.buildV3 + WindowString + 192 257 500 500 0 0 1280 1002 + + + Identifier + windowTool.find + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CD0528D0623707200166675 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {781, 167}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 50% + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{8, 0}, {773, 254}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXProjectFindModule + Proportion + 50% + + + Proportion + 428pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C530D57069F1CE1000CFCEE + 1C530D58069F1CE1000CFCEE + 1C530D59069F1CE1000CFCEE + 1CDD528C0622207200134675 + 1C530D5A069F1CE1000CFCEE + 1CE0B1FE06471DED0097A5F4 + 1CD0528E0623707200166675 + + WindowString + 62 385 781 470 0 0 1440 878 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + 0 + + + Identifier + windowTool.snapshots + Layout + + + Dock + + + Module + XCSnapshotModule + Proportion + 100% + + + Proportion + 100% + + + Name + Snapshots + ServiceClasses + + XCSnapshotModule + + StatusbarIsVisible + Yes + ToolbarConfiguration + xcode.toolbar.config.snapshots + WindowString + 315 824 300 550 0 0 1440 878 + WindowToolIsVisible + Yes + + + Identifier + windowTool.debuggerConsole + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {700, 358}} + RubberWindowFrame + 149 87 700 400 0 0 1440 878 + + Module + PBXDebugCLIModule + Proportion + 358pt + + + Proportion + 358pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C530D5B069F1CE1000CFCEE + 1C530D5C069F1CE1000CFCEE + 1C78EAAC065D492600B07095 + + ToolbarConfiguration + xcode.toolbar.config.consoleV3 + WindowString + 149 87 440 400 0 0 1440 878 + WindowToolGUID + 1C530D5B069F1CE1000CFCEE + WindowToolIsVisible + 0 + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.09500122070312 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scmV3 + WindowString + 743 379 452 308 0 0 1280 1002 + + + Identifier + windowTool.breakpoints + IsVertical + 0 + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 0 + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 3 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CDDB66807F98D9800BB5817 + 1CDDB66907F98D9800BB5817 + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpointsV3 + WindowString + 315 424 744 409 0 0 1440 878 + WindowToolGUID + 1CDDB66807F98D9800BB5817 + WindowToolIsVisible + 1 + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimatorV3 + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 166pt + + + Proportion + 166pt + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.projectFormatConflicts + Layout + + + Dock + + + Module + XCProjectFormatConflictsModule + Proportion + 100% + + + Proportion + 100% + + + Name + Project Format Conflicts + ServiceClasses + + XCProjectFormatConflictsModule + + StatusbarIsVisible + 0 + WindowContentMinSize + 450 300 + WindowString + 50 850 472 307 0 0 1440 877 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {369, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {616, 353}} + MembersFrame + {{0, 105}, {369, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 94 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 597 125 616 374 0 0 1280 1002 + + Module + PBXClassBrowserModule + Proportion + 354pt + + + Proportion + 354pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C78EABA065D492600B07095 + 1C78EABB065D492600B07095 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 597 125 616 374 0 0 1280 1002 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.refactoring + IncludeInToolsMenu + 0 + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 13E52C1211950E7800040946 + + GeometryConfiguration + + Frame + {{0, 0}, {500, 315}} + RubberWindowFrame + 390 679 500 356 0 0 1920 1058 + + Module + XCRefactoringModule + Proportion + 315pt + + + Proportion + 315pt + + + Name + Refactoring + ServiceClasses + + XCRefactoringModule + + StatusbarIsVisible + + TableOfContents + + 13E52C1311950E7800040946 + 13E52C1411950E7800040946 + 13E52C1211950E7800040946 + + WindowString + 390 679 500 356 0 0 1920 1058 + WindowToolGUID + 13E52C1311950E7800040946 + WindowToolIsVisible + + + + + diff --git a/gomoku.xcodeproj/project.pbxproj b/gomoku.xcodeproj/project.pbxproj new file mode 100755 index 0000000..52b3f0d --- /dev/null +++ b/gomoku.xcodeproj/project.pbxproj @@ -0,0 +1,563 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 135C99D114DA0DC40004D158 /* BoardSquare_0.png in Resources */ = {isa = PBXBuildFile; fileRef = 135C99CC14DA0DC40004D158 /* BoardSquare_0.png */; }; + 135C99D214DA0DC40004D158 /* BoardSquare_0.png in Resources */ = {isa = PBXBuildFile; fileRef = 135C99CC14DA0DC40004D158 /* BoardSquare_0.png */; }; + 135C99D314DA0DC40004D158 /* BoardSquare_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 135C99CD14DA0DC40004D158 /* BoardSquare_1.png */; }; + 135C99D414DA0DC40004D158 /* BoardSquare_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 135C99CD14DA0DC40004D158 /* BoardSquare_1.png */; }; + 135C99D514DA0DC40004D158 /* BoardSquare_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 135C99CE14DA0DC40004D158 /* BoardSquare_2.png */; }; + 135C99D614DA0DC40004D158 /* BoardSquare_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 135C99CE14DA0DC40004D158 /* BoardSquare_2.png */; }; + 135C99DC14DA0DD20004D158 /* icon-114.png in Resources */ = {isa = PBXBuildFile; fileRef = 135C99DB14DA0DD20004D158 /* icon-114.png */; }; + 135C99DE14DA0DD90004D158 /* icon-57.png in Resources */ = {isa = PBXBuildFile; fileRef = 135C99DD14DA0DD90004D158 /* icon-57.png */; }; + 136FD0B8118FAF1E0098C789 /* Game.m in Sources */ = {isa = PBXBuildFile; fileRef = 136FD0B7118FAF1E0098C789 /* Game.m */; }; + 136FD0B9118FAF1E0098C789 /* Game.m in Sources */ = {isa = PBXBuildFile; fileRef = 136FD0B7118FAF1E0098C789 /* Game.m */; }; + 136FD0C0118FAFAB0098C789 /* UIPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 136FD0BF118FAFAB0098C789 /* UIPlayer.m */; }; + 136FD0D7118FB3CA0098C789 /* UIPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 136FD0BF118FAFAB0098C789 /* UIPlayer.m */; }; + 136FD103118FB48C0098C789 /* Move.m in Sources */ = {isa = PBXBuildFile; fileRef = 136FD102118FB48C0098C789 /* Move.m */; }; + 136FD104118FB48C0098C789 /* Move.m in Sources */ = {isa = PBXBuildFile; fileRef = 136FD102118FB48C0098C789 /* Move.m */; }; + 136FD1AE118FD2790098C789 /* Board.m in Sources */ = {isa = PBXBuildFile; fileRef = 136FD1AD118FD2790098C789 /* Board.m */; }; + 136FD1AF118FD2790098C789 /* Board.m in Sources */ = {isa = PBXBuildFile; fileRef = 136FD1AD118FD2790098C789 /* Board.m */; }; + 1D3623260D0F684500981E51 /* GomokuAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* GomokuAppDelegate.m */; }; + 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; + 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; + 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; + 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; }; + 2899E5220DE3E06400AC0155 /* GomokuViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2899E5210DE3E06400AC0155 /* GomokuViewController.xib */; }; + 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; }; + 28D7ACF80DDB3853001CB0EB /* GomokuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; }; + 8C36CD44117BA9EF00041B0C /* GomokuAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* GomokuAppDelegate.m */; }; + 8C36CD45117BA9F000041B0C /* GomokuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */; }; + 8C36CD46117BAA0200041B0C /* GomokuViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2899E5210DE3E06400AC0155 /* GomokuViewController.xib */; }; + 8C36CD60117BACC300041B0C /* gomokuViewControllerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C36CD5F117BACC300041B0C /* gomokuViewControllerTest.m */; }; + 8C62058D118E2FD700641403 /* GameBoardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; }; + 8C62058E118E2FD700641403 /* GameBoardViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8C62058C118E2FD700641403 /* GameBoardViewController.xib */; }; + 8C62058F118E2FD700641403 /* GameBoardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C62058B118E2FD700641403 /* GameBoardViewController.m */; }; + 8C620590118E2FD700641403 /* GameBoardViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8C62058C118E2FD700641403 /* GameBoardViewController.xib */; }; + 8C62061B118E3FA800641403 /* BoardCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C62061A118E3FA800641403 /* BoardCell.m */; }; + 8C62061C118E3FA800641403 /* BoardCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C62061A118E3FA800641403 /* BoardCell.m */; }; + 8C85D63A0FC39D6A00520AAE /* hamcrest.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8CFADA0C0F6F4C8400BDF316 /* hamcrest.framework */; }; + 8C85D63B0FC39D6A00520AAE /* OCMock.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8C9E03D90F6F3D5F002BA557 /* OCMock.framework */; }; + 8C9E039A0F6F3B32002BA557 /* GTMIPhoneUnitTestDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9E03950F6F3B32002BA557 /* GTMIPhoneUnitTestDelegate.m */; }; + 8C9E039B0F6F3B32002BA557 /* GTMIPhoneUnitTestMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9E03960F6F3B32002BA557 /* GTMIPhoneUnitTestMain.m */; }; + 8C9E039C0F6F3B32002BA557 /* GTMSenTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9E03980F6F3B32002BA557 /* GTMSenTestCase.m */; }; + 8C9E039D0F6F3B32002BA557 /* RunIPhoneUnitTest.sh in Resources */ = {isa = PBXBuildFile; fileRef = 8C9E03990F6F3B32002BA557 /* RunIPhoneUnitTest.sh */; }; + 8CFAD9DC0F6F4BBE00BDF316 /* OCMock.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8C9E03D90F6F3D5F002BA557 /* OCMock.framework */; }; + 8CFADA090F6F4C5300BDF316 /* gomokuExampleTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CFADA080F6F4C5300BDF316 /* gomokuExampleTest.m */; }; + 8CFADA0D0F6F4C8400BDF316 /* hamcrest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8CFADA0C0F6F4C8400BDF316 /* hamcrest.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 8C85D63D0FC39D8800520AAE /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + 8C85D63A0FC39D6A00520AAE /* hamcrest.framework in CopyFiles */, + 8C85D63B0FC39D6A00520AAE /* OCMock.framework in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 135C99C814DA0D430004D158 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; + 135C99CC14DA0DC40004D158 /* BoardSquare_0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = BoardSquare_0.png; path = Resources/BoardSquare_0.png; sourceTree = ""; }; + 135C99CD14DA0DC40004D158 /* BoardSquare_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = BoardSquare_1.png; path = Resources/BoardSquare_1.png; sourceTree = ""; }; + 135C99CE14DA0DC40004D158 /* BoardSquare_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = BoardSquare_2.png; path = Resources/BoardSquare_2.png; sourceTree = ""; }; + 135C99DB14DA0DD20004D158 /* icon-114.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-114.png"; sourceTree = ""; }; + 135C99DD14DA0DD90004D158 /* icon-57.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-57.png"; sourceTree = ""; }; + 136FD0B6118FAF1E0098C789 /* Game.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Game.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 136FD0B7118FAF1E0098C789 /* Game.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Game.m; sourceTree = ""; }; + 136FD0BC118FAF350098C789 /* Player.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Player.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 136FD0BE118FAFAB0098C789 /* UIPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = UIPlayer.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 136FD0BF118FAFAB0098C789 /* UIPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = UIPlayer.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 136FD101118FB48C0098C789 /* Move.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Move.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 136FD102118FB48C0098C789 /* Move.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = Move.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 136FD1AC118FD2790098C789 /* Board.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Board.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 136FD1AD118FD2790098C789 /* Board.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = Board.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 1D3623240D0F684500981E51 /* GomokuAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = GomokuAppDelegate.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 1D3623250D0F684500981E51 /* GomokuAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = GomokuAppDelegate.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 288765A40DF7441C002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 2899E5210DE3E06400AC0155 /* GomokuViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GomokuViewController.xib; sourceTree = ""; }; + 28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; + 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = GomokuViewController.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GomokuViewController.m; sourceTree = ""; }; + 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = main.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 8C2661180F6F489300F754CC /* Unit Tests.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Unit Tests.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 8C36CD5F117BACC300041B0C /* gomokuViewControllerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = gomokuViewControllerTest.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 8C62058A118E2FD700641403 /* GameBoardViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = GameBoardViewController.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 8C62058B118E2FD700641403 /* GameBoardViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = GameBoardViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 8C62058C118E2FD700641403 /* GameBoardViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = GameBoardViewController.xib; path = Classes/GameBoardViewController.xib; sourceTree = ""; }; + 8C620619118E3FA800641403 /* BoardCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = BoardCell.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 8C62061A118E3FA800641403 /* BoardCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = BoardCell.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 8C9E03740F6F3A3B002BA557 /* Test.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Test.plist; sourceTree = ""; }; + 8C9E03930F6F3B32002BA557 /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = ""; }; + 8C9E03940F6F3B32002BA557 /* GTMIPhoneUnitTestDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMIPhoneUnitTestDelegate.h; sourceTree = ""; }; + 8C9E03950F6F3B32002BA557 /* GTMIPhoneUnitTestDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMIPhoneUnitTestDelegate.m; sourceTree = ""; }; + 8C9E03960F6F3B32002BA557 /* GTMIPhoneUnitTestMain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMIPhoneUnitTestMain.m; sourceTree = ""; }; + 8C9E03970F6F3B32002BA557 /* GTMSenTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMSenTestCase.h; sourceTree = ""; }; + 8C9E03980F6F3B32002BA557 /* GTMSenTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSenTestCase.m; sourceTree = ""; }; + 8C9E03990F6F3B32002BA557 /* RunIPhoneUnitTest.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = RunIPhoneUnitTest.sh; sourceTree = ""; }; + 8C9E03D90F6F3D5F002BA557 /* OCMock.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = OCMock.framework; sourceTree = ""; }; + 8CFAD9AD0F6F4B2500BDF316 /* gomoku.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = gomoku.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 8CFADA080F6F4C5300BDF316 /* gomokuExampleTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = gomokuExampleTest.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 8CFADA0C0F6F4C8400BDF316 /* hamcrest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = hamcrest.framework; sourceTree = ""; }; + 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, + 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, + 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8C9E036E0F6F3A3A002BA557 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8CFAD9DC0F6F4BBE00BDF316 /* OCMock.framework in Frameworks */, + 8CFADA0D0F6F4C8400BDF316 /* hamcrest.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 080E96DDFE201D6D7F000001 /* Classes */ = { + isa = PBXGroup; + children = ( + 8C36CD29117BA91300041B0C /* Model */, + 8C9E03630F6F39C4002BA557 /* Controller */, + 8C9E03620F6F39BD002BA557 /* View */, + ); + path = Classes; + sourceTree = ""; + }; + 19C28FACFE9D520D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8C2661180F6F489300F754CC /* Unit Tests.app */, + 8CFAD9AD0F6F4B2500BDF316 /* gomoku.app */, + ); + name = Products; + sourceTree = ""; + }; + 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { + isa = PBXGroup; + children = ( + 8C116AA8115C455C004B1180 /* Environments */, + 8C9E035A0F6F3991002BA557 /* Tests */, + 080E96DDFE201D6D7F000001 /* Classes */, + 29B97315FDCFA39411CA2CEA /* Other Sources */, + 29B97317FDCFA39411CA2CEA /* Resources */, + 29B97323FDCFA39411CA2CEA /* Frameworks */, + 19C28FACFE9D520D11CA2CBB /* Products */, + ); + name = CustomTemplate; + sourceTree = ""; + }; + 29B97315FDCFA39411CA2CEA /* Other Sources */ = { + isa = PBXGroup; + children = ( + 29B97316FDCFA39411CA2CEA /* main.m */, + ); + name = "Other Sources"; + sourceTree = ""; + }; + 29B97317FDCFA39411CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 135C99DD14DA0DD90004D158 /* icon-57.png */, + 135C99DB14DA0DD20004D158 /* icon-114.png */, + 135C99C814DA0D430004D158 /* Default.png */, + 135C99CC14DA0DC40004D158 /* BoardSquare_0.png */, + 135C99CD14DA0DC40004D158 /* BoardSquare_1.png */, + 135C99CE14DA0DC40004D158 /* BoardSquare_2.png */, + 8C62058C118E2FD700641403 /* GameBoardViewController.xib */, + 2899E5210DE3E06400AC0155 /* GomokuViewController.xib */, + 28AD733E0D9D9553002E5188 /* MainWindow.xib */, + ); + name = Resources; + sourceTree = ""; + }; + 29B97323FDCFA39411CA2CEA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8CFADA0C0F6F4C8400BDF316 /* hamcrest.framework */, + 8C9E03D90F6F3D5F002BA557 /* OCMock.framework */, + 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, + 1D30AB110D05D00D00671497 /* Foundation.framework */, + 288765A40DF7441C002DB57D /* CoreGraphics.framework */, + ); + path = Frameworks; + sourceTree = ""; + }; + 8C116AA8115C455C004B1180 /* Environments */ = { + isa = PBXGroup; + children = ( + 8D1107310486CEB800E47090 /* Info.plist */, + 8C9E03740F6F3A3B002BA557 /* Test.plist */, + ); + name = Environments; + sourceTree = ""; + }; + 8C36CD29117BA91300041B0C /* Model */ = { + isa = PBXGroup; + children = ( + 136FD0B6118FAF1E0098C789 /* Game.h */, + 136FD0B7118FAF1E0098C789 /* Game.m */, + 136FD0BC118FAF350098C789 /* Player.h */, + 136FD0BE118FAFAB0098C789 /* UIPlayer.h */, + 136FD0BF118FAFAB0098C789 /* UIPlayer.m */, + 136FD101118FB48C0098C789 /* Move.h */, + 136FD102118FB48C0098C789 /* Move.m */, + 136FD1AC118FD2790098C789 /* Board.h */, + 136FD1AD118FD2790098C789 /* Board.m */, + ); + name = Model; + sourceTree = ""; + }; + 8C9E035A0F6F3991002BA557 /* Tests */ = { + isa = PBXGroup; + children = ( + 8CFADA080F6F4C5300BDF316 /* gomokuExampleTest.m */, + 8C36CD5F117BACC300041B0C /* gomokuViewControllerTest.m */, + 8C9E03920F6F3B32002BA557 /* GTM */, + ); + path = Tests; + sourceTree = ""; + }; + 8C9E03620F6F39BD002BA557 /* View */ = { + isa = PBXGroup; + children = ( + 8C620619118E3FA800641403 /* BoardCell.h */, + 8C62061A118E3FA800641403 /* BoardCell.m */, + ); + name = View; + sourceTree = ""; + }; + 8C9E03630F6F39C4002BA557 /* Controller */ = { + isa = PBXGroup; + children = ( + 1D3623240D0F684500981E51 /* GomokuAppDelegate.h */, + 1D3623250D0F684500981E51 /* GomokuAppDelegate.m */, + 28D7ACF60DDB3853001CB0EB /* GomokuViewController.h */, + 28D7ACF70DDB3853001CB0EB /* GomokuViewController.m */, + 8C62058A118E2FD700641403 /* GameBoardViewController.h */, + 8C62058B118E2FD700641403 /* GameBoardViewController.m */, + ); + name = Controller; + sourceTree = ""; + }; + 8C9E03920F6F3B32002BA557 /* GTM */ = { + isa = PBXGroup; + children = ( + 8C9E03930F6F3B32002BA557 /* GTMDefines.h */, + 8C9E03940F6F3B32002BA557 /* GTMIPhoneUnitTestDelegate.h */, + 8C9E03950F6F3B32002BA557 /* GTMIPhoneUnitTestDelegate.m */, + 8C9E03960F6F3B32002BA557 /* GTMIPhoneUnitTestMain.m */, + 8C9E03970F6F3B32002BA557 /* GTMSenTestCase.h */, + 8C9E03980F6F3B32002BA557 /* GTMSenTestCase.m */, + 8C9E03990F6F3B32002BA557 /* RunIPhoneUnitTest.sh */, + ); + path = GTM; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1D6058900D05DD3D006BFB54 /* gomoku */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "gomoku" */; + buildPhases = ( + 1D60588D0D05DD3D006BFB54 /* Resources */, + 1D60588E0D05DD3D006BFB54 /* Sources */, + 1D60588F0D05DD3D006BFB54 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = gomoku; + productName = gomoku; + productReference = 8CFAD9AD0F6F4B2500BDF316 /* gomoku.app */; + productType = "com.apple.product-type.application"; + }; + 8C9E036F0F6F3A3A002BA557 /* gomoku Unit Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8C9E03770F6F3A3B002BA557 /* Build configuration list for PBXNativeTarget "gomoku Unit Tests" */; + buildPhases = ( + 8C9E036C0F6F3A3A002BA557 /* Resources */, + 8C85D63D0FC39D8800520AAE /* CopyFiles */, + 8C9E036D0F6F3A3A002BA557 /* Sources */, + 8C9E036E0F6F3A3A002BA557 /* Frameworks */, + 8C9E037C0F6F3AA4002BA557 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "gomoku Unit Tests"; + productName = "Unit Tests"; + productReference = 8C2661180F6F489300F754CC /* Unit Tests.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 "gomoku" */; + compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + en, + ); + mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1D6058900D05DD3D006BFB54 /* gomoku */, + 8C9E036F0F6F3A3A002BA557 /* gomoku Unit Tests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 1D60588D0D05DD3D006BFB54 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */, + 2899E5220DE3E06400AC0155 /* GomokuViewController.xib in Resources */, + 8C620590118E2FD700641403 /* GameBoardViewController.xib in Resources */, + 135C99D114DA0DC40004D158 /* BoardSquare_0.png in Resources */, + 135C99D314DA0DC40004D158 /* BoardSquare_1.png in Resources */, + 135C99D514DA0DC40004D158 /* BoardSquare_2.png in Resources */, + 135C99DC14DA0DD20004D158 /* icon-114.png in Resources */, + 135C99DE14DA0DD90004D158 /* icon-57.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8C9E036C0F6F3A3A002BA557 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8C9E039D0F6F3B32002BA557 /* RunIPhoneUnitTest.sh in Resources */, + 8C36CD46117BAA0200041B0C /* GomokuViewController.xib in Resources */, + 8C62058E118E2FD700641403 /* GameBoardViewController.xib in Resources */, + 135C99D214DA0DC40004D158 /* BoardSquare_0.png in Resources */, + 135C99D414DA0DC40004D158 /* BoardSquare_1.png in Resources */, + 135C99D614DA0DC40004D158 /* BoardSquare_2.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 8C9E037C0F6F3AA4002BA557 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = Tests/GTM/RunIPhoneUnitTest.sh; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1D60588E0D05DD3D006BFB54 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1D60589B0D05DD56006BFB54 /* main.m in Sources */, + 1D3623260D0F684500981E51 /* GomokuAppDelegate.m in Sources */, + 28D7ACF80DDB3853001CB0EB /* GomokuViewController.m in Sources */, + 8C62058F118E2FD700641403 /* GameBoardViewController.m in Sources */, + 8C62061C118E3FA800641403 /* BoardCell.m in Sources */, + 136FD0B9118FAF1E0098C789 /* Game.m in Sources */, + 136FD0D7118FB3CA0098C789 /* UIPlayer.m in Sources */, + 136FD104118FB48C0098C789 /* Move.m in Sources */, + 136FD1AE118FD2790098C789 /* Board.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8C9E036D0F6F3A3A002BA557 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8C9E039A0F6F3B32002BA557 /* GTMIPhoneUnitTestDelegate.m in Sources */, + 8C9E039B0F6F3B32002BA557 /* GTMIPhoneUnitTestMain.m in Sources */, + 8C9E039C0F6F3B32002BA557 /* GTMSenTestCase.m in Sources */, + 8CFADA090F6F4C5300BDF316 /* gomokuExampleTest.m in Sources */, + 8C36CD44117BA9EF00041B0C /* GomokuAppDelegate.m in Sources */, + 8C36CD45117BA9F000041B0C /* GomokuViewController.m in Sources */, + 8C36CD60117BACC300041B0C /* gomokuViewControllerTest.m in Sources */, + 8C62058D118E2FD700641403 /* GameBoardViewController.m in Sources */, + 8C62061B118E3FA800641403 /* BoardCell.m in Sources */, + 136FD0B8118FAF1E0098C789 /* Game.m in Sources */, + 136FD0C0118FAFAB0098C789 /* UIPlayer.m in Sources */, + 136FD103118FB48C0098C789 /* Move.m in Sources */, + 136FD1AF118FD2790098C789 /* Board.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1D6058940D05DD3E006BFB54 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = gomoku_Prefix.pch; + INFOPLIST_FILE = Info.plist; + PRODUCT_NAME = gomoku; + }; + name = Debug; + }; + 1D6058950D05DD3E006BFB54 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = gomoku_Prefix.pch; + INFOPLIST_FILE = Info.plist; + PRODUCT_NAME = gomoku; + }; + name = Release; + }; + 8C9E03750F6F3A3B002BA557 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/UIKit.framework/Headers/UIKit.h"; + INFOPLIST_FILE = Test.plist; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = ( + "-framework", + Foundation, + "-framework", + UIKit, + ); + PREBINDING = NO; + PRODUCT_NAME = "Unit Tests"; + }; + name = Debug; + }; + 8C9E03760F6F3A3B002BA557 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/UIKit.framework/Headers/UIKit.h"; + INFOPLIST_FILE = Test.plist; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = ( + "-framework", + Foundation, + "-framework", + UIKit, + ); + PREBINDING = NO; + PRODUCT_NAME = "Unit Tests"; + ZERO_LINK = NO; + }; + name = Release; + }; + C01FCF4F08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = YES; + PREBINDING = NO; + SDKROOT = iphoneos3.0; + }; + name = Debug; + }; + C01FCF5008A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = iphoneos3.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "gomoku" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1D6058940D05DD3E006BFB54 /* Debug */, + 1D6058950D05DD3E006BFB54 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8C9E03770F6F3A3B002BA557 /* Build configuration list for PBXNativeTarget "gomoku Unit Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8C9E03750F6F3A3B002BA557 /* Debug */, + 8C9E03760F6F3A3B002BA557 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C01FCF4E08A954540054247B /* Build configuration list for PBXProject "gomoku" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4F08A954540054247B /* Debug */, + C01FCF5008A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; +} diff --git a/gomoku.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/gomoku.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..ff14934 --- /dev/null +++ b/gomoku.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/gomoku.xcodeproj/project.xcworkspace/xcuserdata/kig.xcuserdatad/UserInterfaceState.xcuserstate b/gomoku.xcodeproj/project.xcworkspace/xcuserdata/kig.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..24fdc18b4f195ee71808f3e9b041497da2ebe458 GIT binary patch literal 30206 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 + + + + IDEWorkspaceUserSettings_HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges + + IDEWorkspaceUserSettings_SnapshotAutomaticallyBeforeSignificantChanges + + + diff --git a/gomoku.xcodeproj/xcuserdata/kig.xcuserdatad/xcschemes/gomoku Unit Tests.xcscheme b/gomoku.xcodeproj/xcuserdata/kig.xcuserdatad/xcschemes/gomoku Unit Tests.xcscheme new file mode 100644 index 0000000..daa73e2 --- /dev/null +++ b/gomoku.xcodeproj/xcuserdata/kig.xcuserdatad/xcschemes/gomoku Unit Tests.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gomoku.xcodeproj/xcuserdata/kig.xcuserdatad/xcschemes/gomoku.xcscheme b/gomoku.xcodeproj/xcuserdata/kig.xcuserdatad/xcschemes/gomoku.xcscheme new file mode 100644 index 0000000..4804025 --- /dev/null +++ b/gomoku.xcodeproj/xcuserdata/kig.xcuserdatad/xcschemes/gomoku.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gomoku.xcodeproj/xcuserdata/kig.xcuserdatad/xcschemes/xcschememanagement.plist b/gomoku.xcodeproj/xcuserdata/kig.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..1ba590b --- /dev/null +++ b/gomoku.xcodeproj/xcuserdata/kig.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,32 @@ + + + + + SchemeUserState + + gomoku Unit Tests.xcscheme + + orderHint + 1 + + gomoku.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 1D6058900D05DD3D006BFB54 + + primary + + + 8C9E036F0F6F3A3A002BA557 + + primary + + + + + diff --git a/gomoku_Prefix.pch b/gomoku_Prefix.pch new file mode 100644 index 0000000..04b9ac7 --- /dev/null +++ b/gomoku_Prefix.pch @@ -0,0 +1,8 @@ +// +// Prefix header for all source files of the 'gomoku' target in the 'gomoku' project +// + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/icon-114.png b/icon-114.png new file mode 100644 index 0000000000000000000000000000000000000000..72afa671dfcb9ab7dec08225754d3b23c89440b6 GIT binary patch literal 19192 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 q#QK$3zY^%E* literal 0 HcmV?d00001 diff --git a/icon-57.png b/icon-57.png new file mode 100644 index 0000000000000000000000000000000000000000..37f2520086b425fadeaa1e4a986bcbe262d81159 GIT binary patch literal 7859 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 literal 0 HcmV?d00001 diff --git a/main.m b/main.m new file mode 100644 index 0000000..28c8f7d --- /dev/null +++ b/main.m @@ -0,0 +1,17 @@ +// +// main.m +// gomoku +// +// Created by Konstantin Gredeskoul on 5/2/10. +// Copyright Carbon Five 2010. All rights reserved. +// + +#import + +int main(int argc, char *argv[]) { + + NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; + int retVal = UIApplicationMain(argc, argv, nil, nil); + [pool release]; + return retVal; +}