diff --git a/AppKit/CPAlert.j b/AppKit/CPAlert.j index 38aeef5d8..cbd40cfe6 100644 --- a/AppKit/CPAlert.j +++ b/AppKit/CPAlert.j @@ -255,7 +255,7 @@ var bottomHeight = 71; [_themeView setValue:aValue forThemeAttribute:aName]; } -- (void)setValue:(id)aValue forThemeAttribute:(CPString)aName inState:(CPThemeState)aState +- (void)setValue:(id)aValue forThemeAttribute:(CPString)aName inState:(ThemeState)aState { [_themeView setValue:aValue forThemeAttribute:aName inState:aState]; } diff --git a/AppKit/CPAnimation.j b/AppKit/CPAnimation.j index 67b4ae7fb..903cf3c2e 100644 --- a/AppKit/CPAnimation.j +++ b/AppKit/CPAnimation.j @@ -26,6 +26,22 @@ @import "CAMediaTimingFunction.j" +@protocol CPAnimationDelegate + +@optional +- (BOOL)animationShouldStart:(CPAnimation)animation; +- (float)animation:(CPAnimation)animation valueForProgress:(float)progress; +- (void)animationDidEnd:(CPAnimation)animation; +- (void)animationDidStop:(CPAnimation)animation; + +@end + + +var CPAnimationDelegate_animationShouldStart_ = 1 << 1, + CPAnimationDelegate_animation_valueForProgress_ = 1 << 2, + CPAnimationDelegate_animationDidEnd_ = 1 << 3, + CPAnimationDelegate_animationDidStop_ = 1 << 4; + /* @global @group CPAnimationCurve @@ -80,17 +96,18 @@ ACTUAL_FRAME_RATE = 0; */ @implementation CPAnimation : CPObject { - CPTimeInterval _lastTime; - CPTimeInterval _duration; + CPTimeInterval _lastTime; + CPTimeInterval _duration; - CPAnimationCurve _animationCurve; - CAMediaTimingFunction _timingFunction; + CPAnimationCurve _animationCurve; + CAMediaTimingFunction _timingFunction; - float _frameRate; - float _progress; + float _frameRate; + float _progress; - id _delegate; - CPTimer _timer; + id _delegate; + CPTimer _timer; + unsigned _implementedDelegateMethods; } /*! @@ -214,9 +231,25 @@ ACTUAL_FRAME_RATE = 0; Sets the animation's delegate. @param aDelegate the new delegate */ -- (void)setDelegate:(id)aDelegate +- (void)setDelegate:(id )aDelegate { + if (_delegate === aDelegate) + return; + _delegate = aDelegate; + _implementedDelegateMethods = 0; + + if ([_delegate respondsToSelector:@selector(animationShouldStart:)]) + _implementedDelegateMethods |= CPAnimationDelegate_animationShouldStart_; + + if ([_delegate respondsToSelector:@selector(animationDidEnd:)]) + _implementedDelegateMethods |= CPAnimationDelegate_animationDidEnd_; + + if ([_delegate respondsToSelector:@selector(animationDidStop:)]) + _implementedDelegateMethods |= CPAnimationDelegate_animationDidStop_; + + if ([_delegate respondsToSelector:@selector(animation:valueForProgress:)]) + _implementedDelegateMethods |= CPAnimationDelegate_animation_valueForProgress_; } /*! @@ -227,7 +260,7 @@ ACTUAL_FRAME_RATE = 0; - (void)startAnimation { // If we're already animating, or our delegate stops us, animate. - if (_timer || _delegate && [_delegate respondsToSelector:@selector(animationShouldStart:)] && ![_delegate animationShouldStart:self]) + if (_timer || ![self _sendDelegateAnimationShouldStart]) return; if (_progress === 1.0) @@ -236,7 +269,7 @@ ACTUAL_FRAME_RATE = 0; ACTUAL_FRAME_RATE = 0; _lastTime = new Date(); - var timerInterval = _frameRate <= 0.0 ? 0.0001 : 1.0/_frameRate; + var timerInterval = _frameRate <= 0.0 ? 0.0001 : 1.0 / _frameRate; _timer = [CPTimer scheduledTimerWithTimeInterval:timerInterval target:self selector:@selector(animationTimerDidFire:) userInfo:nil repeats:YES]; } @@ -260,8 +293,7 @@ ACTUAL_FRAME_RATE = 0; [_timer invalidate]; _timer = nil; - if ([_delegate respondsToSelector:@selector(animationDidEnd:)]) - [_delegate animationDidEnd:self]; + [self _sendDelegateAnimationDidEnd]; } } @@ -276,8 +308,7 @@ ACTUAL_FRAME_RATE = 0; [_timer invalidate]; _timer = nil; - if ([_delegate respondsToSelector:@selector(animationDidStop:)]) - [_delegate animationDidStop:self]; + [self _sendDelegateAnimationDidStop]; } /*! @@ -313,8 +344,8 @@ ACTUAL_FRAME_RATE = 0; { var t = [self currentProgress]; - if ([_delegate respondsToSelector:@selector(animation:valueForProgress:)]) - return [_delegate animation:self valueForProgress:t]; + if ([self _delegateRespondsToAnimationValueForProgress]) + return [self _sendDelegateAnimationValueForProgress:t]; if (_animationCurve == CPAnimationLinear) return t; @@ -330,6 +361,68 @@ ACTUAL_FRAME_RATE = 0; @end + +@implementation CPAnimation (CPAnimationDelegate) + +/*! + @ignore + Check if the delegate responds to animation:valueForProgress: +*/ +- (BOOL)_delegateRespondsToAnimationValueForProgress +{ + return _implementedDelegateMethods & CPAnimationDelegate_animation_valueForProgress_; +} + +/*! + @ignore + Call delegate animationShouldStart: +*/ +- (BOOL)_sendDelegateAnimationShouldStart +{ + if (!(_implementedDelegateMethods & CPAnimationDelegate_animationShouldStart_)) + return YES; + + return [_delegate animationShouldStart:self]; +} + +/*! + @ignore + Call delegate animation:valueForProgress: +*/ +- (float)_sendDelegateAnimationValueForProgress:(float)aProgress +{ + if (!(_implementedDelegateMethods & CPAnimationDelegate_animation_valueForProgress_)) + return aProgress; + + return [_delegate animation:self valueForProgress:aProgress]; +} + +/*! + @ignore + Call delegate animationDidEnd: +*/ +- (void)_sendDelegateAnimationDidEnd +{ + if (!(_implementedDelegateMethods & CPAnimationDelegate_animationDidEnd_)) + return; + + [_delegate animationDidEnd:self]; +} + +/*! + @ignore + Call delegate animationDidStop: +*/ +- (void)_sendDelegateAnimationDidStop +{ + if (!(_implementedDelegateMethods & CPAnimationDelegate_animationDidStop_)) + return; + + [_delegate animationDidStop:self]; +} + +@end + // currently used function to determine time // 1:1 conversion to js from webkit source files // UnitBezier.h, WebCore_animation_AnimationBase.cpp diff --git a/AppKit/CPBrowser.j b/AppKit/CPBrowser.j index a6a16306d..5c5ccdf5b 100644 --- a/AppKit/CPBrowser.j +++ b/AppKit/CPBrowser.j @@ -20,6 +20,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +@import @import @import "CPControl.j" @@ -30,40 +31,86 @@ @global CPApp +@protocol CPBrowserDelegate + +@optional +- (BOOL)browser:(CPBrowser)browser acceptDrop:(id)info atRow:(CPInteger)row column:(CPInteger)column dropOperation:(CPTableViewDropOperation)dropOperation; +- (BOOL)browser:(CPBrowser)browser canDragRowsWithIndexes:(CPIndexSet)rowIndexes inColumn:(CPInteger)column withEvent:(CPEvent )event; +- (BOOL)browser:(CPBrowser)browser isLeafItem:(id)item; +- (BOOL)browser:(CPBrowser)browser shouldSelectRowIndexes:(CPIndexSet)anIndexSet inColumn:(CPInteger)column; +- (BOOL)browser:(CPBrowser)browser writeRowsWithIndexes:(CPIndexSet)rowIndexes inColumn:(CPInteger)column toPasteboard:(CPPasteboard)pasteboard; +- (CPDragOperation)browser:(CPBrowser)browser validateDrop:(id)info proposedRow:(CPInteger)row column:(CPInteger)column dropOperation:(CPTableViewDropOperation)dropOperation; +- (CPImage)browser:(CPBrowser)browser imageValueForItem:(id)anItem; +- (CPImage)browser:(CPBrowser)browser draggingImageForRowsWithIndexes:(CPIndexSet)rowIndexes inColumn:(CPInteger)column withEvent:(CPEvent)event offset:(CGPoint)dragImageOffset; +- (CPImage)browser:(CPBrowser)browser imageValueForItem:(id)item; +- (CPIndexSet)browser:(CPBrowser)browser selectionIndexesForProposedSelection:(CPIndexSet)proposedSelectionIndexes inColumn:(CPInteger)column; +- (CPInteger)browser:(CPBrowser)browser numberOfChildrenOfItem:(id)item; +- (CPView)browser:(CPBrowser)browser draggingViewForRowsWithIndexes:(CPIndexSet)rowIndexes inColumn:(CPInteger)column withEvent:(CPEvent)event offset:(CGPoint)dragImageOffset; +- (id)browser:(CPBrowser)browser child:(CPInteger)index ofItem:(id)item; +- (id)browser:(CPBrowser)browser objectValueForItem:(id)item; +- (id)rootItemForBrowser:(CPBrowser)browser; +- (void)browser:(CPBrowser)browser didChangeLastColumn:(CPInteger)oldLastColumn toColumn:(CPInteger)column; +- (void)browser:(CPBrowser)browser didResizeColumn:(CPInteger)column; +- (void)browserSelectionIsChanging:(CPBrowser)browser; +- (void)browserSelectionDidChange:(CPBrowser)browser; + +@end + +var CPBrowserDelegate_browser_acceptDrop_atRow_column_dropOperation_ = 1 << 1, + CPBrowserDelegate_browser_canDragRowsWithIndexes_inColumn_withEvent_ = 1 << 2, + CPBrowserDelegate_browser_isLeafItem_ = 1 << 3, + CPBrowserDelegate_browser_shouldSelectRowIndexes_inColumn_ = 1 << 4, + CPBrowserDelegate_browser_writeRowsWithIndexes_inColumn_toPasteboard_ = 1 << 5, + CPBrowserDelegate_browser_validateDrop_proposedRow_column_dropOperation_ = 1 << 6, + CPBrowserDelegate_browser_imageValueForItem_ = 1 << 7, + CPBrowserDelegate_browser_draggingImageForRowsWithIndexes_inColumn_withEvent_offset_ = 1 << 8, + CPBrowserDelegate_browser_imageValueForItem_ = 1 << 9, + CPBrowserDelegate_browser_selectionIndexesForProposedSelection_inColumn_ = 1 << 10, + CPBrowserDelegate_browser_numberOfChildrenOfItem_ = 1 << 11, + CPBrowserDelegate_browser_draggingViewForRowsWithIndexes_inColumn_withEvent_offset_ = 1 << 12, + CPBrowserDelegate_browser_child_ofItem_ = 1 << 13, + CPBrowserDelegate_browser_objectValueForItem_ = 1 << 14, + CPBrowserDelegate_rootItemForBrowser_ = 1 << 15, + CPBrowserDelegate_browser_didChangeLastColumn_toColumn_ = 1 << 16, + CPBrowserDelegate_browser_didResizeColumn_ = 1 << 17, + CPBrowserDelegate_browserSelectionIsChanging_ = 1 << 18, + CPBrowserDelegate_browserSelectionDidChange_ = 1 << 19; + /*! @ingroup appkit @class CPBrowser */ @implementation CPBrowser : CPControl { - id _delegate; - CPString _pathSeparator; + id _delegate; + CPString _pathSeparator; + unsigned _implementedDelegateMethods; - CPView _contentView; - CPScrollView _horizontalScrollView; - CPView _prototypeView; + CPView _contentView; + CPScrollView _horizontalScrollView; + CPView _prototypeView; - CPArray _tableViews; - CPArray _tableDelegates; + CPArray _tableViews; + CPArray _tableDelegates; - id _rootItem; + id _rootItem; - BOOL _delegateSupportsImages; + BOOL _delegateSupportsImages; - SEL _doubleAction @accessors(property=doubleAction); + SEL _doubleAction @accessors(property=doubleAction); - BOOL _allowsMultipleSelection; - BOOL _allowsEmptySelection; + BOOL _allowsMultipleSelection; + BOOL _allowsEmptySelection; - Class _tableViewClass @accessors(property=tableViewClass); + Class _tableViewClass @accessors(property=tableViewClass); - float _rowHeight; - float _imageWidth; - float _leafWidth; - float _minColumnWidth; - float _defaultColumnWidth @accessors(property=defaultColumnWidth); + float _rowHeight; + float _imageWidth; + float _leafWidth; + float _minColumnWidth; + float _defaultColumnWidth @accessors(property=defaultColumnWidth); - CPArray _columnWidths; + CPArray _columnWidths; } + (CPString)defaultThemeClass @@ -137,10 +184,74 @@ [CPKeyedArchiver archivedDataWithRootObject:_prototypeView]]; } -- (void)setDelegate:(id)anObject +- (void)setDelegate:(id )anObject { + if (_delegate === anObject) + return; + _delegate = anObject; - _delegateSupportsImages = [_delegate respondsToSelector:@selector(browser:imageValueForItem:)]; + _implementedDelegateMethods = 0; + _delegateSupportsImages = NO; + + if ([_delegate respondsToSelector:@selector(browser:acceptDrop:atRow:column:dropOperation:)]) + _implementedDelegateMethods |= CPBrowserDelegate_browser_acceptDrop_atRow_column_dropOperation_; + + if ([_delegate respondsToSelector:@selector(browser:canDragRowsWithIndexes:inColumn:withEvent:)]) + _implementedDelegateMethods |= CPBrowserDelegate_browser_canDragRowsWithIndexes_inColumn_withEvent_; + + if ([_delegate respondsToSelector:@selector(browser:isLeafItem:)]) + _implementedDelegateMethods |= CPBrowserDelegate_browser_isLeafItem_; + + if ([_delegate respondsToSelector:@selector(browser:shouldSelectRowIndexes:inColumn:)]) + _implementedDelegateMethods |= CPBrowserDelegate_browser_shouldSelectRowIndexes_inColumn_; + + if ([_delegate respondsToSelector:@selector(browser:writeRowsWithIndexes:inColumn:toPasteboard:)]) + _implementedDelegateMethods |= CPBrowserDelegate_browser_writeRowsWithIndexes_inColumn_toPasteboard_; + + if ([_delegate respondsToSelector:@selector(browser:validateDrop:proposedRow:column:dropOperation:)]) + _implementedDelegateMethods |= CPBrowserDelegate_browser_validateDrop_proposedRow_column_dropOperation_; + + if ([_delegate respondsToSelector:@selector(browser:imageValueForItem:)]) + _implementedDelegateMethods |= CPBrowserDelegate_browser_imageValueForItem_; + + if ([_delegate respondsToSelector:@selector(browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:)]) + _implementedDelegateMethods |= CPBrowserDelegate_browser_draggingImageForRowsWithIndexes_inColumn_withEvent_offset_; + + if ([_delegate respondsToSelector:@selector(browser:imageValueForItem:)]) + { + _delegateSupportsImages = YES; + _implementedDelegateMethods |= CPBrowserDelegate_browser_imageValueForItem_; + } + + if ([_delegate respondsToSelector:@selector(browser:selectionIndexesForProposedSelection:inColumn:)]) + _implementedDelegateMethods |= CPBrowserDelegate_browser_selectionIndexesForProposedSelection_inColumn_; + + if ([_delegate respondsToSelector:@selector(browser:numberOfChildrenOfItem:)]) + _implementedDelegateMethods |= CPBrowserDelegate_browser_numberOfChildrenOfItem_; + + if ([_delegate respondsToSelector:@selector(browser:draggingViewForRowsWithIndexes:inColumn:withEvent:offset:)]) + _implementedDelegateMethods |= CPBrowserDelegate_browser_draggingViewForRowsWithIndexes_inColumn_withEvent_offset_; + + if ([_delegate respondsToSelector:@selector(browser:child:ofItem:)]) + _implementedDelegateMethods |= CPBrowserDelegate_browser_child_ofItem_; + + if ([_delegate respondsToSelector:@selector(browser:objectValueForItem:)]) + _implementedDelegateMethods |= CPBrowserDelegate_browser_objectValueForItem_; + + if ([_delegate respondsToSelector:@selector(rootItemForBrowser:)]) + _implementedDelegateMethods |= CPBrowserDelegate_rootItemForBrowser_; + + if ([_delegate respondsToSelector:@selector(browser:didChangeLastColumn:toColumn:)]) + _implementedDelegateMethods |= CPBrowserDelegate_browser_didChangeLastColumn_toColumn_; + + if ([_delegate respondsToSelector:@selector(browser:didChangeLastColumn:)]) + _implementedDelegateMethods |= CPBrowserDelegate_browser_didResizeColumn_; + + if ([_delegate respondsToSelector:@selector(browserSelectionIsChanging:)]) + _implementedDelegateMethods |= CPBrowserDelegate_browserSelectionIsChanging_; + + if ([_delegate respondsToSelector:@selector(browserSelectionDidChange:)]) + _implementedDelegateMethods |= CPBrowserDelegate_browserSelectionDidChange_; [self loadColumnZero]; } @@ -162,10 +273,7 @@ - (void)loadColumnZero { - if ([_delegate respondsToSelector:@selector(rootItemForBrowser:)]) - _rootItem = [_delegate rootItemForBrowser:self]; - else - _rootItem = nil; + _rootItem = [self _sendDelegateRootItemForBrowser]; [self setLastColumn:-1]; [self addColumn]; @@ -190,8 +298,7 @@ _tableViews = _tableViews.slice(0, indexPlusOne); _tableDelegates = _tableDelegates.slice(0, indexPlusOne); - if ([_delegate respondsToSelector:@selector(browser:didChangeLastColumn:toColumn:)]) - [_delegate browser:self didChangeLastColumn:oldValue toColumn:columnIndex]; + [self _sendDelegateBrowserDidChangeLastColumn:oldValue toColumn:columnIndex]; [self tile]; } @@ -366,7 +473,7 @@ - (BOOL)isLeafItem:(id)item { - return [_delegate respondsToSelector:@selector(browser:isLeafItem:)] && [_delegate browser:self isLeafItem:item]; + return (_implementedDelegateMethods & CPBrowserDelegate_browser_isLeafItem_) && [_delegate browser:self isLeafItem:item]; } - (id)parentForItemsInColumn:(CPInteger)column @@ -493,9 +600,7 @@ { _columnWidths[column] = aWidth; - if ([_delegate respondsToSelector:@selector(browser:didResizeColumn:)]) - [_delegate browser:self didResizeColumn:column]; - + [self _sendDelegateBrowserDidResizeColumn:column]; [self tile]; } @@ -610,15 +715,12 @@ if (column < 0 || column > [self lastColumn] + 1) return; - if ([_delegate respondsToSelector:@selector(browser:selectionIndexesForProposedSelection:inColumn:)]) - indexSet = [_delegate browser:self selectionIndexesForProposedSelection:indexSet inColumn:column]; + indexSet = [self _sendDelegateBrowserSelectionIndexesForProposedSelection:indexSet inColumn:column]; - if ([_delegate respondsToSelector:@selector(browser:shouldSelectRowIndexes:inColumn:)] && - ![_delegate browser:self shouldSelectRowIndexes:indexSet inColumn:column]) + if (![self _sendDelegateBrowserShouldSelectRowIndexes:indexSet inColumn:column]) return; - if ([_delegate respondsToSelector:@selector(browserSelectionIsChanging:)]) - [_delegate browserSelectionIsChanging:self]; + [self _sendDelegateBrowserSelectionIsChanging]; if (column > [self lastColumn]) [self addColumn]; @@ -629,8 +731,7 @@ [self scrollColumnToVisible:column]; - if ([_delegate respondsToSelector:@selector(browserSelectionDidChange:)]) - [_delegate browserSelectionDidChange:self]; + [self _sendDelegateBrowserSelectionDidChange]; } - (void)setBackgroundColor:(CPColor)aColor @@ -652,30 +753,6 @@ [_tableViews makeObjectsPerformSelector:@selector(registerForDraggedTypes:) withObject:types]; } -- (BOOL)canDragRowsWithIndexes:(CPIndexSet)rowIndexes inColumn:(CPInteger)columnIndex withEvent:(CPEvent)dragEvent -{ - if ([_delegate respondsToSelector:@selector(browser:canDragRowsWithIndexes:inColumn:withEvent:)]) - return [_delegate browser:self canDragRowsWithIndexes:rowIndexes inColumn:columnIndex withEvent:dragEvent]; - - return YES; -} - -- (CPImage)draggingImageForRowsWithIndexes:(CPIndexSet)rowIndexes inColumn:(CPInteger)columnIndex withEvent:(CPEvent)dragEvent offset:(CGPoint)dragImageOffset -{ - if ([_delegate respondsToSelector:@selector(browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:)]) - return [_delegate browser:self draggingImageForRowsWithIndexes:rowIndexes inColumn:columnIndex withEvent:dragEvent offset:dragImageOffset]; - - return nil; -} - -- (CPView)draggingViewForRowsWithIndexes:(CPIndexSet)rowIndexes inColumn:(CPInteger)columnIndex withEvent:(CPEvent)dragEvent offset:(CGPoint)dragImageOffset -{ - if ([_delegate respondsToSelector:@selector(browser:draggingViewForRowsWithIndexes:inColumn:withEvent:offset:)]) - return [_delegate browser:self draggingViewForRowsWithIndexes:rowIndexes inColumn:columnIndex withEvent:dragEvent offset:dragImageOffset]; - - return nil; -} - @end @implementation CPBrowser (CPCoding) @@ -860,8 +937,6 @@ @end -@import - @implementation _CPBrowserTableDelegate : CPObject { CPBrowser _browser @accessors; @@ -909,7 +984,7 @@ - (BOOL)tableView:(CPTableView)aTableView acceptDrop:(id)info row:(CPInteger)row dropOperation:(CPTableViewDropOperation)operation { - if ([_delegate respondsToSelector:@selector(browser:acceptDrop:atRow:column:dropOperation:)]) + if (_browser._implementedDelegateMethods & CPBrowserDelegate_browser_acceptDrop_atRow_column_dropOperation_) return [_delegate browser:_browser acceptDrop:info atRow:row column:_index dropOperation:operation]; else return NO; @@ -917,7 +992,7 @@ - (CPDragOperation)tableView:(CPTableView)aTableView validateDrop:(id)info proposedRow:(CPInteger)row proposedDropOperation:(CPTableViewDropOperation)operation { - if ([_delegate respondsToSelector:@selector(browser:validateDrop:proposedRow:column:dropOperation:)]) + if (_browser._implementedDelegateMethods & CPBrowserDelegate_browser_validateDrop_proposedRow_column_dropOperation_) return [_delegate browser:_browser validateDrop:info proposedRow:row column:_index dropOperation:operation]; else return CPDragOperationNone; @@ -925,7 +1000,7 @@ - (BOOL)tableView:(CPTableView)aTableView writeRowsWithIndexes:(CPIndexSet)rowIndexes toPasteboard:(CPPasteboard)pboard { - if ([_delegate respondsToSelector:@selector(browser:writeRowsWithIndexes:inColumn:toPasteboard:)]) + if (_browser._implementedDelegateMethods & CPBrowserDelegate_browser_writeRowsWithIndexes_inColumn_toPasteboard_) return [_delegate browser:_browser writeRowsWithIndexes:rowIndexes inColumn:_index toPasteboard:pboard]; else return NO; @@ -980,7 +1055,7 @@ var imageView = [self layoutEphemeralSubviewNamed:@"image-view" positioned:CPWindowAbove relativeToEphemeralSubviewNamed:nil], - isHighlighted = [self themeState] & CPThemeStateSelectedDataView; + isHighlighted = [self hasThemeState:CPThemeStateSelectedDataView]; [imageView setImage: _isLeaf ? (isHighlighted ? _highlightedBranchImage : _branchImage) : nil]; [imageView setImageScaling:CPImageScaleNone]; @@ -1008,3 +1083,115 @@ } @end + +@implementation CPBrowser (CPBrowserDelegate) + +/*! + @ignore + Call delegate rootItemForBrowser: +*/ +- (id)_sendDelegateRootItemForBrowser +{ + if (!(_implementedDelegateMethods & CPBrowserDelegate_rootItemForBrowser_)) + return nil; + + return [_delegate rootItemForBrowser:self]; +} + +/*! + @ignore + Call delegate browser:didChangeLastColumn:toColumn: +*/ +- (void)_sendDelegateBrowserDidChangeLastColumn:(CPInteger)lastColumn toColumn:(CPInteger)newColumn +{ + if (!(_implementedDelegateMethods & CPBrowserDelegate_browser_didChangeLastColumn_toColumn_)) + return; + + [_delegate browser:self didChangeLastColumn:lastColumn toColumn:newColumn]; +} + +/*! + @ignore + Call delegate browser:didResizeColumn: +*/ +- (void)_sendDelegateBrowserDidResizeColumn:(CPInteger)column +{ + if (!(_implementedDelegateMethods & CPBrowserDelegate_browser_didResizeColumn_)) + return; + + [_delegate browser:self didResizeColumn:column]; +} + +/*! + @ignore + Call delegate browserSelectionIsChanging: +*/ +- (void)_sendDelegateBrowserSelectionIsChanging +{ + if (!(_implementedDelegateMethods & CPBrowserDelegate_browserSelectionIsChanging_)) + return; + + [_delegate browserSelectionIsChanging:self]; +} + +/*! + @ignore + Call delegate browser:shouldSelectRowIndexes:inColumn: +*/ +- (BOOL)_sendDelegateBrowserShouldSelectRowIndexes:(CPIndexSet)anIndexSet inColumn:(CPInteger)aColumn +{ + if (!(_implementedDelegateMethods & CPBrowserDelegate_browser_shouldSelectRowIndexes_inColumn_)) + return YES; + + return [_delegate browser:self shouldSelectRowIndexes:anIndexSet inColumn:aColumn]; +} + +/*! + @ignore + Call delegate browser:selectionIndexesForProposedSelection:inColumn: +*/ +- (CPIndexSet)_sendDelegateBrowserSelectionIndexesForProposedSelection:(CPIndexSet)anIndexSet inColumn:(CPInteger)aColumn +{ + if (!(_implementedDelegateMethods & CPBrowserDelegate_browser_selectionIndexesForProposedSelection_inColumn_)) + return anIndexSet; + + return [_delegate browser:self selectionIndexesForProposedSelection:anIndexSet inColumn:aColumn]; +} + +/*! + @ignore + Call delegate browserSelectionDidChange +*/ +- (void)_sendDelegateBrowserSelectionDidChange +{ + if (!(_implementedDelegateMethods & CPBrowserDelegate_browserSelectionDidChange_)) + return; + + [_delegate browserSelectionDidChange:self]; +} + +- (BOOL)canDragRowsWithIndexes:(CPIndexSet)rowIndexes inColumn:(CPInteger)columnIndex withEvent:(CPEvent)dragEvent +{ + if (_implementedDelegateMethods & CPBrowserDelegate_browser_canDragRowsWithIndexes_inColumn_withEvent_) + return [_delegate browser:self canDragRowsWithIndexes:rowIndexes inColumn:columnIndex withEvent:dragEvent]; + + return YES; +} + +- (CPImage)draggingImageForRowsWithIndexes:(CPIndexSet)rowIndexes inColumn:(CPInteger)columnIndex withEvent:(CPEvent)dragEvent offset:(CGPoint)dragImageOffset +{ + if (_implementedDelegateMethods & CPBrowserDelegate_browser_draggingImageForRowsWithIndexes_inColumn_withEvent_offset_) + return [_delegate browser:self draggingImageForRowsWithIndexes:rowIndexes inColumn:columnIndex withEvent:dragEvent offset:dragImageOffset]; + + return nil; +} + +- (CPView)draggingViewForRowsWithIndexes:(CPIndexSet)rowIndexes inColumn:(CPInteger)columnIndex withEvent:(CPEvent)dragEvent offset:(CGPoint)dragImageOffset +{ + if (_implementedDelegateMethods & CPBrowserDelegate_browser_draggingViewForRowsWithIndexes_inColumn_withEvent_offset_) + return [_delegate browser:self draggingViewForRowsWithIndexes:rowIndexes inColumn:columnIndex withEvent:dragEvent offset:dragImageOffset]; + + return nil; +} + +@end diff --git a/AppKit/CPButton.j b/AppKit/CPButton.j index 213fc6ed0..bad76448c 100644 --- a/AppKit/CPButton.j +++ b/AppKit/CPButton.j @@ -72,13 +72,14 @@ CPPushInCellMask = CPPushInButtonMask; CPChangeGrayCellMask = CPGrayButtonMask; CPChangeBackgroundCellMask = CPBackgroundButtonMask; -CPButtonStateMixed = CPThemeState("mixed"); -CPButtonStateBezelStyleRounded = CPThemeState("rounded"); +CPButtonStateMixed = CPThemeState("mixed"); +CPButtonStateBezelStyleRounded = CPThemeState("rounded"); +CPButtonStateBezelStyleRoundRect = CPThemeState("roundRect"); // add all future correspondance between bezel styles and theme state here. var CPButtonBezelStyleStateMap = @{ CPRoundedBezelStyle: CPButtonStateBezelStyleRounded, - CPRoundRectBezelStyle: [CPNull null], + CPRoundRectBezelStyle: CPButtonStateBezelStyleRoundRect, }; /// @cond IGNORE @@ -268,7 +269,7 @@ CPButtonImageOffset = 3.0; break; case CPOffState: - [self unsetThemeState:CPThemeStateSelected | CPButtonStateMixed | CPThemeStateHighlighted]; + [self unsetThemeState:[CPThemeStateSelected, CPButtonStateMixed, CPThemeStateHighlighted]]; } } diff --git a/AppKit/CPButtonBar.j b/AppKit/CPButtonBar.j index 8efe075b4..f271aa34e 100644 --- a/AppKit/CPButtonBar.j +++ b/AppKit/CPButtonBar.j @@ -250,15 +250,15 @@ currentButtonOffset += width - 1; } - [button setValue:normalColor forThemeAttribute:@"bezel-color" inState:CPThemeStateNormal | CPThemeStateBordered]; - [button setValue:highlightedColor forThemeAttribute:@"bezel-color" inState:CPThemeStateHighlighted | CPThemeStateBordered]; - [button setValue:disabledColor forThemeAttribute:@"bezel-color" inState:CPThemeStateDisabled | CPThemeStateBordered]; + [button setValue:normalColor forThemeAttribute:@"bezel-color" inState:[CPThemeStateNormal, CPThemeStateBordered]]; + [button setValue:highlightedColor forThemeAttribute:@"bezel-color" inState:[CPThemeStateHighlighted, CPThemeStateBordered, ]]; + [button setValue:disabledColor forThemeAttribute:@"bezel-color" inState:[CPThemeStateDisabled, CPThemeStateBordered]]; [button setValue:textColor forThemeAttribute:@"text-color" inState:CPThemeStateBordered]; // FIXME shouldn't need this - [button setValue:normalColor forThemeAttribute:@"bezel-color" inState:CPThemeStateNormal | CPThemeStateBordered | CPPopUpButtonStatePullsDown]; - [button setValue:highlightedColor forThemeAttribute:@"bezel-color" inState:CPThemeStateHighlighted | CPThemeStateBordered | CPPopUpButtonStatePullsDown]; - [button setValue:disabledColor forThemeAttribute:@"bezel-color" inState:CPThemeStateDisabled | CPThemeStateBordered | CPPopUpButtonStatePullsDown]; + [button setValue:normalColor forThemeAttribute:@"bezel-color" inState:[CPThemeStateNormal, CPThemeStateBordered, CPPopUpButtonStatePullsDown]]; + [button setValue:highlightedColor forThemeAttribute:@"bezel-color" inState:[CPThemeStateHighlighted, CPThemeStateBordered, CPPopUpButtonStatePullsDown]]; + [button setValue:disabledColor forThemeAttribute:@"bezel-color" inState:[CPThemeStateDisabled, CPThemeStateBordered, CPPopUpButtonStatePullsDown]]; [self addSubview:button]; } diff --git a/AppKit/CPClipView.j b/AppKit/CPClipView.j index a59f83f12..7cc52d2bc 100644 --- a/AppKit/CPClipView.j +++ b/AppKit/CPClipView.j @@ -230,6 +230,11 @@ return [self scrollToPoint:CGPointMake(bounds.origin.x - deltaX, bounds.origin.y - deltaY)]; } +- (CGRect)documentVisibleRect +{ + return [self convertRect:[self bounds] fromView:_documentView]; +} + @end diff --git a/AppKit/CPColor.j b/AppKit/CPColor.j index 7fbac258d..db44e970f 100644 --- a/AppKit/CPColor.j +++ b/AppKit/CPColor.j @@ -823,6 +823,12 @@ url("data:image/png;base64,BASE64ENCODEDDATA") // if there is a pattern image return [CPColor colorWithRed:RAND() green:RAND() blue:RAND() alpha:1.0]; } ++ (CPColor)checkerBoardColor +{ + // Thanks to cocco http://stackoverflow.com/a/18368212/76900. + return [CPColor colorWithPatternImage:[[CPImage alloc] initWithContentsOfFile:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEX////MzMw46qqDAAAAEElEQVQImWNg+M+AFeEQBgB+vw/xfUUZkgAAAABJRU5ErkJggg=="]]; +} + @end /// @cond IGNORE diff --git a/AppKit/CPComboBox.j b/AppKit/CPComboBox.j index 272292fe3..f7736adbe 100644 --- a/AppKit/CPComboBox.j +++ b/AppKit/CPComboBox.j @@ -25,6 +25,18 @@ @import "_CPPopUpList.j" +// TODO : should conform to protocol CPTextFieldDelegate +@protocol CPComboBoxDelegate + +@optional +- (void)comboBoxSelectionIsChanging:(CPNotification)aNotification; +- (void)comboBoxSelectionDidChange:(CPNotification)aNotification; +- (void)comboBoxWillPopUp:(CPNotification)aNotification; +- (void)comboBoxWillDismiss:(CPNotification)aNotification; + +@end + + CPComboBoxSelectionDidChangeNotification = @"CPComboBoxSelectionDidChangeNotification"; CPComboBoxSelectionIsChangingNotification = @"CPComboBoxSelectionIsChangingNotification"; CPComboBoxWillDismissNotification = @"CPComboBoxWillDismissNotification"; @@ -182,7 +194,7 @@ var CPComboBoxTextSubview = @"text", protocol, in actual fact it doesn't. Also note that the same delegate may conform to the NSTextFieldDelegate protocol. */ -- (void)setDelegate:(id /*< CPComboBoxDelegate >*/)aDelegate +- (void)setDelegate:(id )aDelegate { var delegate = [self delegate]; diff --git a/AppKit/CPControl.j b/AppKit/CPControl.j index 94ebda73b..43974e307 100644 --- a/AppKit/CPControl.j +++ b/AppKit/CPControl.j @@ -30,6 +30,18 @@ @global CPApp +@protocol CPControlTextEditingDelegate + +@optional +- (void)controlTextDidBeginEditing:(CPNotification)aNotification; +- (void)controlTextDidChange:(CPNotification)aNotification; +- (void)controlTextDidEndEditing:(CPNotification)aNotification; +- (void)controlTextDidFocus:(CPNotification)aNotification; +- (void)controlTextDidBlur:(CPNotification)aNotification; +- (BOOL)control:(CPControl)control didFailToFormatString:(CPString)string errorDescription:(CPString)error; + +@end + @global CPCancelTextMovement @global CPLeftTextMovement @global CPRightTextMovement diff --git a/AppKit/CPDatePicker/CPDatePicker.j b/AppKit/CPDatePicker/CPDatePicker.j index c4442a7b1..d7065ddc8 100644 --- a/AppKit/CPDatePicker/CPDatePicker.j +++ b/AppKit/CPDatePicker/CPDatePicker.j @@ -216,6 +216,9 @@ CPEraDatePickerElementFlag = 0x0100; [_datePickerCalendar setHidden:YES]; [self addSubview:_datePickerCalendar]; + // We might have been unarchived in a disabled state. + [_datePickerTextfield setEnabled:[self isEnabled]]; + [self setNeedsDisplay:YES]; [self setNeedsLayout]; } @@ -529,11 +532,15 @@ CPEraDatePickerElementFlag = 0x0100; - (BOOL)becomeFirstResponder { if (_datePickerStyle == CPTextFieldAndStepperDatePickerStyle || _datePickerStyle == CPTextFieldDatePickerStyle) - [_datePickerTextfield _selecteTextFieldWithFlags:[[CPApp currentEvent] modifierFlags]]; - else - return NO; + { + if (![super becomeFirstResponder]) + return NO; - return YES; + [_datePickerTextfield _selectTextFieldWithFlags:[[CPApp currentEvent] modifierFlags]]; + return YES; + } + + return NO; } /*! Return YES @@ -651,7 +658,9 @@ var CPDatePickerModeKey = @"CPDatePickerModeKey", - (void)encodeWithCoder:(CPCoder)aCoder { + // FIXME Do we need to encode _datePickerTextfield and _datePickerCalendar? As subviews they'll be encoded, but when we decode we recreate them anyhow. [super encodeWithCoder:aCoder]; + [aCoder encodeDouble:_timeInterval forKey:CPIntervalKey]; [aCoder encodeInt:_datePickerMode forKey:CPDatePickerModeKey]; [aCoder encodeInt:_datePickerStyle forKey:CPDatePickerStyleKey]; @@ -664,6 +673,7 @@ var CPDatePickerModeKey = @"CPDatePickerModeKey", [aCoder encodeObject:_backgroundColor forKey:CPBackgroundColorKey]; [aCoder encodeObject:_drawsBackground forKey:CPDrawsBackgroundKey]; [aCoder encodeObject:_isBordered forKey:CPBorderedKey]; + } @end diff --git a/AppKit/CPDatePicker/_CPDatePickerCalendar.j b/AppKit/CPDatePicker/_CPDatePickerCalendar.j index a7d713585..165e91ec1 100644 --- a/AppKit/CPDatePicker/_CPDatePickerCalendar.j +++ b/AppKit/CPDatePicker/_CPDatePickerCalendar.j @@ -30,6 +30,7 @@ @class CPDatePicker +@global CPApp @global CPSingleDateMode @global CPRangeDateMode @@ -43,6 +44,10 @@ @global CPYearMonthDayDatePickerElementFlag @global CPEraDatePickerElementFlag +@global CPAlternateKeyMask +@global CPCommandKeyMask +@global CPControlKeyMask + var CPShortWeekDayNameArrayEn = [@"Mo", @"Tu", @"We", @"Th", @"Fr", @"Sa", @"Su"], CPShortWeekDayNameArrayUS = [@"Su", @"Mo", @"Tu", @"We", @"Th", @"Fr", @"Sa"], CPShortWeekDayNameArrayFr = [@"L", @"M", @"M", @"J", @"V", @"S", @"D"], @@ -113,11 +118,6 @@ var CPShortWeekDayNameArrayEn = [@"Mo", @"Tu", @"We", @"Th", @"Fr", @"Sa", @"Su" #pragma mark - #pragma mark Responder methods -- (BOOL)becomeFirstResponder -{ - return YES; -} - - (BOOL)acceptsFirstResponder { return YES; @@ -223,16 +223,62 @@ var CPShortWeekDayNameArrayEn = [@"Mo", @"Tu", @"We", @"Th", @"Fr", @"Sa", @"Su" /*! Move to the nextMonth without changing the dateValue of the datePicker */ -- (void)_nextMonth:(id)sender +- (void)_clickArrowNext:(id)sender { - [self setDateValue:[_monthView nextMonth]]; + var currentEvent = [CPApp currentEvent], + modifierFlags = [currentEvent modifierFlags]; + + if (modifierFlags & (CPCommandKeyMask | CPControlKeyMask | CPAlternateKeyMask)) + { + var date = [[_monthView monthDate] copy]; + date.setDate(1); + + if (modifierFlags & CPAlternateKeyMask) + date.setUTCFullYear(date.getUTCFullYear() + 10); + else + date.setUTCFullYear(date.getUTCFullYear() + 1); + + [self setDateValue:date]; + } + else + { + [self _displayNextMonth]; + } +} + +- (void)_displayNextMonth +{ + [self setDateValue:[_monthView nextMonth]]; +} + +- (void)_displayPreviousMonth +{ + [self setDateValue:[_monthView previousMonth]]; } /*! Move to the previous month without changing the dateValue of the datePicker */ -- (void)_previousMonth:(id)sender +- (void)_clickArrowPrevious:(id)sender { - [self setDateValue:[_monthView previousMonth]]; + var currentEvent = [CPApp currentEvent], + modifierFlags = [currentEvent modifierFlags]; + + if (modifierFlags & (CPCommandKeyMask | CPControlKeyMask | CPAlternateKeyMask)) + { + var date = [[_monthView monthDate] copy]; + date.setDate(1); + + if (modifierFlags & CPAlternateKeyMask) + date.setUTCFullYear(date.getUTCFullYear() - 10); + else + date.setUTCFullYear(date.getUTCFullYear() - 1); + + [self setDateValue:date]; + } + else + { + [self _displayPreviousMonth]; + } } /*! Move to the current selected day @@ -334,10 +380,10 @@ var CPShortWeekDayNameArrayEn = [@"Mo", @"Tu", @"We", @"Th", @"Fr", @"Sa", @"Su" [self addSubview:_currentButton]; [_previousButton setTarget:aDelegate]; - [_previousButton setAction:@selector(_previousMonth:)]; + [_previousButton setAction:@selector(_clickArrowPrevious:)]; [_nextButton setTarget:aDelegate]; - [_nextButton setAction:@selector(_nextMonth:)]; + [_nextButton setAction:@selector(_clickArrowNext:)]; [_currentButton setTarget:aDelegate]; [_currentButton setAction:@selector(_currentMonth:)]; @@ -848,22 +894,54 @@ var CPShortWeekDayNameArrayEn = [@"Mo", @"Tu", @"We", @"Th", @"Fr", @"Sa", @"Su" // Check if we have to change or not the month of the component if ([dayTile date].getMonth() == _date.getMonth()) { - var minDate = [[_datePicker minDate] copy], - maxDate = [[_datePicker maxDate] copy]; + if ([_datePicker datePickerMode] == CPRangeDateMode && [anEvent modifierFlags] & CPShiftKeyMask) + { + var dateValueAtMidnight = [[_datePicker dateValue] copy]; - [minDate _resetToMidnight]; - [maxDate _resetToLastSeconds]; + [dateValueAtMidnight _resetToMidnight]; - if (dateTile >= minDate && dateTile <= maxDate) - [_datePicker _setDateValue:[self _hoursMinutesSecondsFromDatePickerForDate:dateTile] timeInterval:0]; + if (dateTile < dateValueAtMidnight) + { + var interval; + + if (dateTile == dateValueAtMidnight) + interval = [_datePicker timeInterval]; + else + interval = ([dateValueAtMidnight timeIntervalSinceDate:dateTile] + [_datePicker timeInterval]); + + [_datePicker _setDateValue:[self _hoursMinutesSecondsFromDatePickerForDate:dateTile] timeInterval:interval]; + } + else if ([[dayTile date] isEqualToDate:dateValueAtMidnight]) + { + [_datePicker _setDateValue:[self _hoursMinutesSecondsFromDatePickerForDate:dateTile] timeInterval:0]; + } + else + { + [_datePicker _setDateValue:[self _hoursMinutesSecondsFromDatePickerForDate:[dateValueAtMidnight copy]] timeInterval:([dateTile timeIntervalSinceDate:dateValueAtMidnight])]; + } + + // Be sure to display the good month + [_delegate setDateValue:dateTile]; + } + else + { + var minDate = [[_datePicker minDate] copy], + maxDate = [[_datePicker maxDate] copy]; + + [minDate _resetToMidnight]; + [maxDate _resetToLastSeconds]; + + if (dateTile >= minDate && dateTile <= maxDate) + [_datePicker _setDateValue:[self _hoursMinutesSecondsFromDatePickerForDate:dateTile] timeInterval:0]; + } } else { // Check the year and the month. The year is usefull when changing from Jan to Dec. if (_date.getMonth() - [dayTile date].getMonth() == 1 || _date.getFullYear() - [dayTile date].getFullYear() == 1) - [_delegate _previousMonth:self]; + [_delegate _displayPreviousMonth]; else - [_delegate _nextMonth:self]; + [_delegate _displayNextMonth]; } } @@ -899,9 +977,9 @@ var CPShortWeekDayNameArrayEn = [@"Mo", @"Tu", @"We", @"Th", @"Fr", @"Sa", @"Su" // Check the year and the month. The year is usefull when changing from Jan to Dec. if (_date.getMonth() - [dayTile date].getMonth() == 1 || _date.getFullYear() - [dayTile date].getFullYear() == 1) - [_delegate _previousMonth:self]; + [_delegate _displayPreviousMonth]; else - [_delegate _nextMonth:self]; + [_delegate _displayNextMonth]; } } else @@ -944,7 +1022,7 @@ var CPShortWeekDayNameArrayEn = [@"Mo", @"Tu", @"We", @"Th", @"Fr", @"Sa", @"Su" if (_isMonthJustChanged) { _dragDate.setMonth(_date.getMonth() + 1); - [_delegate _nextMonth:self]; + [_delegate _displayNextMonth]; } } @@ -953,7 +1031,7 @@ var CPShortWeekDayNameArrayEn = [@"Mo", @"Tu", @"We", @"Th", @"Fr", @"Sa", @"Su" if (_isMonthJustChanged) { _dragDate.setMonth(_date.getMonth() - 1); - [_delegate _previousMonth:self]; + [_delegate _displayPreviousMonth]; } } @@ -1020,30 +1098,30 @@ var CPShortWeekDayNameArrayEn = [@"Mo", @"Tu", @"We", @"Th", @"Fr", @"Sa", @"Su" [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-color" inState:CPThemeStateDisabled] forThemeAttribute:@"text-shadow-color" inState:CPThemeStateDisabled]; [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-offset" inState:CPThemeStateDisabled] forThemeAttribute:@"text-shadow-offset" inState:CPThemeStateDisabled]; - [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-font" inState:CPThemeStateDisabled | CPThemeStateSelected] forThemeAttribute:@"font" inState:CPThemeStateDisabled | CPThemeStateSelected]; - [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-color" inState:CPThemeStateDisabled | CPThemeStateSelected] forThemeAttribute:@"text-color" inState:CPThemeStateDisabled | CPThemeStateSelected]; - [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-color" inState:CPThemeStateDisabled | CPThemeStateSelected] forThemeAttribute:@"text-shadow-color" inState:CPThemeStateDisabled | CPThemeStateSelected]; - [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-offset" inState:CPThemeStateDisabled | CPThemeStateSelected] forThemeAttribute:@"text-shadow-offset" inState:CPThemeStateDisabled | CPThemeStateSelected]; + [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-font" inState:[CPThemeStateDisabled, CPThemeStateSelected]] forThemeAttribute:@"font" inState:[CPThemeStateDisabled, CPThemeStateSelected]]; + [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-color" inState:[CPThemeStateDisabled, CPThemeStateSelected]]forThemeAttribute:@"text-color" inState:[CPThemeStateDisabled, CPThemeStateSelected]]; + [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-color" inState:[CPThemeStateDisabled, CPThemeStateSelected]] forThemeAttribute:@"text-shadow-color" inState:[CPThemeStateDisabled, CPThemeStateSelected]]; + [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-offset" inState:[CPThemeStateDisabled, CPThemeStateSelected]] forThemeAttribute:@"text-shadow-offset" inState:[CPThemeStateDisabled, CPThemeStateSelected]]; [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-font" inState:CPThemeStateHighlighted] forThemeAttribute:@"font" inState:CPThemeStateHighlighted]; [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-color" inState:CPThemeStateHighlighted] forThemeAttribute:@"text-color" inState:CPThemeStateHighlighted]; [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-color" inState:CPThemeStateHighlighted] forThemeAttribute:@"text-shadow-color" inState:CPThemeStateHighlighted]; [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-offset" inState:CPThemeStateHighlighted] forThemeAttribute:@"text-shadow-offset" inState:CPThemeStateHighlighted]; - [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-font" inState:CPThemeStateHighlighted | CPThemeStateSelected] forThemeAttribute:@"font" inState:CPThemeStateHighlighted | CPThemeStateSelected]; - [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-color" inState:CPThemeStateHighlighted | CPThemeStateSelected] forThemeAttribute:@"text-color" inState:CPThemeStateHighlighted | CPThemeStateSelected]; - [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-color" inState:CPThemeStateHighlighted | CPThemeStateSelected] forThemeAttribute:@"text-shadow-color" inState:CPThemeStateHighlighted | CPThemeStateSelected]; - [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-offset" inState:CPThemeStateHighlighted | CPThemeStateSelected] forThemeAttribute:@"text-shadow-offset" inState:CPThemeStateHighlighted | CPThemeStateSelected]; + [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-font" inState:[CPThemeStateHighlighted, CPThemeStateSelected]] forThemeAttribute:@"font" inState:[CPThemeStateHighlighted, CPThemeStateSelected]]; + [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-color" inState:[CPThemeStateHighlighted, CPThemeStateSelected]] forThemeAttribute:@"text-color" inState:[CPThemeStateHighlighted, CPThemeStateSelected]]; + [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-color" inState:[CPThemeStateHighlighted, CPThemeStateSelected]] forThemeAttribute:@"text-shadow-color" inState:[CPThemeStateHighlighted, CPThemeStateSelected]]; + [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-offset" inState:[CPThemeStateHighlighted, CPThemeStateSelected]] forThemeAttribute:@"text-shadow-offset" inState:[CPThemeStateHighlighted, CPThemeStateSelected]]; - [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-font" inState: CPThemeStateDisabled | CPThemeStateHighlighted | CPThemeStateSelected] forThemeAttribute:@"font" inState: CPThemeStateDisabled | CPThemeStateHighlighted | CPThemeStateSelected]; - [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-color" inState: CPThemeStateDisabled | CPThemeStateHighlighted | CPThemeStateSelected] forThemeAttribute:@"text-color" inState: CPThemeStateDisabled | CPThemeStateHighlighted | CPThemeStateSelected]; - [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-color" inState: CPThemeStateDisabled | CPThemeStateHighlighted | CPThemeStateSelected] forThemeAttribute:@"text-shadow-color" inState: CPThemeStateDisabled | CPThemeStateHighlighted | CPThemeStateSelected]; - [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-offset" inState: CPThemeStateDisabled | CPThemeStateHighlighted | CPThemeStateSelected] forThemeAttribute:@"text-shadow-offset" inState: CPThemeStateDisabled | CPThemeStateHighlighted | CPThemeStateSelected]; + [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-font" inState:[CPThemeStateDisabled, CPThemeStateHighlighted, CPThemeStateSelected]] forThemeAttribute:@"font" inState:[CPThemeStateDisabled, CPThemeStateHighlighted, CPThemeStateSelected]]; + [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-color" inState:[CPThemeStateDisabled, CPThemeStateHighlighted, CPThemeStateSelected]] forThemeAttribute:@"text-color" inState:[CPThemeStateDisabled, CPThemeStateHighlighted, CPThemeStateSelected]]; + [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-color" inState:[CPThemeStateDisabled, CPThemeStateHighlighted, CPThemeStateSelected]] forThemeAttribute:@"text-shadow-color" inState:[CPThemeStateDisabled, CPThemeStateHighlighted, CPThemeStateSelected]]; + [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-offset" inState:[CPThemeStateDisabled, CPThemeStateHighlighted, CPThemeStateSelected]] forThemeAttribute:@"text-shadow-offset" inState:[CPThemeStateDisabled, CPThemeStateHighlighted, CPThemeStateSelected]]; - [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-font" inState: CPThemeStateDisabled | CPThemeStateHighlighted ] forThemeAttribute:@"font" inState: CPThemeStateDisabled | CPThemeStateHighlighted ]; - [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-color" inState: CPThemeStateDisabled | CPThemeStateHighlighted ] forThemeAttribute:@"text-color" inState: CPThemeStateDisabled | CPThemeStateHighlighted ]; - [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-color" inState: CPThemeStateDisabled | CPThemeStateHighlighted ] forThemeAttribute:@"text-shadow-color" inState: CPThemeStateDisabled | CPThemeStateHighlighted ]; - [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-offset" inState: CPThemeStateDisabled | CPThemeStateHighlighted ] forThemeAttribute:@"text-shadow-offset" inState: CPThemeStateDisabled | CPThemeStateHighlighted]; + [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-font" inState:[CPThemeStateDisabled, CPThemeStateHighlighted]] forThemeAttribute:@"font" inState:[CPThemeStateDisabled, CPThemeStateHighlighted]]; + [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-color" inState:[CPThemeStateDisabled, CPThemeStateHighlighted]] forThemeAttribute:@"text-color" inState:[CPThemeStateDisabled, CPThemeStateHighlighted]]; + [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-color" inState:[CPThemeStateDisabled, CPThemeStateHighlighted]] forThemeAttribute:@"text-shadow-color" inState:[CPThemeStateDisabled, CPThemeStateHighlighted]]; + [_textField setValue:[_datePicker valueForThemeAttribute:@"tile-text-shadow-offset" inState:[CPThemeStateDisabled, CPThemeStateHighlighted]] forThemeAttribute:@"text-shadow-offset" inState:[CPThemeStateDisabled, CPThemeStateHighlighted]]; [self addSubview:_textField]; @@ -1059,7 +1137,7 @@ var CPShortWeekDayNameArrayEn = [@"Mo", @"Tu", @"We", @"Th", @"Fr", @"Sa", @"Su" /*! Set a theme */ -- (BOOL)setThemeState:(CPThemeState)aState +- (BOOL)setThemeState:(ThemeState)aState { [_textField setThemeState:aState]; [super setThemeState:aState]; @@ -1067,7 +1145,7 @@ var CPShortWeekDayNameArrayEn = [@"Mo", @"Tu", @"We", @"Th", @"Fr", @"Sa", @"Su" /*! Unset a theme */ -- (BOOL)unsetThemeState:(CPThemeState)aState +- (BOOL)unsetThemeState:(ThemeState)aState { [_textField unsetThemeState:aState]; [super unsetThemeState:aState]; @@ -1156,7 +1234,7 @@ var CPShortWeekDayNameArrayEn = [@"Mo", @"Tu", @"We", @"Th", @"Fr", @"Sa", @"Su" var themeState = [self themeState], context = [[CPGraphicsContext currentContext] graphicsPort]; - if (themeState & CPThemeStateSelected) + if (themeState.hasThemeState(CPThemeStateSelected)) { [self setBackgroundColor:[_datePicker valueForThemeAttribute:@"bezel-color-calendar" inState:themeState]]; CGContextSetLineWidth(context, [_datePicker valueForThemeAttribute:@"border-width"]); diff --git a/AppKit/CPDatePicker/_CPDatePickerTextField.j b/AppKit/CPDatePicker/_CPDatePickerTextField.j index 8dbb21eaf..0429c5752 100644 --- a/AppKit/CPDatePicker/_CPDatePickerTextField.j +++ b/AppKit/CPDatePicker/_CPDatePickerTextField.j @@ -133,10 +133,10 @@ var CPZeroKeyCode = 48, return NO; } + #pragma mark - #pragma mark Setter Getter methods - /*! Set the value of the control @param aDateValue */ @@ -145,6 +145,10 @@ var CPZeroKeyCode = 48, var dateValue = [aDateValue copy]; [dateValue _dateWithTimeZone:[_datePicker timeZone]]; [_datePickerElementView setDateValue:dateValue]; + + // Be sure to update the stepper value. We don't use -setObjectValue to avoid a binding update. + if (_currentTextField) + _stepper._value = [_currentTextField intValue]; } /*! Set the widget enabled or not @@ -180,7 +184,7 @@ var CPZeroKeyCode = 48, #pragma mark - #pragma mark SelectTextField action -- (void)_selecteTextFieldWithFlags:(unsigned)flags +- (void)_selectTextFieldWithFlags:(unsigned)flags { [_datePickerElementView _updateResponderTextField]; @@ -217,7 +221,7 @@ var CPZeroKeyCode = 48, if ([_currentTextField dateType] != CPAMPMDateType) { // We update the value of the stepper dependind on the textField - [_stepper setObjectValue:parseInt([_currentTextField stringValue])]; + [_stepper setObjectValue:[_currentTextField intValue]]; [_stepper setMaxValue:[_currentTextField maxNumber]]; [_stepper setMinValue:[_currentTextField minNumber]]; @@ -245,11 +249,11 @@ var CPZeroKeyCode = 48, [self _selectTextField:_firstTextField]; [[self window] makeFirstResponder:_datePicker]; - // This gonna update the dateValue with the binding + // Update the dateValue with the binding. if (isUp) - [_stepper setDoubleValue:parseInt([_currentTextField objectValue]) + 1]; + [_stepper setDoubleValue:[_currentTextField intValue] + 1]; else - [_stepper setDoubleValue:parseInt([_currentTextField objectValue]) - 1]; + [_stepper setDoubleValue:[_currentTextField intValue] - 1]; return; } @@ -257,7 +261,7 @@ var CPZeroKeyCode = 48, if ([_currentTextField dateType] != CPAMPMDateType) { // Make sure to get the good value, especially when we reach the maxDate or minDate - [sender setDoubleValue:parseInt([_currentTextField objectValue])]; + [sender setDoubleValue:[_currentTextField intValue]]; } else { @@ -284,7 +288,7 @@ var CPZeroKeyCode = 48, if (key == CPUpArrowFunctionKey) { [_currentTextField _invalidTimer]; - [_stepper setDoubleValue:parseInt([_currentTextField objectValue])]; + [_stepper setDoubleValue:[_currentTextField intValue]]; [_stepper performClickUp:self]; return YES; } @@ -292,7 +296,7 @@ var CPZeroKeyCode = 48, if (key == CPDownArrowFunctionKey) { [_currentTextField _invalidTimer]; - [_stepper setDoubleValue:parseInt([_currentTextField objectValue])]; + [_stepper setDoubleValue:[_currentTextField intValue]]; [_stepper performClickDown:self]; return YES; } @@ -525,7 +529,7 @@ var CPZeroKeyCode = 48, #pragma mark - #pragma mark Responder methods -- (BOOL)acceptFirstResponder +- (BOOL)acceptsFirstResponder { return NO; } @@ -593,23 +597,23 @@ var CPZeroKeyCode = 48, [date _dateWithTimeZone:[_datePicker timeZone]]; if (![_textFieldDay isHidden]) - date.setDate([_textFieldDay stringValue]); + date.setDate([_textFieldDay intValue]); if (![_textFieldMonth isHidden]) - date.setMonth(parseInt([_textFieldMonth stringValue]) - 1); + date.setMonth([_textFieldMonth intValue] - 1); if (![_textFieldYear isHidden]) - date.setFullYear([_textFieldYear stringValue]); + date.setFullYear([_textFieldYear intValue]); if (![_textFieldSecond isHidden]) - date.setSeconds([_textFieldSecond stringValue]); + date.setSeconds([_textFieldSecond intValue]); if (![_textFieldMinute isHidden]) - date.setMinutes([_textFieldMinute stringValue]); + date.setMinutes([_textFieldMinute intValue]); if (![_textFieldHour isHidden]) { - var hour = parseInt([_textFieldHour stringValue]), + var hour = [_textFieldHour intValue], currentHour = parseInt(date.getHours()); if (hour != currentHour) @@ -1222,16 +1226,18 @@ var CPMonthDateType = 0, int _maxNumber @accessors(getter=maxNumber); int _minNumber @accessors(getter=minNumber); + BOOL _firstEvent; CPTimer _timerEdition; } - -#pragma mark - -#pragma mark Getter Setter methods - -- (BOOL)acceptFirstResponder +- (id)init { - return NO; + if (self = [super init]) + { + _firstEvent = YES; + } + + return self; } /*! Set the dateType of the textField @@ -1339,7 +1345,7 @@ var CPMonthDateType = 0, if (keyCode != CPDeleteKeyCode && keyCode != CPDeleteForwardKeyCode && keyCode < CPZeroKeyCode || keyCode > CPNineKeyCode) return; - var newValue = [self stringValue], + var newValue = [self stringValue].replace(/\s/g, ''), length = [newValue length], eventKeyValue = parseInt([anEvent characters]).toString(); @@ -1355,7 +1361,7 @@ var CPMonthDateType = 0, { _timerEdition = [CPTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(_timerKeyEvent:) userInfo:nil repeats:NO]; - if ((_dateType == CPYearDateType && length == 4) || (_dateType != CPYearDateType && length == 2) || !length) + if (_firstEvent || !length) newValue = eventKeyValue; else newValue = parseInt(newValue).toString() + eventKeyValue; @@ -1374,6 +1380,8 @@ var CPMonthDateType = 0, if (parseInt(newValue) > [self _maxNumberWithMaxDate] || ([_datePicker _isEnglishFormat] && _dateType == CPHourDateType && parseInt(newValue) > 12)) return; + _firstEvent = NO; + [super setObjectValue:newValue]; } @@ -1473,7 +1481,13 @@ var CPMonthDateType = 0, } while ([aStringValue length] < 2) - aStringValue = "0" + aStringValue; + { + if (_dateType == CPSecondDateType || _dateType == CPMinuteDateType) + aStringValue = @"0" + aStringValue; + else + aStringValue = @" " + aStringValue; + } + } [super setObjectValue:aStringValue]; @@ -1553,6 +1567,7 @@ var CPMonthDateType = 0, [self setStringValue:dateValue.getSeconds().toString()]; return; } + [super setObjectValue:objectValue]; break; @@ -1612,6 +1627,7 @@ var CPMonthDateType = 0, */ - (void)makeDeselectable { + _firstEvent = YES; [self unsetThemeState:CPThemeStateSelected]; } diff --git a/AppKit/CPImage.j b/AppKit/CPImage.j index e6b67317c..674bb1d04 100644 --- a/AppKit/CPImage.j +++ b/AppKit/CPImage.j @@ -30,6 +30,20 @@ @import "CGGeometry.j" @import "CPCompatibility.j" + +@protocol CPImageDelegate + +@optional +- (void)imageDidLoad:(CPImage)anImage; +- (void)imageDidError:(CPImage)anImage; +- (void)imageDidAbort:(CPImage)anImage; + +@end + +var CPImageDelegate_imageDidLoad_ = 1 << 1, + CPImageDelegate_imageDidError_ = 1 << 2, + CPImageDelegate_imageDidAbort_ = 1 << 3; + CPImageLoadStatusInitialized = 0; CPImageLoadStatusLoading = 1; CPImageLoadStatusCompleted = 2; @@ -119,14 +133,15 @@ function CPAppKitImage(aFilename, aSize) */ @implementation CPImage : CPObject { - CGSize _size; - CPString _filename; - CPString _name; + CGSize _size; + CPString _filename; + CPString _name; - id _delegate; - unsigned _loadStatus; + id _delegate; + unsigned _loadStatus; + unsigned _implementedDelegateMethods; - Image _image; + Image _image; } - (id)init @@ -319,9 +334,22 @@ function CPAppKitImage(aFilename, aSize) Sets the receiver's delegate. @param the delegate */ -- (void)setDelegate:(id)aDelegate +- (void)setDelegate:(id )aDelegate { + if (_delegate === aDelegate) + return; + _delegate = aDelegate; + _implementedDelegateMethods = 0; + + if ([_delegate respondsToSelector:@selector(imageDidLoad:)]) + _implementedDelegateMethods |= CPImageDelegate_imageDidLoad_; + + if ([_delegate respondsToSelector:@selector(imageDidError:)]) + _implementedDelegateMethods |= CPImageDelegate_imageDidError_; + + if ([_delegate respondsToSelector:@selector(imageDidAbort:)]) + _implementedDelegateMethods |= CPImageDelegate_imageDidAbort_; } /*! @@ -457,7 +485,7 @@ function CPAppKitImage(aFilename, aSize) postNotificationName:CPImageDidLoadNotification object:self]; - if ([_delegate respondsToSelector:@selector(imageDidLoad:)]) + if (_implementedDelegateMethods & CPImageDelegate_imageDidLoad_) [_delegate imageDidLoad:self]; } @@ -466,7 +494,7 @@ function CPAppKitImage(aFilename, aSize) { _loadStatus = CPImageLoadStatusReadError; - if ([_delegate respondsToSelector:@selector(imageDidError:)]) + if (_implementedDelegateMethods & CPImageDelegate_imageDidError_) [_delegate imageDidError:self]; } @@ -475,7 +503,7 @@ function CPAppKitImage(aFilename, aSize) { _loadStatus = CPImageLoadStatusCancelled; - if ([_delegate respondsToSelector:@selector(imageDidAbort:)]) + if (_implementedDelegateMethods & CPImageDelegate_imageDidAbort_) [_delegate imageDidAbort:self]; } diff --git a/AppKit/CPLevelIndicator.j b/AppKit/CPLevelIndicator.j index 042b17e84..07ce720c3 100644 --- a/AppKit/CPLevelIndicator.j +++ b/AppKit/CPLevelIndicator.j @@ -105,10 +105,21 @@ CPRatingLevelIndicatorStyle = 3; var filledColor = [self valueForThemeAttribute:@"color-normal"], value = [self doubleValue]; - if (value <= _criticalValue) - filledColor = [self valueForThemeAttribute:@"color-critical"]; - else if (value <= _warningValue) - filledColor = [self valueForThemeAttribute:@"color-warning"]; + if (_warningValue < _criticalValue) + { + if (value >= _criticalValue) + filledColor = [self valueForThemeAttribute:@"color-critical"]; + else if (value >= _warningValue) + filledColor = [self valueForThemeAttribute:@"color-warning"]; + } + else + { + if (value <= _criticalValue) + filledColor = [self valueForThemeAttribute:@"color-critical"]; + else if (value <= _warningValue) + filledColor = [self valueForThemeAttribute:@"color-warning"]; + } + for (var i = 0; i < segmentCount; i++) { diff --git a/AppKit/CPMenu/CPMenu.j b/AppKit/CPMenu/CPMenu.j index 53ff50570..25e0c90b6 100644 --- a/AppKit/CPMenu/CPMenu.j +++ b/AppKit/CPMenu/CPMenu.j @@ -30,6 +30,17 @@ @global CPApp +@protocol CPMenuDelegate + +@optional +- (void)menuWillOpen:(CPMenu)aMenu; +- (void)menuDidClose:(CPMenu)aMenu; + +@end + +var CPMenuDelegate_menuWillOpen_ = 1 << 1, + CPMenuDelegate_menuDidClose_ = 1 << 2; + CPMenuDidAddItemNotification = @"CPMenuDidAddItemNotification"; CPMenuDidChangeItemNotification = @"CPMenuDidChangeItemNotification"; CPMenuDidRemoveItemNotification = @"CPMenuDidRemoveItemNotification"; @@ -50,26 +61,27 @@ var _CPMenuBarVisible = NO, */ @implementation CPMenu : CPObject { - CPMenu _supermenu; + CPMenu _supermenu; - CPString _title; - CPString _name; + CPString _title; + CPString _name; - CPFont _font; + CPFont _font; - float _minimumWidth; + float _minimumWidth; - CPMutableArray _items; + CPMutableArray _items; - BOOL _autoenablesItems; - BOOL _showsStateColumn; + BOOL _autoenablesItems; + BOOL _showsStateColumn; - id _delegate; + id _delegate; + unsigned _implementedDelegateMethods; - int _highlightedIndex; - _CPMenuWindow _menuWindow; + int _highlightedIndex; + _CPMenuWindow _menuWindow; - CPEvent _lastCloseEvent; + CPEvent _lastCloseEvent; } // Managing the Menu Bar @@ -941,9 +953,19 @@ var _CPMenuBarVisible = NO, // Managing the Delegate -- (void)setDelegate:(id)aDelegate +- (void)setDelegate:(id )aDelegate { + if (_delegate === aDelegate) + return; + _delegate = aDelegate; + _implementedDelegateMethods = 0; + + if ([_delegate respondsToSelector:@selector(menuWillOpen:)]) + _implementedDelegateMethods |= CPMenuDelegate_menuWillOpen_; + + if ([_delegate respondsToSelector:@selector(menuDidClose:)]) + _implementedDelegateMethods |= CPMenuDelegate_menuDidClose_; } - (id)delegate @@ -953,10 +975,7 @@ var _CPMenuBarVisible = NO, - (void)_menuWillOpen { - var delegate = [self delegate]; - - if ([delegate respondsToSelector:@selector(menuWillOpen:)]) - [delegate menuWillOpen:self]; + [self _sendDelegateMenuWillOpen]; } - (void)_menuDidClose @@ -965,10 +984,7 @@ var _CPMenuBarVisible = NO, // when a click on the button itself caused the menu to close. _lastCloseEvent = [CPApp currentEvent]; - var delegate = [self delegate]; - - if ([delegate respondsToSelector:@selector(menuDidClose:)]) - [delegate menuDidClose:self]; + [self _sendDelegateMenuDidClose]; } // Handling Tracking @@ -1132,6 +1148,36 @@ var _CPMenuBarVisible = NO, @end + +@implementation CPMenu (CPMenuDelegate) + +/*! + @ignore + Call delegate menuWillOpen +*/ +- (void)_sendDelegateMenuWillOpen +{ + if (!(_implementedDelegateMethods & CPMenuDelegate_menuWillOpen_)) + return; + + [_delegate menuWillOpen:self]; +} + +/*! + @ignore + Call delegate menuDidClose +*/ +- (void)_sendDelegateMenuDidClose +{ + if (!(_implementedDelegateMethods & CPMenuDelegate_menuDidClose_)) + return; + + [_delegate menuDidClose:self]; +} + +@end + + @implementation CPMenu (CPKeyValueCoding) - (CPUInteger)countOfItems diff --git a/AppKit/CPOutlineView.j b/AppKit/CPOutlineView.j index 220c50202..e1c5bad01 100644 --- a/AppKit/CPOutlineView.j +++ b/AppKit/CPOutlineView.j @@ -52,7 +52,6 @@ var CPOutlineViewDataSource_outlineView_objectValue_forTableColumn_byItem_ CPOutlineViewDataSource_outlineView_sortDescriptorsDidChange_ = 1 << 11; var CPOutlineViewDelegate_outlineView_dataViewForTableColumn_item_ = 1 << 1, - CPOutlineViewDelegate_outlineView_viewForTableColumn_item_ = 1 << 26, CPOutlineViewDelegate_outlineView_didClickTableColumn_ = 1 << 2, CPOutlineViewDelegate_outlineView_didDragTableColumn_ = 1 << 3, CPOutlineViewDelegate_outlineView_heightOfRowByItem_ = 1 << 4, @@ -75,8 +74,10 @@ var CPOutlineViewDelegate_outlineView_dataViewForTableColumn_item_ CPOutlineViewDelegate_outlineView_typeSelectStringForTableColumn_item_ = 1 << 21, CPOutlineViewDelegate_outlineView_willDisplayOutlineView_forTableColumn_item_ = 1 << 22, CPOutlineViewDelegate_outlineView_willDisplayView_forTableColumn_item_ = 1 << 23, - CPOutlineViewDelegate_selectionShouldChangeInOutlineView_ = 1 << 24, - CPOutlineViewDelegate_outlineView_menuForTableColumn_item_ = 1 << 25; + CPOutlineViewDelegate_outlineView_willRemoveView_forTableColumn_item_ = 1 << 24, + CPOutlineViewDelegate_selectionShouldChangeInOutlineView_ = 1 << 25, + CPOutlineViewDelegate_outlineView_menuForTableColumn_item_ = 1 << 26, + CPOutlineViewDelegate_outlineView_viewForTableColumn_item_ = 1 << 27; CPOutlineViewDropOnItemIndex = -1; @@ -118,6 +119,7 @@ var CPOutlineViewCoalesceSelectionNotificationStateOff = 0, - (void)outlineView:(CPOutlineView)anOutlineView mouseDownInHeaderOfTableColumn:(CPTableColumn)aTableColumn; - (void)outlineView:(CPOutlineView)anOutlineView willDisplayOutlineView:(CPView)aView forTableColumn:(CPTableColumn)aTableColumn item:(id)anItem; - (void)outlineView:(CPOutlineView)anOutlineView willDisplayView:(CPView)aView forTableColumn:(CPTableColumn)aTableColumn item:(id)anItem; +- (void)outlineView:(CPOutlineView)anOutlineView willRemoveView:(CPView)aView forTableColumn:(CPTableColumn)aTableColumn item:(id)anItem; @end @@ -963,6 +965,7 @@ var CPOutlineViewCoalesceSelectionNotificationStateOff = 0, CPOutlineViewDelegate_outlineView_typeSelectStringForTableColumn_item_ , @selector(outlineView:typeSelectStringForTableColumn:item:), CPOutlineViewDelegate_outlineView_willDisplayOutlineView_forTableColumn_item_ , @selector(outlineView:willDisplayOutlineView:forTableColumn:item:), CPOutlineViewDelegate_outlineView_willDisplayView_forTableColumn_item_ , @selector(outlineView:willDisplayView:forTableColumn:item:), + CPOutlineViewDelegate_outlineView_willRemoveView_forTableColumn_item_ , @selector(outlineView:willRemoveView:forTableColumn:item:), CPOutlineViewDelegate_selectionShouldChangeInOutlineView_ , @selector(selectionShouldChangeInOutlineView:), CPOutlineViewDelegate_outlineView_menuForTableColumn_item_ , @selector(outlineView:menuForTableColumn:item:) ], @@ -1989,6 +1992,15 @@ var _loadItemInfoForItem = function(/*CPOutlineView*/ anOutlineView, /*id*/ anIt } } +- (void)tableView:(CPTableView)aTableView willRemoveView:(id)aView forTableColumn:(CPTableColumn)aTableColumn row:(CPInteger)aRowIndex +{ + if ((_outlineView._implementedOutlineViewDelegateMethods & CPOutlineViewDelegate_outlineView_willRemoveView_forTableColumn_item_)) + { + var item = [_outlineView itemAtRow:aRowIndex]; + [_outlineView._outlineViewDelegate outlineView:_outlineView willRemoveView:aView forTableColumn:aTableColumn item:item]; + } +} + - (BOOL)tableView:(CPTableView)aTableView isGroupRow:(CPInteger)aRow { if ((_outlineView._implementedOutlineViewDelegateMethods & CPOutlineViewDelegate_outlineView_isGroupItem_)) diff --git a/AppKit/CPPanel.j b/AppKit/CPPanel.j index ee335531f..89a8f0355 100644 --- a/AppKit/CPPanel.j +++ b/AppKit/CPPanel.j @@ -119,4 +119,24 @@ CPDocModalWindowMask = 1 << 6; return YES; } + +#pragma mark - +#pragma mark Overrides + +/*! + @ignore +*/ +- (void)cancelOperation:(id)sender +{ + if ([[CPApp currentEvent] _couldBeKeyEquivalent] && [self performKeyEquivalent:[CPApp currentEvent]]) + return; + + [[self firstResponder] tryToPerform:@selector(cancel:) with:self]; +} + +- (void)cancel:(id)sender +{ + [self performClose:sender]; +} + @end diff --git a/AppKit/CPPopover.j b/AppKit/CPPopover.j index 760e4edab..68862c5bd 100644 --- a/AppKit/CPPopover.j +++ b/AppKit/CPPopover.j @@ -30,6 +30,16 @@ @import "CPView.j" @import "_CPPopoverWindow.j" +@protocol CPPopoverDelegate + +@optional +- (BOOL)popoverShouldClose:(CPPopover)aPopover; +- (void)popoverWillClose:(CPPopover)aPopover; +- (void)popoverDidClose:(CPPopover)aPopover; +- (void)popoverWillShow:(CPPopover)aPopover; +- (void)popoverDidShow:(CPPopover)aPopover; + +@end CPPopoverBehaviorApplicationDefined = 0; CPPopoverBehaviorTransient = 1; @@ -60,15 +70,16 @@ var CPPopoverDelegate_popover_willShow_ = 1 << 0, */ @implementation CPPopover : CPResponder { - @outlet CPViewController _contentViewController @accessors(property=contentViewController); - @outlet id _delegate @accessors(getter=delegate); + @outlet CPViewController _contentViewController @accessors(property=contentViewController); + @outlet id _delegate @accessors(getter=delegate); - BOOL _animates @accessors(getter=animates); - int _appearance @accessors(property=appearance); - int _behavior @accessors(getter=behavior); + BOOL _animates @accessors(getter=animates); + int _appearance @accessors(property=appearance); + int _behavior @accessors(getter=behavior); - _CPPopoverWindow _popoverWindow; - int _implementedDelegateMethods; + _CPPopoverWindow _popoverWindow; + CPView _positioningView; + int _implementedDelegateMethods; } @@ -127,9 +138,6 @@ var CPPopoverDelegate_popover_willShow_ = 1 << 0, */ - (CGSize)contentSize { - if (![_popoverWindow isVisible]) - return CGRectMakeZero(); - return [[_contentViewController view] frameSize]; } @@ -140,7 +148,10 @@ var CPPopoverDelegate_popover_willShow_ = 1 << 0, */ - (void)setContentSize:(CGSize)aSize { - [[_contentViewController view] setFrameSize:aSize]; + if (!_popoverWindow) + [[_contentViewController view] setFrameSize:aSize]; + else + [_popoverWindow updateFrameWithSize:aSize]; } /*! @@ -181,10 +192,10 @@ Set the behavior of the CPPopover. It can be: return; _behavior = aBehavior; - [_popoverWindow setStyleMask:[self styleMaskForBehavior]]; + [_popoverWindow setStyleMask:[self _styleMaskForBehavior]]; } -- (void)setDelegate:(id)aDelegate +- (void)setDelegate:(id )aDelegate { if (_delegate === aDelegate) return; @@ -226,34 +237,40 @@ Set the behavior of the CPPopover. It can be: if (!_contentViewController) [CPException raise:CPInternalInconsistencyException reason:@"contentViewController must not be nil"]; - // If the popover is currently closing, do nothing. That is what Cocoa does. - if ([_popoverWindow isClosing]) + // If the popover is currently closing or opening, do nothing. That is what Cocoa does. + if ([_popoverWindow isClosing] || [_popoverWindow isOpening]) return; - if (_implementedDelegateMethods & CPPopoverDelegate_popover_willShow_) - [_delegate popoverWillShow:self]; + _positioningView = positioningView; if (!_popoverWindow) - { - _popoverWindow = [[_CPPopoverWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:[self styleMaskForBehavior]]; - } + _popoverWindow = [[_CPPopoverWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:[self _styleMaskForBehavior]]; + + if (_positioningView != positioningView) + [_popoverWindow setPlatformWindow:[[positioningView window] platformWindow]]; - [_popoverWindow setPlatformWindow:[[positioningView window] platformWindow]]; [_popoverWindow setAppearance:_appearance]; [_popoverWindow setAnimates:_animates]; [_popoverWindow setDelegate:self]; [_popoverWindow setMovableByWindowBackground:NO]; [_popoverWindow setFrame:[_popoverWindow frameRectForContentRect:[[_contentViewController view] frame]]]; [_popoverWindow setContentView:[_contentViewController view]]; + + if (![self isShown]) + [self _popoverWillShow]; + [_popoverWindow positionRelativeToRect:positioningRect ofView:positioningView preferredEdge:preferredEdge]; - if (!_animates && _implementedDelegateMethods & CPPopoverDelegate_popover_didShow_) - [_delegate popoverDidShow:self]; + if (![self isShown]) + [self _popoverDidShow]; } -- (unsigned)styleMaskForBehavior +- (unsigned)_styleMaskForBehavior { - return (_behavior == CPPopoverBehaviorTransient) ? CPClosableOnBlurWindowMask : 0; + if (_behavior == CPPopoverBehaviorApplicationDefined) + return 0; + + return CPClosableOnBlurWindowMask } /*! @@ -272,9 +289,9 @@ Set the behavior of the CPPopover. It can be: if ([_popoverWindow isClosing] || ![self isShown]) return; - if (_implementedDelegateMethods & CPPopoverDelegate_popover_willClose_) - [_delegate popoverWillClose:self]; + [self _popoverWillClose]; + _positioningView = nil; [_popoverWindow close]; // popoverDidClose will be sent from popoverWindowDidClose, since @@ -307,7 +324,7 @@ Set the behavior of the CPPopover. It can be: #pragma mark Delegates /*! @ignore */ -- (BOOL)popoverWindowShouldClose:(_CPPopoverWindow)aPopoverWindow +- (BOOL)_popoverWindowShouldClose { [self performClose:self]; @@ -318,19 +335,33 @@ Set the behavior of the CPPopover. It can be: } /*! @ignore */ -- (void)popoverWindowDidClose:(_CPPopoverWindow)aPopoverWindow +- (void)_popoverWindowDidClose { if (_implementedDelegateMethods & CPPopoverDelegate_popover_didClose_) [_delegate popoverDidClose:self]; } /*! @ignore */ -- (void)popoverWindowDidShow:(_CPPopoverWindow)aPopoverWindow +- (void)_popoverWindowDidShow { if (_implementedDelegateMethods & CPPopoverDelegate_popover_didShow_) [_delegate popoverDidShow:self]; } +/*! @ignore */ +- (void)_popoverWillClose +{ + if (_implementedDelegateMethods & CPPopoverDelegate_popover_willClose_) + [_delegate popoverWillClose:self]; +} + +/*! @ignore */ +- (void)_popoverWillShow +{ + if (_implementedDelegateMethods & CPPopoverDelegate_popover_willShow_) + [_delegate popoverWillShow:self]; +} + @end @implementation CPPopover (Deprecated) diff --git a/AppKit/CPRuleEditor/CPPredicateEditorRowTemplate.j b/AppKit/CPRuleEditor/CPPredicateEditorRowTemplate.j index d34bfef58..194d27e56 100644 --- a/AppKit/CPRuleEditor/CPPredicateEditorRowTemplate.j +++ b/AppKit/CPRuleEditor/CPPredicateEditorRowTemplate.j @@ -27,8 +27,7 @@ @import "CPMenuItem.j" @import "CPTextField.j" -// NOTE: CPDatePicker is not implemented yet -@class CPDatePicker +@import "CPDatePicker.j" CPUndefinedAttributeType = 0; @@ -488,7 +487,36 @@ CPTransformableAttributeType = 1800; - (id)copy { - return [CPKeyedUnarchiver unarchiveObjectWithData:[CPKeyedArchiver archivedDataWithRootObject:self]]; + var views = [CPArray array]; + + var copy = [[[self class] alloc] init]; + [copy _setTemplateType:_templateType]; + [copy _setOptions:_predicateOptions]; + [copy _setModifier:_predicateModifier]; + [copy _setLeftAttributeType:_leftAttributeType]; + [copy _setRightAttributeType:_rightAttributeType]; + [copy setLeftIsWildcard:_leftIsWildcard]; + [copy setRightIsWildcard:_rightIsWildcard]; + + [_views enumerateObjectsUsingBlock:function(aView, idx, stop) + { + var vcopy; + + if ([aView implementsSelector:@selector(copy)]) + { + vcopy = [aView copy]; + } + else + { + vcopy = [CPKeyedUnarchiver unarchiveObjectWithData:[CPKeyedArchiver archivedDataWithRootObject:aView]]; + } + + [views addObject:vcopy]; + }]; + + [copy setTemplateViews:views]; + + return copy; } + (id)_operatorsForAttributeType:(CPAttributeType)attributeType @@ -680,7 +708,7 @@ CPTransformableAttributeType = 1800; view = [[CPCheckBox alloc] initWithFrame:CGRectMake(0, 0, 50, 26)]; } else if (attributeType == CPDateAttributeType) - view = [[CPDatePicker alloc] initWithFrame:CGRectMake(0, 0, 150, 26)]; + view = [[CPDatePicker alloc] initWithFrame:CGRectMake(0, 0, 180, 26)]; else return nil; @@ -797,5 +825,31 @@ var CPPredicateTemplateTypeKey = @"CPPredicateTemplateType", [coder encodeObject:_views forKey:CPPredicateTemplateViewsKey]; } +@end + +// Copy support for built-in types +@implementation CPDatePicker (CPCopying) + +- (id)copy +{ + var ret = [[[self class] alloc] initWithFrame:[self frame]]; + + [ret setTextFont:[self textFont]]; + [ret setMinDate:[self minDate]]; + [ret setMaxDate:[self maxDate]]; + [ret setTimeInterval:[self timeInterval]]; + [ret setDatePickerMode:[self datePickerMode]]; + [ret setDatePickerElements:[self datePickerElements]]; + [ret setDatePickerStyle:[self datePickerStyle]]; + [ret setLocale:[self locale]]; + [ret setDateValue:[self dateValue]]; + [ret setBackgroundColor:[self backgroundColor]]; + [ret setDrawsBackground:[self drawsBackground]]; + [ret setBordered:[self isBordered]]; + [ret _init]; + + return ret; +} + @end /*! @endcond */ diff --git a/AppKit/CPRuleEditor/CPRuleEditor.j b/AppKit/CPRuleEditor/CPRuleEditor.j index e5e6248eb..3078e2535 100644 --- a/AppKit/CPRuleEditor/CPRuleEditor.j +++ b/AppKit/CPRuleEditor/CPRuleEditor.j @@ -41,6 +41,21 @@ @global CPCaseInsensitivePredicateOption @global CPOrPredicateType +@protocol CPRuleEditorDelegate + +@required +- (id)ruleEditor:(CPRuleEditor)editor child:(CPInteger)index forCriterion:(id)criterion withRowType:(CPRuleEditorRowType)rowType; +- (id)ruleEditor:(CPRuleEditor)editor displayValueForCriterion:(id)criterion inRow:(CPInteger)row; +- (CPInteger)ruleEditor:(CPRuleEditor)editor numberOfChildrenForCriterion:(id)criterion withRowType:(CPRuleEditorRowType)rowType; + +@optional +- (CPDictionary)ruleEditor:(CPRuleEditor)editor predicatePartsForCriterion:(id)criterion withDisplayValue:(id)value inRow:(CPInteger)row; +- (void)ruleEditorRowsDidChange:(CPNotification)notification; + +@end + +var CPRuleEditorDelegate_ruleEditor_predicatePartsForCriterion_withDisplayValue_inRow_ = 1 << 1; + var CPRuleEditorItemPBoardType = @"CPRuleEditorItemPBoardType", itemsContext = "items", valuesContext = "values", @@ -69,50 +84,51 @@ var CPRuleEditorItemPBoardType = @"CPRuleEditorItemPBoardType", @implementation CPRuleEditor : CPControl { - BOOL _suppressKeyDownHandling; - BOOL _allowsEmptyCompoundRows; - BOOL _disallowEmpty; - BOOL _delegateWantsValidation; - BOOL _editable; - BOOL _sendAction; + BOOL _suppressKeyDownHandling; + BOOL _allowsEmptyCompoundRows; + BOOL _disallowEmpty; + BOOL _delegateWantsValidation; + BOOL _editable; + BOOL _sendAction; - Class _rowClass; + Class _rowClass; - CPIndexSet _draggingRows; - CPInteger _subviewIndexOfDropLine; - CPView _dropLineView; + CPIndexSet _draggingRows; + CPInteger _subviewIndexOfDropLine; + CPView _dropLineView; - CPMutableArray _rowCache; - CPMutableArray _slices; + CPMutableArray _rowCache; + CPMutableArray _slices; - CPPredicate _predicate; + CPPredicate _predicate; - CPString _itemsKeyPath; - CPString _subrowsArrayKeyPath; - CPString _typeKeyPath; - CPString _valuesKeyPath; - CPString _boundArrayKeyPath @accessors(property=boundArrayKeyPath); + CPString _itemsKeyPath; + CPString _subrowsArrayKeyPath; + CPString _typeKeyPath; + CPString _valuesKeyPath; + CPString _boundArrayKeyPath @accessors(property=boundArrayKeyPath); - CPView _slicesHolder; - CPViewAnimation _currentAnimation; + CPView _slicesHolder; + CPViewAnimation _currentAnimation; - CPInteger _lastRow; - CPInteger _nestingMode; + CPInteger _lastRow; + CPInteger _nestingMode; - float _alignmentGridWidth; - float _sliceHeight; + float _alignmentGridWidth; + float _sliceHeight; - id _ruleDataSource; - id _ruleDelegate; - id _boundArrayOwner; + id _ruleDataSource; + id _ruleDelegate; + id _boundArrayOwner; + unsigned _implementedDelegateMethods; - CPString _stringsFilename; + CPString _stringsFilename; - BOOL _isKeyDown; - BOOL _nestingModeDidChange; + BOOL _isKeyDown; + BOOL _nestingModeDidChange; - _CPRuleEditorLocalizer _standardLocalizer @accessors(property=standardLocalizer); - CPDictionary _itemsAndValuesToAddForRowType; + _CPRuleEditorLocalizer _standardLocalizer @accessors(property=standardLocalizer); + CPDictionary _itemsAndValuesToAddForRowType; } /*! @cond */ @@ -213,19 +229,24 @@ var CPRuleEditorItemPBoardType = @"CPRuleEditorItemPBoardType", @discussion CPRuleEditor requires a delegate that implements the required delegate methods to function. @see delegate */ -- (void)setDelegate:(id)aDelegate +- (void)setDelegate:(id )aDelegate { if (_ruleDelegate === aDelegate) return; var nc = [CPNotificationCenter defaultCenter]; + if (_ruleDelegate) [nc removeObserver:_ruleDelegate name:nil object:self]; _ruleDelegate = aDelegate; + _implementedDelegateMethods = 0; if ([_ruleDelegate respondsToSelector:@selector(ruleEditorRowsDidChange:)]) [nc addObserver:_ruleDelegate selector:@selector(ruleEditorRowsDidChange:) name:CPRuleEditorRowsDidChangeNotification object:nil]; + + if ([_ruleDelegate respondsToSelector:@selector(ruleEditor:predicatePartsForCriterion:withDisplayValue:inRow:)]) + _implementedDelegateMethods |= CPRuleEditorDelegate_ruleEditor_predicatePartsForCriterion_withDisplayValue_inRow_; } /*! @brief Returns a Boolean value that indicates whether the receiver is editable. @@ -810,7 +831,7 @@ TODO: implement var item = [items objectAtIndex:i], //var displayValue = [self _queryValueForItem:item inRow:aRow]; Ask the delegate or get cached value ?. displayValue = [[self displayValuesForRow:aRow] objectAtIndex:i], - predpart = [_ruleDelegate ruleEditor:self predicatePartsForCriterion:item withDisplayValue:displayValue inRow:aRow]; + predpart = [self _sendDelegateRuleEditorPredicatePartsForCriterion:item withDisplayValue:displayValue inRow:aRow]; if (predpart) [predicateParts addEntriesFromDictionary:predpart]; @@ -1716,8 +1737,7 @@ TODO: implement { if (_delegateWantsValidation) { - var selector = @selector(ruleEditor:predicatePartsForCriterion:withDisplayValue:inRow:); - if (![_ruleDelegate respondsToSelector:selector]) + if (![self _delegateRespondsToRuleEditorPredicatePartsForCriterionWithDisplayValueInRow]) return; _delegateWantsValidation = NO; @@ -2377,6 +2397,33 @@ TODO: implement @end + +@implementation CPRuleEditor (CPRuleEditorDelegate) + +/*! + @ignore + Check if the delegate responds to ruleEditor:predicatePartsForCriterion:withDisplayValue:inRow: +*/ +- (BOOL)_delegateRespondsToRuleEditorPredicatePartsForCriterionWithDisplayValueInRow +{ + return _implementedDelegateMethods & CPRuleEditorDelegate_ruleEditor_predicatePartsForCriterion_withDisplayValue_inRow_; +} + +/*! + @ignore + Call delegate ruleEditor:predicatePartsForCriterion:withDisplayValue:inRow: +*/ +- (CPDictionary)_sendDelegateRuleEditorPredicatePartsForCriterion:(id)criterion withDisplayValue:(id)value inRow:(CPInteger)row +{ + if (!(_implementedDelegateMethods & CPRuleEditorDelegate_ruleEditor_predicatePartsForCriterion_withDisplayValue_inRow_)) + return @{}; + + return [_ruleDelegate ruleEditor:self predicatePartsForCriterion:criterion withDisplayValue:value inRow:row]; +} + +@end + + var CPRuleEditorAlignmentGridWidthKey = @"CPRuleEditorAlignmentGridWidth", CPRuleEditorSliceHeightKey = @"CPRuleEditorSliceHeight", CPRuleEditorStringsFilenameKey = @"CPRuleEditorStringsFilename", diff --git a/AppKit/CPScrollView.j b/AppKit/CPScrollView.j index 439489982..3ea8593b9 100644 --- a/AppKit/CPScrollView.j +++ b/AppKit/CPScrollView.j @@ -1262,6 +1262,10 @@ Notifies the delegate when the scroll view has finished scrolling. [self reflectScrolledClipView:_contentView]; } +- (CGRect)documentVisibleRect +{ + return [_contentView documentVisibleRect]; +} #pragma mark - #pragma mark Overrides diff --git a/AppKit/CPScroller.j b/AppKit/CPScroller.j index 6561af112..cc6d89427 100644 --- a/AppKit/CPScroller.j +++ b/AppKit/CPScroller.j @@ -733,7 +733,7 @@ CPThemeStateScrollerKnobDark = CPThemeState("scroller-knob-dark"); var themeState = _themeState; if (NAMES_FOR_PARTS[_hitPart] + "-color" !== anAttributeName) - themeState &= ~CPThemeStateHighlighted; + themeState = themeState.without(CPThemeStateHighlighted); return [self valueForThemeAttribute:anAttributeName inState:themeState]; } diff --git a/AppKit/CPSegmentedControl.j b/AppKit/CPSegmentedControl.j index 3bf94a0c2..53bb09394 100644 --- a/AppKit/CPSegmentedControl.j +++ b/AppKit/CPSegmentedControl.j @@ -285,7 +285,6 @@ CPSegmentSwitchTrackingMomentary = 2; - (void)setWidth:(float)aWidth forSegment:(unsigned)aSegment { [_segments[aSegment] setWidth:aWidth]; - [self tileWithChangedSegment:aSegment]; } @@ -432,9 +431,9 @@ CPSegmentSwitchTrackingMomentary = 2; [_segments[aSegment] setEnabled:shouldBeEnabled]; if (shouldBeEnabled) - _themeStates[aSegment] &= ~CPThemeStateDisabled; + _themeStates[aSegment] = _themeStates[aSegment].without(CPThemeStateDisabled); else - _themeStates[aSegment] |= CPThemeStateDisabled; + _themeStates[aSegment] = _themeStates[aSegment].and(CPThemeStateDisabled); [self setNeedsLayout]; [self setNeedsDisplay:YES]; @@ -477,10 +476,13 @@ CPSegmentSwitchTrackingMomentary = 2; */ - (void)drawSegmentBezel:(int)aSegment highlight:(BOOL)shouldHighlight { - if (shouldHighlight) - _themeStates[aSegment] |= CPThemeStateHighlighted; - else - _themeStates[aSegment] &= ~CPThemeStateHighlighted; + if(aSegment < _themeStates.length) + { + if (shouldHighlight) + _themeStates[aSegment] = _themeStates[aSegment].and(CPThemeStateHighlighted); + else + _themeStates[aSegment] = _themeStates[aSegment].without(CPThemeStateHighlighted); + } [self setNeedsLayout]; [self setNeedsDisplay:YES]; @@ -574,9 +576,10 @@ CPSegmentSwitchTrackingMomentary = 2; if (_segments.length <= 0) return; - var themeState = _themeStates[0]; + var themeState = _themeStates[0], + isDisabled = [self hasThemeState:CPThemeStateDisabled]; - themeState |= _themeState & CPThemeStateDisabled; + themeState = isDisabled ? themeState.and(CPThemeStateDisabled) : themeState; var leftCapColor = [self valueForThemeAttribute:@"left-segment-bezel-color" inState:themeState], @@ -589,7 +592,7 @@ CPSegmentSwitchTrackingMomentary = 2; var themeState = _themeStates[_themeStates.length - 1]; - themeState |= _themeState & CPThemeStateDisabled; + themeState = isDisabled ? themeState.and(CPThemeStateDisabled) : themeState; var rightCapColor = [self valueForThemeAttribute:@"right-segment-bezel-color" inState:themeState], @@ -604,7 +607,7 @@ CPSegmentSwitchTrackingMomentary = 2; { var themeState = _themeStates[i]; - themeState |= _themeState & CPThemeStateDisabled; + themeState = isDisabled ? themeState.and(CPThemeStateDisabled) : themeState; var bezelColor = [self valueForThemeAttribute:@"center-segment-bezel-color" inState:themeState], @@ -642,11 +645,11 @@ CPSegmentSwitchTrackingMomentary = 2; if (i == count - 1) continue; - var borderState = _themeStates[i] | _themeStates[i + 1]; + var borderState = _themeStates[i].and(_themeStates[i + 1]); - borderState = (borderState & CPThemeStateSelected & ~CPThemeStateHighlighted) ? CPThemeStateSelected : CPThemeStateNormal; + borderState = (borderState.hasThemeState(CPThemeStateSelected) && !borderState.hasThemeState(CPThemeStateHighlighted)) ? CPThemeStateSelected : CPThemeStateNormal; - borderState |= _themeState & CPThemeStateDisabled; + borderState = isDisabled ? borderState.and(CPThemeStateDisabled) : borderState; var borderColor = [self valueForThemeAttribute:@"divider-bezel-color" inState:borderState], @@ -676,7 +679,7 @@ CPSegmentSwitchTrackingMomentary = 2; var segment = _segments[aSegment], segmentWidth = [segment width], - themeState = _themeStates[aSegment] | (_themeState & CPThemeStateDisabled), + themeState = _themeState.hasThemeState(CPThemeStateDisabled) ? _themeStates[aSegment].and(CPThemeStateDisabled) : _themeStates[aSegment], contentInset = [self valueForThemeAttribute:@"content-inset" inState:themeState], font = [self font]; @@ -915,10 +918,11 @@ var CPSegmentedControlSegmentsKey = "CPSegmentedControlSegmentsKey", // HACK for (var i = 0; i < _segments.length; i++) - { _themeStates[i] = [_segments[i] selected] ? CPThemeStateSelected : CPThemeStateNormal; + + // We do this in a second loop because it relies on all the themeStates being set first + for (var i = 0; i < _segments.length; i++) [self tileWithChangedSegment:i]; - } var difference = MAX(originalWidth - [self frame].size.width, 0.0), remainingWidth = FLOOR(difference / _segments.length); diff --git a/AppKit/CPSound.j b/AppKit/CPSound.j index 3b5dda2ed..bf25bda98 100644 --- a/AppKit/CPSound.j +++ b/AppKit/CPSound.j @@ -23,6 +23,17 @@ @import @import + +@protocol CPSoundDelegate + +@optional +- (void)sound:(CPSound)aSound didFinishPlaying:(BOOL)finishedLoading; + +@end + + +var CPSoundDelegate_sound_didFinishPlaying_ = 1 << 1; + CPSoundLoadStateEmpty = 0; CPSoundLoadStateLoading = 1; CPSoundLoadStateCanBePlayed = 2; @@ -50,6 +61,7 @@ CPSoundPlayBackStatePause = 2; HTMLAudioElement _audioTag; int _loadStatus; int _playBackStatus; + unsigned _implementedDelegateMethods; } #pragma mark - @@ -133,6 +145,25 @@ CPSoundPlayBackStatePause = 2; } +#pragma mark - +#pragma mark Delegate methods + +/*! + Sets the sound's delegate. + @param aDelegate the new delegate +*/ +- (void)setDelegate:(id)aDelegate +{ + if (_delegate === aDelegate) + return; + + _delegate = aDelegate; + _implementedDelegateMethods = 0; + + if ([_delegate respondsToSelector:@selector(sound:didFinishPlaying:)]) + _implementedDelegateMethods |= CPSoundDelegate_sound_didFinishPlaying_; +} + #pragma mark - #pragma mark Events listener @@ -207,8 +238,7 @@ CPSoundPlayBackStatePause = 2; _audioTag.currentTime = 0.0; _playBackStatus = CPSoundPlayBackStateStop; - if (_delegate && [_delegate respondsToSelector:@selector(sound:didFinishPlaying:)]) - [_delegate sound:self didFinishPlaying:YES]; + [self _sendDelegateSoundDidFinishPlaying:YES]; return YES; } @@ -316,3 +346,20 @@ CPSoundPlayBackStatePause = 2; } @end + + +@implementation CPSound (CPSoundDelegate) + +/*! + @ignore + Call delegate sound:didFinishPlaying: +*/ +- (void)_sendDelegateSoundDidFinishPlaying:(BOOL)finishedPlaying +{ + if (!(_implementedDelegateMethods & CPSoundDelegate_sound_didFinishPlaying_)) + return; + + [_delegate sound:self didFinishPlaying:finishedPlaying]; +} + +@end \ No newline at end of file diff --git a/AppKit/CPSplitView.j b/AppKit/CPSplitView.j index 15201a59a..04c66b51c 100644 --- a/AppKit/CPSplitView.j +++ b/AppKit/CPSplitView.j @@ -30,6 +30,33 @@ @class CPUserDefaults @global CPApp +@protocol CPSplitViewDelegate + +@optional +- (BOOL)splitView:(CPSplitView)splitView canCollapseSubview:(CPView)subview; +- (BOOL)splitView:(CPSplitView)splitView shouldAdjustSizeOfSubview:(CPView)subview; +- (BOOL)splitView:(CPSplitView)splitView shouldCollapseSubview:(CPView)subview forDoubleClickOnDividerAtIndex:(CPInteger)dividerIndex; +- (CGRect)splitView:(CPSplitView)splitView additionalEffectiveRectOfDividerAtIndex:(CPInteger)dividerIndex; +- (CGRect)splitView:(CPSplitView)splitView effectiveRect:(CGRect)proposedEffectiveRect forDrawnRect:(CGRect)drawnRect ofDividerAtIndex:(CPInteger)dividerIndex; +- (float)splitView:(CPSplitView)splitView constrainMaxCoordinate:(float)proposedMax ofSubviewAt:(CPInteger)dividerIndex; +- (float)splitView:(CPSplitView)splitView constrainMinCoordinate:(float)proposedMin ofSubviewAt:(CPInteger)dividerIndex; +- (float)splitView:(CPSplitView)splitView constrainSplitPosition:(float)proposedPosition ofSubviewAt:(CPInteger)dividerIndex; +- (void)splitView:(CPSplitView)splitView resizeSubviewsWithOldSize:(CGSize)oldSize; +- (void)splitViewDidResizeSubviews:(CPNotification)aNotification; +- (void)splitViewWillResizeSubviews:(CPNotification)aNotification; + +@end + +var CPSplitViewDelegate_splitView_canCollapseSubview_ = 1 << 0, + CPSplitViewDelegate_splitView_shouldAdjustSizeOfSubview_ = 1 << 1, + CPSplitViewDelegate_splitView_shouldCollapseSubview_forDoubleClickOnDividerAtIndex_ = 1 << 2, + CPSplitViewDelegate_splitView_additionalEffectiveRectOfDividerAtIndex_ = 1 << 3, + CPSplitViewDelegate_splitView_effectiveRect_forDrawnRect_ofDividerAtIndex_ = 1 << 4, + CPSplitViewDelegate_splitView_constrainMaxCoordinate_ofSubviewAt_ = 1 << 5, + CPSplitViewDelegate_splitView_constrainMinCoordinate_ofSubviewAt_ = 1 << 6, + CPSplitViewDelegate_splitView_constrainSplitPosition_ofSubviewAt_ = 1 << 7, + CPSplitViewDelegate_splitView_resizeSubviewsWithOldSize_ = 1 << 8; + #define SPLIT_VIEW_MAYBE_POST_WILL_RESIZE() \ if ((_suppressResizeNotificationsMask & DidPostWillResizeNotification) === 0) \ { \ @@ -73,29 +100,31 @@ var ShouldSuppressResizeNotifications = 1, @implementation CPSplitView : CPView { - id _delegate; - BOOL _isVertical; - BOOL _isPaneSplitter; + id _delegate; + BOOL _isVertical; + BOOL _isPaneSplitter; - int _currentDivider; - float _initialOffset; - CPDictionary _preCollapsePositions; + int _currentDivider; + float _initialOffset; + CPDictionary _preCollapsePositions; - CPString _originComponent; - CPString _sizeComponent; + CPString _originComponent; + CPString _sizeComponent; - CPArray _DOMDividerElements; - CPString _dividerImagePath; - int _drawingDivider; + CPArray _DOMDividerElements; + CPString _dividerImagePath; + int _drawingDivider; - CPString _autosaveName; - BOOL _shouldAutosave; - CGSize _shouldRestoreFromAutosaveUnlessFrameSize; + CPString _autosaveName; + BOOL _shouldAutosave; + CGSize _shouldRestoreFromAutosaveUnlessFrameSize; - BOOL _needsResizeSubviews; - int _suppressResizeNotificationsMask; + BOOL _needsResizeSubviews; + int _suppressResizeNotificationsMask; - CPArray _buttonBars; + CPArray _buttonBars; + + unsigned _implementedDelegateMethods; } + (CPString)defaultThemeClass @@ -406,11 +435,8 @@ var ShouldSuppressResizeNotifications = 1, buttonBarRect.origin = [self convertPoint:buttonBarRect.origin fromView:buttonBar]; } - if ([_delegate respondsToSelector:@selector(splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:)]) - effectiveRect = [_delegate splitView:self effectiveRect:effectiveRect forDrawnRect:effectiveRect ofDividerAtIndex:anIndex]; - - if ([_delegate respondsToSelector:@selector(splitView:additionalEffectiveRectOfDividerAtIndex:)]) - additionalRect = [_delegate splitView:self additionalEffectiveRectOfDividerAtIndex:anIndex]; + effectiveRect = [self _sendDelegateSplitViewEffectiveRect:effectiveRect forDrawnRect:effectiveRect ofDividerAtIndex:anIndex]; + additionalRect = [self _sendDelegateSplitViewAdditionalEffectiveRectOfDividerAtIndex:anIndex]; return CGRectContainsPoint(effectiveRect, aPoint) || (additionalRect && CGRectContainsPoint(additionalRect, aPoint)) || @@ -472,21 +498,21 @@ var ShouldSuppressResizeNotifications = 1, if ([self cursorAtPoint:point hitDividerAtIndex:i]) { if ([anEvent clickCount] == 2 && - [_delegate respondsToSelector:@selector(splitView:canCollapseSubview:)] && - [_delegate respondsToSelector:@selector(splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:)]) + [self _delegateRespondsToSplitViewCanCollapseSubview] && + [self _delegateRespondsToSplitViewshouldCollapseSubviewForDoubleClickOnDividerAtIndex]) { var minPosition = [self minPossiblePositionOfDividerAtIndex:i], maxPosition = [self maxPossiblePositionOfDividerAtIndex:i], preCollapsePosition = [_preCollapsePositions objectForKey:"" + i] || 0; - if ([_delegate splitView:self canCollapseSubview:_subviews[i]] && [_delegate splitView:self shouldCollapseSubview:_subviews[i] forDoubleClickOnDividerAtIndex:i]) + if ([self _sendDelegateSplitViewCanCollapseSubview:_subviews[i]] && [self _sendDelegateSplitViewShouldCollapseSubview:_subviews[i] forDoubleClickOnDividerAtIndex:i]) { if ([self isSubviewCollapsed:_subviews[i]]) [self setPosition:preCollapsePosition ? preCollapsePosition : (minPosition + (maxPosition - minPosition) / 2) ofDividerAtIndex:i]; else [self setPosition:minPosition ofDividerAtIndex:i]; } - else if ([_delegate splitView:self canCollapseSubview:_subviews[i + 1]] && [_delegate splitView:self shouldCollapseSubview:_subviews[i + 1] forDoubleClickOnDividerAtIndex:i]) + else if ([self _sendDelegateSplitViewCanCollapseSubview:_subviews[i + 1]] && [self _sendDelegateSplitViewShouldCollapseSubview:_subviews[i + 1] forDoubleClickOnDividerAtIndex:i]) { if ([self isSubviewCollapsed:_subviews[i + 1]]) [self setPosition:preCollapsePosition ? preCollapsePosition : (minPosition + (maxPosition - minPosition) / 2) ofDividerAtIndex:i]; @@ -580,12 +606,8 @@ var ShouldSuppressResizeNotifications = 1, if (sizeA === 0) canGrow = YES; // Subview is collapsed. - else if (!canShrink && - [_delegate respondsToSelector:@selector(splitView:canCollapseSubview:)] && - [_delegate splitView:self canCollapseSubview:_subviews[i]]) - { + else if (!canShrink && [self _sendDelegateSplitViewCanCollapseSubview:_subviews[i]]) canShrink = YES; // Subview is collapsible. - } if (sizeB === 0) { @@ -594,9 +616,7 @@ var ShouldSuppressResizeNotifications = 1, // It's safe to assume it can always be uncollapsed. canShrink = YES; } - else if (!canGrow && - [_delegate respondsToSelector:@selector(splitView:canCollapseSubview:)] && - [_delegate splitView:self canCollapseSubview:_subviews[i + 1]]) + else if (!canGrow && [self _sendDelegateSplitViewCanCollapseSubview:_subviews[i + 1]]) { canGrow = YES; // Right/lower subview is collapsible. } @@ -657,53 +677,38 @@ var ShouldSuppressResizeNotifications = 1, - (int)_realPositionForPosition:(float)position ofDividerAtIndex:(int)dividerIndex { // not sure where this should override other positions? - if ([_delegate respondsToSelector:@selector(splitView:constrainSplitPosition:ofSubviewAt:)]) - { - var proposedPosition = [_delegate splitView:self constrainSplitPosition:position ofSubviewAt:dividerIndex]; + var proposedPosition = [self _sendDelegateSplitViewConstrainSplitPosition:position ofSubviewAt:dividerIndex]; - // Silently ignore bad positions which could result from odd delegate responses. We don't want these - // bad results to go into the system and cause havoc with frame sizes as the split view tries to resize - // its subviews. - if (_IS_NUMERIC(proposedPosition)) - position = proposedPosition; - } + // Silently ignore bad positions which could result from odd delegate responses. We don't want these + // bad results to go into the system and cause havoc with frame sizes as the split view tries to resize + // its subviews. + if (_IS_NUMERIC(proposedPosition)) + position = proposedPosition; var proposedMax = [self maxPossiblePositionOfDividerAtIndex:dividerIndex], proposedMin = [self minPossiblePositionOfDividerAtIndex:dividerIndex], actualMax = proposedMax, - actualMin = proposedMin; + actualMin = proposedMin, + proposedActualMin = [self _sendDelegateSplitViewConstrainMinCoordinate:proposedMin ofSubviewAt:dividerIndex], + proposedActualMax = [self _sendDelegateSplitViewConstrainMaxCoordinate:proposedMax ofSubviewAt:dividerIndex]; - if ([_delegate respondsToSelector:@selector(splitView:constrainMinCoordinate:ofSubviewAt:)]) - { - var proposedActualMin = [_delegate splitView:self constrainMinCoordinate:proposedMin ofSubviewAt:dividerIndex]; + if (_IS_NUMERIC(proposedActualMin)) + actualMin = proposedActualMin; - if (_IS_NUMERIC(proposedActualMin)) - actualMin = proposedActualMin; - } - - if ([_delegate respondsToSelector:@selector(splitView:constrainMaxCoordinate:ofSubviewAt:)]) - { - var proposedActualMax = [_delegate splitView:self constrainMaxCoordinate:proposedMax ofSubviewAt:dividerIndex]; - - if (_IS_NUMERIC(proposedActualMax)) - actualMax = proposedActualMax; - } + if (_IS_NUMERIC(proposedActualMax)) + actualMax = proposedActualMax; var viewA = _subviews[dividerIndex], viewB = _subviews[dividerIndex + 1], realPosition = MAX(MIN(position, actualMax), actualMin); // Is this position past the halfway point to collapse? - if (position < proposedMin + (actualMin - proposedMin) / 2) - if ([_delegate respondsToSelector:@selector(splitView:canCollapseSubview:)]) - if ([_delegate splitView:self canCollapseSubview:viewA]) - realPosition = proposedMin; + if ((position < proposedMin + (actualMin - proposedMin) / 2) && [self _sendDelegateSplitViewCanCollapseSubview:viewA]) + realPosition = proposedMin; // We can also collapse to the right. - if (position > proposedMax - (proposedMax - actualMax) / 2) - if ([_delegate respondsToSelector:@selector(splitView:canCollapseSubview:)]) - if ([_delegate splitView:self canCollapseSubview:viewB]) - realPosition = proposedMax; + if ((position > proposedMax - (proposedMax - actualMax) / 2) && [self _sendDelegateSplitViewCanCollapseSubview:viewB]) + realPosition = proposedMax; return realPosition; } @@ -787,9 +792,9 @@ var ShouldSuppressResizeNotifications = 1, - (void)resizeSubviewsWithOldSize:(CGSize)oldSize { - if ([_delegate respondsToSelector:@selector(splitView:resizeSubviewsWithOldSize:)]) + if ([self _delegateRespondsToSplitViewResizeSubviewsWithOldSize]) { - [_delegate splitView:self resizeSubviewsWithOldSize:oldSize]; + [self _sendDelegateSplitViewResizeSubviewsWithOldSize:oldSize]; return; } @@ -815,8 +820,7 @@ var ShouldSuppressResizeNotifications = 1, oldFlexibleSpace = 0, totalSizablePanes = 0, isSizableMap = {}, - viewSizes = [], - delegateRespondsToShouldAdjust = [_delegate respondsToSelector:@selector(splitView:shouldAdjustSizeOfSubview:)]; + viewSizes = []; // What we want to do is to preserve non resizable sizes first, and then to preserve the ratio of size to available // non fixed space for every other subview. E.g. assume fixed space was 20 pixels initially, view 1 was 20 and @@ -832,7 +836,7 @@ var ShouldSuppressResizeNotifications = 1, for (index = 0; index < count; ++index) { var view = _subviews[index], - isSizable = !delegateRespondsToShouldAdjust || [_delegate splitView:self shouldAdjustSizeOfSubview:view], + isSizable = [self _sendDelegateSplitViewShouldAdjustSizeOfSubview:view], size = [view frame].size[_sizeComponent]; isSizableMap[index] = isSizable; @@ -958,25 +962,59 @@ The sum of the views and the sum of the dividers should be equal to the size of @param delegate - The delegate of the splitview. */ -- (void)setDelegate:(id)delegate +- (void)setDelegate:(id )aDelegate { + if (_delegate === aDelegate) + return; + if ([_delegate respondsToSelector:@selector(splitViewDidResizeSubviews:)]) [[CPNotificationCenter defaultCenter] removeObserver:_delegate name:CPSplitViewDidResizeSubviewsNotification object:self]; + if ([_delegate respondsToSelector:@selector(splitViewWillResizeSubviews:)]) [[CPNotificationCenter defaultCenter] removeObserver:_delegate name:CPSplitViewWillResizeSubviewsNotification object:self]; - _delegate = delegate; + _delegate = aDelegate; + _implementedDelegateMethods = 0; if ([_delegate respondsToSelector:@selector(splitViewDidResizeSubviews:)]) [[CPNotificationCenter defaultCenter] addObserver:_delegate selector:@selector(splitViewDidResizeSubviews:) name:CPSplitViewDidResizeSubviewsNotification object:self]; + if ([_delegate respondsToSelector:@selector(splitViewWillResizeSubviews:)]) [[CPNotificationCenter defaultCenter] addObserver:_delegate selector:@selector(splitViewWillResizeSubviews:) name:CPSplitViewWillResizeSubviewsNotification object:self]; + + if ([_delegate respondsToSelector:@selector(splitView:canCollapseSubview:)]) + _implementedDelegateMethods |= CPSplitViewDelegate_splitView_canCollapseSubview_; + + if ([_delegate respondsToSelector:@selector(splitView:shouldAdjustSizeOfSubview:)]) + _implementedDelegateMethods |= CPSplitViewDelegate_splitView_shouldAdjustSizeOfSubview_; + + if ([_delegate respondsToSelector:@selector(splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:)]) + _implementedDelegateMethods |= CPSplitViewDelegate_splitView_shouldCollapseSubview_forDoubleClickOnDividerAtIndex_; + + if ([_delegate respondsToSelector:@selector(splitView:additionalEffectiveRectOfDividerAtIndex:)]) + _implementedDelegateMethods |= CPSplitViewDelegate_splitView_additionalEffectiveRectOfDividerAtIndex_; + + if ([_delegate respondsToSelector:@selector(splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:)]) + _implementedDelegateMethods |= CPSplitViewDelegate_splitView_effectiveRect_forDrawnRect_ofDividerAtIndex_; + + if ([_delegate respondsToSelector:@selector(splitView:constrainMaxCoordinate:ofSubviewAt:)]) + _implementedDelegateMethods |= CPSplitViewDelegate_splitView_constrainMaxCoordinate_ofSubviewAt_; + + if ([_delegate respondsToSelector:@selector(splitView:constrainMinCoordinate:ofSubviewAt:)]) + _implementedDelegateMethods |= CPSplitViewDelegate_splitView_constrainMinCoordinate_ofSubviewAt_; + + if ([_delegate respondsToSelector:@selector(splitView:constrainSplitPosition:ofSubviewAt:)]) + _implementedDelegateMethods |= CPSplitViewDelegate_splitView_constrainSplitPosition_ofSubviewAt_; + + if ([_delegate respondsToSelector:@selector(splitView:resizeSubviewsWithOldSize:)]) + _implementedDelegateMethods |= CPSplitViewDelegate_splitView_resizeSubviewsWithOldSize_; + } /*! @@ -1192,6 +1230,148 @@ The sum of the views and the sum of the dividers should be equal to the size of @end + +@implementation CPSplitView (CPSplitViewDelegate) + +/*! + @ignore + Return YES if the delegate implements splitView:resizeSubviewsWithOldSize: +*/ +- (BOOL)_delegateRespondsToSplitViewResizeSubviewsWithOldSize +{ + return _implementedDelegateMethods & CPSplitViewDelegate_splitView_resizeSubviewsWithOldSize_; +} + +/*! + @ignore + Return YES if the delegate implements splitView:canCollapseSubview: +*/ +- (BOOL)_delegateRespondsToSplitViewCanCollapseSubview +{ + return _implementedDelegateMethods & CPSplitViewDelegate_splitView_canCollapseSubview_; +} + +/*! + @ignore + Return YES if the delegate implements splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex +*/ +- (BOOL)_delegateRespondsToSplitViewshouldCollapseSubviewForDoubleClickOnDividerAtIndex +{ + return _implementedDelegateMethods & CPSplitViewDelegate_splitView_shouldCollapseSubview_forDoubleClickOnDividerAtIndex_; +} + + +/*! + @ignore + Call the delegate splitView:canCollapseSubview: +*/ +- (BOOL)_sendDelegateSplitViewCanCollapseSubview:(CPView)aView +{ + if (!(_implementedDelegateMethods & CPSplitViewDelegate_splitView_canCollapseSubview_)) + return NO; + + return [_delegate splitView:self canCollapseSubview:aView]; +} + +/*! + @ignore + Call the delegate splitView:shouldAdjustSizeOfSubview: +*/ +- (BOOL)_sendDelegateSplitViewShouldAdjustSizeOfSubview:(CPView)aView +{ + if (!(_implementedDelegateMethods & CPSplitViewDelegate_splitView_shouldAdjustSizeOfSubview_)) + return YES; + + return [_delegate splitView:self shouldAdjustSizeOfSubview:aView]; +} + +/*! + @ignore + Call the delegate splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex: +*/ +- (BOOL)_sendDelegateSplitViewShouldCollapseSubview:(CPView)aView forDoubleClickOnDividerAtIndex:(int)anIndex +{ + if (!(_implementedDelegateMethods & CPSplitViewDelegate_splitView_shouldCollapseSubview_forDoubleClickOnDividerAtIndex_)) + return NO; + + return [_delegate splitView:self shouldCollapseSubview:aView forDoubleClickOnDividerAtIndex:anIndex]; +} + +/*! + @ignore + Call the delegate splitView:additionalEffectiveRectOfDividerAtIndex: +*/ +- (CGRect)_sendDelegateSplitViewAdditionalEffectiveRectOfDividerAtIndex:(int)anIndex +{ + if (!(_implementedDelegateMethods & CPSplitViewDelegate_splitView_additionalEffectiveRectOfDividerAtIndex_)) + return nil; + + return [_delegate splitView:self additionalEffectiveRectOfDividerAtIndex:anIndex]; +} + +/*! + @ignore + Call the delegate splitView:effectiveRect:forDrawnRect:ofDividerAtIndex: +*/ +- (CGRect)_sendDelegateSplitViewEffectiveRect:(CGRect)proposedEffectiveRect forDrawnRect:(CGRect)drawnRect ofDividerAtIndex:(CPInteger)dividerIndex +{ + if (!(_implementedDelegateMethods & CPSplitViewDelegate_splitView_effectiveRect_forDrawnRect_ofDividerAtIndex_)) + return proposedEffectiveRect; + + return [_delegate splitView:self effectiveRect:proposedEffectiveRect forDrawnRect:drawnRect ofDividerAtIndex:dividerIndex]; +} + +/*! + @ignore + Call the delegate splitView:constrainMaxCoordinate:ofSubviewAt: +*/ +- (float)_sendDelegateSplitViewConstrainMaxCoordinate:(float)proposedMax ofSubviewAt:(CPInteger)dividerIndex +{ + if (!(_implementedDelegateMethods & CPSplitViewDelegate_splitView_constrainMaxCoordinate_ofSubviewAt_)) + return nil; + + return [_delegate splitView:self constrainMaxCoordinate:proposedMax ofSubviewAt:dividerIndex]; +} + +/*! + @ignore + Call the delegate splitView:constrainMinCoordinate:ofSubviewAt: +*/ +- (float)_sendDelegateSplitViewConstrainMinCoordinate:(float)proposedMin ofSubviewAt:(CPInteger)dividerIndex +{ + if (!(_implementedDelegateMethods & CPSplitViewDelegate_splitView_constrainMinCoordinate_ofSubviewAt_)) + return nil; + + return [_delegate splitView:self constrainMinCoordinate:proposedMin ofSubviewAt:dividerIndex]; +} + +/*! + @ignore + Call the delegate splitView:constrainSplitPosition:ofSubviewAt: +*/ +- (float)_sendDelegateSplitViewConstrainSplitPosition:(float)proposedMax ofSubviewAt:(CPInteger)dividerIndex +{ + if (!(_implementedDelegateMethods & CPSplitViewDelegate_splitView_constrainSplitPosition_ofSubviewAt_)) + return nil; + + return [_delegate splitView:self constrainSplitPosition:proposedMax ofSubviewAt:dividerIndex]; +} + +/*! + @ignore + Call the delegate splitView:resizeSubviewsWithOldSize: +*/ +- (void)_sendDelegateSplitViewResizeSubviewsWithOldSize:(CGSize)oldSize +{ + if (!(_implementedDelegateMethods & CPSplitViewDelegate_splitView_resizeSubviewsWithOldSize_)) + return; + + [_delegate splitView:self resizeSubviewsWithOldSize:oldSize]; +} + +@end + + var CPSplitViewDelegateKey = "CPSplitViewDelegateKey", CPSplitViewIsVerticalKey = "CPSplitViewIsVerticalKey", CPSplitViewIsPaneSplitterKey = "CPSplitViewIsPaneSplitterKey", diff --git a/AppKit/CPStepper.j b/AppKit/CPStepper.j index ba5da1462..eed6f1cdc 100644 --- a/AppKit/CPStepper.j +++ b/AppKit/CPStepper.j @@ -182,11 +182,11 @@ [_buttonDown setFrame:downFrame]; [_buttonUp setValue:[self valueForThemeAttribute:@"bezel-color-up-button" inState:CPThemeStateBordered] forThemeAttribute:@"bezel-color" inState:CPThemeStateBordered]; - [_buttonUp setValue:[self valueForThemeAttribute:@"bezel-color-up-button" inState:CPThemeStateBordered | CPThemeStateDisabled] forThemeAttribute:@"bezel-color" inState:CPThemeStateBordered | CPThemeStateDisabled]; - [_buttonUp setValue:[self valueForThemeAttribute:@"bezel-color-up-button" inState:CPThemeStateBordered | CPThemeStateHighlighted] forThemeAttribute:@"bezel-color" inState:CPThemeStateBordered | CPThemeStateHighlighted]; + [_buttonUp setValue:[self valueForThemeAttribute:@"bezel-color-up-button" inState:[CPThemeStateBordered, CPThemeStateDisabled]] forThemeAttribute:@"bezel-color" inState:[CPThemeStateBordered, CPThemeStateDisabled]]; + [_buttonUp setValue:[self valueForThemeAttribute:@"bezel-color-up-button" inState:[CPThemeStateBordered, CPThemeStateHighlighted]] forThemeAttribute:@"bezel-color" inState:[CPThemeStateBordered, CPThemeStateHighlighted]]; [_buttonDown setValue:[self valueForThemeAttribute:@"bezel-color-down-button" inState:CPThemeStateBordered] forThemeAttribute:@"bezel-color" inState:CPThemeStateBordered]; - [_buttonDown setValue:[self valueForThemeAttribute:@"bezel-color-down-button" inState:CPThemeStateBordered | CPThemeStateDisabled] forThemeAttribute:@"bezel-color" inState:CPThemeStateBordered | CPThemeStateDisabled]; - [_buttonDown setValue:[self valueForThemeAttribute:@"bezel-color-down-button" inState:CPThemeStateBordered | CPThemeStateHighlighted] forThemeAttribute:@"bezel-color" inState:CPThemeStateBordered | CPThemeStateHighlighted]; + [_buttonDown setValue:[self valueForThemeAttribute:@"bezel-color-down-button" inState:[CPThemeStateBordered, CPThemeStateDisabled]] forThemeAttribute:@"bezel-color" inState:[CPThemeStateBordered, CPThemeStateDisabled]]; + [_buttonDown setValue:[self valueForThemeAttribute:@"bezel-color-down-button" inState:[CPThemeStateBordered, CPThemeStateHighlighted]] forThemeAttribute:@"bezel-color" inState:[CPThemeStateBordered, CPThemeStateHighlighted]]; } - (void)_sizeToFit diff --git a/AppKit/CPTabView.j b/AppKit/CPTabView.j index 6aa303cae..0e3ac7030 100644 --- a/AppKit/CPTabView.j +++ b/AppKit/CPTabView.j @@ -391,6 +391,7 @@ var CPTabViewDidSelectTabViewItemSelector = 1 << 1, [_box setFrame:CGRectMake(0, origin, CGRectGetWidth(aFrame), CGRectGetHeight(aFrame) - segmentedHeight / 2)]; + [self _updateItems]; [self _repositionTabs]; } } diff --git a/AppKit/CPTabViewItem.j b/AppKit/CPTabViewItem.j index c2e4347ea..6c073b1d0 100644 --- a/AppKit/CPTabViewItem.j +++ b/AppKit/CPTabViewItem.j @@ -90,6 +90,7 @@ CPPressedTab = 2; - (void)setLabel:(CPString)aLabel { _label = aLabel; + [_tabView setNeedsLayout]; } /*! diff --git a/AppKit/CPTableView.j b/AppKit/CPTableView.j index 33f79aad5..e597f2646 100644 --- a/AppKit/CPTableView.j +++ b/AppKit/CPTableView.j @@ -79,10 +79,11 @@ var CPTableViewDelegate_selectionShouldChangeInTableView_ CPTableViewDelegate_tableView_toolTipForView_rect_tableColumn_row_mouseLocation_ = 1 << 16, CPTableViewDelegate_tableView_typeSelectStringForTableColumn_row_ = 1 << 17, CPTableViewDelegate_tableView_willDisplayView_forTableColumn_row_ = 1 << 18, - CPTableViewDelegate_tableViewSelectionDidChange_ = 1 << 19, - CPTableViewDelegate_tableViewSelectionIsChanging_ = 1 << 20, - CPTableViewDelegate_tableViewMenuForTableColumn_row_ = 1 << 21, - CPTableViewDelegate_tableView_shouldReorderColumn_toColumn_ = 1 << 22; + CPTableViewDelegate_tableView_willRemoveView_forTableColumn_row_ = 1 << 19, + CPTableViewDelegate_tableViewSelectionDidChange_ = 1 << 20, + CPTableViewDelegate_tableViewSelectionIsChanging_ = 1 << 21, + CPTableViewDelegate_tableViewMenuForTableColumn_row_ = 1 << 22, + CPTableViewDelegate_tableView_shouldReorderColumn_toColumn_ = 1 << 23; //CPTableViewDraggingDestinationFeedbackStyles CPTableViewDraggingDestinationFeedbackStyleNone = -1; @@ -115,7 +116,9 @@ CPTableViewLastColumnOnlyAutoresizingStyle = 4; CPTableViewFirstColumnOnlyAutoresizingStyle = 5; #define NUMBER_OF_COLUMNS() (_tableColumns.length) -#define UPDATE_COLUMN_RANGES_IF_NECESSARY() if (_dirtyTableColumnRangeIndex !== CPNotFound) [self _recalculateTableColumnRanges]; +#define UPDATE_COLUMN_RANGES_IF_NECESSARY() \ + if (_dirtyTableColumnRangeIndex !== CPNotFound) \ + [self _recalculateTableColumnRanges]; #define FULL_ROW_HEIGHT() (_rowHeight + _intercellSpacing.height) #define ROW_BOTTOM(__heightInfo) (__heightInfo.y + __heightInfo.height + _intercellSpacing.height) #define HAS_VARIABLE_ROW_HEIGHTS() (_implementedDelegateMethods & CPTableViewDelegate_tableView_heightOfRow_) @@ -159,6 +162,7 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5; - (void)tableView:(CPTableView)aTableView didDragTableColumn:(CPTableColumn)aTableColumn; - (void)tableView:(CPTableView)aTableView mouseDownInHeaderOfTableColumn:(CPTableColumn)aTableColumn; - (void)tableView:(CPTableView)aTableView willDisplayView:(CPView)aView forTableColumn:(CPTableColumn)aTableColumn row:(CPInteger)aRowIndex; +- (void)tableView:(CPTableView)aTableView willRemoveView:(CPView)aView forTableColumn:(CPTableColumn)aTableColumn row:(CPInteger)aRowIndex; - (void)tableViewSelectionDidChange:(CPNotification)aNotification; - (void)tableViewSelectionIsChanging:(CPNotification)aNotification; @@ -1341,6 +1345,38 @@ NOT YET IMPLEMENTED [self _setSelectedRowIndexes:newSelectedIndexes]; } +/*! + @ignore + cleanup a an indexset from the indexes that cannot be selected + according to the table view delegate. +*/ +- (CPIndexSet)_cleanUpSelectionRowIndexes:(CPIndexSet)anIndexSet +{ + if ([self _delegateRespondsToSelectionIndexesForProposedSelection]) + { + return [self _sendDelegateSelectionIndexesForProposedSelection:anIndexSet]; + } + else if ([self _delegateRespondsToShouldSelectRow]) + { + var indexesToRemove = [CPIndexSet new], + currentIndex = [anIndexSet firstIndex]; + + while (currentIndex != CPNotFound) + { + if (![self _sendDelegateShouldSelectRow:currentIndex]) + [indexesToRemove addIndex:currentIndex]; + + currentIndex = [anIndexSet indexGreaterThanIndex:currentIndex]; + } + + [anIndexSet removeIndexes:indexesToRemove]; + + return anIndexSet; + } + else + return anIndexSet; +} + /*! @ignore */ @@ -1565,7 +1601,10 @@ NOT YET IMPLEMENTED if ([[self selectedColumnIndexes] count]) [self selectColumnIndexes:[CPIndexSet indexSetWithIndexesInRange:CPMakeRange(0, [self numberOfColumns])] byExtendingSelection:NO]; else - [self selectRowIndexes:[CPIndexSet indexSetWithIndexesInRange:CPMakeRange(0, [self numberOfRows])] byExtendingSelection:NO]; + { + var range = [self _cleanUpSelectionRowIndexes:[CPIndexSet indexSetWithIndexesInRange:CPMakeRange(0, [self numberOfRows])]]; + [self selectRowIndexes:range byExtendingSelection:NO]; + } } } @@ -2915,6 +2954,9 @@ Your delegate can implement this method to avoid subclassing the tableview to ad if ([_delegate respondsToSelector:@selector(tableView:willDisplayView:forTableColumn:row:)]) _implementedDelegateMethods |= CPTableViewDelegate_tableView_willDisplayView_forTableColumn_row_; + if ([_delegate respondsToSelector:@selector(tableView:willRemoveView:forTableColumn:row:)]) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_willRemoveView_forTableColumn_row_; + if ([_delegate respondsToSelector:@selector(tableView:menuForTableColumn:row:)]) _implementedDelegateMethods |= CPTableViewDelegate_tableViewMenuForTableColumn_row_; @@ -3550,6 +3592,8 @@ Your delegate can implement this method to avoid subclassing the tableview to ad var dataView = [dataViews objectAtIndex:row]; + [self _sendDelegateWillRemoveView:dataView forTableColumn:tableColumn row:row]; + [dataViews replaceObjectAtIndex:row withObject:nil]; [self _enqueueReusableDataView:dataView]; @@ -5052,24 +5096,6 @@ Your delegate can implement this method to avoid subclassing the tableview to ad [self setNeedsDisplay:YES]; } -/*! - @ignore -*/ -- (BOOL)becomeFirstResponder -{ - [self setNeedsDisplay:YES]; - return YES; -} - -/*! - @ignore -*/ -- (BOOL)resignFirstResponder -{ - [self setNeedsDisplay:YES]; - return YES; -} - /*! @ignore */ @@ -5117,12 +5143,19 @@ Your delegate can implement this method to avoid subclassing the tableview to ad { _editingRow = CPNotFound; _editingColumn = CPNotFound; + + // This is needed to unset the themeState firstResponder of the tableView + [self _notifyViewDidResignFirstResponder]; return; } _editingRow = [self rowForView:responder]; _editingColumn = [self columnForView:responder]; + // We want to keep the 'First Responder' theme state for the table view as a whole, even when a subview is being edited. + // This makes sure the theming effects of a focused table remain in effect even as cells are being edited in it. + [self _notifyViewDidBecomeFirstResponder]; + if (_editingRow !== CPNotFound && [responder isKindOfClass:[CPTextField class]] && ![responder isBezeled]) { [responder setBezeled:YES]; @@ -5253,9 +5286,9 @@ Your delegate can implement this method to avoid subclassing the tableview to ad if (i >= [self numberOfRows] || i < 0) return; - if (![self _delegateRespondsToSelectionIndexesForProposedSelection] && [self _delegateRespondsToShouldSelectRow]) + if ([self _delegateRespondsToSelectionIndexesForProposedSelection] || [self _delegateRespondsToShouldSelectRow]) { - var shouldSelect = [self _sendDelegateShouldSelectRow:i]; + var shouldSelect = !![[self _cleanUpSelectionRowIndexes:[CPIndexSet indexSetWithIndex:i]] count]; /* If shouldSelect returns NO it means this row cannot be selected. The proper behaviour is to then try to see if the next/previous @@ -5264,7 +5297,7 @@ Your delegate can implement this method to avoid subclassing the tableview to ad while (!shouldSelect && (i < [self numberOfRows] && i > 0)) { shouldGoUpward ? --i : ++i; //check to see if the row can be selected. If it can't be then see if the next row can be selected. - shouldSelect = [self _sendDelegateShouldSelectRow:i]; + shouldSelect = !![[self _cleanUpSelectionRowIndexes:[CPIndexSet indexSetWithIndex:i]] count]; } if (!shouldSelect) @@ -5626,6 +5659,18 @@ Your delegate can implement this method to avoid subclassing the tableview to ad [_delegate tableView:self willDisplayView:aCell forTableColumn:aTableColumn row:aRowIndex]; } +/*! + @ignore + Call the delegate tableView:willRemoveView:forTableColumn:row: +*/ +- (void)_sendDelegateWillRemoveView:(id)aCell forTableColumn:(CPTableColumn)aTableColumn row:(CPInteger)aRowIndex +{ + if (!(_implementedDelegateMethods & CPTableViewDelegate_tableView_willRemoveView_forTableColumn_row_)) + return; + + [_delegate tableView:self willRemoveView:aCell forTableColumn:aTableColumn row:aRowIndex]; +} + /*! @ignore Return a CPMenu for the given tableColumn and row. By default return the menu of super. @@ -6186,14 +6231,20 @@ var CPTableViewDataSourceKey = @"CPTableViewDataSourceKey", [self setThemeState:CPThemeStateTableDataView]; } -- (BOOL)setThemeState:(CPThemeState)aState +- (BOOL)setThemeState:(ThemeState)aState { + if (aState.isa && [aState isKindOfClass:CPArray]) + aState = CPThemeState.apply(null, aState); + [super setThemeState:aState]; [self recursivelyPerformSelector:@selector(setThemeState:) withObject:aState startingFrom:self]; } -- (BOOL)unsetThemeState:(CPThemeState)aState +- (BOOL)unsetThemeState:(ThemeState)aState { + if (aState.isa && [aState isKindOfClass:CPArray]) + aState = CPThemeState.apply(null, aState); + [super unsetThemeState:aState]; [self recursivelyPerformSelector:@selector(unsetThemeState:) withObject:aState startingFrom:self]; } diff --git a/AppKit/CPTextField.j b/AppKit/CPTextField.j index ba023101b..899c460b9 100644 --- a/AppKit/CPTextField.j +++ b/AppKit/CPTextField.j @@ -32,6 +32,14 @@ @global CPApp @global CPStringPboardType + +@protocol CPTextFieldDelegate + +@end + + +var CPTextFieldDelegate_control_didFailToFormatString_errorDescription_ = 1 << 1; + CPTextFieldSquareBezel = 0; /*! A textfield bezel with squared corners. */ CPTextFieldRoundedBezel = 1; /*! A textfield bezel with rounded corners. */ @@ -112,26 +120,27 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); */ @implementation CPTextField : CPControl { - BOOL _isEditing; + BOOL _isEditing; - BOOL _isEditable; - BOOL _isSelectable; - BOOL _isSecure; - BOOL _willBecomeFirstResponderByClick; + BOOL _isEditable; + BOOL _isSelectable; + BOOL _isSecure; + BOOL _willBecomeFirstResponderByClick; - BOOL _drawsBackground; + BOOL _drawsBackground; - CPColor _textFieldBackgroundColor; + CPColor _textFieldBackgroundColor; - CPString _placeholderString; - CPString _stringValue; + CPString _placeholderString; + CPString _stringValue; - id _delegate; + id _delegate; + unsigned _implementedDelegateMethods; // NS-style Display Properties - CPTextFieldBezelStyle _bezelStyle; - BOOL _isBordered; - CPControlSize _controlSize; + CPTextFieldBezelStyle _bezelStyle; + BOOL _isBordered; + CPControlSize _controlSize; } + (Class)_binderClassForBinding:(CPString)aBinding @@ -537,7 +546,7 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); /*! @ignore */ - (BOOL)becomeFirstResponder { - if (![self isEnabled]) + if (![self isEnabled] || ![super becomeFirstResponder]) return NO; // As long as we are the first responder we need to monitor the key status of our window. @@ -581,57 +590,14 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); #if PLATFORM(DOM) + [self _setCSSStyleForInputElement]; + var element = [self _inputElement], font = [self currentValueForThemeAttribute:@"font"], - lineHeight = [font defaultLineHeightForFont]; + contentRect = [self contentRectForBounds:[self bounds]], + left = CGRectGetMinX(contentRect); element.value = _stringValue; - element.style.color = [[self currentValueForThemeAttribute:@"text-color"] cssString]; - - if (CPFeatureIsCompatible(CPInputSetFontOutsideOfDOM)) - element.style.font = [font cssString]; - - element.style.zIndex = 1000; - - switch ([self alignment]) - { - case CPCenterTextAlignment: - element.style.textAlign = "center"; - break; - - case CPRightTextAlignment: - element.style.textAlign = "right"; - break; - - default: - element.style.textAlign = "left"; - } - - var contentRect = [self contentRectForBounds:[self bounds]], - verticalAlign = [self currentValueForThemeAttribute:"vertical-alignment"]; - - switch (verticalAlign) - { - case CPTopVerticalTextAlignment: - var topPoint = CGRectGetMinY(contentRect) + "px"; - break; - - case CPCenterVerticalTextAlignment: - var topPoint = (CGRectGetMidY(contentRect) - (lineHeight / 2)) + "px"; - break; - - case CPBottomVerticalTextAlignment: - var topPoint = (CGRectGetMaxY(contentRect) - lineHeight) + "px"; - break; - - default: - var topPoint = CGRectGetMinY(contentRect) + "px"; - break; - } - - element.style.top = topPoint; - - var left = CGRectGetMinX(contentRect); // If the browser has a built in left padding, compensate for it. We need the input text to be exactly on top of the original text. if (CPFeatureIsCompatible(CPInput1PxLeftPadding)) @@ -639,8 +605,6 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); element.style.left = left + "px"; element.style.width = CGRectGetWidth(contentRect) + "px"; - element.style.height = ROUND(lineHeight) + "px"; - element.style.lineHeight = ROUND(lineHeight) + "px"; element.style.verticalAlign = "top"; element.style.cursor = "auto"; @@ -687,6 +651,71 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); return YES; } +/*! + Set the css style for the input element of the textField + @ignore +*/ +- (void)_setCSSStyleForInputElement +{ + +#if PLATFORM(DOM) + var element = [self _inputElement], + font = [self currentValueForThemeAttribute:@"font"], + lineHeight = [font defaultLineHeightForFont], + contentRect = [self contentRectForBounds:[self bounds]], + verticalAlign = [self currentValueForThemeAttribute:"vertical-alignment"]; + + if ([self hasThemeState:CPTextFieldStatePlaceholder]) + element.style.color = [[self valueForThemeAttribute:@"text-color" inState:CPTextFieldStatePlaceholder] cssString]; + else + element.style.color = [[self valueForThemeAttribute:@"text-color" inState:CPThemeStateEditing] cssString]; + + if (CPFeatureIsCompatible(CPInputSetFontOutsideOfDOM)) + element.style.font = [font cssString]; + + element.style.zIndex = 1000; + + switch ([self alignment]) + { + case CPCenterTextAlignment: + element.style.textAlign = "center"; + break; + + case CPRightTextAlignment: + element.style.textAlign = "right"; + break; + + default: + element.style.textAlign = "left"; + } + + switch (verticalAlign) + { + case CPTopVerticalTextAlignment: + var topPoint = CGRectGetMinY(contentRect) + "px"; + break; + + case CPCenterVerticalTextAlignment: + var topPoint = (CGRectGetMidY(contentRect) - (lineHeight / 2)) + "px"; + break; + + case CPBottomVerticalTextAlignment: + var topPoint = (CGRectGetMaxY(contentRect) - lineHeight) + "px"; + break; + + default: + var topPoint = CGRectGetMinY(contentRect) + "px"; + break; + } + + element.style.top = topPoint; + element.style.height = ROUND(lineHeight) + "px"; + element.style.lineHeight = ROUND(lineHeight) + "px"; + +#endif + +} + /*! @ignore */ - (BOOL)resignFirstResponder { @@ -818,7 +847,7 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); { var acceptInvalidValue = NO; - if ([_delegate respondsToSelector:@selector(control:didFailToFormatString:errorDescription:)]) + if (_implementedDelegateMethods & CPTextFieldDelegate_control_didFailToFormatString_errorDescription_) acceptInvalidValue = [_delegate control:self didFailToFormatString:aValue errorDescription:error]; if (acceptInvalidValue === NO) @@ -1148,7 +1177,7 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); #if PLATFORM(DOM) - if (CPTextFieldInputOwner === self || [[self window] firstResponder] === self) + if ((CPTextFieldInputOwner === self || [[self window] firstResponder] === self) && [[self window] isKeyWindow]) [self _inputElement].value = _stringValue; #endif @@ -1158,7 +1187,7 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); - (void)_updatePlaceholderState { - if ((!_stringValue || _stringValue.length === 0) && ![self hasThemeState:CPThemeStateEditing]) + if (!_stringValue || _stringValue.length === 0) [self setThemeState:CPTextFieldStatePlaceholder]; else [self unsetThemeState:CPTextFieldStatePlaceholder]; @@ -1585,7 +1614,7 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); #pragma mark Setting the Delegate -- (void)setDelegate:(id)aDelegate +- (void)setDelegate:(id )aDelegate { var defaultCenter = [CPNotificationCenter defaultCenter]; @@ -1600,6 +1629,10 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); } _delegate = aDelegate; + _implementedDelegateMethods = 0; + + if ([_delegate respondsToSelector:@selector(control:didFailToFormatString:errorDescription:)]) + _implementedDelegateMethods |= CPTextFieldDelegate_control_didFailToFormatString_errorDescription_ if ([_delegate respondsToSelector:@selector(controlTextDidBeginEditing:)]) [defaultCenter @@ -1705,7 +1738,7 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); if (contentView) { - [contentView setHidden:[self hasThemeState:CPThemeStateEditing]]; + [contentView setHidden:(_stringValue && _stringValue.length > 0) && [self hasThemeState:CPThemeStateEditing]]; var string = ""; @@ -1729,6 +1762,9 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); [contentView setTextShadowColor:[self currentValueForThemeAttribute:@"text-shadow-color"]]; [contentView setTextShadowOffset:[self currentValueForThemeAttribute:@"text-shadow-offset"]]; } + + if (_isEditing) + [self _setCSSStyleForInputElement]; } - (void)takeValueFromKeyPath:(CPString)aKeyPath ofObjects:(CPArray)objects @@ -1749,6 +1785,20 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); #pragma mark Overrides +/*! + Sets the text color of the receiver. + + @param aColor - A CPColor object. +*/ +- (void)setTextColor:(CPColor)aColor +{ + // We don't want to change the text-color of the placeHolder of the textField + var placeholderColor = [self valueForThemeAttribute:@"text-color" inState:CPTextFieldStatePlaceholder]; + + [super setTextColor:aColor]; + [self setValue:placeholderColor forThemeAttribute:@"text-color" inState:CPTextFieldStatePlaceholder]; +} + - (void)viewDidHide { [super viewDidHide]; diff --git a/AppKit/CPTheme.j b/AppKit/CPTheme.j index dac337fd3..36a1b7c91 100644 --- a/AppKit/CPTheme.j +++ b/AppKit/CPTheme.j @@ -240,7 +240,7 @@ var CPThemesByName = { }, @param aClass The themed class in which to look for the attribute @return A value or nil */ -- (id)valueForAttributeWithName:(CPString)aName inState:(CPThemeState)aState forClass:(id)aClass +- (id)valueForAttributeWithName:(CPString)aName inState:(ThemeState)aState forClass:(id)aClass { var attribute = [self attributeWithName:aName forClass:aClass]; @@ -314,6 +314,164 @@ var CPThemeNameKey = @"CPThemeNameKey", @end +/*! + * ThemeStates are immutable objects representing a particular ThemeState. Applications should never be creating + * ThemeStates directly but should instead use the CPThemeState function. + */ +function ThemeState(stateNames) +{ + var stateNameKeys = []; + this._stateNames = {}; + + for (key in stateNames) + { + if (!stateNames.hasOwnProperty(key)) + continue; + if (key !== 'normal') + { + this._stateNames[key] = true; + stateNameKeys.push(key); + } + } + + if (stateNameKeys.length === 0) + { + stateNameKeys.push('normal'); + this._stateNames['normal'] = true; + } + + stateNameKeys.sort(); + this._stateNameString = stateNameKeys[0]; + + var stateNameLength = stateNameKeys.length; + for (var stateIndex = 1; stateIndex < stateNameLength; stateIndex++) + this._stateNameString = this._stateNameString + "+" + stateNameKeys[stateIndex]; + this._stateNameCount = stateNameLength; +} + +ThemeState.prototype.toString = function() +{ + return this._stateNameString; +} + +ThemeState.prototype.hasThemeState = function(aState) +{ + if (!aState || !aState._stateNames) + return false; + + // We can do this in O(n) because both states have their stateNames already sorted. + for (var stateName in aState._stateNames) + { + if (!aState._stateNames.hasOwnProperty(stateName)) + continue; + + if (!this._stateNames[stateName]) + return false; + } + return true; +} + +ThemeState.prototype.isSubsetOf = function(aState) +{ + if (aState._stateNameCount < this._stateNameCount) + return false; + + for (var key in this._stateNames) + { + if (!this._stateNames.hasOwnProperty(key)) + continue; + + if (!aState._stateNames[key]) + return false; + } + return true; +} + +ThemeState.prototype.without = function(aState) +{ + if (!aState || aState === [CPNull null]) + return this; + + var newStates = {}; + for (var stateName in this._stateNames) + { + if (!this._stateNames.hasOwnProperty(stateName)) + continue; + + if (!aState._stateNames[stateName]) + newStates[stateName] = true; + } + + return ThemeState._cacheThemeState(new ThemeState(newStates)); +} + +ThemeState.prototype.and = function(aState) +{ + return CPThemeState(this, aState); +} + +var CPThemeStates = {}; + +ThemeState._cacheThemeState = function(aState) +{ + // We do this caching so themeState equality works. Basically, doing CPThemeState('foo+bar') === CPThemeState('bar', 'foo') will return true. + var themeState = CPThemeStates[String(aState)]; + if (themeState === undefined) + { + themeState = aState; + CPThemeStates[String(themeState)] = themeState; + } + return themeState; +} + +/*! + * This method can be called in multiple ways: + * CPThemeState('state1') - creates a new CPThemeState that corresponds to the string 'state1' + * CPThemeState('state1', 'state2') - creates a new composite CPThemeState made up of both 'state1' or 'state2' + * CPThemeState('state1+state2') - The same as CPThemeState('state1', 'state2') + * CPThemeState(state1, state2) - creates a new composite CPThemeState made up of state1 and state2 + * where state1 and state2 are not strings but are themselves CPThemeStates. + */ +function CPThemeState() +{ + if (arguments.length < 1) + throw "CPThemeState() must be called with at least one string argument"; + + var themeState; + if (arguments.length === 1 && typeof arguments[0] === 'string') + { + themeState = CPThemeStates[arguments[0]]; + if (themeState !== undefined) + return themeState; + } + + var stateNames = {}; + for (var argIndex = 0; argIndex < arguments.length; argIndex++) + { + if (arguments[argIndex] === [CPNull null] || !arguments[argIndex]) + continue; + + if (typeof arguments[argIndex] === 'object') + { + for (var stateName in arguments[argIndex]._stateNames) + { + if (!arguments[argIndex]._stateNames.hasOwnProperty(stateName)) + continue; + stateNames[stateName] = true; + } + } + else + { + var allNames = arguments[argIndex].split('+'); + for (var nameIndex = 0; nameIndex < allNames.length; nameIndex++) + stateNames[allNames[nameIndex]] = true; + } + } + + themeState = ThemeState._cacheThemeState(new ThemeState(stateNames)); + return themeState; +} + @implementation _CPThemeKeyedUnarchiver : CPKeyedUnarchiver { CPBundle _bundle; @@ -341,71 +499,7 @@ var CPThemeNameKey = @"CPThemeNameKey", @end -var CPThemeStates = {}, - CPThemeStateNames = {}, - CPThemeStateCount = 0; - -function CPThemeState(aStateName) -{ - var state = CPThemeStates[aStateName]; - - if (state === undefined) - { - if (aStateName.indexOf('+') === -1) - state = 1 << CPThemeStateCount++; - else - { - var state = 0, - states = aStateName.split('+'), - count = states.length; - - while (count--) - { - var stateName = states[count], - individualState = CPThemeStates[stateName]; - - if (individualState === undefined) - { - individualState = 1 << CPThemeStateCount++; - CPThemeStates[stateName] = individualState; - CPThemeStateNames[individualState] = stateName; - } - - state |= individualState; - } - } - - CPThemeStates[aStateName] = state; - CPThemeStateNames[state] = aStateName; - } - - return state; -} - -function CPThemeStateName(aState) -{ - var name = CPThemeStateNames[aState]; - - if (name !== undefined) - return name; - - if (!(aState & (aState - 1))) - return ""; - - var state = 1, - name = ""; - - for (; state < aState; state <<= 1) - if (aState & state) - name += (name.length === 0 ? '' : '+') + CPThemeStateNames[state]; - - CPThemeStateNames[aState] = name; - - return name; -} - -CPThemeStateNames[0] = "normal"; -CPThemeStateNormal = CPThemeStates["normal"] = 0; +CPThemeStateNormal = CPThemeState("normal"); CPThemeStateDisabled = CPThemeState("disabled"); CPThemeStateHovered = CPThemeState("hovered"); CPThemeStateHighlighted = CPThemeState("highlighted"); @@ -421,6 +515,7 @@ CPThemeStateVertical = CPThemeState("vertical"); CPThemeStateDefault = CPThemeState("default"); CPThemeStateCircular = CPThemeState("circular"); CPThemeStateAutocompleting = CPThemeState("autocompleting"); +CPThemeStateFirstResponder = CPThemeState("firstResponder"); CPThemeStateMainWindow = CPThemeState("mainWindow"); CPThemeStateKeyWindow = CPThemeState("keyWindow"); @@ -464,11 +559,6 @@ CPThemeStateKeyWindow = CPThemeState("keyWindow"); return [_values count] > 0; } -- (BOOL)isTrivial -{ - return ([_values count] === 1) && (Number([_values allKeys][0]) === CPThemeStateNormal); -} - - (void)setValue:(id)aValue { _cache = {}; @@ -479,7 +569,7 @@ CPThemeStateKeyWindow = CPThemeState("keyWindow"); _values = @{ String(CPThemeStateNormal): aValue }; } -- (void)setValue:(id)aValue forState:(CPThemeState)aState +- (void)setValue:(id)aValue forState:(ThemeState)aState { _cache = { }; @@ -494,44 +584,34 @@ CPThemeStateKeyWindow = CPThemeState("keyWindow"); return [self valueForState:CPThemeStateNormal]; } -- (id)valueForState:(CPThemeState)aState +- (id)valueForState:(ThemeState)aState { - var value = _cache[aState]; + var stateName = String(aState), + value = _cache[stateName]; // This can be nil. if (value !== undefined) return value; - value = [_values objectForKey:String(aState)]; + value = [_values objectForKey:stateName]; - // If we don't have a value, and we have a non-normal state... - if ((value === undefined || value === nil) && aState !== CPThemeStateNormal) + if (value === undefined || value === nil) { - // If this is a composite state (not a power of 2), find the closest partial subset match. - if (aState & (aState - 1)) + // If this is a composite state, find the closest partial subset match. + if (aState._stateNameCount > 1) { - var highestOneCount = 0, - states = [_values allKeys], - count = states.length; + var states = [_values allKeys], + count = states.length, + largestThemeState = 0; while (count--) { - // states[count] is a string! - var state = Number(states[count]); + var stateObject = CPThemeState(states[count]); - // A & B = A iff A < B - if ((state & aState) === state) + if (stateObject.isSubsetOf(aState) && stateObject._stateNameCount > largestThemeState) { - var oneCount = cachedNumberOfOnes[state]; - - if (oneCount === undefined) - oneCount = numberOfOnes(state); - - if (oneCount > highestOneCount) - { - highestOneCount = oneCount; - value = [_values objectForKey:String(state)]; - } + value = [_values objectForKey:states[count]]; + largestThemeState = stateObject._stateNameCount; } } } @@ -554,7 +634,7 @@ CPThemeStateKeyWindow = CPThemeState("keyWindow"); value = nil; } - _cache[aState] = value; + _cache[stateName] = value; return value; } @@ -596,10 +676,10 @@ CPThemeStateKeyWindow = CPThemeState("keyWindow"); if ([aCoder containsValueForKey:@"value"]) { - var state = CPThemeStateNormal; + var state = String(CPThemeStateNormal); if ([aCoder containsValueForKey:@"state"]) - state = CPThemeState([aCoder decodeObjectForKey:@"state"]); + state = [aCoder decodeObjectForKey:@"state"]; [_values setObject:[aCoder decodeObjectForKey:"value"] forKey:state]; } @@ -613,7 +693,7 @@ CPThemeStateKeyWindow = CPThemeState("keyWindow"); { var key = keys[count]; - [_values setObject:[encodedValues objectForKey:key] forKey:CPThemeState(key)]; + [_values setObject:[encodedValues objectForKey:key] forKey:key]; } } } @@ -633,8 +713,8 @@ CPThemeStateKeyWindow = CPThemeState("keyWindow"); { var onlyKey = keys[0]; - if (Number(onlyKey) !== CPThemeStateNormal) - [aCoder encodeObject:CPThemeStateName(Number(onlyKey)) forKey:@"state"]; + if (onlyKey !== String(CPThemeStateNormal)) + [aCoder encodeObject:onlyKey forKey:@"state"]; [aCoder encodeObject:[_values objectForKey:onlyKey] forKey:@"value"]; } @@ -646,7 +726,7 @@ CPThemeStateKeyWindow = CPThemeState("keyWindow"); { var key = keys[count]; - [encodedValues setObject:[_values objectForKey:key] forKey:CPThemeStateName(Number(key))]; + [encodedValues setObject:[_values objectForKey:key] forKey:key]; } [aCoder encodeObject:encodedValues forKey:@"values"]; @@ -655,35 +735,6 @@ CPThemeStateKeyWindow = CPThemeState("keyWindow"); @end -var cachedNumberOfOnes = [ 0 /*000000*/, 1 /*000001*/, 1 /*000010*/, 2 /*000011*/, 1 /*000100*/, 2 /*000101*/, 2 /*000110*/, - 3 /*000111*/, 1 /*001000*/, 2 /*001001*/, 2 /*001010*/, 3 /*001011*/, 2 /*001100*/, 3 /*001101*/, - 3 /*001110*/, 4 /*001111*/, 1 /*010000*/, 2 /*010001*/, 2 /*010010*/, 3 /*010011*/, 2 /*010100*/, - 3 /*010101*/, 3 /*010110*/, 4 /*010111*/, 2 /*011000*/, 3 /*011001*/, 3 /*011010*/, 4 /*011011*/, - 3 /*011100*/, 4 /*011101*/, 4 /*011110*/, 5 /*011111*/, 1 /*100000*/, 2 /*100001*/, 2 /*100010*/, - 3 /*100011*/, 2 /*100100*/, 3 /*100101*/, 3 /*100110*/, 4 /*100111*/, 2 /*101000*/, 3 /*101001*/, - 3 /*101010*/, 4 /*101011*/, 3 /*101100*/, 4 /*101101*/, 4 /*101110*/, 5 /*101111*/, 2 /*110000*/, - 3 /*110001*/, 3 /*110010*/, 4 /*110011*/, 3 /*110100*/, 4 /*110101*/, 4 /*110110*/, 5 /*110111*/, - 3 /*111000*/, 4 /*111001*/, 4 /*111010*/, 5 /*111011*/, 4 /*111100*/, 5 /*111101*/, 5 /*111110*/, - 6 /*111111*/ ]; - -var numberOfOnes = function(aNumber) -{ - var count = 0, - slot = aNumber; - - while (aNumber) - { - ++count; - aNumber &= (aNumber - 1); - } - - cachedNumberOfOnes[slot] = count; - - return count; -}; - -numberOfOnes.displayName = "numberOfOnes"; - function CPThemeAttributeEncode(aCoder, aThemeAttribute) { var values = aThemeAttribute._values, @@ -694,7 +745,7 @@ function CPThemeAttributeEncode(aCoder, aThemeAttribute) { var state = [values allKeys][0]; - if (Number(state) === 0) + if (state === String(CPThemeStateNormal)) { [aCoder encodeObject:[values objectForKey:state] forKey:key]; @@ -723,7 +774,7 @@ function CPThemeAttributeDecode(aCoder, anAttributeName, aDefaultValue, aTheme, { var attribute = [aCoder decodeObjectForKey:key]; - if (!attribute.isa || ![attribute isKindOfClass:[_CPThemeAttribute class]]) + if (!attribute || !attribute.isa || ![attribute isKindOfClass:[_CPThemeAttribute class]]) { var themeAttribute = [[_CPThemeAttribute alloc] initWithName:anAttributeName defaultValue:aDefaultValue]; diff --git a/AppKit/CPTokenField.j b/AppKit/CPTokenField.j index 05fa8e13d..9e9ba617e 100644 --- a/AppKit/CPTokenField.j +++ b/AppKit/CPTokenField.j @@ -37,6 +37,28 @@ @global CPTextFieldDidFocusNotification @global CPTextFieldDidBlurNotification + +// TODO: should be conform to protocol CPTextFieldDelegate +@protocol CPTokenFieldDelegate + +@optional +- (BOOL)tokenField:(CPTokenField)tokenField hasMenuForRepresentedObject:(id)representedObject; +- (CPArray)tokenField:(CPTokenField)tokenField completionsForSubstring:(CPString)substring indexOfToken:(CPInteger)tokenIndex indexOfSelectedItem:(CPInteger)selectedIndex; +- (CPArray)tokenField:(CPTokenField)tokenField shouldAddObjects:(CPArray)tokens atIndex:(CPUInteger)index; +- (CPMenu)tokenField:(CPTokenField)tokenField menuForRepresentedObject:(id)representedObject; +- (CPString )tokenField:(CPTokenField)tokenField displayStringForRepresentedObject:(id)representedObject; +- (id)tokenField:(CPTokenField)tokenField representedObjectForEditingString:(CPString)editingString; + +@end + +var CPTokenFieldDelegate_tokenField_hasMenuForRepresentedObject_ = 1 << 1, + CPTokenFieldDelegate_tokenField_completionsForSubstring_indexOfToken_indexOfSelectedItem_ = 1 << 2, + CPTokenFieldDelegate_tokenField_shouldAddObjects_atIndex_ = 1 << 3, + CPTokenFieldDelegate_tokenField_menuForRepresentedObject_ = 1 << 4, + CPTokenFieldDelegate_tokenField_displayStringForRepresentedObject_ = 1 << 5, + CPTokenFieldDelegate_tokenField_representedObjectForEditingString_ = 1 << 6; + + #if PLATFORM(DOM) var CPTokenFieldDOMInputElement = nil, @@ -64,23 +86,26 @@ CPTokenFieldDeleteButtonType = 1; @implementation CPTokenField : CPTextField { - CPScrollView _tokenScrollView; - int _shouldScrollTo; + CPScrollView _tokenScrollView; + int _shouldScrollTo; - CPRange _selectedRange; + CPRange _selectedRange; - _CPAutocompleteMenu _autocompleteMenu; - CGRect _inputFrame; + _CPAutocompleteMenu _autocompleteMenu; + CGRect _inputFrame; - CPTimeInterval _completionDelay; + CPTimeInterval _completionDelay; - CPCharacterSet _tokenizingCharacterSet @accessors(property=tokenizingCharacterSet); + CPCharacterSet _tokenizingCharacterSet @accessors(property=tokenizingCharacterSet); - CPEvent _mouseDownEvent; + CPEvent _mouseDownEvent; - BOOL _shouldNotifyTarget; + BOOL _shouldNotifyTarget; - int _buttonType @accessors(property=buttonType); + int _buttonType @accessors(property=buttonType); + + id _tokenFieldDelegate; + unsigned _implementedDelegateMethods; } + (CPCharacterSet)defaultTokenizingCharacterSet @@ -140,6 +165,41 @@ CPTokenFieldDeleteButtonType = 1; [self addSubview:_tokenScrollView]; } +#pragma mark - +#pragma mark Delegate methods + +/*! + Set the delegate of the receiver +*/ +- (void)setDelegate:(id )aDelegate +{ + if (_tokenFieldDelegate === aDelegate) + return; + + _tokenFieldDelegate = aDelegate; + _implementedDelegateMethods = 0; + + if ([_tokenFieldDelegate respondsToSelector:@selector(tokenField:hasMenuForRepresentedObject:)]) + _implementedDelegateMethods |= CPTokenFieldDelegate_tokenField_hasMenuForRepresentedObject_; + + if ([_tokenFieldDelegate respondsToSelector:@selector(tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:)]) + _implementedDelegateMethods |= CPTokenFieldDelegate_tokenField_completionsForSubstring_indexOfToken_indexOfSelectedItem_; + + if ([_tokenFieldDelegate respondsToSelector:@selector(tokenField:shouldAddObjects:atIndex:)]) + _implementedDelegateMethods |= CPTokenFieldDelegate_tokenField_shouldAddObjects_atIndex_; + + if ([_tokenFieldDelegate respondsToSelector:@selector(tokenField:menuForRepresentedObject:)]) + _implementedDelegateMethods |= CPTokenFieldDelegate_tokenField_menuForRepresentedObject_; + + if ([_tokenFieldDelegate respondsToSelector:@selector(tokenField:displayStringForRepresentedObject:)]) + _implementedDelegateMethods |= CPTokenFieldDelegate_tokenField_displayStringForRepresentedObject_; + + if ([_tokenFieldDelegate respondsToSelector:@selector(tokenField:representedObjectForEditingString:)]) + _implementedDelegateMethods |= CPTokenFieldDelegate_tokenField_representedObjectForEditingString_; + + [super setDelegate:_tokenFieldDelegate]; +} + - (_CPAutocompleteMenu)_autocompleteMenu { if (!_autocompleteMenu) @@ -321,6 +381,9 @@ CPTokenFieldDeleteButtonType = 1; - (BOOL)becomeFirstResponder { + if (![super becomeFirstResponder]) + return NO; + #if PLATFORM(DOM) if (CPTokenFieldInputOwner && [CPTokenFieldInputOwner window] !== [self window]) [[CPTokenFieldInputOwner window] makeFirstResponder:nil]; @@ -1185,12 +1248,10 @@ CPTokenFieldDeleteButtonType = 1; */ - (CPArray)_completionsForSubstring:(CPString)substring indexOfToken:(int)tokenIndex indexOfSelectedItem:(int)selectedIndex { - if ([[self delegate] respondsToSelector:@selector(tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:)]) - { - return [[self delegate] tokenField:self completionsForSubstring:substring indexOfToken:tokenIndex indexOfSelectedItem:selectedIndex]; - } + if (!(_implementedDelegateMethods & CPTokenFieldDelegate_tokenField_completionsForSubstring_indexOfToken_indexOfSelectedItem_)) + return []; - return []; + return [_tokenFieldDelegate tokenField:self completionsForSubstring:substring indexOfToken:tokenIndex indexOfSelectedItem:selectedIndex]; } /*! @@ -1199,6 +1260,7 @@ CPTokenFieldDeleteButtonType = 1; - (CGPoint)_completionOrigin:(_CPAutocompleteMenu)anAutocompleteMenu { var relativeFrame = _inputFrame ? [[_tokenScrollView documentView] convertRect:_inputFrame toView:self ] : [self bounds]; + return CGPointMake(CGRectGetMinX(relativeFrame), CGRectGetMaxY(relativeFrame)); } @@ -1212,13 +1274,12 @@ CPTokenFieldDeleteButtonType = 1; */ - (CPString)_displayStringForRepresentedObject:(id)representedObject { - if ([[self delegate] respondsToSelector:@selector(tokenField:displayStringForRepresentedObject:)]) + if (_implementedDelegateMethods & CPTokenFieldDelegate_tokenField_displayStringForRepresentedObject_) { - var stringForRepresentedObject = [[self delegate] tokenField:self displayStringForRepresentedObject:representedObject]; + var stringForRepresentedObject = [_tokenFieldDelegate tokenField:self displayStringForRepresentedObject:representedObject]; + if (stringForRepresentedObject !== nil) - { return stringForRepresentedObject; - } } return representedObject; @@ -1235,10 +1296,10 @@ CPTokenFieldDeleteButtonType = 1; */ - (CPArray)_shouldAddObjects:(CPArray)tokens atIndex:(int)index { - var delegate = [self delegate]; - if ([delegate respondsToSelector:@selector(tokenField:shouldAddObjects:atIndex:)]) + if (_implementedDelegateMethods & CPTokenFieldDelegate_tokenField_shouldAddObjects_atIndex_) { - var approvedObjects = [delegate tokenField:self shouldAddObjects:tokens atIndex:index]; + var approvedObjects = [_tokenFieldDelegate tokenField:self shouldAddObjects:tokens atIndex:index]; + if (approvedObjects !== nil) return approvedObjects; } @@ -1257,10 +1318,10 @@ CPTokenFieldDeleteButtonType = 1; */ - (id)_representedObjectForEditingString:(CPString)aString { - var delegate = [self delegate]; - if ([delegate respondsToSelector:@selector(tokenField:representedObjectForEditingString:)]) + if (_implementedDelegateMethods & CPTokenFieldDelegate_tokenField_representedObjectForEditingString_) { - var token = [delegate tokenField:self representedObjectForEditingString:aString]; + var token = [_tokenFieldDelegate tokenField:self representedObjectForEditingString:aString]; + if (token !== nil && token !== undefined) return token; // If nil was returned, assume the string is the represented object. The alternative would have been @@ -1272,23 +1333,22 @@ CPTokenFieldDeleteButtonType = 1; - (BOOL)_hasMenuForRepresentedObject:(id)aRepresentedObject { - var delegate = [self delegate]; - if ([delegate respondsToSelector:@selector(tokenField:hasMenuForRepresentedObject:)] && - [delegate respondsToSelector:@selector(tokenField:menuForRepresentedObject:)]) - return [delegate tokenField:self hasMenuForRepresentedObject:aRepresentedObject]; + if ((_implementedDelegateMethods & CPTokenFieldDelegate_tokenField_hasMenuForRepresentedObject_) && + (_implementedDelegateMethods & CPTokenFieldDelegate_tokenField_menuForRepresentedObject_)) + return [_tokenFieldDelegate tokenField:self hasMenuForRepresentedObject:aRepresentedObject]; return NO; } - (CPMenu)_menuForRepresentedObject:(id)aRepresentedObject { - var delegate = [self delegate]; - if ([delegate respondsToSelector:@selector(tokenField:hasMenuForRepresentedObject:)] && - [delegate respondsToSelector:@selector(tokenField:menuForRepresentedObject:)]) + if ((_implementedDelegateMethods & CPTokenFieldDelegate_tokenField_hasMenuForRepresentedObject_) && + (_implementedDelegateMethods & CPTokenFieldDelegate_tokenField_menuForRepresentedObject_)) { - var hasMenu = [delegate tokenField:self hasMenuForRepresentedObject:aRepresentedObject]; + var hasMenu = [_tokenFieldDelegate tokenField:self hasMenuForRepresentedObject:aRepresentedObject]; + if (hasMenu) - return [delegate tokenField:self menuForRepresentedObject:aRepresentedObject] || nil; + return [_tokenFieldDelegate tokenField:self menuForRepresentedObject:aRepresentedObject] || nil; } return nil; @@ -1389,12 +1449,15 @@ CPTokenFieldDeleteButtonType = 1; [self setNeedsLayout]; } -- (BOOL)setThemeState:(CPThemeState)aState +- (BOOL)setThemeState:(ThemeState)aState { + if (aState.isa && [aState isKindOfClass:CPArray]) + aState = CPThemeState.apply(null, aState); + var r = [super setThemeState:aState]; // Share hover state with the disclosure and delete buttons. - if (aState & CPThemeStateHovered) + if (aState.hasThemeState(CPThemeStateHovered)) { [_disclosureButton setThemeState:CPThemeStateHovered]; [_deleteButton setThemeState:CPThemeStateHovered]; @@ -1403,12 +1466,15 @@ CPTokenFieldDeleteButtonType = 1; return r; } -- (BOOL)unsetThemeState:(CPThemeState)aState +- (BOOL)unsetThemeState:(ThemeState)aState { + if (aState.isa && [aState isKindOfClass:CPArray]) + aState = CPThemeState.apply(null, aState); + var r = [super unsetThemeState:aState]; // Share hover state with the disclosure and delete button. - if (aState & CPThemeStateHovered) + if (aState.hasThemeState(CPThemeStateHovered)) { [_disclosureButton unsetThemeState:CPThemeStateHovered]; [_deleteButton unsetThemeState:CPThemeStateHovered]; diff --git a/AppKit/CPToolbar.j b/AppKit/CPToolbar.j index 1506df9e8..3cc711518 100644 --- a/AppKit/CPToolbar.j +++ b/AppKit/CPToolbar.j @@ -843,7 +843,6 @@ var _CPToolbarItemInfoMake = function(anIndex, aView, aLabel, aMinWidth) var index = 0, count = _visibleItems.length, x = contentInset.left, - contentInset = [self valueForThemeAttribute:@"content-inset"], y = contentInset.top; for (; index < count; ++index) diff --git a/AppKit/CPView.j b/AppKit/CPView.j index 7eb044c58..5e1357ccf 100644 --- a/AppKit/CPView.j +++ b/AppKit/CPView.j @@ -343,6 +343,9 @@ var CPViewFlags = { }, _scaleSize = CGSizeMake(1.0, 1.0); _isScaled = NO; + _theme = [CPTheme defaultTheme]; + _themeState = CPThemeStateNormal; + #if PLATFORM(DOM) _DOMElement = DOMElementPrototype.cloneNode(false); AppKitTagDOMElement(self, _DOMElement); @@ -354,9 +357,6 @@ var CPViewFlags = { }, _DOMImageSizes = []; #endif - _theme = [CPTheme defaultTheme]; - _themeState = CPThemeStateNormal; - [self _setupToolTipHandlers]; [self _setupViewFlags]; @@ -577,6 +577,21 @@ var CPViewFlags = { }, if (![aSubview isHidden] && [self isHiddenOrHasHiddenAncestor]) [aSubview _notifyViewDidHide]; + // This method might be called before we are fully unarchived, in which case the theme state isn't set up yet + // and none of the below matters anyhow. + if (_themeState) + { + if ([self hasThemeState:CPThemeStateFirstResponder]) + [aSubview _notifyViewDidBecomeFirstResponder]; + else + [aSubview _notifyViewDidResignFirstResponder]; + + if ([self hasThemeState:CPThemeStateKeyWindow]) + [aSubview _notifyWindowDidBecomeKey]; + else + [aSubview _notifyWindowDidResignKey]; + } + [aSubview viewDidMoveToSuperview]; [self didAddSubview:aSubview]; @@ -615,6 +630,9 @@ var CPViewFlags = { }, if (!_isHidden && [_superview isHiddenOrHasHiddenAncestor]) [self _notifyViewDidUnhide]; + [self _notifyWindowDidResignKey]; + [self _notifyViewDidResignFirstResponder]; + _superview = nil; [self _setWindow:nil]; @@ -736,6 +754,11 @@ var CPViewFlags = { }, while (count--) [_subviews[count] _setWindow:aWindow]; + if ([_window isKeyWindow]) + [self setThemeState:CPThemeStateKeyWindow]; + else + [self unsetThemeState:CPThemeStateKeyWindow]; + [self viewDidMoveToWindow]; [[self window] _dirtyKeyViewLoop]; @@ -2887,23 +2910,23 @@ setBoundsOrigin: return _themeState; } -- (BOOL)hasThemeState:(CPThemeState)aState +- (BOOL)hasThemeState:(ThemeState)aState { - // Because CPThemeStateNormal is defined as 0 we need to check for it explicitly here - if (aState === CPThemeStateNormal && _themeState === CPThemeStateNormal) - return YES; + if (aState.isa && [aState isKindOfClass:CPArray]) + return _themeState.hasThemeState.apply(_themeState, aState); - return !!(_themeState & ((typeof aState === "string") ? CPThemeState(aState) : aState)); + return _themeState.hasThemeState(aState); } -- (BOOL)setThemeState:(CPThemeState)aState +- (BOOL)setThemeState:(ThemeState)aState { - var newState = (typeof aState === "string") ? CPThemeState(aState) : aState; + if (aState && aState.isa && [aState isKindOfClass:CPArray]) + aState = CPThemeState.apply(null, aState); - if (_themeState & newState) + if (_themeState.hasThemeState(aState)) return NO; - _themeState |= newState; + _themeState = CPThemeState(_themeState, aState); [self setNeedsLayout]; [self setNeedsDisplay:YES]; @@ -2911,21 +2934,75 @@ setBoundsOrigin: return YES; } -- (BOOL)unsetThemeState:(CPThemeState)aState +- (BOOL)unsetThemeState:(ThemeState)aState { - var newState = ((typeof aState === "string") ? CPThemeState(aState) : aState); + if (aState && aState.isa && [aState isKindOfClass:CPArray]) + aState = CPThemeState.apply(null, aState); - if (!(_themeState & newState)) + var oldThemeState = _themeState + _themeState = _themeState.without(aState); + + if (oldThemeState === _themeState) return NO; - _themeState &= ~newState; - [self setNeedsLayout]; [self setNeedsDisplay:YES]; return YES; } +- (BOOL)becomeFirstResponder +{ + var r = [super becomeFirstResponder]; + if (r) + [self _notifyViewDidBecomeFirstResponder]; + return r; +} + +- (void)_notifyViewDidBecomeFirstResponder +{ + [self setThemeState:CPThemeStateFirstResponder]; + + var count = [_subviews count]; + while (count--) + [_subviews[count] _notifyViewDidBecomeFirstResponder]; +} + +- (BOOL)resignFirstResponder +{ + var r = [super resignFirstResponder]; + if (r) + [self _notifyViewDidResignFirstResponder]; + return r; +} + +- (void)_notifyViewDidResignFirstResponder +{ + [self unsetThemeState:CPThemeStateFirstResponder]; + + var count = [_subviews count]; + while (count--) + [_subviews[count] _notifyViewDidResignFirstResponder]; +} + +- (void)_notifyWindowDidBecomeKey +{ + [self setThemeState:CPThemeStateKeyWindow]; + + var count = [_subviews count]; + while (count--) + [_subviews[count] _notifyWindowDidBecomeKey]; +} + +- (void)_notifyWindowDidResignKey +{ + [self unsetThemeState:CPThemeStateKeyWindow]; + + var count = [_subviews count]; + while (count--) + [_subviews[count] _notifyWindowDidResignKey]; +} + #pragma mark Theme Attributes + (CPString)defaultThemeClass @@ -3077,8 +3154,11 @@ setBoundsOrigin: return dictionary; } -- (void)setValue:(id)aValue forThemeAttribute:(CPString)aName inState:(CPThemeState)aState +- (void)setValue:(id)aValue forThemeAttribute:(CPString)aName inState:(ThemeState)aState { + if (aState.isa && [aState isKindOfClass:CPArray]) + aState = CPThemeState.apply(null, aState); + if (!_themeAttributes || !_themeAttributes[aName]) [CPException raise:CPInvalidArgumentException reason:[self className] + " does not contain theme attribute '" + aName + "'"]; @@ -3109,8 +3189,11 @@ setBoundsOrigin: [self setNeedsLayout]; } -- (id)valueForThemeAttribute:(CPString)aName inState:(CPThemeState)aState +- (id)valueForThemeAttribute:(CPString)aName inState:(ThemeState)aState { + if (aState.isa && [aState isKindOfClass:CPArray]) + aState = CPThemeState.apply(null, aState); + if (!_themeAttributes || !_themeAttributes[aName]) [CPException raise:CPInvalidArgumentException reason:[self className] + " does not contain theme attribute '" + aName + "'"]; @@ -3361,7 +3444,7 @@ var CPViewAutoresizingMaskKey = @"CPViewAutoresizingMask", _theme = [CPTheme defaultTheme]; _themeClass = [aCoder decodeObjectForKey:CPViewThemeClassKey]; - _themeState = CPThemeState([aCoder decodeIntForKey:CPViewThemeStateKey]); + _themeState = CPThemeState([aCoder decodeObjectForKey:CPViewThemeStateKey]); _themeAttributes = {}; var theClass = [self class], @@ -3452,7 +3535,7 @@ var CPViewAutoresizingMaskKey = @"CPViewAutoresizingMask", [aCoder encodeConditionalObject:previousKeyView forKey:CPViewPreviousKeyViewKey]; [aCoder encodeObject:[self themeClass] forKey:CPViewThemeClassKey]; - [aCoder encodeInt:CPThemeStateName(_themeState) forKey:CPViewThemeStateKey]; + [aCoder encodeObject:String(_themeState) forKey:CPViewThemeStateKey]; for (var attributeName in _themeAttributes) if (_themeAttributes.hasOwnProperty(attributeName)) diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index a86734ba5..0e074ccb1 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -53,6 +53,27 @@ @global CPApp +@protocol CPWindowDelegate + +@optional +- (BOOL)windowShouldClose:(CPWindow)aWindow; +- (CPUndoManager)windowWillReturnUndoManager:(CPWindow)window; +- (void)windowDidBecomeKey:(CPNotification)aNotification; +- (void)windowDidBecomeMain:(CPNotification)aNotification; +- (void)windowDidEndSheet:(CPNotification)aNotification; +- (void)windowDidMove:(CPNotification)aNotification; +- (void)windowDidResignKey:(CPNotification)aNotification; +- (void)windowDidResignMain:(CPNotification)aNotification; +- (void)windowDidResize:(CPNotification)aNotification; +- (void)windowWillBeginSheet:(CPNotification)aNotification; +- (void)windowWillClose:(CPWindow)aWindow; + +@end + +var CPWindowDelegate_windowShouldClose_ = 1 << 1 + CPWindowDelegate_windowWillReturnUndoManager_ = 1 << 2, + CPWindowDelegate_windowWillClose_ = 1 << 3; + var CPWindowSaveImage = nil, CPWindowResizeTime = 0.2, @@ -171,7 +192,8 @@ var CPWindowActionMessageKeys = [ CPResponder _firstResponder; CPResponder _initialFirstResponder; BOOL _hasBecomeKeyWindow; - id _delegate; + id _delegate; + unsigned _implementedDelegateMethods; CPString _title; @@ -205,8 +227,6 @@ var CPWindowActionMessageKeys = [ unsigned _autoresizingMask; - BOOL _delegateRespondsToWindowWillReturnUndoManagerSelector; - BOOL _isFullPlatformWindow; _CPWindowFullPlatformWindowSession _fullPlatformWindowSession; @@ -1110,7 +1130,7 @@ CPTexturedBackgroundWindowMask */ - (void)setContentView:(CPView)aView { - if (_contentView) + if (_contentView && _contentView !== aView) [_contentView removeFromSuperview]; var bounds = CGRectMake(0.0, 0.0, CGRectGetWidth(_frame), CGRectGetHeight(_frame)); @@ -1343,8 +1363,11 @@ CPTexturedBackgroundWindowMask Sets the delegate for the window. Passing \c nil will just remove the window's current delegate. @param aDelegate an object to respond to the various delegate methods of CPWindow */ -- (void)setDelegate:(id)aDelegate +- (void)setDelegate:(id )aDelegate { + if (_delegate === aDelegate) + return; + var defaultCenter = [CPNotificationCenter defaultCenter]; [defaultCenter removeObserver:_delegate name:CPWindowDidResignKeyNotification object:self]; @@ -1357,7 +1380,16 @@ CPTexturedBackgroundWindowMask [defaultCenter removeObserver:_delegate name:CPWindowDidEndSheetNotification object:self]; _delegate = aDelegate; - _delegateRespondsToWindowWillReturnUndoManagerSelector = [_delegate respondsToSelector:@selector(windowWillReturnUndoManager:)]; + _implementedDelegateMethods = 0; + + if ([_delegate respondsToSelector:@selector(windowShouldClose:)]) + _implementedDelegateMethods |= CPWindowDelegate_windowShouldClose_; + + if ([_delegate respondsToSelector:@selector(windowWillReturnUndoManager:)]) + _implementedDelegateMethods |= CPWindowDelegate_windowWillReturnUndoManager_; + + if ([_delegate respondsToSelector:@selector(windowWillClose:)]) + _implementedDelegateMethods |= CPWindowDelegate_windowWillClose_; if ([_delegate respondsToSelector:@selector(windowDidResignKey:)]) [defaultCenter @@ -1759,10 +1791,14 @@ CPTexturedBackgroundWindowMask // even that we just moved it to a new first responder. [[[anEvent window] platformWindow] _propagateCurrentDOMEvent:NO] #endif - } + } return didTabBack; } + else if ([anEvent charactersIgnoringModifiers] == CPEscapeFunctionKey && [self _processKeyboardUIKey:anEvent]) + { + return; + } [[self firstResponder] keyDown:anEvent]; @@ -1932,6 +1968,7 @@ CPTexturedBackgroundWindowMask _hasBecomeKeyWindow = YES; [_windowView noteKeyWindowStateChanged]; + [_contentView _notifyWindowDidBecomeKey]; [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowDidBecomeKeyNotification @@ -2000,6 +2037,7 @@ CPTexturedBackgroundWindowMask CPApp._keyWindow = nil; [_windowView noteKeyWindowStateChanged]; + [_contentView _notifyWindowDidResignKey]; [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowDidResignKeyNotification @@ -2243,9 +2281,9 @@ CPTexturedBackgroundWindowMask // The Cocoa docs say that if both the delegate and the window implement // windowShouldClose:, only the delegate receives the message. - if ([_delegate respondsToSelector:@selector(windowShouldClose:)]) + if ([self _delegateRespondsToWindowShouldClose]) { - if (![_delegate windowShouldClose:self]) + if (![self _sendDelegateWindowShouldClose]) return; } else if ([self respondsToSelector:@selector(windowShouldClose:)]) @@ -2301,8 +2339,7 @@ CPTexturedBackgroundWindowMask */ - (void)close { - if ([_delegate respondsToSelector:@selector(windowWillClose:)]) - [_delegate windowWillClose:self]; + [self _sendDelegateWindowWillClose]; [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowWillCloseNotification object:self]; @@ -2984,20 +3021,9 @@ CPTexturedBackgroundWindowMask if ([selectors count] <= 0) return NO; - if (character !== CPEscapeFunctionKey) - { - var selector = [selectors objectAtIndex:0]; - return [[self firstResponder] tryToPerform:selector with:self]; - } - else - { - /* - Cocoa sends complete: for the escape key (instead of the default cancelOperation:). This is also the only action that is not sent directly to the first responder, but through doCommandBySelector. The difference is that doCommandBySelector: will also send the action to the window and application delegates. - */ - [[self firstResponder] doCommandBySelector:@selector(complete:)]; - } + var selector = [selectors objectAtIndex:0]; - return NO; + return [[self firstResponder] tryToPerform:selector with:self]; } - (void)_dirtyKeyViewLoop @@ -3294,6 +3320,66 @@ var keyViewComparator = function(lhs, rhs, context) return CPOrderedDescending; }; + +@implementation CPWindow (CPWindowDelegate) + +/*! + @ignore + Check if the delegate implements windowWillReturnUndoManager: +*/ +- (BOOL)_delegateRespondsToWindowWillUndoManager +{ + return _implementedDelegateMethods & CPWindowDelegate_windowWillReturnUndoManager_; +} + +/*! + @ignore + Check if the delegate implements windowShouldClose +*/ +- (BOOL)_delegateRespondsToWindowShouldClose +{ + return _implementedDelegateMethods & CPWindowDelegate_windowShouldClose_ +} + +/*! + @ignore + Call delegate windowShouldClose: +*/ +- (BOOL)_sendDelegateWindowShouldClose +{ + if (!(_implementedDelegateMethods & CPWindowDelegate_windowShouldClose_)) + return YES; + + return [_delegate windowShouldClose:self]; +} + +/*! + @ignore + Call delegate windowWillReturnUndoManager: +*/ +- (BOOL)_sendDelegateWindowWillReturnUndoManager +{ + if (!(_implementedDelegateMethods & CPWindowDelegate_windowWillReturnUndoManager_)) + return nil; + + return [_delegate windowWillReturnUndoManager:self]; +} + +/*! + @ignore + Call delegate windowWillClose: +*/ +- (void)_sendDelegateWindowWillClose +{ + if (!(_implementedDelegateMethods & CPWindowDelegate_windowWillClose_)) + return; + + [_delegate windowWillClose:self]; +} + +@end + + @implementation CPWindow (BridgeSupport) /* @@ -3431,8 +3517,8 @@ var keyViewComparator = function(lhs, rhs, context) return documentUndoManager; // If not, check to see if the delegate has one. - if (_delegateRespondsToWindowWillReturnUndoManagerSelector) - return [_delegate windowWillReturnUndoManager:self]; + if ([self _delegateRespondsToWindowWillUndoManager]) + return [self _sendDelegateWindowWillReturnUndoManager]; // If not, create one. if (!_undoManager) diff --git a/AppKit/Cib/CPCibControlConnector.j b/AppKit/Cib/CPCibControlConnector.j index ddb64d8c3..70b36e273 100644 --- a/AppKit/Cib/CPCibControlConnector.j +++ b/AppKit/Cib/CPCibControlConnector.j @@ -51,7 +51,7 @@ // Not being able to set the action is a fatal error. if ([_source respondsToSelector:@selector(setAction:)]) - objj_msgSend(_source, @selector(setAction:), selector); + [_source setAction:selector]; else [CPException @@ -60,7 +60,7 @@ // Not being able to set the target is a fatal error. if ([_source respondsToSelector:@selector(setTarget:)]) - objj_msgSend(_source, @selector(setTarget:), _destination); + [_source setTarget:_destination]; else [CPException diff --git a/AppKit/CoreAnimation/CALayer.j b/AppKit/CoreAnimation/CALayer.j index dbe2c3dee..433a36253 100644 --- a/AppKit/CoreAnimation/CALayer.j +++ b/AppKit/CoreAnimation/CALayer.j @@ -498,6 +498,7 @@ var CALayerRegisteredRunLoopUpdates = nil; { _context = CGBitmapGraphicsContextCreate(); +#if PLATFORM(DOM) _DOMContentsElement = _context.DOMElement; _DOMContentsElement.style.zIndex = -100; @@ -515,6 +516,7 @@ var CALayerRegisteredRunLoopUpdates = nil; _DOMContentsElement.style.height = ROUND(CGRectGetHeight(_backingStoreFrame)) + "px"; _DOMElement.appendChild(_DOMContentsElement); +#endif } if (USE_BUFFER) @@ -1036,6 +1038,7 @@ function _CALayerUpdateSublayerTransformForSublayers(aLayer) function _CALayerUpdateDOM(aLayer, aMask) { +#if PLATFORM(DOM) var DOMElementStyle = aLayer._DOMElement.style; if (aMask & CALayerZPositionUpdateMask) @@ -1066,6 +1069,7 @@ function _CALayerUpdateDOM(aLayer, aMask) DOMContentsElement.style.height = height + "px"; } } +#endif } function _CALayerRecalculateGeometry(aLayer, aGeometryChange) diff --git a/AppKit/Platform/DOM/CPPlatformPasteboard.j b/AppKit/Platform/DOM/CPPlatformPasteboard.j index 014d00d06..e749a1fae 100644 --- a/AppKit/Platform/DOM/CPPlatformPasteboard.j +++ b/AppKit/Platform/DOM/CPPlatformPasteboard.j @@ -71,7 +71,6 @@ var hasEditableTarget = function(aDOMEvent) BOOL hasBugWhichPreventsNonEditablePaste; BOOL hasBugWhichPreventsNonEditablePasteRedirect; - CPEvent _lastKeyDownEvent; BOOL currentEventIsNativePasteEvent; BOOL currentEventIsNativeCopyOrCutEvent; BOOL currentEventShouldBeSuppressed; @@ -208,8 +207,6 @@ var hasEditableTarget = function(aDOMEvent) if (!(modifierFlags & (CPControlKeyMask | CPCommandKeyMask))) return; - _lastKeyDownEvent = anEvent; - var aDOMEvent = anEvent._DOMEvent, characters = [anEvent characters], mayRequireDOMPasteboardElement = [self _mayRequireDOMPasteboardElementHack:aDOMEvent flags:modifierFlags]; @@ -302,7 +299,7 @@ var hasEditableTarget = function(aDOMEvent) timestamp = [CPEvent currentTimestamp], // fake event, might as well use current timestamp windowNumber = [[CPApp keyWindow] windowNumber], modifierFlags = CPPlatformActionKeyMask, - location = [_lastKeyDownEvent locationInWindow], + location = [[CPApp currentEvent] locationInWindow], anEvent = [CPEvent keyEventWithType:CPKeyDown location:location modifierFlags:modifierFlags timestamp:timestamp windowNumber:windowNumber context:nil characters:characters charactersIgnoringModifiers:characters isARepeat:NO keyCode:keyCode]; diff --git a/AppKit/Platform/DOM/CPPlatformWindow+DOM.j b/AppKit/Platform/DOM/CPPlatformWindow+DOM.j index e542da819..60b0297ec 100644 --- a/AppKit/Platform/DOM/CPPlatformWindow+DOM.j +++ b/AppKit/Platform/DOM/CPPlatformWindow+DOM.j @@ -201,6 +201,7 @@ var ModifierKeyCodes = [ supportsNativeDragAndDrop = [CPPlatform supportsDragAndDrop]; var resizeTimer = nil; +var PreventScroll = true; #if PLATFORM(DOM) @@ -325,8 +326,8 @@ var resizeTimer = nil; _DOMScrollingElement.style.position = "absolute"; _DOMScrollingElement.style.visibility = "hidden"; _DOMScrollingElement.style.zIndex = @"999"; - _DOMScrollingElement.style.height = "60px"; - _DOMScrollingElement.style.width = "60px"; + _DOMScrollingElement.style.height = "500px"; + _DOMScrollingElement.style.width = "500px"; _DOMScrollingElement.style.overflow = "scroll"; //_DOMScrollingElement.style.backgroundColor = "rgba(0,0,0,1.0)"; // debug help. _DOMScrollingElement.style.opacity = "0"; @@ -335,8 +336,8 @@ var resizeTimer = nil; _DOMBodyElement.appendChild(_DOMScrollingElement); var _DOMInnerScrollingElement = theDocument.createElement("div"); - _DOMInnerScrollingElement.style.width = "400px"; - _DOMInnerScrollingElement.style.height = "400px"; + _DOMInnerScrollingElement.style.width = "5000px"; + _DOMInnerScrollingElement.style.height = "5000px"; _DOMScrollingElement.appendChild(_DOMInnerScrollingElement); // Set an initial scroll offset @@ -842,6 +843,12 @@ var resizeTimer = nil; - (void)scrollEvent:(DOMEvent)aDOMEvent { + if (PreventScroll) + { + PreventScroll = false; + aDOMEvent.preventDefault(); + } + if (_hideDOMScrollingElementTimeout) { clearTimeout(_hideDOMScrollingElementTimeout); @@ -852,7 +859,6 @@ var resizeTimer = nil; aDOMEvent = window.event; var location = nil; - if (CPFeatureIsCompatible(CPJavaScriptMouseWheelValues_8_15)) { var x = aDOMEvent._offsetX || 0.0, @@ -950,6 +956,7 @@ var resizeTimer = nil; // can receive events. _hideDOMScrollingElementTimeout = setTimeout(function() { + PreventScroll = true; _DOMScrollingElement.style.visibility = "hidden"; }, 300); } @@ -1654,16 +1661,15 @@ var CPDOMEventGetClickCount = function(aComparisonEvent, aTimestamp, aLocation) // Global. _CPDOMEventStop = function(aDOMEvent, aPlatformWindow) { - // IE Model - aDOMEvent.cancelBubble = true; - aDOMEvent.returnValue = false; - - // W3C Model - if (aDOMEvent.preventDefault) + if (aDOMEvent.preventDefault) // W3C Model aDOMEvent.preventDefault(); + else // IE Model + aDOMEvent.returnValue = false; - if (aDOMEvent.stopPropagation) + if (aDOMEvent.stopPropagation) // W3C Model aDOMEvent.stopPropagation(); + else // IE Model + aDOMEvent.cancelBubble = true; }; function CPWindowObjectList() diff --git a/AppKit/Themes/Aristo/ThemeDescriptors.j b/AppKit/Themes/Aristo/ThemeDescriptors.j index c37ed8181..a88a1de84 100755 --- a/AppKit/Themes/Aristo/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo/ThemeDescriptors.j @@ -502,29 +502,29 @@ var themedButtonValues = nil, [@"font", [CPFont boldSystemFontOfSize:CPFontCurrentSystemSize], CPThemeStateBordered], [@"text-color", [CPColor colorWithCalibratedWhite:79.0 / 255.0 alpha:1.0]], [@"text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:1.0], CPThemeStateBordered], - [@"text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:1.0], CPThemeStateBordered | CPThemeStateDisabled], + [@"text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:1.0], [CPThemeStateBordered, CPThemeStateDisabled]], [@"text-shadow-offset", CGSizeMake(0.0, 1.0), CPThemeStateBordered], [@"line-break-mode", CPLineBreakByTruncatingTail], [@"bezel-color", bezelColor, CPThemeStateBordered], - [@"bezel-color", highlightedBezelColor, CPThemeStateBordered | CPThemeStateHighlighted], - [@"bezel-color", disabledBezelColor, CPThemeStateBordered | CPThemeStateDisabled], - [@"bezel-color", defaultBezelColor, CPThemeStateBordered | CPThemeStateDefault], - [@"bezel-color", defaultHighlightedBezelColor, CPThemeStateBordered | CPThemeStateHighlighted | CPThemeStateDefault], - [@"bezel-color", defaultDisabledBezelColor, CPThemeStateBordered | CPThemeStateDefault | CPThemeStateDisabled], + [@"bezel-color", highlightedBezelColor, [CPThemeStateBordered, CPThemeStateHighlighted]], + [@"bezel-color", disabledBezelColor, [CPThemeStateBordered, CPThemeStateDisabled]], + [@"bezel-color", defaultBezelColor, [CPThemeStateBordered, CPThemeStateDefault]], + [@"bezel-color", defaultHighlightedBezelColor, [CPThemeStateBordered, CPThemeStateHighlighted, CPThemeStateDefault]], + [@"bezel-color", defaultDisabledBezelColor, [CPThemeStateBordered, CPThemeStateDefault, CPThemeStateDisabled]], [@"content-inset", CGInsetMake(0.0, 7.0, 0.0, 7.0), CPThemeStateBordered], - [@"bezel-color", roundedBezelColor, CPThemeStateBordered | CPButtonStateBezelStyleRounded], - [@"bezel-color", roundedHighlightedBezelColor, CPThemeStateBordered | CPThemeStateHighlighted | CPButtonStateBezelStyleRounded], - [@"bezel-color", roundedDisabledBezelColor, CPThemeStateBordered | CPThemeStateDisabled | CPButtonStateBezelStyleRounded], - [@"bezel-color", defaultRoundedBezelColor, CPThemeStateBordered | CPThemeStateDefault | CPButtonStateBezelStyleRounded], - [@"bezel-color", defaultRoundedHighlightedBezelColor, CPThemeStateBordered | CPThemeStateHighlighted | CPThemeStateDefault | CPButtonStateBezelStyleRounded], - [@"bezel-color", defaultRoundedDisabledBezelColor, CPThemeStateBordered | CPThemeStateDefault | CPThemeStateDisabled | CPButtonStateBezelStyleRounded], - [@"content-inset", CGInsetMake(0.0, 10.0, 0.0, 10.0), CPThemeStateBordered | CPButtonStateBezelStyleRounded], + [@"bezel-color", roundedBezelColor, [CPThemeStateBordered, CPButtonStateBezelStyleRounded]], + [@"bezel-color", roundedHighlightedBezelColor, [CPThemeStateBordered, CPThemeStateHighlighted, CPButtonStateBezelStyleRounded]], + [@"bezel-color", roundedDisabledBezelColor, [CPThemeStateBordered, CPThemeStateDisabled, CPButtonStateBezelStyleRounded]], + [@"bezel-color", defaultRoundedBezelColor, [CPThemeStateBordered, CPThemeStateDefault, CPButtonStateBezelStyleRounded]], + [@"bezel-color", defaultRoundedHighlightedBezelColor, [CPThemeStateBordered, CPThemeStateHighlighted, CPThemeStateDefault, CPButtonStateBezelStyleRounded]], + [@"bezel-color", defaultRoundedDisabledBezelColor, [CPThemeStateBordered, CPThemeStateDefault, CPThemeStateDisabled, CPButtonStateBezelStyleRounded]], + [@"content-inset", CGInsetMake(0.0, 10.0, 0.0, 10.0), [CPThemeStateBordered, CPButtonStateBezelStyleRounded]], [@"text-color", [CPColor colorWithCalibratedWhite:0.6 alpha:1.0], CPThemeStateDisabled], [@"text-color", defaultTextColor, CPThemeStateDefault], - [@"text-color", defaultDisabledTextColor, CPThemeStateDefault | CPThemeStateDisabled], + [@"text-color", defaultDisabledTextColor, [CPThemeStateDefault, CPThemeStateDisabled]], [@"min-size", CGSizeMake(0.0, 24.0)], [@"max-size", CGSizeMake(-1.0, 24.0)], @@ -588,15 +588,15 @@ var themedButtonValues = nil, themeValues = [ [@"bezel-color", color, CPThemeStateBordered], - [@"bezel-color", disabledColor, CPThemeStateBordered | CPThemeStateDisabled], + [@"bezel-color", disabledColor, [CPThemeStateBordered, CPThemeStateDisabled]], [@"content-inset", CGInsetMake(0, 21.0 + 5.0, 0, 5.0), CPThemeStateBordered], [@"font", [CPFont boldSystemFontOfSize:CPFontCurrentSystemSize]], [@"text-color", [CPColor colorWithCalibratedWhite:79.0 / 255.0 alpha:1.0]], [@"text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:1.0]], - [@"text-color", [CPColor colorWithCalibratedWhite:0.6 alpha:1.0], CPThemeStateBordered | CPThemeStateDisabled], - [@"text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:0.6], CPThemeStateBordered | CPThemeStateDisabled], + [@"text-color", [CPColor colorWithCalibratedWhite:0.6 alpha:1.0], [CPThemeStateBordered, CPThemeStateDisabled]], + [@"text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:0.6], [CPThemeStateBordered, CPThemeStateDisabled]], [@"min-size", CGSizeMake(32.0, 24.0)], [@"max-size", CGSizeMake(-1.0, 24.0)] @@ -631,16 +631,16 @@ var themedButtonValues = nil, themeValues = [ - [@"bezel-color", color, CPPopUpButtonStatePullsDown | CPThemeStateBordered], - [@"bezel-color", disabledColor, CPPopUpButtonStatePullsDown | CPThemeStateBordered | CPThemeStateDisabled], + [@"bezel-color", color, [CPPopUpButtonStatePullsDown, CPThemeStateBordered]], + [@"bezel-color", disabledColor, [CPPopUpButtonStatePullsDown, CPThemeStateBordered, CPThemeStateDisabled]], [@"content-inset", CGInsetMake(0, 27.0 + 5.0, 0, 5.0), CPThemeStateBordered], [@"font", [CPFont boldSystemFontOfSize:CPFontCurrentSystemSize]], [@"text-color", [CPColor colorWithCalibratedWhite:79.0 / 255.0 alpha:1.0]], [@"text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:1.0]], - [@"text-color", [CPColor colorWithCalibratedWhite:0.6 alpha:1.0], CPThemeStateBordered | CPThemeStateDisabled], - [@"text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:0.6], CPThemeStateBordered | CPThemeStateDisabled], + [@"text-color", [CPColor colorWithCalibratedWhite:0.6 alpha:1.0], [CPThemeStateBordered, CPThemeStateDisabled]], + [@"text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:0.6], [CPThemeStateBordered, CPThemeStateDisabled]], [@"min-size", CGSizeMake(32.0, 24.0)], [@"max-size", CGSizeMake(-1.0, 24.0)] @@ -761,35 +761,35 @@ var themedButtonValues = nil, [@"track-inset", CGInsetMake(2.0, 0.0, 2.0, 0.0), CPThemeStateVertical], [@"track-border-overlay", 12.0, CPThemeStateVertical], [@"knob-slot-color", [CPNull null], CPThemeStateVertical], - [@"knob-slot-color", trackColor, CPThemeStateVertical | CPThemeStateSelected], - [@"knob-slot-color", trackColorLight, CPThemeStateVertical | CPThemeStateSelected | CPThemeStateScrollerKnobLight], - [@"knob-slot-color", trackColorDark, CPThemeStateVertical | CPThemeStateSelected | CPThemeStateScrollerKnobDark], + [@"knob-slot-color", trackColor, [CPThemeStateVertical, CPThemeStateSelected]], + [@"knob-slot-color", trackColorLight, [CPThemeStateVertical, CPThemeStateSelected, CPThemeStateScrollerKnobLight]], + [@"knob-slot-color", trackColorDark, [CPThemeStateVertical, CPThemeStateSelected, CPThemeStateScrollerKnobDark]], [@"knob-color", knobColor, CPThemeStateVertical], - [@"knob-color", knobColorLight, CPThemeStateVertical | CPThemeStateScrollerKnobLight], - [@"knob-color", knobColorDark, CPThemeStateVertical | CPThemeStateScrollerKnobDark], + [@"knob-color", knobColorLight, [CPThemeStateVertical, CPThemeStateScrollerKnobLight]], + [@"knob-color", knobColorDark, [CPThemeStateVertical, CPThemeStateScrollerKnobDark]], [@"increment-line-color", [CPNull null], CPThemeStateVertical], [@"decrement-line-color", [CPNull null], CPThemeStateVertical], [@"decrement-line-size", CGSizeMakeZero(), CPThemeStateVertical], [@"increment-line-size", CGSizeMakeZero(), CPThemeStateVertical], // Legacy - [@"scroller-width", 14.0, CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"knob-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"track-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"track-border-overlay", 0.0, CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"knob-slot-color", trackColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"knob-slot-color", trackColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy | CPThemeStateSelected], - [@"knob-slot-color", trackColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy | CPThemeStateSelected | CPThemeStateScrollerKnobLight], - [@"knob-slot-color", trackColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy | CPThemeStateSelected | CPThemeStateScrollerKnobDark], - [@"knob-slot-color", trackColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy | CPThemeStateScrollerKnobDark], - [@"knob-slot-color", trackColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy | CPThemeStateScrollerKnobLight], - [@"knob-color", knobColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"knob-color", knobColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy | CPThemeStateScrollerKnobLight], - [@"knob-color", knobColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy | CPThemeStateScrollerKnobDark], - [@"increment-line-color", incrementColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"decrement-line-color", decrementColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"decrement-line-size", CGSizeMake(14.0, 11.0), CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"increment-line-size", CGSizeMake(14.0, 11.0), CPThemeStateVertical | CPThemeStateScrollViewLegacy] + [@"scroller-width", 14.0, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"knob-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"track-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"track-border-overlay", 0.0, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateSelected]], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateSelected, CPThemeStateScrollerKnobLight]], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateSelected, CPThemeStateScrollerKnobDark]], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobDark]], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobLight]], + [@"knob-color", knobColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"knob-color", knobColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobLight]], + [@"knob-color", knobColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobDark]], + [@"increment-line-color", incrementColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"decrement-line-color", decrementColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"decrement-line-size", CGSizeMake(14.0, 11.0), [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"increment-line-size", CGSizeMake(14.0, 11.0), [CPThemeStateVertical, CPThemeStateScrollViewLegacy]] ]; [self registerThemeValues:themedVerticalScrollerValues forView:scroller]; @@ -884,8 +884,8 @@ var themedButtonValues = nil, [@"track-border-overlay", 12.0], [@"knob-slot-color", [CPNull null]], [@"knob-slot-color", trackColor, CPThemeStateSelected], - [@"knob-slot-color", trackColorLight, CPThemeStateSelected | CPThemeStateScrollerKnobLight], - [@"knob-slot-color", trackColorDark, CPThemeStateSelected | CPThemeStateScrollerKnobDark], + [@"knob-slot-color", trackColorLight, [CPThemeStateSelected, CPThemeStateScrollerKnobLight]], + [@"knob-slot-color", trackColorDark, [CPThemeStateSelected, CPThemeStateScrollerKnobDark]], [@"knob-color", knobColor], [@"knob-color", knobColorLight, CPThemeStateScrollerKnobLight], [@"knob-color", knobColorDark, CPThemeStateScrollerKnobDark], @@ -898,12 +898,12 @@ var themedButtonValues = nil, [@"track-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateScrollViewLegacy], [@"track-border-overlay", 0.0, CPThemeStateScrollViewLegacy], [@"knob-slot-color", trackColorLegacy, CPThemeStateScrollViewLegacy], - [@"knob-slot-color", trackColorLegacy, CPThemeStateScrollViewLegacy | CPThemeStateSelected], - [@"knob-slot-color", trackColorLegacy, CPThemeStateScrollViewLegacy | CPThemeStateScrollerKnobLight], - [@"knob-slot-color", trackColorLegacy, CPThemeStateScrollViewLegacy | CPThemeStateScrollerKnobDark], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateScrollViewLegacy, CPThemeStateSelected]], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobLight]], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobDark]], [@"knob-color", knobColorLegacy, CPThemeStateScrollViewLegacy], - [@"knob-color", knobColorLegacy, CPThemeStateScrollViewLegacy | CPThemeStateScrollerKnobLight], - [@"knob-color", knobColorLegacy, CPThemeStateScrollViewLegacy | CPThemeStateScrollerKnobDark], + [@"knob-color", knobColorLegacy, [CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobLight]], + [@"knob-color", knobColorLegacy, [CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobDark]], [@"increment-line-color", incrementColorLegacy, CPThemeStateScrollViewLegacy], [@"decrement-line-color", decrementColorLegacy, CPThemeStateScrollViewLegacy], [@"decrement-line-size", CGSizeMake(11.0, 14.0), CPThemeStateScrollViewLegacy], @@ -965,8 +965,8 @@ var themedButtonValues = nil, [ [@"vertical-alignment", CPTopVerticalTextAlignment, CPThemeStateBezeled], [@"bezel-color", bezelColor, CPThemeStateBezeled], - [@"bezel-color", bezelFocusedColor, CPThemeStateBezeled | CPThemeStateEditing], - [@"bezel-color", bezelDisabledColor, CPThemeStateBezeled | CPThemeStateDisabled], + [@"bezel-color", bezelFocusedColor, [CPThemeStateBezeled, CPThemeStateEditing]], + [@"bezel-color", bezelDisabledColor, [CPThemeStateBezeled, CPThemeStateDisabled]], [@"font", [CPFont systemFontOfSize:CPFontCurrentSystemSize], CPThemeStateBezeled], @@ -978,30 +978,30 @@ var themedButtonValues = nil, [@"bezel-inset", CGInsetMakeZero(), CPThemeStateBezeled], [@"content-inset", CGInsetMake(8.0, 7.0, 7.0, 8.0), CPThemeStateBezeled], - [@"text-color", textDisabledColor, CPThemeStateBezeled | CPThemeStateDisabled], + [@"text-color", textDisabledColor, [CPThemeStateBezeled, CPThemeStateDisabled]], [@"text-color", placeholderColor, CPTextFieldStatePlaceholder], - [@"text-color", placeholderColor, CPTextFieldStatePlaceholder | CPThemeStateDisabled], + [@"text-color", placeholderColor, [CPTextFieldStatePlaceholder, CPThemeStateDisabled]], [@"line-break-mode", CPLineBreakByTruncatingTail, CPThemeStateTableDataView], [@"vertical-alignment", CPCenterVerticalTextAlignment, CPThemeStateTableDataView], [@"content-inset", CGInsetMake(3.0, 3.0, 3.0, 5.0), CPThemeStateTableDataView], - [@"text-color", [CPColor colorWithCalibratedWhite:51.0 / 255.0 alpha:1.0], CPThemeStateTableDataView], - [@"text-color", [CPColor whiteColor], CPThemeStateTableDataView | CPThemeStateSelectedDataView], - [@"font", [CPFont systemFontOfSize:CPFontCurrentSystemSize], CPThemeStateTableDataView | CPThemeStateSelectedDataView], - [@"text-color", [CPColor blackColor], CPThemeStateTableDataView | CPThemeStateEditable], - [@"text-color", [CPColor blackColor], CPThemeStateTableDataView | CPThemeStateSelectedDataView | CPThemeStateEditing], - [@"text-color", [CPColor blackColor], CPThemeStateTableDataView | CPThemeStateBezeled], - [@"content-inset", CGInsetMake(8.0, 8.0, 7.0, 5.0), CPThemeStateTableDataView | CPThemeStateEditing], - [@"font", [CPFont systemFontOfSize:CPFontCurrentSystemSize], CPThemeStateTableDataView | CPThemeStateEditing], - [@"bezel-inset", CGInsetMake(-1.0, -1.0, -1.0, -1.0), CPThemeStateTableDataView | CPThemeStateEditing], + [@"text-color", [CPColor colorWithCalibratedWhite:51.0 / 255.0 alpha:1.0], CPThemeStateTableDataView], + [@"text-color", [CPColor whiteColor], [CPThemeStateTableDataView, CPThemeStateSelectedDataView, CPThemeStateFirstResponder, CPThemeStateKeyWindow]], + [@"font", [CPFont systemFontOfSize:CPFontCurrentSystemSize], [CPThemeStateTableDataView, CPThemeStateSelectedDataView]], + [@"text-color", [CPColor blackColor], [CPThemeStateTableDataView, CPThemeStateEditable]], + [@"text-color", [CPColor blackColor], [CPThemeStateTableDataView, CPThemeStateSelectedDataView, CPThemeStateEditing]], + [@"text-color", [CPColor blackColor], [CPThemeStateTableDataView, CPThemeStateBezeled]], + [@"content-inset", CGInsetMake(8.0, 8.0, 7.0, 5.0), [CPThemeStateTableDataView, CPThemeStateEditing]], + [@"font", [CPFont systemFontOfSize:CPFontCurrentSystemSize], [CPThemeStateTableDataView, CPThemeStateEditing]], + [@"bezel-inset", CGInsetMake(-1.0, -1.0, -1.0, -1.0), [CPThemeStateTableDataView, CPThemeStateEditing]], - [@"text-color", [CPColor colorWithCalibratedWhite:125.0 / 255.0 alpha:1.0], CPThemeStateTableDataView | CPThemeStateGroupRow], - [@"text-color", [CPColor colorWithCalibratedWhite:1.0 alpha:1.0], CPThemeStateTableDataView | CPThemeStateGroupRow | CPThemeStateSelectedDataView], - [@"text-shadow-color", [CPColor whiteColor], CPThemeStateTableDataView | CPThemeStateGroupRow], - [@"text-shadow-offset", CGSizeMake(0,1), CPThemeStateTableDataView | CPThemeStateGroupRow], - [@"text-shadow-color", [CPColor colorWithCalibratedWhite:0.0 alpha:0.6], CPThemeStateTableDataView | CPThemeStateGroupRow | CPThemeStateSelectedDataView], - [@"font", [CPFont boldSystemFontOfSize:CPFontCurrentSystemSize], CPThemeStateTableDataView | CPThemeStateGroupRow] + [@"text-color", [CPColor colorWithCalibratedWhite:125.0 / 255.0 alpha:1.0], [CPThemeStateTableDataView, CPThemeStateGroupRow]], + [@"text-color", [CPColor colorWithCalibratedWhite:1.0 alpha:1.0], [CPThemeStateTableDataView, CPThemeStateGroupRow, CPThemeStateSelectedDataView]], + [@"text-shadow-color", [CPColor whiteColor], [CPThemeStateTableDataView, CPThemeStateGroupRow]], + [@"text-shadow-offset", CGSizeMake(0,1), [CPThemeStateTableDataView, CPThemeStateGroupRow]], + [@"text-shadow-color", [CPColor colorWithCalibratedWhite:0.0 alpha:0.6], [CPThemeStateTableDataView, CPThemeStateGroupRow, CPThemeStateSelectedDataView]], + [@"font", [CPFont boldSystemFontOfSize:CPFontCurrentSystemSize], [CPThemeStateTableDataView, CPThemeStateGroupRow]] ]; [self registerThemeValues:themedTextFieldValues forView:textfield]; @@ -1045,21 +1045,21 @@ var themedButtonValues = nil, // Global for reuse by subclasses themedRoundedTextFieldValues = [ - [@"bezel-color", bezelColor, CPTextFieldStateRounded | CPThemeStateBezeled], - [@"bezel-color", bezelFocusedColor, CPTextFieldStateRounded | CPThemeStateBezeled | CPThemeStateEditing], - [@"bezel-color", bezelDisabledColor, CPTextFieldStateRounded | CPThemeStateBezeled | CPThemeStateDisabled], + [@"bezel-color", bezelColor, [CPTextFieldStateRounded, CPThemeStateBezeled]], + [@"bezel-color", bezelFocusedColor, [CPTextFieldStateRounded, CPThemeStateBezeled, CPThemeStateEditing]], + [@"bezel-color", bezelDisabledColor, [CPTextFieldStateRounded, CPThemeStateBezeled, CPThemeStateDisabled]], [@"font", [CPFont systemFontOfSize:CPFontCurrentSystemSize]], // The new bezel is one pixel shorter, so we add one extra empty pixel at the bottom // for size compatibility with an earlier version. - [@"bezel-inset", CGInsetMake(0.0, 0.0, 1.0, 0.0), CPTextFieldStateRounded | CPThemeStateBezeled], - [@"content-inset", CGInsetMake(8.0, 13.0, 7.0, 14.0), CPTextFieldStateRounded | CPThemeStateBezeled], + [@"bezel-inset", CGInsetMake(0.0, 0.0, 1.0, 0.0), [CPTextFieldStateRounded, CPThemeStateBezeled]], + [@"content-inset", CGInsetMake(8.0, 13.0, 7.0, 14.0), [CPTextFieldStateRounded, CPThemeStateBezeled]], - [@"text-color", textDisabledColor, CPTextFieldStateRounded | CPThemeStateDisabled], - [@"text-color", placeholderColor, CPTextFieldStateRounded | CPTextFieldStatePlaceholder], + [@"text-color", textDisabledColor, [CPTextFieldStateRounded, CPThemeStateDisabled]], + [@"text-color", placeholderColor, [CPTextFieldStateRounded, CPTextFieldStatePlaceholder]], - [@"min-size", CGSizeMake(0.0, 30.0), CPTextFieldStateRounded | CPThemeStateBezeled], - [@"max-size", CGSizeMake(-1.0, 30.0), CPTextFieldStateRounded | CPThemeStateBezeled] + [@"min-size", CGSizeMake(0.0, 30.0), [CPTextFieldStateRounded, CPThemeStateBezeled]], + [@"max-size", CGSizeMake(-1.0, 30.0), [CPTextFieldStateRounded, CPThemeStateBezeled]] ]; [self registerThemeValues:themedRoundedTextFieldValues forView:textfield]; @@ -1135,7 +1135,7 @@ var themedButtonValues = nil, themeValues = [ [@"bezel-color", bezelColor, CPThemeStateBezeled], - [@"bezel-color", bezelDisabledColor, CPThemeStateBezeled | CPThemeStateDisabled], + [@"bezel-color", bezelDisabledColor, [CPThemeStateBezeled, CPThemeStateDisabled]], [@"font", [CPFont boldSystemFontOfSize:13.0]], [@"text-color", [CPColor colorWithWhite:0.2 alpha:0.8]], @@ -1147,8 +1147,8 @@ var themedButtonValues = nil, [@"datepicker-textfield-bezel-color", [CPColor clearColor], CPThemeStateNormal], [@"datepicker-textfield-bezel-color", bezelColorDatePickerTextField, CPThemeStateSelected], - [@"datepicker-textfield-bezel-color", [CPColor clearColor], CPThemeStateNormal | CPThemeStateDisabled], - [@"datepicker-textfield-bezel-color", bezelColorDatePickerTextField, CPThemeStateSelected | CPThemeStateDisabled], + [@"datepicker-textfield-bezel-color", [CPColor clearColor], [CPThemeStateNormal, CPThemeStateDisabled]], + [@"datepicker-textfield-bezel-color", bezelColorDatePickerTextField, [CPThemeStateSelected, CPThemeStateDisabled]], [@"min-size-datepicker-textfield", CGSizeMake(6.0, 18.0)], @@ -1209,12 +1209,12 @@ var themedButtonValues = nil, [ [@"border-color", [CPColor colorWithCalibratedRed:217.0 / 255.0 green:217.0 / 255.0 blue:211.0 / 255.0 alpha:1.0], CPThemeStateNormal], [@"border-color", [CPColor colorWithCalibratedRed:100.0 / 255.0 green:154.0 / 255.0 blue:184.0 / 255.0 alpha:1.0], CPThemeStateSelected], - [@"border-color", [CPColor colorWithCalibratedRed:217.0 / 255.0 green:217.0 / 255.0 blue:211.0 / 255.0 alpha:0.5], CPThemeStateNormal | CPThemeStateDisabled], - [@"border-color", [CPColor colorWithCalibratedRed:100.0 / 255.0 green:154.0 / 255.0 blue:184.0 / 255.0 alpha:0.5], CPThemeStateSelected | CPThemeStateDisabled], + [@"border-color", [CPColor colorWithCalibratedRed:217.0 / 255.0 green:217.0 / 255.0 blue:211.0 / 255.0 alpha:0.5], [CPThemeStateNormal, CPThemeStateDisabled]], + [@"border-color", [CPColor colorWithCalibratedRed:100.0 / 255.0 green:154.0 / 255.0 blue:184.0 / 255.0 alpha:0.5], [CPThemeStateSelected, CPThemeStateDisabled]], [@"bezel-color-calendar", [CPColor whiteColor]], [@"bezel-color-calendar", [CPColor colorWithCalibratedRed:159.0 / 255.0 green:201.0 / 255.0 blue:225.0 / 255.0 alpha:1.0], CPThemeStateSelected], - [@"bezel-color-calendar", [CPColor colorWithCalibratedRed:159.0 / 255.0 green:201.0 / 255.0 blue:225.0 / 255.0 alpha:0.5], CPThemeStateSelected | CPThemeStateDisabled], + [@"bezel-color-calendar", [CPColor colorWithCalibratedRed:159.0 / 255.0 green:201.0 / 255.0 blue:225.0 / 255.0 alpha:0.5], [CPThemeStateSelected, CPThemeStateDisabled]], [@"bezel-color-clock", clockImageColor], [@"bezel-color-clock", clockImageColorDisabled, CPThemeStateDisabled], @@ -1258,35 +1258,35 @@ var themedButtonValues = nil, [@"tile-text-shadow-offset", CGSizeMake(0,1), CPThemeStateHighlighted], [@"tile-font", [CPFont systemFontOfSize:10.0], CPThemeStateHighlighted], - [@"tile-text-color", [CPColor colorWithCalibratedRed:100.0 / 255.0 green:154.0 / 255.0 blue:184.0 / 255.0 alpha:0.5], CPThemeStateHighlighted | CPThemeStateDisabled], - [@"tile-text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:1.0], CPThemeStateHighlighted | CPThemeStateDisabled], - [@"tile-text-shadow-offset", CGSizeMake(0,1), CPThemeStateHighlighted | CPThemeStateDisabled], - [@"tile-font", [CPFont systemFontOfSize:10.0], CPThemeStateHighlighted | CPThemeStateDisabled], + [@"tile-text-color", [CPColor colorWithCalibratedRed:100.0 / 255.0 green:154.0 / 255.0 blue:184.0 / 255.0 alpha:0.5], [CPThemeStateHighlighted, CPThemeStateDisabled]], + [@"tile-text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:1.0], [CPThemeStateHighlighted, CPThemeStateDisabled]], + [@"tile-text-shadow-offset", CGSizeMake(0,1), [CPThemeStateHighlighted, CPThemeStateDisabled]], + [@"tile-font", [CPFont systemFontOfSize:10.0], [CPThemeStateHighlighted, CPThemeStateDisabled]], [@"tile-text-color", [CPColor colorWithCalibratedRed:13.0 / 255.0 green:51.0 / 255.0 blue:70.0 / 255.0 alpha:1.0], CPThemeStateSelected], [@"tile-text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:1.0], CPThemeStateSelected], [@"tile-text-shadow-offset", CGSizeMake(0,1), CPThemeStateSelected], [@"tile-font", [CPFont systemFontOfSize:10.0], CPThemeStateSelected], - [@"tile-text-color", [CPColor colorWithCalibratedRed:13.0 / 255.0 green:51.0 / 255.0 blue:70.0 / 255.0 alpha:1.0], CPThemeStateHighlighted | CPThemeStateSelected], - [@"tile-text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:1.0], CPThemeStateHighlighted | CPThemeStateSelected], - [@"tile-text-shadow-offset", CGSizeMake(0,1), CPThemeStateHighlighted | CPThemeStateSelected], - [@"tile-font", [CPFont systemFontOfSize:10.0], CPThemeStateHighlighted | CPThemeStateSelected], + [@"tile-text-color", [CPColor colorWithCalibratedRed:13.0 / 255.0 green:51.0 / 255.0 blue:70.0 / 255.0 alpha:1.0], [CPThemeStateHighlighted, CPThemeStateSelected]], + [@"tile-text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:1.0], [CPThemeStateHighlighted, CPThemeStateSelected]], + [@"tile-text-shadow-offset", CGSizeMake(0,1), [CPThemeStateHighlighted, CPThemeStateSelected]], + [@"tile-font", [CPFont systemFontOfSize:10.0], [CPThemeStateHighlighted, CPThemeStateSelected]], [@"tile-text-color", [CPColor colorWithCalibratedRed:179.0 / 255.0 green:179.0 / 255.0 blue:179.0 / 255.0 alpha:1.0], CPThemeStateDisabled], [@"tile-text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:1.0], CPThemeStateDisabled], [@"tile-text-shadow-offset", CGSizeMake(0,1), CPThemeStateDisabled], [@"tile-font", [CPFont systemFontOfSize:10.0], CPThemeStateDisabled], - [@"tile-text-color", [CPColor colorWithCalibratedRed:13.0 / 255.0 green:51.0 / 255.0 blue:70.0 / 255.0 alpha:0.5], CPThemeStateDisabled | CPThemeStateSelected | CPThemeStateHighlighted], - [@"tile-text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:1.0], CPThemeStateDisabled | CPThemeStateSelected | CPThemeStateHighlighted], - [@"tile-text-shadow-offset", CGSizeMake(0,1), CPThemeStateDisabled | CPThemeStateSelected | CPThemeStateHighlighted], - [@"tile-font", [CPFont systemFontOfSize:10.0], CPThemeStateDisabled | CPThemeStateSelected | CPThemeStateHighlighted], + [@"tile-text-color", [CPColor colorWithCalibratedRed:13.0 / 255.0 green:51.0 / 255.0 blue:70.0 / 255.0 alpha:0.5], [CPThemeStateDisabled, CPThemeStateSelected, CPThemeStateHighlighted]], + [@"tile-text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:1.0], [CPThemeStateDisabled, CPThemeStateSelected, CPThemeStateHighlighted]], + [@"tile-text-shadow-offset", CGSizeMake(0,1), [CPThemeStateDisabled, CPThemeStateSelected, CPThemeStateHighlighted]], + [@"tile-font", [CPFont systemFontOfSize:10.0], [CPThemeStateDisabled, CPThemeStateSelected, CPThemeStateHighlighted]], - [@"tile-text-color", [CPColor colorWithCalibratedRed:13.0 / 255.0 green:51.0 / 255.0 blue:70.0 / 255.0 alpha:0.5], CPThemeStateDisabled | CPThemeStateSelected], - [@"tile-text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:1.0], CPThemeStateDisabled | CPThemeStateSelected], - [@"tile-text-shadow-offset", CGSizeMake(0,1), CPThemeStateDisabled | CPThemeStateSelected], - [@"tile-font", [CPFont systemFontOfSize:10.0], CPThemeStateDisabled | CPThemeStateSelected], + [@"tile-text-color", [CPColor colorWithCalibratedRed:13.0 / 255.0 green:51.0 / 255.0 blue:70.0 / 255.0 alpha:0.5], [CPThemeStateDisabled, CPThemeStateSelected]], + [@"tile-text-shadow-color", [CPColor colorWithCalibratedWhite:240.0 / 255.0 alpha:1.0], [CPThemeStateDisabled, CPThemeStateSelected]], + [@"tile-text-shadow-offset", CGSizeMake(0,1), [CPThemeStateDisabled, CPThemeStateSelected]], + [@"tile-font", [CPFont systemFontOfSize:10.0], [CPThemeStateDisabled, CPThemeStateSelected]], [@"arrow-image-left", arrowImageLeft], [@"arrow-image-right", arrowImageRight], @@ -1347,7 +1347,7 @@ var themedButtonValues = nil, [@"content-inset", CGInsetMake(5.0, 5.0, 4.0, 5.0), CPThemeStateBezeled], // Bezeled token field with no tokens - [@"content-inset", CGInsetMake(8.0, 8.0, 7.0, 8.0), CPThemeStateBezeled | CPTextFieldStatePlaceholder] + [@"content-inset", CGInsetMake(8.0, 8.0, 7.0, 8.0), [CPThemeStateBezeled, CPTextFieldStatePlaceholder]] ]; [self registerThemeValues:overrides forView:tokenfield inherit:themedTextFieldValues]; @@ -1389,8 +1389,8 @@ var themedButtonValues = nil, themeValues = [ [@"bezel-color", bezelColor, CPThemeStateBezeled], - [@"bezel-color", bezelHighlightedColor, CPThemeStateBezeled | CPThemeStateHighlighted], - [@"bezel-color", bezelColorDisabled, CPThemeStateBezeled | CPThemeStateDisabled], + [@"bezel-color", bezelHighlightedColor, [CPThemeStateBezeled, CPThemeStateHighlighted]], + [@"bezel-color", bezelColorDisabled, [CPThemeStateBezeled, CPThemeStateDisabled]], [@"text-color", textColor], [@"text-color", textHighlightedColor, CPThemeStateHighlighted], @@ -1422,8 +1422,8 @@ var themedButtonValues = nil, [@"content-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateNormal], [@"bezel-color", nil, CPThemeStateBordered], - [@"bezel-color", arrowImage, CPThemeStateBordered | CPThemeStateHovered], - [@"bezel-color", arrowImageHiglighted, CPThemeStateBordered | CPThemeStateHovered | CPThemeStateHighlighted], + [@"bezel-color", arrowImage, [CPThemeStateBordered, CPThemeStateHovered]], + [@"bezel-color", arrowImageHiglighted, [CPThemeStateBordered, CPThemeStateHovered, CPThemeStateHighlighted]], [@"min-size", CGSizeMake(7.0, 6.0)], [@"max-size", CGSizeMake(7.0, 6.0)], @@ -1445,15 +1445,15 @@ var themedButtonValues = nil, themeValues = [ - [@"bezel-color", bezelColor, CPThemeStateBordered | CPThemeStateHovered], - [@"bezel-color", [bezelColor colorWithAlphaComponent:0], CPThemeStateBordered | CPThemeStateDisabled], - [@"bezel-color", bezelHighlightedColor, CPThemeStateBordered | CPThemeStateHighlighted], + [@"bezel-color", bezelColor, [CPThemeStateBordered, CPThemeStateHovered]], + [@"bezel-color", [bezelColor colorWithAlphaComponent:0], [CPThemeStateBordered, CPThemeStateDisabled]], + [@"bezel-color", bezelHighlightedColor, [CPThemeStateBordered, CPThemeStateHighlighted]], [@"min-size", CGSizeMake(8.0, 8.0)], [@"max-size", CGSizeMake(8.0, 8.0)], [@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateBordered], - [@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateBordered | CPThemeStateHighlighted], + [@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), [CPThemeStateBordered, CPThemeStateHighlighted]], [@"offset", CGPointMake(17, 6), CPThemeStateBordered] ]; @@ -1509,9 +1509,9 @@ var themedButtonValues = nil, [@"content-border-inset", CGInsetMake(5.0, 5.0, 4.0, 5.0), CPThemeStateBordered], [@"content-border-color", contentBorderColor, CPThemeStateBordered], - [@"bezel-color", bezelHighlightedColor, CPThemeStateBordered | CPThemeStateHighlighted], + [@"bezel-color", bezelHighlightedColor, [CPThemeStateBordered, CPThemeStateHighlighted]], - [@"bezel-color", bezelDisabledColor, CPThemeStateBordered | CPThemeStateDisabled], + [@"bezel-color", bezelDisabledColor, [CPThemeStateBordered, CPThemeStateDisabled]], ]; [self registerThemeValues:themedColorWellValues forView:colorWell]; @@ -1573,24 +1573,24 @@ var themedButtonValues = nil, overrides = [ - [@"bezel-color", bezelColor, CPThemeStateBezeled | CPComboBoxStateButtonBordered], - [@"bezel-color", bezelFocusedColor, CPThemeStateBezeled | CPComboBoxStateButtonBordered | CPThemeStateEditing], - [@"bezel-color", bezelDisabledColor, CPThemeStateBezeled | CPComboBoxStateButtonBordered | CPThemeStateDisabled], + [@"bezel-color", bezelColor, [CPThemeStateBezeled, CPComboBoxStateButtonBordered]], + [@"bezel-color", bezelFocusedColor, [CPThemeStateBezeled, CPComboBoxStateButtonBordered, CPThemeStateEditing]], + [@"bezel-color", bezelDisabledColor, [CPThemeStateBezeled, CPComboBoxStateButtonBordered, CPThemeStateDisabled]], [@"bezel-color", bezelNoBorderColor, CPThemeStateBezeled], - [@"bezel-color", bezelNoBorderFocusedColor, CPThemeStateBezeled | CPThemeStateEditing], - [@"bezel-color", bezelNoBorderDisabledColor, CPThemeStateBezeled | CPThemeStateDisabled], + [@"bezel-color", bezelNoBorderFocusedColor, [CPThemeStateBezeled, CPThemeStateEditing]], + [@"bezel-color", bezelNoBorderDisabledColor, [CPThemeStateBezeled, CPThemeStateDisabled]], [@"border-inset", CGInsetMake(3.0, 3.0, 3.0, 3.0), CPThemeStateBezeled], - [@"bezel-inset", CGInsetMake(0.0, 1.0, 1.0, 1.0), CPThemeStateBezeled | CPThemeStateEditing], + [@"bezel-inset", CGInsetMake(0.0, 1.0, 1.0, 1.0), [CPThemeStateBezeled, CPThemeStateEditing]], // The right border inset has to make room for the focus ring and popup button - [@"content-inset", CGInsetMake(8.0, 27.0, 7.0, 8.0), CPThemeStateBezeled | CPComboBoxStateButtonBordered], + [@"content-inset", CGInsetMake(8.0, 27.0, 7.0, 8.0), [CPThemeStateBezeled, CPComboBoxStateButtonBordered]], [@"content-inset", CGInsetMake(8.0, 24.0, 7.0, 8.0), CPThemeStateBezeled], - [@"content-inset", CGInsetMake(8.0, 24.0, 7.0, 8.0), CPThemeStateBezeled | CPThemeStateEditing], + [@"content-inset", CGInsetMake(8.0, 24.0, 7.0, 8.0), [CPThemeStateBezeled, CPThemeStateEditing]], - [@"popup-button-size", CGSizeMake(21.0, 23.0), CPThemeStateBezeled | CPComboBoxStateButtonBordered], + [@"popup-button-size", CGSizeMake(21.0, 23.0), [CPThemeStateBezeled, CPComboBoxStateButtonBordered]], [@"popup-button-size", CGSizeMake(17.0, 23.0), CPThemeStateBezeled], // Because combo box uses a three-part bezel, the height is fixed @@ -1621,10 +1621,10 @@ var themedButtonValues = nil, [@"image", imageNormal, CPThemeStateNormal], [@"image", imageSelected, CPThemeStateSelected], - [@"image", imageSelectedHighlighted, CPThemeStateSelected | CPThemeStateHighlighted], + [@"image", imageSelectedHighlighted, [CPThemeStateSelected, CPThemeStateHighlighted]], [@"image", imageHighlighted, CPThemeStateHighlighted], [@"image", imageDisabled, CPThemeStateDisabled], - [@"image", imageSelectedDisabled, CPThemeStateSelected | CPThemeStateDisabled], + [@"image", imageSelectedDisabled, [CPThemeStateSelected, CPThemeStateDisabled]], [@"image-offset", CPRadioImageOffset], [@"font", [CPFont systemFontOfSize:CPFontCurrentSystemSize], CPThemeStateNormal], @@ -1657,10 +1657,10 @@ var themedButtonValues = nil, [@"image", imageNormal, CPThemeStateNormal], [@"image", imageSelected, CPThemeStateSelected], - [@"image", imageSelectedHighlighted, CPThemeStateSelected | CPThemeStateHighlighted], + [@"image", imageSelectedHighlighted, [CPThemeStateSelected, CPThemeStateHighlighted]], [@"image", imageHighlighted, CPThemeStateHighlighted], [@"image", imageDisabled, CPThemeStateDisabled], - [@"image", imageSelectedDisabled, CPThemeStateSelected | CPThemeStateDisabled], + [@"image", imageSelectedDisabled, [CPThemeStateSelected, CPThemeStateDisabled]], [@"image-offset", CPCheckBoxImageOffset], [@"font", [CPFont systemFontOfSize:CPFontCurrentSystemSize], CPThemeStateNormal], @@ -1691,8 +1691,8 @@ var themedButtonValues = nil, themeValues = [ [@"image", mixedImage, CPButtonStateMixed], - [@"image", mixedHighlightedImage, CPButtonStateMixed | CPThemeStateHighlighted], - [@"image", mixedDisabledImage, CPButtonStateMixed | CPThemeStateDisabled], + [@"image", mixedHighlightedImage, [CPButtonStateMixed, CPThemeStateHighlighted]], + [@"image", mixedDisabledImage, [CPButtonStateMixed, CPThemeStateDisabled]], [@"image-offset", CPCheckBoxImageOffset, CPButtonStateMixed], [@"max-size", CGSizeMake(-1.0, -1.0)] ]; @@ -1755,29 +1755,29 @@ var themedButtonValues = nil, [ [@"center-segment-bezel-color", centerBezelColor, CPThemeStateNormal], [@"center-segment-bezel-color", inactiveCenterBezelColor, CPThemeStateDisabled], - [@"center-segment-bezel-color", inactiveHighlightedCenterBezelColor, CPThemeStateSelected | CPThemeStateDisabled], + [@"center-segment-bezel-color", inactiveHighlightedCenterBezelColor, [CPThemeStateSelected, CPThemeStateDisabled]], [@"center-segment-bezel-color", centerHighlightedBezelColor, CPThemeStateSelected], [@"center-segment-bezel-color", pushedCenterBezelColor, CPThemeStateHighlighted], - [@"center-segment-bezel-color", pushedHighlightedCenterBezelColor, CPThemeStateHighlighted | CPThemeStateSelected], + [@"center-segment-bezel-color", pushedHighlightedCenterBezelColor, [CPThemeStateHighlighted, CPThemeStateSelected]], [@"divider-bezel-color", dividerBezelColor, CPThemeStateNormal], [@"divider-bezel-color", inactiveDividerBezelColor, CPThemeStateDisabled], - [@"divider-bezel-color", inactiveHighlightedDividerBezelColor, CPThemeStateSelected | CPThemeStateDisabled], + [@"divider-bezel-color", inactiveHighlightedDividerBezelColor, [CPThemeStateSelected, CPThemeStateDisabled]], [@"divider-bezel-color", dividerHighlightedBezelColor, CPThemeStateSelected], [@"left-segment-bezel-color", leftBezelColor, CPThemeStateNormal], [@"left-segment-bezel-color", inactiveLeftBezelColor, CPThemeStateDisabled], - [@"left-segment-bezel-color", inactiveHighlightedLeftBezelColor, CPThemeStateSelected | CPThemeStateDisabled], + [@"left-segment-bezel-color", inactiveHighlightedLeftBezelColor, [CPThemeStateSelected, CPThemeStateDisabled]], [@"left-segment-bezel-color", leftHighlightedBezelColor, CPThemeStateSelected], [@"left-segment-bezel-color", pushedLeftBezelColor, CPThemeStateHighlighted], - [@"left-segment-bezel-color", pushedHighlightedLeftBezelColor, CPThemeStateHighlighted | CPThemeStateSelected], + [@"left-segment-bezel-color", pushedHighlightedLeftBezelColor, [CPThemeStateHighlighted, CPThemeStateSelected]], [@"right-segment-bezel-color", rightBezelColor, CPThemeStateNormal], [@"right-segment-bezel-color", inactiveRightBezelColor, CPThemeStateDisabled], - [@"right-segment-bezel-color", inactiveHighlightedRightBezelColor, CPThemeStateSelected | CPThemeStateDisabled], + [@"right-segment-bezel-color", inactiveHighlightedRightBezelColor, [CPThemeStateSelected, CPThemeStateDisabled]], [@"right-segment-bezel-color", rightHighlightedBezelColor, CPThemeStateSelected], [@"right-segment-bezel-color", pushedRightBezelColor, CPThemeStateHighlighted], - [@"right-segment-bezel-color", pushedHighlightedRightBezelColor, CPThemeStateHighlighted | CPThemeStateSelected], + [@"right-segment-bezel-color", pushedHighlightedRightBezelColor, [CPThemeStateHighlighted, CPThemeStateSelected]], [@"content-inset", CGInsetMake(0.0, 4.0, 0.0, 4.0), CPThemeStateNormal], [@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateNormal], @@ -1878,7 +1878,7 @@ var themedButtonValues = nil, [ [@"track-width", 5.0], [@"track-color", trackColor, CPThemeStateVertical], - [@"track-color", trackDisabledColor, CPThemeStateVertical | CPThemeStateDisabled], + [@"track-color", trackDisabledColor, [CPThemeStateVertical, CPThemeStateDisabled]], [@"knob-size", CGSizeMake(23.0, 24.0)], [@"knob-color", knobColor], @@ -1913,12 +1913,12 @@ var themedButtonValues = nil, themedCircularSliderValues = [ [@"track-color", trackColor, CPThemeStateCircular], - [@"track-color", trackDisabledColor, CPThemeStateCircular | CPThemeStateDisabled], + [@"track-color", trackDisabledColor, [CPThemeStateCircular, CPThemeStateDisabled]], [@"knob-size", CGSizeMake(5.0, 5.0), CPThemeStateCircular], [@"knob-color", knobColor, CPThemeStateCircular], - [@"knob-color", knobHighlightedColor, CPThemeStateCircular | CPThemeStateHighlighted], - [@"knob-color", knobDisabledColor, CPThemeStateCircular | CPThemeStateDisabled] + [@"knob-color", knobHighlightedColor, [CPThemeStateCircular, CPThemeStateHighlighted]], + [@"knob-color", knobDisabledColor, [CPThemeStateCircular, CPThemeStateDisabled]] ]; [self registerThemeValues:themedCircularSliderValues forView:slider]; @@ -2029,7 +2029,7 @@ var themedButtonValues = nil, [@"background-color", pressed, CPThemeStateHighlighted], [@"background-color", highlighted, CPThemeStateSelected], - [@"background-color", highlightedPressed, CPThemeStateHighlighted | CPThemeStateSelected] + [@"background-color", highlightedPressed, [CPThemeStateHighlighted, CPThemeStateSelected]] ]; [self registerThemeValues:themedColumnHeaderValues forView:header]; @@ -2260,10 +2260,10 @@ var themedButtonValues = nil, [ [@"bezel-color-up-button", bezelUp, CPThemeStateBordered], [@"bezel-color-down-button", bezelDown, CPThemeStateBordered], - [@"bezel-color-up-button", bezelUpDisabled, CPThemeStateBordered | CPThemeStateDisabled], - [@"bezel-color-down-button", bezelDownDisabled, CPThemeStateBordered | CPThemeStateDisabled], - [@"bezel-color-up-button", bezelUpHighlighted, CPThemeStateBordered | CPThemeStateHighlighted], - [@"bezel-color-down-button", bezelDownHighlighted, CPThemeStateBordered | CPThemeStateHighlighted], + [@"bezel-color-up-button", bezelUpDisabled, [CPThemeStateBordered, CPThemeStateDisabled]], + [@"bezel-color-down-button", bezelDownDisabled, [CPThemeStateBordered, CPThemeStateDisabled]], + [@"bezel-color-up-button", bezelUpHighlighted, [CPThemeStateBordered, CPThemeStateHighlighted]], + [@"bezel-color-down-button", bezelDownHighlighted, [CPThemeStateBordered, CPThemeStateHighlighted]], [@"min-size", CGSizeMake(25.0, 25.0)], [@"up-button-size", CGSizeMake(19.0, 13.0)], [@"down-button-size", CGSizeMake(19.0, 12.0)] @@ -2429,6 +2429,7 @@ var themedButtonValues = nil, return box; } + + (CPLevelIndicator)themedLevelIndicator { var levelIndicator = [[CPLevelIndicator alloc] initWithFrame:CGRectMake(0,0,100,100)], @@ -2803,7 +2804,6 @@ var themedButtonValues = nil, + (_CPToolbarView)themedToolbarView { var toolbarView = [[_CPToolbarView alloc] initWithFrame:CGRectMakeZero()], - toolbarExtraItemsImage = PatternImage(@"toolbar-view-extra-items-image.png", 10.0, 15.0), toolbarExtraItemsAlternateImage = PatternImage(@"toolbar-view-extra-items-alternate-image.png", 10.0, 15.0), toolbarSeparatorColor = PatternColor([ @@ -2883,8 +2883,6 @@ var themedButtonValues = nil, + (_CPMenuView)themedMenuView { var menuView = [[_CPMenuView alloc] initWithFrame:CGRectMake(0.0, 0.0, 200.0, 100.0)], - - menuWindowMoreAboveImage = PatternImage(@"menu-window-more-above.png", 38.0, 18.0), menuWindowMoreBelowImage = PatternImage(@"menu-window-more-below.png", 38.0, 18.0), generalIconNew = PatternImage(@"menu-general-icon-new.png", 16.0, 16.0), @@ -3014,7 +3012,6 @@ var themedButtonValues = nil, @end - @implementation AristoHUDThemeDescriptor : BKThemeDescriptor { } @@ -3094,7 +3091,7 @@ var themedButtonValues = nil, // var scroller = [AristoThemeDescriptor makeVerticalScroller], // overrides = // [ -// [@"knob-color", nil, CPThemeStateVertical | CPThemeStateDisabled] +// [@"knob-color", nil, [CPThemeStateVertical, CPThemeStateDisabled]] // ]; // // [self registerThemeValues:[self defaultThemeOverridesAddedTo:overrides] forView:scroller inherit:themedVerticalScrollerValues]; @@ -3178,5 +3175,4 @@ var themedButtonValues = nil, return progressBar; } - @end diff --git a/AppKit/Themes/Aristo2/ThemeDescriptors.j b/AppKit/Themes/Aristo2/ThemeDescriptors.j index 4b4bbf13b..960d5d994 100644 --- a/AppKit/Themes/Aristo2/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo2/ThemeDescriptors.j @@ -139,14 +139,14 @@ var themedButtonValues = nil, [@"text-shadow-color", regularTextShadowColor, CPThemeStateBordered], [@"text-color", regularDisabledTextColor, CPThemeStateDisabled], - [@"text-color", defaultTextColor, CPThemeStateBordered | CPThemeStateDefault], + [@"text-color", defaultTextColor, [CPThemeStateBordered, CPThemeStateDefault]], [@"text-color", defaultTextColor, CPThemeStateDefault], - [@"text-shadow-color", defaultTextShadowColor, CPThemeStateBordered | CPThemeStateDefault], + [@"text-shadow-color", defaultTextShadowColor, [CPThemeStateBordered, CPThemeStateDefault]], - [@"text-color", defaultDisabledTextColor, CPThemeStateDefault | CPThemeStateDisabled], - [@"text-shadow-color", defaultDisabledTextShadowColor, CPThemeStateDefault | CPThemeStateDisabled], + [@"text-color", defaultDisabledTextColor, [CPThemeStateDefault, CPThemeStateDisabled]], + [@"text-shadow-color", defaultDisabledTextShadowColor, [CPThemeStateDefault, CPThemeStateDisabled]], - [@"text-shadow-offset", CGSizeMake(0.0, 0.0), CPThemeStateDefault | CPThemeStateDisabled], + [@"text-shadow-offset", CGSizeMake(0.0, 0.0), [CPThemeStateDefault, CPThemeStateDisabled]], [@"text-shadow-offset", CGSizeMake(0.0, 1.0), CPThemeStateBordered], [@"line-break-mode", CPLineBreakByTruncatingTail], @@ -155,41 +155,41 @@ var themedButtonValues = nil, CPThemeStateBordered], [@"bezel-color", bezelColor["@"]["highlighted"], - CPThemeStateBordered | CPThemeStateHighlighted], + [CPThemeStateBordered, CPThemeStateHighlighted]], [@"bezel-color", bezelColor["@"]["disabled"], - CPThemeStateBordered | CPThemeStateDisabled], + [CPThemeStateBordered, CPThemeStateDisabled]], [@"bezel-color", bezelColor["default"]["@"], - CPThemeStateBordered | CPThemeStateDefault], + [CPThemeStateBordered, CPThemeStateDefault]], [@"bezel-color", bezelColor["default"]["highlighted"], - CPThemeStateBordered | CPThemeStateHighlighted | CPThemeStateDefault], + [CPThemeStateBordered, CPThemeStateHighlighted, CPThemeStateDefault]], [@"bezel-color", bezelColor["default"]["disabled"], - CPThemeStateBordered | CPThemeStateDefault | CPThemeStateDisabled], + [CPThemeStateBordered, CPThemeStateDefault, CPThemeStateDisabled]], [@"content-inset", CGInsetMake(0.0, 7.0, 0.0, 7.0), CPThemeStateBordered], [@"bezel-color", roundedBezelColor["@"]["@"], - CPThemeStateBordered | CPButtonStateBezelStyleRounded], + [CPThemeStateBordered, CPButtonStateBezelStyleRounded]], [@"bezel-color", roundedBezelColor["@"]["highlighted"], - CPThemeStateBordered | CPThemeStateHighlighted | CPButtonStateBezelStyleRounded], + [CPThemeStateBordered, CPThemeStateHighlighted, CPButtonStateBezelStyleRounded]], [@"bezel-color", roundedBezelColor["@"]["disabled"], - CPThemeStateBordered | CPThemeStateDisabled | CPButtonStateBezelStyleRounded], + [CPThemeStateBordered, CPThemeStateDisabled, CPButtonStateBezelStyleRounded]], [@"bezel-color", roundedBezelColor["default"]["@"], - CPThemeStateBordered | CPThemeStateDefault | CPButtonStateBezelStyleRounded], + [CPThemeStateBordered, CPThemeStateDefault, CPButtonStateBezelStyleRounded]], [@"bezel-color", roundedBezelColor["default"]["highlighted"], - CPThemeStateBordered | CPThemeStateHighlighted | CPThemeStateDefault | CPButtonStateBezelStyleRounded], + [CPThemeStateBordered, CPThemeStateHighlighted, CPThemeStateDefault, CPButtonStateBezelStyleRounded]], [@"bezel-color", roundedBezelColor["default"]["disabled"], - CPThemeStateBordered | CPThemeStateDefault | CPThemeStateDisabled | CPButtonStateBezelStyleRounded], + [CPThemeStateBordered, CPThemeStateDefault, CPThemeStateDisabled, CPButtonStateBezelStyleRounded]], - [@"content-inset", CGInsetMake(0.0, 10.0, 0.0, 10.0), CPThemeStateBordered | CPButtonStateBezelStyleRounded], + [@"content-inset", CGInsetMake(0.0, 10.0, 0.0, 10.0), [CPThemeStateBordered, CPButtonStateBezelStyleRounded]], [@"min-size", CGSizeMake(0.0, CPButtonDefaultHeight)], [@"max-size", CGSizeMake(-1.0, CPButtonDefaultHeight)], @@ -235,7 +235,7 @@ var themedButtonValues = nil, var button = [self button]; [button setTitle:@"OK"]; - [button setThemeState:CPButtonStateBezelStyleRounded | CPThemeStateDefault]; + [button setThemeState:[CPButtonStateBezelStyleRounded, CPThemeStateDefault]]; return button; } @@ -256,15 +256,15 @@ var themedButtonValues = nil, themeValues = [ [@"bezel-color", color["@"], CPThemeStateBordered], - [@"bezel-color", color["disabled"], CPThemeStateBordered | CPThemeStateDisabled], + [@"bezel-color", color["disabled"], [CPThemeStateBordered, CPThemeStateDisabled]], [@"content-inset", CGInsetMake(0, 21.0 + 5.0, 0, 5.0), CPThemeStateBordered], [@"font", [CPFont boldSystemFontOfSize:12.0]], [@"text-color", regularTextColor], [@"text-shadow-color", regularTextShadowColor], - [@"text-color", regularDisabledTextColor, CPThemeStateBordered | CPThemeStateDisabled], - [@"text-shadow-color", regularDisabledTextShadowColor, CPThemeStateBordered | CPThemeStateDisabled], + [@"text-color", regularDisabledTextColor, [CPThemeStateBordered, CPThemeStateDisabled]], + [@"text-shadow-color", regularDisabledTextShadowColor, [CPThemeStateBordered, CPThemeStateDisabled]], [@"min-size", CGSizeMake(32.0, 25.0)], [@"max-size", CGSizeMake(-1.0, 25.0)] @@ -293,16 +293,16 @@ var themedButtonValues = nil, themeValues = [ - [@"bezel-color", color["@"], CPPopUpButtonStatePullsDown | CPThemeStateBordered], - [@"bezel-color", color["disabled"], CPPopUpButtonStatePullsDown | CPThemeStateBordered | CPThemeStateDisabled], + [@"bezel-color", color["@"], [CPPopUpButtonStatePullsDown, CPThemeStateBordered]], + [@"bezel-color", color["disabled"], [CPPopUpButtonStatePullsDown, CPThemeStateBordered, CPThemeStateDisabled]], [@"content-inset", CGInsetMake(0, 27.0 + 5.0, 0, 5.0), CPThemeStateBordered], [@"font", [CPFont boldSystemFontOfSize:12.0]], [@"text-color", regularTextColor], [@"text-shadow-color", regularTextShadowColor], - [@"text-color", regularDisabledTextColor, CPThemeStateBordered | CPThemeStateDisabled], - [@"text-shadow-color", regularDisabledTextShadowColor, CPThemeStateBordered | CPThemeStateDisabled], + [@"text-color", regularDisabledTextColor, [CPThemeStateBordered, CPThemeStateDisabled]], + [@"text-shadow-color", regularDisabledTextShadowColor, [CPThemeStateBordered, CPThemeStateDisabled]], [@"min-size", CGSizeMake(32.0, 25.0)], [@"max-size", CGSizeMake(-1.0, 25.0)] @@ -403,35 +403,35 @@ var themedButtonValues = nil, [@"track-inset", CGInsetMake(2.0, 0.0, 2.0, 0.0), CPThemeStateVertical], [@"track-border-overlay", 12.0, CPThemeStateVertical], [@"knob-slot-color", [CPNull null], CPThemeStateVertical], - [@"knob-slot-color", trackColor["@"], CPThemeStateVertical | CPThemeStateSelected], - [@"knob-slot-color", trackColor["light"], CPThemeStateVertical | CPThemeStateSelected | CPThemeStateScrollerKnobLight], - [@"knob-slot-color", trackColor["dark"], CPThemeStateVertical | CPThemeStateSelected | CPThemeStateScrollerKnobDark], + [@"knob-slot-color", trackColor["@"], [CPThemeStateVertical, CPThemeStateSelected]], + [@"knob-slot-color", trackColor["light"], [CPThemeStateVertical, CPThemeStateSelected, CPThemeStateScrollerKnobLight]], + [@"knob-slot-color", trackColor["dark"], [CPThemeStateVertical, CPThemeStateSelected, CPThemeStateScrollerKnobDark]], [@"knob-color", knobColor["@"], CPThemeStateVertical], - [@"knob-color", knobColor["light"], CPThemeStateVertical | CPThemeStateScrollerKnobLight], - [@"knob-color", knobColor["dark"], CPThemeStateVertical | CPThemeStateScrollerKnobDark], + [@"knob-color", knobColor["light"], [CPThemeStateVertical, CPThemeStateScrollerKnobLight]], + [@"knob-color", knobColor["dark"], [CPThemeStateVertical, CPThemeStateScrollerKnobDark]], [@"increment-line-color", [CPNull null], CPThemeStateVertical], [@"decrement-line-color", [CPNull null], CPThemeStateVertical], [@"decrement-line-size", CGSizeMakeZero(), CPThemeStateVertical], [@"increment-line-size", CGSizeMakeZero(), CPThemeStateVertical], // Legacy - [@"scroller-width", 14.0, CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"knob-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"track-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"track-border-overlay", 0.0, CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"knob-slot-color", trackColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"knob-slot-color", trackColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy | CPThemeStateSelected], - [@"knob-slot-color", trackColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy | CPThemeStateSelected | CPThemeStateScrollerKnobLight], - [@"knob-slot-color", trackColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy | CPThemeStateSelected | CPThemeStateScrollerKnobDark], - [@"knob-slot-color", trackColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy | CPThemeStateScrollerKnobDark], - [@"knob-slot-color", trackColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy | CPThemeStateScrollerKnobLight], - [@"knob-color", knobColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"knob-color", knobColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy | CPThemeStateScrollerKnobLight], - [@"knob-color", knobColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy | CPThemeStateScrollerKnobDark], - [@"increment-line-color", incrementColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"decrement-line-color", decrementColorLegacy, CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"decrement-line-size", CGSizeMake(14.0, 11.0), CPThemeStateVertical | CPThemeStateScrollViewLegacy], - [@"increment-line-size", CGSizeMake(14.0, 11.0), CPThemeStateVertical | CPThemeStateScrollViewLegacy] + [@"scroller-width", 14.0, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"knob-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"track-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"track-border-overlay", 0.0, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateSelected]], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateSelected, CPThemeStateScrollerKnobLight]], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateSelected, CPThemeStateScrollerKnobDark]], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobDark]], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobLight]], + [@"knob-color", knobColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"knob-color", knobColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobLight]], + [@"knob-color", knobColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobDark]], + [@"increment-line-color", incrementColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"decrement-line-color", decrementColorLegacy, [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"decrement-line-size", CGSizeMake(14.0, 11.0), [CPThemeStateVertical, CPThemeStateScrollViewLegacy]], + [@"increment-line-size", CGSizeMake(14.0, 11.0), [CPThemeStateVertical, CPThemeStateScrollViewLegacy]] ]; [self registerThemeValues:themedVerticalScrollerValues forView:scroller]; @@ -484,8 +484,8 @@ var themedButtonValues = nil, [@"track-border-overlay", 12.0], [@"knob-slot-color", [CPNull null]], [@"knob-slot-color", trackColor["@"], CPThemeStateSelected], - [@"knob-slot-color", trackColor["light"], CPThemeStateSelected | CPThemeStateScrollerKnobLight], - [@"knob-slot-color", trackColor["dark"], CPThemeStateSelected | CPThemeStateScrollerKnobDark], + [@"knob-slot-color", trackColor["light"], [CPThemeStateSelected, CPThemeStateScrollerKnobLight]], + [@"knob-slot-color", trackColor["dark"], [CPThemeStateSelected, CPThemeStateScrollerKnobDark]], [@"knob-color", knobColor["@"]], [@"knob-color", knobColor["light"], CPThemeStateScrollerKnobLight], [@"knob-color", knobColor["dark"], CPThemeStateScrollerKnobDark], @@ -498,12 +498,12 @@ var themedButtonValues = nil, [@"track-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateScrollViewLegacy], [@"track-border-overlay", 0.0, CPThemeStateScrollViewLegacy], [@"knob-slot-color", trackColorLegacy, CPThemeStateScrollViewLegacy], - [@"knob-slot-color", trackColorLegacy, CPThemeStateScrollViewLegacy | CPThemeStateSelected], - [@"knob-slot-color", trackColorLegacy, CPThemeStateScrollViewLegacy | CPThemeStateScrollerKnobLight], - [@"knob-slot-color", trackColorLegacy, CPThemeStateScrollViewLegacy | CPThemeStateScrollerKnobDark], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateScrollViewLegacy, CPThemeStateSelected]], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobLight]], + [@"knob-slot-color", trackColorLegacy, [CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobDark]], [@"knob-color", knobColorLegacy, CPThemeStateScrollViewLegacy], - [@"knob-color", knobColorLegacy, CPThemeStateScrollViewLegacy | CPThemeStateScrollerKnobLight], - [@"knob-color", knobColorLegacy, CPThemeStateScrollViewLegacy | CPThemeStateScrollerKnobDark], + [@"knob-color", knobColorLegacy, [CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobLight]], + [@"knob-color", knobColorLegacy, [CPThemeStateScrollViewLegacy, CPThemeStateScrollerKnobDark]], [@"increment-line-color", incrementColorLegacy, CPThemeStateScrollViewLegacy], [@"decrement-line-color", decrementColorLegacy, CPThemeStateScrollViewLegacy], [@"decrement-line-size", CGSizeMake(11.0, 14.0), CPThemeStateScrollViewLegacy], @@ -541,16 +541,16 @@ var themedButtonValues = nil, [ [@"vertical-alignment", CPTopVerticalTextAlignment, CPThemeStateBezeled], [@"bezel-color", bezelColor["@"], CPThemeStateBezeled], - [@"bezel-color", bezelFocusedColor, CPThemeStateBezeled | CPThemeStateEditing], - [@"bezel-color", bezelColor["disabled"], CPThemeStateBezeled | CPThemeStateDisabled], + [@"bezel-color", bezelFocusedColor, [CPThemeStateBezeled, CPThemeStateEditing]], + [@"bezel-color", bezelColor["disabled"], [CPThemeStateBezeled, CPThemeStateDisabled]], [@"font", [CPFont systemFontOfSize:CPFontCurrentSystemSize], CPThemeStateBezeled], - [@"text-color", regularDisabledTextColor, CPThemeStateBezeled | CPThemeStateDisabled], - [@"text-shadow-color", regularDisabledTextShadowColor, CPThemeStateBezeled | CPThemeStateDisabled], + [@"text-color", regularDisabledTextColor, [CPThemeStateBezeled, CPThemeStateDisabled]], + [@"text-shadow-color", regularDisabledTextShadowColor, [CPThemeStateBezeled, CPThemeStateDisabled]], [@"content-inset", CGInsetMake(8.0, 7.0, 5.0, 10.0), CPThemeStateBezeled], - [@"content-inset", CGInsetMake(8.0, 7.0, 5.0, 10.0), CPThemeStateBezeled | CPThemeStateEditing], + [@"content-inset", CGInsetMake(8.0, 7.0, 5.0, 10.0), [CPThemeStateBezeled, CPThemeStateEditing]], [@"bezel-inset", CGInsetMake(3.0, 4.0, 3.0, 4.0), CPThemeStateBezeled], - [@"bezel-inset", CGInsetMake(0.0, 1.0, 0.0, 1.0), CPThemeStateBezeled | CPThemeStateEditing], + [@"bezel-inset", CGInsetMake(0.0, 1.0, 0.0, 1.0), [CPThemeStateBezeled, CPThemeStateEditing]], [@"text-color", placeholderColor, CPTextFieldStatePlaceholder], @@ -558,21 +558,21 @@ var themedButtonValues = nil, [@"vertical-alignment", CPCenterVerticalTextAlignment, CPThemeStateTableDataView], [@"content-inset", CGInsetMake(0.0, 0.0, 0.0, 5.0), CPThemeStateTableDataView], - [@"text-color", [CPColor colorWithCalibratedWhite:51.0 / 255.0 alpha:1.0], CPThemeStateTableDataView], - [@"text-color", [CPColor whiteColor], CPThemeStateTableDataView | CPThemeStateSelectedDataView], - [@"font", [CPFont systemFontOfSize:CPFontCurrentSystemSize], CPThemeStateTableDataView | CPThemeStateSelectedDataView], - [@"text-color", [CPColor blackColor], CPThemeStateTableDataView | CPThemeStateEditing], - [@"text-color", [CPColor blackColor], CPThemeStateTableDataView | CPThemeStateSelectedDataView | CPThemeStateEditable], - [@"content-inset", CGInsetMake(7.0, 7.0, 5.0, 10.0), CPThemeStateTableDataView | CPThemeStateEditable], - [@"font", [CPFont systemFontOfSize:CPFontCurrentSystemSize], CPThemeStateTableDataView | CPThemeStateEditing], - [@"bezel-inset", CGInsetMake(-2.0, -2.0, -2.0, -2.0), CPThemeStateTableDataView | CPThemeStateEditing], + [@"text-color", [CPColor colorWithCalibratedWhite:51.0 / 255.0 alpha:1.0], CPThemeStateTableDataView], + [@"text-color", [CPColor whiteColor], [CPThemeStateTableDataView, CPThemeStateSelectedDataView, CPThemeStateFirstResponder, CPThemeStateKeyWindow]], + [@"font", [CPFont systemFontOfSize:CPFontCurrentSystemSize], [CPThemeStateTableDataView, CPThemeStateSelectedDataView]], + [@"text-color", [CPColor blackColor], [CPThemeStateTableDataView, CPThemeStateEditing, CPThemeStateFirstResponder, CPThemeStateKeyWindow]], + [@"text-color", [CPColor blackColor], [CPThemeStateTableDataView, CPThemeStateSelectedDataView, CPThemeStateEditable, CPThemeStateFirstResponder, CPThemeStateKeyWindow]], + [@"content-inset", CGInsetMake(7.0, 7.0, 5.0, 10.0), [CPThemeStateTableDataView, CPThemeStateEditable]], + [@"font", [CPFont systemFontOfSize:CPFontCurrentSystemSize], [CPThemeStateTableDataView, CPThemeStateEditing]], + [@"bezel-inset", CGInsetMake(-2.0, -2.0, -2.0, -2.0), [CPThemeStateTableDataView, CPThemeStateEditing]], - [@"text-color", [CPColor colorWithCalibratedWhite:125.0 / 255.0 alpha:1.0], CPThemeStateTableDataView | CPThemeStateGroupRow], - [@"text-color", [CPColor colorWithCalibratedWhite:1.0 alpha:1.0], CPThemeStateTableDataView | CPThemeStateGroupRow | CPThemeStateSelectedDataView], - [@"text-shadow-color", [CPColor whiteColor], CPThemeStateTableDataView | CPThemeStateGroupRow], - [@"text-shadow-offset", CGSizeMake(0, 1), CPThemeStateTableDataView | CPThemeStateGroupRow], - [@"text-shadow-color", [CPColor colorWithCalibratedWhite:0.0 alpha:0.6], CPThemeStateTableDataView | CPThemeStateGroupRow | CPThemeStateSelectedDataView], - [@"font", [CPFont boldSystemFontOfSize:CPFontCurrentSystemSize], CPThemeStateTableDataView | CPThemeStateGroupRow] + [@"text-color", [CPColor colorWithCalibratedWhite:125.0 / 255.0 alpha:1.0], [CPThemeStateTableDataView, CPThemeStateGroupRow]], + [@"text-color", [CPColor whiteColor], [CPThemeStateTableDataView, CPThemeStateGroupRow, CPThemeStateSelectedDataView, CPThemeStateFirstResponder, CPThemeStateKeyWindow]], + [@"text-shadow-color", [CPColor whiteColor], [CPThemeStateTableDataView, CPThemeStateGroupRow]], + [@"text-shadow-offset", CGSizeMake(0, 1), [CPThemeStateTableDataView, CPThemeStateGroupRow]], + [@"text-shadow-color", [CPColor colorWithCalibratedWhite:0.0 alpha:0.6], [CPThemeStateTableDataView, CPThemeStateGroupRow, CPThemeStateSelectedDataView, CPThemeStateFirstResponder, CPThemeStateKeyWindow]], + [@"font", [CPFont boldSystemFontOfSize:CPFontCurrentSystemSize], [CPThemeStateTableDataView, CPThemeStateGroupRow]] ]; [self registerThemeValues:themedTextFieldValues forView:textfield]; @@ -610,25 +610,25 @@ var themedButtonValues = nil, themedRoundedTextFieldValues = [ [@"bezel-color", - bezelColor["@"], CPTextFieldStateRounded | CPThemeStateBezeled], + bezelColor["@"], [CPTextFieldStateRounded, CPThemeStateBezeled]], [@"bezel-color", - bezelFocusedColor, CPTextFieldStateRounded | CPThemeStateBezeled | CPThemeStateEditing], + bezelFocusedColor, [CPTextFieldStateRounded, CPThemeStateBezeled, CPThemeStateEditing]], [@"bezel-color", - bezelColor["disabled"], CPTextFieldStateRounded | CPThemeStateBezeled | CPThemeStateDisabled], + bezelColor["disabled"], [CPTextFieldStateRounded, CPThemeStateBezeled, CPThemeStateDisabled]], [@"font", [CPFont systemFontOfSize:12.0]], - [@"content-inset", CGInsetMake(8.0, 14.0, 6.0, 14.0), CPTextFieldStateRounded | CPThemeStateBezeled], - [@"content-inset", CGInsetMake(8.0, 14.0, 6.0, 14.0), CPTextFieldStateRounded | CPThemeStateBezeled | CPThemeStateEditing], + [@"content-inset", CGInsetMake(8.0, 14.0, 6.0, 14.0), [CPTextFieldStateRounded, CPThemeStateBezeled]], + [@"content-inset", CGInsetMake(8.0, 14.0, 6.0, 14.0), [CPTextFieldStateRounded, CPThemeStateBezeled, CPThemeStateEditing]], - [@"bezel-inset", CGInsetMake(3.0, 4.0, 3.0, 4.0), CPTextFieldStateRounded | CPThemeStateBezeled], - [@"bezel-inset", CGInsetMake(0.0, 1.0, 0.0, 1.0), CPTextFieldStateRounded | CPThemeStateBezeled | CPThemeStateEditing], + [@"bezel-inset", CGInsetMake(3.0, 4.0, 3.0, 4.0), [CPTextFieldStateRounded, CPThemeStateBezeled]], + [@"bezel-inset", CGInsetMake(0.0, 1.0, 0.0, 1.0), [CPTextFieldStateRounded, CPThemeStateBezeled, CPThemeStateEditing]], - [@"text-color", placeholderColor, CPTextFieldStateRounded | CPTextFieldStatePlaceholder], - [@"text-color", regularDisabledTextColor, CPTextFieldStateRounded | CPThemeStateBezeled | CPThemeStateDisabled], - [@"text-shadow-color", regularDisabledTextShadowColor, CPTextFieldStateRounded | CPThemeStateBezeled | CPThemeStateDisabled], + [@"text-color", placeholderColor, [CPTextFieldStateRounded, CPTextFieldStatePlaceholder]], + [@"text-color", regularDisabledTextColor, [CPTextFieldStateRounded, CPThemeStateBezeled, CPThemeStateDisabled]], + [@"text-shadow-color", regularDisabledTextShadowColor, [CPTextFieldStateRounded, CPThemeStateBezeled, CPThemeStateDisabled]], - [@"min-size", CGSizeMake(0.0, 29.0), CPTextFieldStateRounded | CPThemeStateBezeled], - [@"max-size", CGSizeMake(-1.0, 29.0), CPTextFieldStateRounded | CPThemeStateBezeled] + [@"min-size", CGSizeMake(0.0, 29.0), [CPTextFieldStateRounded, CPThemeStateBezeled]], + [@"max-size", CGSizeMake(-1.0, 29.0), [CPTextFieldStateRounded, CPThemeStateBezeled]] ]; [self registerThemeValues:themedRoundedTextFieldValues forView:textfield]; @@ -688,7 +688,7 @@ var themedButtonValues = nil, themeValues = [ [@"bezel-color", bezelColor["@"], CPThemeStateBezeled], - [@"bezel-color", bezelColor["disabled"], CPThemeStateBezeled | CPThemeStateDisabled], + [@"bezel-color", bezelColor["disabled"], [CPThemeStateBezeled, CPThemeStateDisabled]], [@"font", [CPFont boldSystemFontOfSize:13.0]], [@"text-color", [CPColor colorWithWhite:0.2 alpha:0.8]], @@ -700,8 +700,8 @@ var themedButtonValues = nil, [@"datepicker-textfield-bezel-color", [CPColor clearColor], CPThemeStateNormal], [@"datepicker-textfield-bezel-color", bezelColorDatePickerTextField, CPThemeStateSelected], - [@"datepicker-textfield-bezel-color", [CPColor clearColor], CPThemeStateNormal | CPThemeStateDisabled], - [@"datepicker-textfield-bezel-color", [CPColor clearColor], CPThemeStateSelected | CPThemeStateDisabled], + [@"datepicker-textfield-bezel-color", [CPColor clearColor], [CPThemeStateNormal, CPThemeStateDisabled]], + [@"datepicker-textfield-bezel-color", [CPColor clearColor], [CPThemeStateSelected, CPThemeStateDisabled]], [@"min-size-datepicker-textfield", CGSizeMake(6.0, 18.0)], @@ -762,12 +762,12 @@ var themedButtonValues = nil, [ [@"border-color", [CPColor colorWithCalibratedRed:217.0 / 255.0 green:217.0 / 255.0 blue:211.0 / 255.0 alpha:1.0], CPThemeStateNormal], [@"border-color", [CPColor colorWithCalibratedRed:68.0 / 255.0 green:109.0 / 255.0 blue:198.0 / 255.0 alpha:1.0], CPThemeStateSelected], - [@"border-color", [CPColor colorWithCalibratedRed:217.0 / 255.0 green:217.0 / 255.0 blue:211.0 / 255.0 alpha:0.5], CPThemeStateNormal | CPThemeStateDisabled], - [@"border-color", [CPColor colorWithCalibratedRed:68.0 / 255.0 green:109.0 / 255.0 blue:198.0 / 255.0 alpha:0.5], CPThemeStateSelected | CPThemeStateDisabled], + [@"border-color", [CPColor colorWithCalibratedRed:217.0 / 255.0 green:217.0 / 255.0 blue:211.0 / 255.0 alpha:0.5], [CPThemeStateNormal, CPThemeStateDisabled]], + [@"border-color", [CPColor colorWithCalibratedRed:68.0 / 255.0 green:109.0 / 255.0 blue:198.0 / 255.0 alpha:0.5], [CPThemeStateSelected, CPThemeStateDisabled]], [@"bezel-color-calendar", [CPColor whiteColor]], [@"bezel-color-calendar", [CPColor colorWithCalibratedRed:87.0 / 255.0 green:128.0 / 255.0 blue:216.0 / 255.0 alpha:1.0], CPThemeStateSelected], - [@"bezel-color-calendar", [CPColor colorWithCalibratedRed:87.0 / 255.0 green:128.0 / 255.0 blue:216.0 / 255.0 alpha:0.5], CPThemeStateSelected | CPThemeStateDisabled], + [@"bezel-color-calendar", [CPColor colorWithCalibratedRed:87.0 / 255.0 green:128.0 / 255.0 blue:216.0 / 255.0 alpha:0.5], [CPThemeStateSelected, CPThemeStateDisabled]], [@"bezel-color-clock", clockImageColor], [@"bezel-color-clock", clockImageColorDisabled, CPThemeStateDisabled], @@ -811,15 +811,15 @@ var themedButtonValues = nil, [@"tile-text-shadow-offset", CGSizeMake(0,1), CPThemeStateHighlighted], [@"tile-font", [CPFont systemFontOfSize:10.0], CPThemeStateHighlighted], - [@"tile-text-color", [CPColor colorWithCalibratedRed:87.0 / 255.0 green:128.0 / 255.0 blue:216.0 / 255.0 alpha:0.5], CPThemeStateHighlighted | CPThemeStateDisabled], - [@"tile-text-shadow-color", [CPColor whiteColor], CPThemeStateHighlighted | CPThemeStateDisabled], - [@"tile-text-shadow-offset", CGSizeMake(0,1), CPThemeStateHighlighted | CPThemeStateDisabled], - [@"tile-font", [CPFont systemFontOfSize:10.0], CPThemeStateHighlighted | CPThemeStateDisabled], + [@"tile-text-color", [CPColor colorWithCalibratedRed:87.0 / 255.0 green:128.0 / 255.0 blue:216.0 / 255.0 alpha:0.5], [CPThemeStateHighlighted, CPThemeStateDisabled]], + [@"tile-text-shadow-color", [CPColor whiteColor], [CPThemeStateHighlighted, CPThemeStateDisabled]], + [@"tile-text-shadow-offset", CGSizeMake(0,1), [CPThemeStateHighlighted, CPThemeStateDisabled]], + [@"tile-font", [CPFont systemFontOfSize:10.0], [CPThemeStateHighlighted, CPThemeStateDisabled]], - [@"tile-text-color", [CPColor whiteColor], CPThemeStateHighlighted | CPThemeStateSelected], - [@"tile-text-shadow-color", [CPColor colorWithCalibratedRed:0.0 / 255.0 green:0.0 / 255.0 blue:0.0 / 255.0 alpha:0.2], CPThemeStateHighlighted | CPThemeStateSelected], - [@"tile-text-shadow-offset", CGSizeMake(0,1), CPThemeStateHighlighted | CPThemeStateSelected], - [@"tile-font", [CPFont systemFontOfSize:10.0], CPThemeStateHighlighted | CPThemeStateSelected], + [@"tile-text-color", [CPColor whiteColor], [CPThemeStateHighlighted, CPThemeStateSelected]], + [@"tile-text-shadow-color", [CPColor colorWithCalibratedRed:0.0 / 255.0 green:0.0 / 255.0 blue:0.0 / 255.0 alpha:0.2], [CPThemeStateHighlighted, CPThemeStateSelected]], + [@"tile-text-shadow-offset", CGSizeMake(0,1), [CPThemeStateHighlighted, CPThemeStateSelected]], + [@"tile-font", [CPFont systemFontOfSize:10.0], [CPThemeStateHighlighted, CPThemeStateSelected]], [@"tile-text-color", [CPColor whiteColor], CPThemeStateSelected], [@"tile-text-shadow-color", [CPColor colorWithCalibratedRed:0.0 / 255.0 green:0.0 / 255.0 blue:0.0 / 255.0 alpha:0.2], CPThemeStateSelected], @@ -831,15 +831,15 @@ var themedButtonValues = nil, [@"tile-text-shadow-offset", CGSizeMake(0,1), CPThemeStateDisabled], [@"tile-font", [CPFont systemFontOfSize:10.0], CPThemeStateDisabled], - [@"tile-text-color", [CPColor colorWithCalibratedRed:255.0 / 255.0 green:255.0 / 255.0 blue:255.0 / 255.0 alpha:0.5], CPThemeStateDisabled | CPThemeStateSelected | CPThemeStateHighlighted], - [@"tile-text-shadow-color", [CPColor colorWithCalibratedRed:0.0 / 255.0 green:0.0 / 255.0 blue:0.0 / 255.0 alpha:0.2], CPThemeStateDisabled | CPThemeStateSelected | CPThemeStateHighlighted], - [@"tile-text-shadow-offset", CGSizeMake(0,1), CPThemeStateDisabled | CPThemeStateSelected | CPThemeStateHighlighted], - [@"tile-font", [CPFont systemFontOfSize:10.0], CPThemeStateDisabled | CPThemeStateSelected | CPThemeStateHighlighted], + [@"tile-text-color", [CPColor colorWithCalibratedRed:255.0 / 255.0 green:255.0 / 255.0 blue:255.0 / 255.0 alpha:0.5], [CPThemeStateDisabled, CPThemeStateSelected, CPThemeStateHighlighted]], + [@"tile-text-shadow-color", [CPColor colorWithCalibratedRed:0.0 / 255.0 green:0.0 / 255.0 blue:0.0 / 255.0 alpha:0.2], [CPThemeStateDisabled, CPThemeStateSelected, CPThemeStateHighlighted]], + [@"tile-text-shadow-offset", CGSizeMake(0,1), [CPThemeStateDisabled, CPThemeStateSelected, CPThemeStateHighlighted]], + [@"tile-font", [CPFont systemFontOfSize:10.0], [CPThemeStateDisabled, CPThemeStateSelected, CPThemeStateHighlighted]], - [@"tile-text-color", [CPColor colorWithCalibratedRed:255.0 / 255.0 green:255.0 / 255.0 blue:255.0 / 255.0 alpha:0.5], CPThemeStateDisabled | CPThemeStateSelected], - [@"tile-text-shadow-color", [CPColor colorWithCalibratedRed:0.0 / 255.0 green:0.0 / 255.0 blue:0.0 / 255.0 alpha:0.2], CPThemeStateDisabled | CPThemeStateSelected], - [@"tile-text-shadow-offset", CGSizeMake(0,1), CPThemeStateDisabled | CPThemeStateSelected], - [@"tile-font", [CPFont systemFontOfSize:10.0], CPThemeStateDisabled | CPThemeStateSelected], + [@"tile-text-color", [CPColor colorWithCalibratedRed:255.0 / 255.0 green:255.0 / 255.0 blue:255.0 / 255.0 alpha:0.5], [CPThemeStateDisabled, CPThemeStateSelected]], + [@"tile-text-shadow-color", [CPColor colorWithCalibratedRed:0.0 / 255.0 green:0.0 / 255.0 blue:0.0 / 255.0 alpha:0.2], [CPThemeStateDisabled, CPThemeStateSelected]], + [@"tile-text-shadow-offset", CGSizeMake(0,1), [CPThemeStateDisabled, CPThemeStateSelected]], + [@"tile-font", [CPFont systemFontOfSize:10.0], [CPThemeStateDisabled, CPThemeStateSelected]], [@"arrow-image-left", arrowImageLeft], [@"arrow-image-right", arrowImageRight], @@ -888,7 +888,7 @@ var themedButtonValues = nil, [ [@"bezel-inset", CGInsetMakeZero()], [@"bezel-inset", CGInsetMake(3.0, 4.0, 3.0, 4.0), CPThemeStateBezeled], - [@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateBezeled | CPThemeStateEditing], + [@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), [CPThemeStateBezeled, CPThemeStateEditing]], [@"editor-inset", CGInsetMake(3.0, 0.0, 0.0, 0.0)], @@ -902,7 +902,7 @@ var themedButtonValues = nil, [@"content-inset", CGInsetMake(4.0, 8.0, 4.0, 8.0), CPThemeStateBezeled], // Bezeled token field with no tokens - [@"content-inset", CGInsetMake(8.0, 8.0, 7.0, 8.0), CPThemeStateBezeled | CPTextFieldStatePlaceholder] + [@"content-inset", CGInsetMake(8.0, 8.0, 7.0, 8.0), [CPThemeStateBezeled, CPTextFieldStatePlaceholder]] ]; [self registerThemeValues:overrides forView:tokenfield inherit:themedTextFieldValues]; @@ -930,8 +930,8 @@ var themedButtonValues = nil, themeValues = [ [@"bezel-color", bezelColor["@"], CPThemeStateBezeled], - [@"bezel-color", bezelColor["highlighted"], CPThemeStateBezeled | CPThemeStateHighlighted], - [@"bezel-color", bezelColor["disabled"], CPThemeStateBezeled | CPThemeStateDisabled], + [@"bezel-color", bezelColor["highlighted"], [CPThemeStateBezeled, CPThemeStateHighlighted]], + [@"bezel-color", bezelColor["disabled"], [CPThemeStateBezeled, CPThemeStateDisabled]], [@"text-color", textColor], [@"text-color", textHighlightedColor, CPThemeStateHighlighted], @@ -964,8 +964,8 @@ var themedButtonValues = nil, [@"content-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateNormal], [@"bezel-color", nil, CPThemeStateBordered], - [@"bezel-color", arrowImage, CPThemeStateBordered | CPThemeStateHovered], - [@"bezel-color", arrowImageHiglighted, CPThemeStateBordered | CPThemeStateHovered | CPThemeStateHighlighted], + [@"bezel-color", arrowImage, [CPThemeStateBordered, CPThemeStateHovered]], + [@"bezel-color", arrowImageHiglighted, [CPThemeStateBordered, CPThemeStateHovered, CPThemeStateHighlighted]], [@"min-size", CGSizeMake(7.0, 6.0)], [@"max-size", CGSizeMake(7.0, 6.0)], @@ -987,15 +987,15 @@ var themedButtonValues = nil, themeValues = [ - [@"bezel-color", bezelColor, CPThemeStateBordered | CPThemeStateHovered], - [@"bezel-color", [bezelColor colorWithAlphaComponent:0], CPThemeStateBordered | CPThemeStateDisabled], - [@"bezel-color", bezelHighlightedColor, CPThemeStateBordered | CPThemeStateHighlighted], + [@"bezel-color", bezelColor, [CPThemeStateBordered, CPThemeStateHovered]], + [@"bezel-color", [bezelColor colorWithAlphaComponent:0], [CPThemeStateBordered, CPThemeStateDisabled]], + [@"bezel-color", bezelHighlightedColor, [CPThemeStateBordered, CPThemeStateHighlighted]], [@"min-size", CGSizeMake(8.0, 8.0)], [@"max-size", CGSizeMake(8.0, 8.0)], [@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateBordered], - [@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateBordered | CPThemeStateHighlighted], + [@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), [CPThemeStateBordered, CPThemeStateHighlighted]], [@"offset", CGPointMake(16, 6), CPThemeStateBordered] ]; @@ -1049,36 +1049,36 @@ var themedButtonValues = nil, overrides = [ - [@"bezel-color", bezelColor["@"], CPThemeStateBezeled | CPComboBoxStateButtonBordered], - [@"bezel-color", bezelFocusedColor, CPThemeStateBezeled | CPComboBoxStateButtonBordered | CPThemeStateEditing], - [@"bezel-color", bezelColor["disabled"], CPThemeStateBezeled | CPComboBoxStateButtonBordered | CPThemeStateDisabled], + [@"bezel-color", bezelColor["@"], [CPThemeStateBezeled, CPComboBoxStateButtonBordered]], + [@"bezel-color", bezelFocusedColor, [CPThemeStateBezeled, CPComboBoxStateButtonBordered, CPThemeStateEditing]], + [@"bezel-color", bezelColor["disabled"], [CPThemeStateBezeled, CPComboBoxStateButtonBordered, CPThemeStateDisabled]], [@"bezel-color", bezelNoBorderColor["@"], CPThemeStateBezeled], - [@"bezel-color", bezelNoBorderFocusedColor, CPThemeStateBezeled | CPThemeStateEditing], - [@"bezel-color", bezelNoBorderColor["disabled"], CPThemeStateBezeled | CPThemeStateDisabled], + [@"bezel-color", bezelNoBorderFocusedColor, [CPThemeStateBezeled, CPThemeStateEditing]], + [@"bezel-color", bezelNoBorderColor["disabled"], [CPThemeStateBezeled, CPThemeStateDisabled]], [@"border-inset", CGInsetMake(3.0, 3.0, 3.0, 3.0), CPThemeStateBezeled], - [@"bezel-inset", CGInsetMake(0.0, 1.0, 0.0, 1.0), CPThemeStateBezeled | CPThemeStateEditing | CPComboBoxStateButtonBordered], - [@"bezel-inset", CGInsetMake(3.0, 4.0, 3.0, 4.0), CPThemeStateBezeled | CPThemeStateDisabled | CPComboBoxStateButtonBordered], + [@"bezel-inset", CGInsetMake(0.0, 1.0, 0.0, 1.0), [CPThemeStateBezeled, CPThemeStateEditing, CPComboBoxStateButtonBordered]], + [@"bezel-inset", CGInsetMake(3.0, 4.0, 3.0, 4.0), [CPThemeStateBezeled, CPThemeStateDisabled, CPComboBoxStateButtonBordered]], - [@"bezel-inset", CGInsetMake(0.0, 4.0, 0.0, 1.0), CPThemeStateBezeled | CPThemeStateEditing], - [@"bezel-inset", CGInsetMake(3.0, 5.0, 3.0, 4.0), CPThemeStateBezeled | CPThemeStateDisabled], + [@"bezel-inset", CGInsetMake(0.0, 4.0, 0.0, 1.0), [CPThemeStateBezeled, CPThemeStateEditing]], + [@"bezel-inset", CGInsetMake(3.0, 5.0, 3.0, 4.0), [CPThemeStateBezeled, CPThemeStateDisabled]], // The right border inset has to make room for the focus ring and popup button - [@"content-inset", CGInsetMake(9.0, 26.0, 7.0, 10.0), CPThemeStateBezeled | CPComboBoxStateButtonBordered], + [@"content-inset", CGInsetMake(9.0, 26.0, 7.0, 10.0), [CPThemeStateBezeled, CPComboBoxStateButtonBordered]], [@"content-inset", CGInsetMake(9.0, 26.0, 7.0, 10.0), CPThemeStateBezeled], - [@"content-inset", CGInsetMake(9.0, 24.0, 7.0, 10.0), CPThemeStateBezeled | CPThemeStateEditing], + [@"content-inset", CGInsetMake(9.0, 24.0, 7.0, 10.0), [CPThemeStateBezeled, CPThemeStateEditing]], - [@"popup-button-size", CGSizeMake(21.0, 23.0), CPThemeStateBezeled | CPComboBoxStateButtonBordered], + [@"popup-button-size", CGSizeMake(21.0, 23.0), [CPThemeStateBezeled, CPComboBoxStateButtonBordered]], [@"popup-button-size", CGSizeMake(17.0, 23.0), CPThemeStateBezeled], // Because combo box uses a three-part bezel, the height is fixed [@"min-size", CGSizeMake(0, 31.0)], [@"max-size", CGSizeMake(-1, 31.0)], - [@"text-color", regularDisabledTextColor, CPThemeStateBordered | CPThemeStateDisabled], - [@"text-shadow-color", regularDisabledTextShadowColor, CPThemeStateBordered | CPThemeStateDisabled], + [@"text-color", regularDisabledTextColor, [CPThemeStateBordered, CPThemeStateDisabled]], + [@"text-shadow-color", regularDisabledTextShadowColor, [CPThemeStateBordered, CPThemeStateDisabled]], ]; [self registerThemeValues:overrides forView:combo inherit:themedTextFieldValues]; @@ -1105,10 +1105,10 @@ var themedButtonValues = nil, [@"image", imageNormal, CPThemeStateNormal], [@"image", imageSelected, CPThemeStateSelected], - [@"image", imageSelectedHighlighted, CPThemeStateSelected | CPThemeStateHighlighted], + [@"image", imageSelectedHighlighted, [CPThemeStateSelected, CPThemeStateHighlighted]], [@"image", imageHighlighted, CPThemeStateHighlighted], [@"image", imageDisabled, CPThemeStateDisabled], - [@"image", imageSelectedDisabled, CPThemeStateSelected | CPThemeStateDisabled], + [@"image", imageSelectedDisabled, [CPThemeStateSelected, CPThemeStateDisabled]], [@"image-offset", CPRadioImageOffset], [@"text-color", regularDisabledTextColor, CPThemeStateDisabled], @@ -1140,10 +1140,10 @@ var themedButtonValues = nil, [@"image", imageNormal, CPThemeStateNormal], [@"image", imageSelected, CPThemeStateSelected], - [@"image", imageSelectedHighlighted, CPThemeStateSelected | CPThemeStateHighlighted], + [@"image", imageSelectedHighlighted, [CPThemeStateSelected, CPThemeStateHighlighted]], [@"image", imageHighlighted, CPThemeStateHighlighted], [@"image", imageDisabled, CPThemeStateDisabled], - [@"image", imageSelectedDisabled, CPThemeStateSelected | CPThemeStateDisabled], + [@"image", imageSelectedDisabled, [CPThemeStateSelected, CPThemeStateDisabled]], [@"image-offset", CPCheckBoxImageOffset], [@"font", [CPFont systemFontOfSize:CPFontCurrentSystemSize], CPThemeStateNormal], @@ -1174,8 +1174,8 @@ var themedButtonValues = nil, themeValues = [ [@"image", mixedImage, CPButtonStateMixed], - [@"image", mixedHighlightedImage, CPButtonStateMixed | CPThemeStateHighlighted], - [@"image", mixedDisabledImage, CPButtonStateMixed | CPThemeStateDisabled], + [@"image", mixedHighlightedImage, [CPButtonStateMixed, CPThemeStateHighlighted]], + [@"image", mixedDisabledImage, [CPButtonStateMixed, CPThemeStateDisabled]], [@"image-offset", CPCheckBoxImageOffset, CPButtonStateMixed], [@"max-size", CGSizeMake(-1.0, -1.0)] ]; @@ -1238,29 +1238,29 @@ var themedButtonValues = nil, [ [@"center-segment-bezel-color", centerBezelColor, CPThemeStateNormal], [@"center-segment-bezel-color", inactiveCenterBezelColor, CPThemeStateDisabled], - [@"center-segment-bezel-color", inactiveHighlightedCenterBezelColor, CPThemeStateSelected | CPThemeStateDisabled], + [@"center-segment-bezel-color", inactiveHighlightedCenterBezelColor, [CPThemeStateSelected, CPThemeStateDisabled]], [@"center-segment-bezel-color", centerHighlightedBezelColor, CPThemeStateSelected], [@"center-segment-bezel-color", pushedCenterBezelColor, CPThemeStateHighlighted], - [@"center-segment-bezel-color", pushedHighlightedCenterBezelColor, CPThemeStateHighlighted | CPThemeStateSelected], + [@"center-segment-bezel-color", pushedHighlightedCenterBezelColor, [CPThemeStateHighlighted, CPThemeStateSelected]], [@"divider-bezel-color", dividerBezelColor, CPThemeStateNormal], [@"divider-bezel-color", inactiveDividerBezelColor, CPThemeStateDisabled], - [@"divider-bezel-color", inactiveHighlightedDividerBezelColor, CPThemeStateSelected | CPThemeStateDisabled], + [@"divider-bezel-color", inactiveHighlightedDividerBezelColor, [CPThemeStateSelected, CPThemeStateDisabled]], [@"divider-bezel-color", dividerHighlightedBezelColor, CPThemeStateSelected], [@"left-segment-bezel-color", leftBezelColor, CPThemeStateNormal], [@"left-segment-bezel-color", inactiveLeftBezelColor, CPThemeStateDisabled], - [@"left-segment-bezel-color", inactiveHighlightedLeftBezelColor, CPThemeStateSelected | CPThemeStateDisabled], + [@"left-segment-bezel-color", inactiveHighlightedLeftBezelColor, [CPThemeStateSelected, CPThemeStateDisabled]], [@"left-segment-bezel-color", leftHighlightedBezelColor, CPThemeStateSelected], [@"left-segment-bezel-color", pushedLeftBezelColor, CPThemeStateHighlighted], - [@"left-segment-bezel-color", pushedHighlightedLeftBezelColor, CPThemeStateHighlighted | CPThemeStateSelected], + [@"left-segment-bezel-color", pushedHighlightedLeftBezelColor, [CPThemeStateHighlighted, CPThemeStateSelected]], [@"right-segment-bezel-color", rightBezelColor, CPThemeStateNormal], [@"right-segment-bezel-color", inactiveRightBezelColor, CPThemeStateDisabled], - [@"right-segment-bezel-color", inactiveHighlightedRightBezelColor, CPThemeStateSelected | CPThemeStateDisabled], + [@"right-segment-bezel-color", inactiveHighlightedRightBezelColor, [CPThemeStateSelected, CPThemeStateDisabled]], [@"right-segment-bezel-color", rightHighlightedBezelColor, CPThemeStateSelected], [@"right-segment-bezel-color", pushedRightBezelColor, CPThemeStateHighlighted], - [@"right-segment-bezel-color", pushedHighlightedRightBezelColor, CPThemeStateHighlighted | CPThemeStateSelected], + [@"right-segment-bezel-color", pushedHighlightedRightBezelColor, [CPThemeStateHighlighted, CPThemeStateSelected]], [@"content-inset", CGInsetMake(0.0, 4.0, 0.0, 4.0), CPThemeStateNormal], [@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateNormal], @@ -1272,14 +1272,14 @@ var themedButtonValues = nil, // The "default" button state is the same theme color as the "selected" segmented control state, so we can use // the same text theme values. [@"text-color", defaultTextColor, CPThemeStateSelected], - [@"text-color", defaultDisabledTextColor, CPThemeStateDisabled | CPThemeStateSelected], + [@"text-color", defaultDisabledTextColor, [CPThemeStateDisabled, CPThemeStateSelected]], [@"text-shadow-color", regularTextShadowColor], [@"text-shadow-color", regularDisabledTextShadowColor, CPThemeStateDisabled], - [@"text-shadow-color", defaultDisabledTextShadowColor, CPThemeStateDisabled | CPThemeStateSelected], + [@"text-shadow-color", defaultDisabledTextShadowColor, [CPThemeStateDisabled, CPThemeStateSelected]], [@"text-shadow-color", [CPColor colorWithCalibratedWhite:0.0 alpha:0.2], CPThemeStateSelected], [@"text-shadow-offset", CGSizeMake(0.0, 1.0)], [@"text-shadow-offset", CGSizeMake(0.0, 1.0), CPThemeStateSelected], - [@"text-shadow-offset", CGSizeMake(0.0, 0.0), CPThemeStateSelected | CPThemeStateDisabled], + [@"text-shadow-offset", CGSizeMake(0.0, 0.0), [CPThemeStateSelected, CPThemeStateDisabled]], [@"line-break-mode", CPLineBreakByTruncatingTail], [@"divider-thickness", 1.0], @@ -1365,7 +1365,7 @@ var themedButtonValues = nil, [ [@"track-width", 5.0], [@"track-color", trackColor, CPThemeStateVertical], - [@"track-color", trackDisabledColor, CPThemeStateVertical | CPThemeStateDisabled], + [@"track-color", trackDisabledColor, [CPThemeStateVertical, CPThemeStateDisabled]], [@"knob-size", CGSizeMake(21.0, 21.0)], [@"knob-color", knobColor], @@ -1400,12 +1400,12 @@ var themedButtonValues = nil, themedCircularSliderValues = [ [@"track-color", trackColor, CPThemeStateCircular], - [@"track-color", trackDisabledColor, CPThemeStateCircular | CPThemeStateDisabled], + [@"track-color", trackDisabledColor, [CPThemeStateCircular, CPThemeStateDisabled]], [@"knob-size", CGSizeMake(5.0, 5.0), CPThemeStateCircular], [@"knob-color", knobColor, CPThemeStateCircular], - [@"knob-color", knobHighlightedColor, CPThemeStateCircular | CPThemeStateHighlighted], - [@"knob-color", knobDisabledColor, CPThemeStateCircular | CPThemeStateDisabled] + [@"knob-color", knobHighlightedColor, [CPThemeStateCircular, CPThemeStateHighlighted]], + [@"knob-color", knobDisabledColor, [CPThemeStateCircular, CPThemeStateDisabled]] ]; [self registerThemeValues:themedCircularSliderValues forView:slider]; @@ -1500,7 +1500,7 @@ var themedButtonValues = nil, [@"background-color", pressed, CPThemeStateHighlighted], [@"background-color", highlighted, CPThemeStateSelected], - [@"background-color", highlightedPressed, CPThemeStateHighlighted | CPThemeStateSelected] + [@"background-color", highlightedPressed, [CPThemeStateHighlighted, CPThemeStateSelected]] ]; [self registerThemeValues:themedColumnHeaderValues forView:header]; @@ -1708,10 +1708,10 @@ var themedButtonValues = nil, [ [@"bezel-color-up-button", bezelUp["@"], CPThemeStateBordered], [@"bezel-color-down-button", bezelDown["@"], CPThemeStateBordered], - [@"bezel-color-up-button", bezelUp["disabled"], CPThemeStateBordered | CPThemeStateDisabled], - [@"bezel-color-down-button", bezelDown["disabled"], CPThemeStateBordered | CPThemeStateDisabled], - [@"bezel-color-up-button", bezelUp["highlighted"], CPThemeStateBordered | CPThemeStateHighlighted], - [@"bezel-color-down-button", bezelDown["highlighted"], CPThemeStateBordered | CPThemeStateHighlighted], + [@"bezel-color-up-button", bezelUp["disabled"], [CPThemeStateBordered, CPThemeStateDisabled]], + [@"bezel-color-down-button", bezelDown["disabled"], [CPThemeStateBordered, CPThemeStateDisabled]], + [@"bezel-color-up-button", bezelUp["highlighted"], [CPThemeStateBordered, CPThemeStateHighlighted]], + [@"bezel-color-down-button", bezelDown["highlighted"], [CPThemeStateBordered, CPThemeStateHighlighted]], [@"min-size", CGSizeMake(25.0, 25.0)], [@"up-button-size", CGSizeMake(25.0, 13.0)], [@"down-button-size", CGSizeMake(25.0, 12.0)] @@ -1800,9 +1800,9 @@ var themedButtonValues = nil, [@"content-border-inset", CGInsetMake(5.0, 5.0, 4.0, 5.0), CPThemeStateBordered], [@"content-border-color", contentBorderColor, CPThemeStateBordered], - [@"bezel-color", bezelColor["highlighted"], CPThemeStateBordered | CPThemeStateHighlighted], + [@"bezel-color", bezelColor["highlighted"], [CPThemeStateBordered, CPThemeStateHighlighted]], - [@"bezel-color", bezelColor["disabled"], CPThemeStateBordered | CPThemeStateDisabled] + [@"bezel-color", bezelColor["disabled"], [CPThemeStateBordered, CPThemeStateDisabled]] ]; [self registerThemeValues:themedColorWellValues forView:colorWell]; @@ -2121,6 +2121,11 @@ var themedButtonValues = nil, orientation: PatternIsHorizontal }), + /*solidColor = CustomDrawView(function(drawView) { + var gradient = [[CPGradient alloc] initWithStartingColor:[CPColor colorWithCalibratedRed:0.902 green:0.902 blue:0.902 alpha:1] endingColor:[CPColor colorWithCalibratedRed:0.878 green:0.878 blue:0.878 alpha:1]]; + [gradient drawInRect:[drawView bounds] angle:90]; + }),*/ + solidColor = PatternColor( "window-standard-head-solid{position}.png", { @@ -2627,13 +2632,13 @@ var themedButtonValues = nil, [ [@"image", imageNormal, CPThemeStateNormal], [@"image", imageSelected, CPThemeStateSelected], - [@"image", imageSelectedHighlighted, CPThemeStateSelected | CPThemeStateHighlighted], + [@"image", imageSelectedHighlighted, [CPThemeStateSelected, CPThemeStateHighlighted]], [@"image", imageHighlighted, CPThemeStateHighlighted], [@"image", imageDisabled, CPThemeStateDisabled], - [@"image", imageSelectedDisabled, CPThemeStateSelected | CPThemeStateDisabled], + [@"image", imageSelectedDisabled, [CPThemeStateSelected, CPThemeStateDisabled]], [@"image", mixedImage, CPButtonStateMixed], - [@"image", mixedHighlightedImage, CPButtonStateMixed | CPThemeStateHighlighted], - [@"image", mixedDisabledImage, CPButtonStateMixed | CPThemeStateDisabled] + [@"image", mixedHighlightedImage, [CPButtonStateMixed, CPThemeStateHighlighted]], + [@"image", mixedDisabledImage, [CPButtonStateMixed, CPThemeStateDisabled]] ]; [self registerThemeValues:[self defaultThemeOverridesAddedTo:hudSpecific] forView:button inherit:themedCheckBoxValues]; @@ -2667,10 +2672,10 @@ var themedButtonValues = nil, [ [@"image", imageNormal, CPThemeStateNormal], [@"image", imageSelected, CPThemeStateSelected], - [@"image", imageSelectedHighlighted, CPThemeStateSelected | CPThemeStateHighlighted], + [@"image", imageSelectedHighlighted, [CPThemeStateSelected, CPThemeStateHighlighted]], [@"image", imageHighlighted, CPThemeStateHighlighted], [@"image", imageDisabled, CPThemeStateDisabled], - [@"image", imageSelectedDisabled, CPThemeStateSelected | CPThemeStateDisabled] + [@"image", imageSelectedDisabled, [CPThemeStateSelected, CPThemeStateDisabled]] ]; [self registerThemeValues:[self defaultThemeOverridesAddedTo:hudSpecific] forView:button inherit:themedRadioButtonValues]; diff --git a/AppKit/_CPAutocompleteMenu.j b/AppKit/_CPAutocompleteMenu.j index 5dc6121f9..cf25c025d 100644 --- a/AppKit/_CPAutocompleteMenu.j +++ b/AppKit/_CPAutocompleteMenu.j @@ -171,9 +171,9 @@ var _CPAutocompleteMenuMaximumHeight = 307; var dataView = [tableColumn dataView], fontNormal = [dataView valueForThemeAttribute:@"font" inState:CPThemeStateTableDataView], - fontSelected = [dataView valueForThemeAttribute:@"font" inState:CPThemeStateTableDataView | CPThemeStateSelectedDataView], + fontSelected = [dataView valueForThemeAttribute:@"font" inState:[CPThemeStateTableDataView, CPThemeStateSelectedDataView]], contentInsetNormal = [dataView valueForThemeAttribute:@"content-inset" inState:CPThemeStateTableDataView], - contentInsetSelected = [dataView valueForThemeAttribute:@"content-inset" inState:CPThemeStateTableDataView | CPThemeStateSelectedDataView]; + contentInsetSelected = [dataView valueForThemeAttribute:@"content-inset" inState:[CPThemeStateTableDataView, CPThemeStateSelectedDataView]]; var mergedString = contentArray.join("\n"); diff --git a/AppKit/_CPPopUpList.j b/AppKit/_CPPopUpList.j index b6e400ff0..f69f68f0a 100644 --- a/AppKit/_CPPopUpList.j +++ b/AppKit/_CPPopUpList.j @@ -863,6 +863,15 @@ var _CPPopUpListDataSourceKey = @"_CPPopUpListDataSourceKey", return self; } +/*! + Returns \c YES if the receiver is able to receive input events + even when a modal session is active. +*/ +- (BOOL)worksWhenModal +{ + return YES; +} + - (void)sendEvent:(CPEvent)anEvent { var type = [anEvent type]; diff --git a/AppKit/_CPPopoverWindow.j b/AppKit/_CPPopoverWindow.j index 2f7f5b4e4..8ee818d79 100644 --- a/AppKit/_CPPopoverWindow.j +++ b/AppKit/_CPPopoverWindow.j @@ -30,14 +30,19 @@ @class CPPopover @global CPApp +@global CPPopoverBehaviorSemitransient +@global CPPopoverBehaviorTransient +@global CPPopoverBehaviorApplicationDefined CPClosableOnBlurWindowMask = 1 << 4; CPPopoverAppearanceMinimal = 0; CPPopoverAppearanceHUD = 1; -var _CPPopoverWindow_shouldClose_ = 1 << 0, - _CPPopoverWindow_didClose_ = 1 << 1, - _CPPopoverWindow_didShow_ = 1 << 2; +// we don't start from 1 because CPWindow and so CPPanel already +// has this delegate bitmask identifier for 1, 2 and 3. +var _CPPopoverWindow_shouldClose_ = 1 << 4, + _CPPopoverWindow_didClose_ = 1 << 5, + _CPPopoverWindow_didShow_ = 1 << 6; /*! @@ -52,12 +57,19 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0, id _targetView @accessors(property=targetView); int _appearance @accessors(getter=appearance); BOOL _isClosing @accessors(property=isClosing); + BOOL _isOpening @accessors(property=isOpening); BOOL _closeOnBlur; BOOL _browserAnimates; + BOOL _isObservingFrame; BOOL _shouldPerformAnimation; CPInteger _implementedDelegateMethods; + CPWindow _targetWindow; JSObject _orderOutTransitionFunction; + JSObject _transitionCompleteFunction; + JSObject _orderFrontTransitionFunction; + + } @@ -106,7 +118,7 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0, _browserAnimates = [self browserSupportsAnimation]; _shouldPerformAnimation = YES; _orderOutTransitionFunction = function() { [self _orderOutRecursively:YES]; }; - + _isOpening = YES; [self setStyleMask:aStyleMask]; [self setBecomesKeyOnlyIfNeeded:YES]; @@ -145,19 +157,45 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0, _delegate = aDelegate; _implementedDelegateMethods = 0; - if ([_delegate respondsToSelector:@selector(popoverWindowShouldClose:)]) + if ([_delegate respondsToSelector:@selector(_popoverWindowShouldClose:)]) _implementedDelegateMethods |= _CPPopoverWindow_shouldClose_; - if ([_delegate respondsToSelector:@selector(popoverWindowDidClose:)]) + if ([_delegate respondsToSelector:@selector(_popoverWindowDidClose:)]) _implementedDelegateMethods |= _CPPopoverWindow_didClose_; - if ([_delegate respondsToSelector:@selector(popoverWindowDidShow:)]) + if ([_delegate respondsToSelector:@selector(_popoverWindowDidShow:)]) _implementedDelegateMethods |= _CPPopoverWindow_didShow_; } #pragma mark - #pragma mark Observer +/*! + @ignore + Adds self as frame observer if not already observing it +*/ +- (void)_addFrameObserver +{ + if (_isObservingFrame) + return; + + _isObservingFrame = YES; + [_targetView addObserver:self forKeyPath:@"frame" options:0 context:nil]; +} + +/*! + @ignore + Removes self as frame observer if already observing it +*/ +- (void)_removeFrameObserver +{ + if (!_isObservingFrame) + return; + + _isObservingFrame = NO; + [_targetView removeObserver:self forKeyPath:@"frame"]; +} + /*! Update the _CPPopoverWindow frame if a resize event is observed. */ @@ -329,7 +367,7 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0, if (positioningView !== _targetView) { [[_targetView window] removeChildWindow:self]; - [_targetView removeObserver:self forKeyPath:@"frame"]; + [self _removeFrameObserver]; _targetView = positioningView; } @@ -343,6 +381,8 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0, if (![targetWindow isFullPlatformWindow]) [[_targetView window] addChildWindow:self ordered:CPWindowAbove]; + _targetWindow = targetWindow; + if (!wasVisible) [self _trapNextMouseDown]; } @@ -364,6 +404,24 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0, return CPBrowserStyleProperty('transition') && CPBrowserStyleProperty('transitionend'); } +/*! + @ignore +*/ +- (void)updateFrameWithSize:(CGSize)aSize +{ + var rect = CGRectMakeZero(); + rect.size = aSize; + rect.origin = [[self contentView] frameOrigin]; + + [self setFrame:[self frameRectForContentRect:rect]]; + + if ([self isVisible]) + { + var point = [self computeOriginFromRect:[_targetView bounds] ofView:_targetView preferredEdge:[_windowView preferredEdge]]; + [self setFrameOrigin:point]; + } +} + #pragma mark - #pragma mark Actions @@ -382,6 +440,23 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0, #pragma mark - #pragma mark Overrides +/*! + @ignore +*/ +- (void)cancelOperation:(id)sender +{ + if ([[CPApp currentEvent] _couldBeKeyEquivalent] && [self performKeyEquivalent:[CPApp currentEvent]]) + return; + + [self cancel:self]; +} + +- (void)cancel:(id)sender +{ + if (_closeOnBlur) + [[self delegate] performClose:sender]; +} + /*! @ignore Show animation if necessary. @@ -403,6 +478,7 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0, { if (![self isKeyWindow]) { + _isOpening = YES; [super orderFront:aSender]; if (_animates && _browserAnimates && _shouldPerformAnimation) @@ -446,10 +522,10 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0, [self setCSS3Property:@"Transform" value:@"scale(1.1)"]; [self setCSS3Property:@"Transition" value:CPBrowserCSSProperty('transform') + @" 200ms ease-in"]; - var orderFrontTransitionFunction = function() + _orderFrontTransitionFunction = function() { #if PLATFORM(DOM) - _DOMElement.removeEventListener(CPBrowserStyleProperty('transitionend'), orderFrontTransitionFunction, YES); + _DOMElement.removeEventListener(CPBrowserStyleProperty('transitionend'), _orderFrontTransitionFunction, YES); #endif // Now set up the pop-in to normal size transition. @@ -457,10 +533,10 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0, [self setCSS3Property:@"Transform" value:@"scale(1)"]; [self setCSS3Property:@"Transition" value:CPBrowserCSSProperty('transform') + @" 50ms linear"]; - var transitionCompleteFunction = function() + _transitionCompleteFunction = function() { #if PLATFORM(DOM) - _DOMElement.removeEventListener(CPBrowserStyleProperty('transitionend'), transitionCompleteFunction, YES); + _DOMElement.removeEventListener(CPBrowserStyleProperty('transitionend'), _transitionCompleteFunction, YES); // Make sure to clear these properties when the animation is done. Without this, // the window becomes blurry in Chrome, presumably because the browser composits @@ -469,22 +545,26 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0, [self setCSS3Property:@"TransformOrigin" value:nil]; [self setCSS3Property:@"Transition" value:nil]; #endif - if (_implementedDelegateMethods & _CPPopoverWindow_didShow_) - [_delegate popoverWindowDidShow:self]; + _isOpening = NO; + + [_delegate _popoverWindowDidShow]; } #if PLATFORM(DOM) - _DOMElement.addEventListener(CPBrowserStyleProperty('transitionend'), transitionCompleteFunction, YES); + _DOMElement.addEventListener(CPBrowserStyleProperty('transitionend'), _transitionCompleteFunction, YES); #endif }; #if PLATFORM(DOM) - _DOMElement.addEventListener(CPBrowserStyleProperty('transitionend'), orderFrontTransitionFunction, YES); + _DOMElement.addEventListener(CPBrowserStyleProperty('transitionend'), _orderFrontTransitionFunction, YES); #endif - }, 0); + }, 10); // There are some weird race conditions happening in Chrome 34. If this is set to 0 + // the transitionend is randomly not called correctly. Setting the timeout to 10ms is not noticealble for the + // user, and seems to fix the issue. } else { + _isOpening = NO; [self setCSS3Property:@"Transition" value:@""]; #if PLATFORM(DOM) _DOMElement.style.opacity = 1; @@ -499,14 +579,14 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0, - (void)_orderFront { if (![self isVisible]) - [_targetView addObserver:self forKeyPath:@"frame" options:0 context:nil]; + [self _addFrameObserver]; [super _orderFront]; } - (void)_parentDidOrderInChild { - [_targetView addObserver:self forKeyPath:@"frame" options:0 context:nil]; + [self _addFrameObserver]; } /*! @@ -522,6 +602,19 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0, if (_animates && _browserAnimates) { + if (_isOpening) + { +#if PLATFORM(DOM) + _DOMElement.removeEventListener(CPBrowserStyleProperty('transitionend'), _orderFrontTransitionFunction, YES); + _DOMElement.removeEventListener(CPBrowserStyleProperty('transitionend'), _transitionCompleteFunction, YES); + + var matrix = window.getComputedStyle(_DOMElement, null)[CPBrowserStyleProperty(@"transform")], + currentScale = (matrix.split('(')[1]).split(',')[0]; + + [self setCSS3Property:@"Transform" value:@"scale(" + currentScale + ")"]; +#endif + } + // Tell the element to fade out when the opacity changes [self setCSS3Property:@"Transition" value:@"opacity 250ms linear"]; #if PLATFORM(DOM) @@ -539,24 +632,47 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0, { // Make absolutely sure no dangling event listeners are left #if PLATFORM(DOM) - _DOMElement.removeEventListener(CPBrowserStyleProperty("transitionend"), _orderOutTransitionFunction, YES); + if (_animates && _browserAnimates) + _DOMElement.removeEventListener(CPBrowserStyleProperty("transitionend"), _orderOutTransitionFunction, YES); #endif - [_targetView removeObserver:self forKeyPath:@"frame"]; + [self _removeFrameObserver]; [_parentWindow removeChildWindow:self]; [super _orderOutRecursively:recursive]; _shouldPerformAnimation = YES; _isClosing = NO; + _isOpening = NO; + _targetWindow = nil; - if (_implementedDelegateMethods & _CPPopoverWindow_didClose_) - [_delegate popoverWindowDidClose:self]; + [_delegate _popoverWindowDidClose]; } #pragma mark - #pragma mark Private +- (BOOL)_hasOnlyTransientChild:(_CPPopoverWindow)aWindow +{ + var childWindows = [aWindow childWindows]; + + for (var i = [childWindows count] - 1; i >= 0; i--) + { + var childWindow = childWindows[i]; + + if (![childWindow isKindOfClass:[self class]]) + continue; + + if ([[childWindow delegate] behavior] != CPPopoverBehaviorTransient) + return NO; + + if (![self _hasOnlyTransientChild:childWindow]) + return NO; + } + + return YES; +} + - (void)_mouseWasClicked:(CPEvent)anEvent { /* @@ -565,26 +681,46 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0, message to any parent popovers so they have a chance to close if necessary. */ - if (![self isVisible]) + if (![self isVisible] || !_targetWindow) return; var mouseWindow = [anEvent window]; // Consider clicks in child windows to be "inside". This keeps a transient popover from // closing if e.g. the window containing the menu of a token field is clicked. - if (mouseWindow === self || [mouseWindow _hasAncestorWindow:self]) + if (mouseWindow === self || [mouseWindow _hasAncestorWindow:self] || ![self _hasOnlyTransientChild:self]) + { [self _trapNextMouseDown]; + } else { - // Send _close to the delegate so popoverWillClose is sent to the popover's delegate - if (_closeOnBlur) - [_delegate _close]; + switch ([_delegate behavior]) + { + case CPPopoverBehaviorSemitransient: + var superview = [_delegate._positioningView superview], + positioningViewFrame = [_delegate._positioningView frame]; - // Give a transient parent popover a chance to close - var parent = [self parentWindow]; + // Click on the same button + // Or click on a different window (we just care about the parentWindow) + // We use targetWindow bacause parentWindow is set to nil when opening a semi-transient window in a bridgeless window + if (CGRectContainsPoint(positioningViewFrame, [superview convertPointFromBase:[anEvent locationInWindow]]) + || mouseWindow != _targetWindow) + { + [self _trapNextMouseDown]; + break; + } - if ([parent isKindOfClass:[self class]]) - [parent _mouseWasClicked:anEvent]; + [_delegate close]; + break; + + case CPPopoverBehaviorTransient: + [_delegate close]; + break; + + case CPPopoverBehaviorApplicationDefined: + [self _trapNextMouseDown]; + break; + } } } diff --git a/AppKit/_CPToolTip.j b/AppKit/_CPToolTip.j index 96a9b7b9e..38f881392 100644 --- a/AppKit/_CPToolTip.j +++ b/AppKit/_CPToolTip.j @@ -40,6 +40,7 @@ var _CPToolTipHeight = 24.0, */ @implementation _CPToolTip : CPWindow { + CPWindow _toolTipWindow; CPTextField _content; } @@ -78,8 +79,7 @@ var _CPToolTipHeight = 24.0, var callbackFunction = function() { [_CPToolTip invalidateCurrentToolTipIfNeeded]; - _CPToolTipCurrentToolTip = [_CPToolTip toolTipWithString:[aView toolTip]]; - [_CPToolTipCurrentToolTip setPlatformWindow:[[aView window] platformWindow]]; + _CPToolTipCurrentToolTip = [_CPToolTip toolTipWithString:[aView toolTip] toolTipWindow:[aView window]]; }; _CPToolTipCurrentToolTipTimer = [CPTimer scheduledTimerWithTimeInterval:_CPToolTipDelay @@ -91,9 +91,14 @@ var _CPToolTipHeight = 24.0, /*! Returns an initialized _CPToolTip with the given text and attach it to given view. @param aString the content of the tooltip */ -+ (_CPToolTip)toolTipWithString:(CPString)aString ++ (_CPToolTip)toolTipWithString:(CPString)aString toolTipWindow:(CPWindow)aWindow { - var tooltip = [[_CPToolTip alloc] initWithString:aString styleMask:_CPToolTipWindowMask]; + // the window might be gone during the timer interval. If so, just ignore as + // we don't want to show the tooltip anyway + if (!aWindow) + return nil; + + var tooltip = [[_CPToolTip alloc] initWithString:aString styleMask:_CPToolTipWindowMask toolTipWindow:aWindow]; [tooltip showToolTip]; @@ -158,7 +163,7 @@ var _CPToolTipHeight = 24.0, @param aString the content of the tooltip @param aStyleMask the tooltip's style mask */ -- (id)initWithString:(CPString)aString styleMask:(unsigned)aStyleMask +- (id)initWithString:(CPString)aString styleMask:(unsigned)aStyleMask toolTipWindow:(CPWindow)aWindow { var toolTipFrame = CGRectMake(0.0, 0.0, 250.0, _CPToolTipHeight), layout = [_CPToolTip computeCorrectSize:toolTipFrame.size text:aString], @@ -168,6 +173,7 @@ var _CPToolTipHeight = 24.0, if (self = [super initWithContentRect:toolTipFrame styleMask:aStyleMask]) { + _toolTipWindow = aWindow; _constrainsToUsableScreen = NO; textFrameSize.height += 4; @@ -203,7 +209,7 @@ var _CPToolTipHeight = 24.0, - (void)showToolTip { var mousePosition = [[CPApp currentEvent] globalLocation], - nativeRect = [[self platformWindow] nativeContentRect]; + nativeRect = [[_toolTipWindow platformWindow] nativeContentRect]; mousePosition.y += 20; @@ -217,7 +223,8 @@ var _CPToolTipHeight = 24.0, mousePosition.y = mousePosition.y - CGRectGetHeight([self frame]) - 40; [self setFrameOrigin:mousePosition]; - [self orderFront:nil]; + + [_toolTipWindow addChildWindow:self ordered:CPWindowAbove]; } @end diff --git a/Foundation/CPArray/CPMutableArray.j b/Foundation/CPArray/CPMutableArray.j index ec4a7769c..3815919e2 100644 --- a/Foundation/CPArray/CPMutableArray.j +++ b/Foundation/CPArray/CPMutableArray.j @@ -530,7 +530,7 @@ var sortArrayUsingJSDescriptors = function(a, d) if (value1 === nil || value1 === cpNull) o = value2 === nil || value2 === cpNull ? CPOrderedSame : CPOrderedAscending; else - o = value2 === nil || value2 === cpNull ? CPOrderedDescending : objj_msgSend(value1, dd.s, value2); + o = value2 === nil || value2 === cpNull ? CPOrderedDescending : value1.isa.objj_msgSend1(value1, dd.s, value2); if (o && !dd.a) o = -o; diff --git a/Foundation/CPArray/_CPArray.j b/Foundation/CPArray/_CPArray.j index 093023904..ba2e0cd9f 100755 --- a/Foundation/CPArray/_CPArray.j +++ b/Foundation/CPArray/_CPArray.j @@ -608,9 +608,11 @@ var concat = Array.prototype.concat, } } - else + else { + var anIsa = self.isa; for (; index < count; ++index) - objj_msgSend([self objectAtIndex:index], aSelector); + anIsa.objj_msgSend0([self objectAtIndex:index], aSelector); + } } - (void)enumerateObjectsUsingBlock:(Function /*(id anObject, int idx, @ref BOOL stop)*/)aFunction @@ -748,7 +750,7 @@ var concat = Array.prototype.concat, // passed in is an array, we end up with its contents added instead of itself. push.call(argumentArray, anObject); - return objj_msgSend([self class], @selector(arrayWithArray:), argumentArray); + return [[self class] arrayWithArray:argumentArray]; } /*! @@ -763,7 +765,7 @@ var concat = Array.prototype.concat, var anArray = anArray.isa === _CPJavaScriptArray ? anArray : [anArray _javaScriptArrayCopy], argumentArray = concat.call([self _javaScriptArrayCopy], anArray); - return objj_msgSend([self class], @selector(arrayWithArray:), argumentArray); + return [[self class] arrayWithArray:argumentArray]; } /* @@ -801,7 +803,7 @@ var concat = Array.prototype.concat, for (; index < count; ++index) push.call(argumentArray, [self objectAtIndex:index]); - return objj_msgSend([self class], @selector(arrayWithArray:), argumentArray); + return [[self class] arrayWithArray:argumentArray]; } // Sorting arrays diff --git a/Foundation/CPArray/_CPJavaScriptArray.j b/Foundation/CPArray/_CPJavaScriptArray.j index c3765ad2e..5589e75b0 100644 --- a/Foundation/CPArray/_CPJavaScriptArray.j +++ b/Foundation/CPArray/_CPJavaScriptArray.j @@ -196,8 +196,10 @@ var concat = Array.prototype.concat, } else - for (; index < count; ++index) - objj_msgSend(self[index], aSelector); + for (; index < count; ++index) { + var receiver = self[index]; + receiver == nil ? nil : receiver.isa.objj_msgSend0(receiver, aSelector); + } } - (CPArray)arrayByAddingObject:(id)anObject diff --git a/Foundation/CPAttributedString.j b/Foundation/CPAttributedString.j old mode 100644 new mode 100755 index beee46e8d..04c131631 --- a/Foundation/CPAttributedString.j +++ b/Foundation/CPAttributedString.j @@ -149,7 +149,7 @@ { // index is the character index we're searching for, // while range is the actual range entry we're comparing against - if (CPLocationInRange(index, entry.range)) + if (CPLocationInRange(index, entry.range) || (!index && !CPMaxRange(entry.range))) return CPOrderedSame; else if (CPMaxRange(entry.range) <= index) return CPOrderedDescending; @@ -413,7 +413,7 @@ comparisonAttributes = [aString attributesAtIndex:0 effectiveRange:comparisonRange], length = _string.length; - while (CPMaxRange(CPUnionRange(myRange, comparisonRange)) < length) + do { if (CPIntersectionRange(myRange, comparisonRange).length > 0 && ![myAttributes isEqualToDictionary:comparisonAttributes]) @@ -424,7 +424,7 @@ myAttributes = [self attributesAtIndex:CPMaxRange(myRange) effectiveRange:myRange]; else comparisonAttributes = [aString attributesAtIndex:CPMaxRange(comparisonRange) effectiveRange:comparisonRange]; - } + } while (CPMaxRange(CPUnionRange(myRange, comparisonRange)) < length); return YES; } @@ -526,38 +526,54 @@ if (!aString) aString = @""; - var startingIndex = [self _indexOfEntryWithIndex:aRange.location]; + var lastValidIndex = MAX(_rangeEntries.length - 1, 0), + startingIndex = [self _indexOfEntryWithIndex:aRange.location]; - if (startingIndex === CPNotFound) - _CPRaiseRangeException(self, _cmd, aRange.location, _string.length); + if (startingIndex < 0) + startingIndex = lastValidIndex; - var startingRangeEntry = _rangeEntries[startingIndex], - endingIndex = [self _indexOfEntryWithIndex:MAX(CPMaxRange(aRange) - 1, 0)]; + var endingIndex = [self _indexOfEntryWithIndex:CPMaxRange(aRange)]; - if (endingIndex === CPNotFound) - _CPRaiseRangeException(self, _cmd, MAX(CPMaxRange(aRange) - 1, 0), _string.length); + if (endingIndex < 0) + endingIndex = lastValidIndex; - var endingRangeEntry = _rangeEntries[endingIndex], - additionalLength = aString.length - aRange.length; + var additionalLength = aString.length - aRange.length, + patchPosition = startingIndex; _string = _string.substring(0, aRange.location) + aString + _string.substring(CPMaxRange(aRange)); + var originalLength = _rangeEntries[patchPosition].range.length; if (startingIndex === endingIndex) - startingRangeEntry.range.length += additionalLength; + _rangeEntries[patchPosition].range.length += additionalLength; else { - endingRangeEntry.range.length = CPMaxRange(endingRangeEntry.range) - CPMaxRange(aRange); - endingRangeEntry.range.location = CPMaxRange(aRange); + if (CPIntersectionRange(_rangeEntries[patchPosition].range, aRange).length < originalLength) + { + startingIndex++; + } - startingRangeEntry.range.length = CPMaxRange(aRange) - startingRangeEntry.range.location; + if (endingIndex > startingIndex) + { + var originalOffset= _rangeEntries[startingIndex].range.location, + offsetFromSplicing = CPMaxRange(_rangeEntries[endingIndex].range) - originalOffset; + _rangeEntries.splice(startingIndex, endingIndex - startingIndex); + _rangeEntries[startingIndex].range = CPMakeRange(originalOffset, offsetFromSplicing); + } - _rangeEntries.splice(startingIndex, endingIndex - startingIndex); + if (patchPosition !== startingIndex) + { + var lhsOffset = aString.length - CPIntersectionRange(_rangeEntries[patchPosition].range, aRange).length; + _rangeEntries[patchPosition].range.length = originalLength + lhsOffset; + var rhsOffset = aString.length - CPIntersectionRange(_rangeEntries[startingIndex].range, aRange).length; + _rangeEntries[startingIndex].range.location += lhsOffset; + _rangeEntries[startingIndex].range.length += rhsOffset; + patchPosition = startingIndex; + } else + _rangeEntries[patchPosition].range.length += additionalLength; } - endingIndex = startingIndex + 1; - - while (endingIndex < _rangeEntries.length) - _rangeEntries[endingIndex++].range.location += additionalLength; + for (var patchIndex = patchPosition + 1, l = _rangeEntries.length; patchIndex < l; patchIndex++) + _rangeEntries[patchIndex].range.location += additionalLength; } /*! @@ -587,6 +603,9 @@ endingEntryIndex = [self _indexOfRangeEntryForIndex:CPMaxRange(aRange) splitOnMaxIndex:YES], current = startingEntryIndex; + if (current < 0) + current = MAX(_rangeEntries.length - 1, 0); + if (endingEntryIndex === CPNotFound) endingEntryIndex = _rangeEntries.length; @@ -693,7 +712,7 @@ - (void)insertAttributedString:(CPAttributedString)aString atIndex:(CPUInteger)anIndex { if (anIndex < 0 || anIndex > [self length]) - [CPException raise:CPRangeException reason:"tried to insert attributed string at an invalid index: "+anIndex]; + [CPException raise:CPRangeException reason:"tried to insert attributed string at an invalid index: " + anIndex]; var entryIndexOfNextEntry = [self _indexOfRangeEntryForIndex:anIndex splitOnMaxIndex:YES], otherRangeEntries = aString._rangeEntries, @@ -719,8 +738,7 @@ _rangeEntries.splice(entryIndexOfNextEntry - 1 + index, 0, entryCopy); } - //necessary? - //[self _coalesceRangeEntriesFromIndex:startingEntryIndex toIndex:startingEntryIndex+rangeEntries.length]; + [self _coalesceRangeEntriesFromIndex:MAX(0, entryIndexOfNextEntry - 1) toIndex:MIN(entryIndexOfNextEntry + 1, _rangeEntries.length - 1)]; } /*! @@ -786,7 +804,7 @@ var a = _rangeEntries[current], b = _rangeEntries[current + 1]; - if ([a.attributes isEqualToDictionary:b.attributes]) + if (a && b && [a.attributes isEqualToDictionary:b.attributes]) { a.range.length = CPMaxRange(b.range) - a.range.location; _rangeEntries.splice(current + 1, 1); @@ -818,6 +836,50 @@ @end +var CPAttributedStringStringKey = "CPAttributedStringString", + CPAttributedStringRangesKey = "CPAttributedStringRanges", + CPAttributedStringAttributesKey = "CPAttributedStringAttributes"; + +@implementation CPAttributedString (CPCoding) + +- (id)initWithCoder:(CPCoder)aCoder +{ + self = [self init]; + + if (self) + { + _string = [aCoder decodeObjectForKey:CPAttributedStringStringKey]; + var decodedRanges = [aCoder decodeObjectForKey:CPAttributedStringRangesKey], + decodedAttributes = [aCoder decodeObjectForKey:CPAttributedStringAttributesKey]; + + _rangeEntries = []; + + for (var i = 0, l = decodedRanges.length; i < l; i++) + _rangeEntries.push(makeRangeEntry(decodedRanges[i], decodedAttributes[i])); + } + + return self; +} + +- (void)encodeWithCoder:(CPCoder)aCoder +{ + [aCoder encodeObject:_string forKey:CPAttributedStringStringKey]; + + var rangesForEncoding = [], + dictsForEncoding = []; + + for (var i = 0, l = _rangeEntries.length; i < l; i++) + { + rangesForEncoding.push(_rangeEntries[i].range); + dictsForEncoding.push(_rangeEntries[i].attributes); + } + + [aCoder encodeObject:rangesForEncoding forKey:CPAttributedStringRangesKey]; + [aCoder encodeObject:dictsForEncoding forKey:CPAttributedStringAttributesKey]; +} + +@end + /*! @class CPMutableAttributedString @ingroup compatibility diff --git a/Foundation/CPDate.j b/Foundation/CPDate.j index 86bf25deb..736ca9ff2 100644 --- a/Foundation/CPDate.j +++ b/Foundation/CPDate.j @@ -146,6 +146,15 @@ var CPDateReferenceDate = new Date(Date.UTC(2001, 0, 1, 0, 0, 0, 0)); return [[CPDate date] timeIntervalSinceReferenceDate]; } +/** + Return a new date representing the receiver's time plus the given interval into the future, + or into the past for a negative interval. +*/ +- (id)dateByAddingTimeInterval:(CPTimeInterval)seconds +{ + return [[CPDate alloc] initWithTimeInterval:seconds sinceDate:self]; +} + - (BOOL)isEqual:(CPDate)aDate { if (self === aDate) diff --git a/Foundation/CPKeyValueCoding.j b/Foundation/CPKeyValueCoding.j index fa86c5f9c..b67d78b88 100644 --- a/Foundation/CPKeyValueCoding.j +++ b/Foundation/CPKeyValueCoding.j @@ -108,7 +108,7 @@ var CPObjectAccessorsForClassKey = @"$CPObjectAccessorsForClassKey", switch (accessor[0]) { case 0: - return objj_msgSend(self, accessor[1]); + return self.isa.objj_msgSend0(self, accessor[1]); case 1: // FIXME: We shouldn't be creating a new one every time. @@ -226,7 +226,7 @@ var CPObjectAccessorsForClassKey = @"$CPObjectAccessorsForClassKey", switch (modifier[0]) { - case 0: return objj_msgSend(self, modifier[1], aValue); + case 0: return self.isa.objj_msgSend1(self, modifier[1], aValue); case 1: if ([theClass accessInstanceVariablesDirectly]) { @@ -341,21 +341,21 @@ var CPObjectAccessorsForClassKey = @"$CPObjectAccessorsForClassKey", - (CPUInteger)count { - return objj_msgSend(_target, _countOfSelector); + return _target == nil ? nil : _target.isa.objj_msgSend0(_target, _countOfSelector); } - (id)objectAtIndex:(CPUInteger)anIndex { if (_objectInAtIndexSelector) - return objj_msgSend(_target, _objectInAtIndexSelector, anIndex); + return _target == nil ? nil : _target.isa.objj_msgSend1(_target, _objectInAtIndexSelector, anIndex); - return objj_msgSend(_target, _atIndexesSelector, [CPIndexSet indexSetWithIndex:anIndex])[0]; + return _target == nil ? nil : _target.isa.objj_msgSend1(_target, _atIndexesSelector, [CPIndexSet indexSetWithIndex:anIndex])[0]; } - (CPArray)objectsAtIndexes:(CPIndexSet)indexes { if (_atIndexesSelector) - return objj_msgSend(_target, _atIndexesSelector, indexes); + return _target == nil ? nil : _target.isa.objj_msgSend1(_target, _atIndexesSelector, indexes); return [super objectsAtIndexes:indexes]; } @@ -408,17 +408,17 @@ var CPObjectAccessorsForClassKey = @"$CPObjectAccessorsForClassKey", - (CPUInteger)count { - return objj_msgSend(_target, _countOfSelector); + return _target == nil ? nil : _target.isa.objj_msgSend0(_target, _countOfSelector); } - (CPEnumerator)objectEnumerator { - return objj_msgSend(_target, _enumeratorOfSelector); + return _target == nil ? nil : _target.isa.objj_msgSend0(_target, _enumeratorOfSelector); } - (id)member:(id)anObject { - return objj_msgSend(_target, _memberOfSelector, anObject); + return _target == nil ? nil : _target.isa.objj_msgSend1(_target, _memberOfSelector, anObject); } - (Class)classForCoder diff --git a/Foundation/CPObject.j b/Foundation/CPObject.j index ae5a39ac1..912aafa09 100644 --- a/Foundation/CPObject.j +++ b/Foundation/CPObject.j @@ -364,7 +364,7 @@ CPLog(@"Got some class: %@", inst); */ - (id)performSelector:(SEL)aSelector { - return objj_msgSend(self, aSelector); + return self.isa.objj_msgSend0(self, aSelector); } /*! @@ -375,7 +375,7 @@ CPLog(@"Got some class: %@", inst); */ - (id)performSelector:(SEL)aSelector withObject:(id)anObject { - return objj_msgSend(self, aSelector, anObject); + return self.isa.objj_msgSend1(self, aSelector, anObject); } /*! @@ -387,7 +387,7 @@ CPLog(@"Got some class: %@", inst); */ - (id)performSelector:(SEL)aSelector withObject:(id)anObject withObject:(id)anotherObject { - return objj_msgSend(self, aSelector, anObject, anotherObject); + return self.isa.objj_msgSend2(self, aSelector, anObject, anotherObject); } /*! diff --git a/Foundation/CPPredicate/CPComparisonPredicate.j b/Foundation/CPPredicate/CPComparisonPredicate.j index a7843308e..f2cfb3172 100644 --- a/Foundation/CPPredicate/CPComparisonPredicate.j +++ b/Foundation/CPPredicate/CPComparisonPredicate.j @@ -374,6 +374,9 @@ var CPComparisonPredicateModifier, var leftValue = [_left expressionValueWithObject:object context:variables], rightValue = [_right expressionValueWithObject:object context:variables]; + leftValue = (typeof leftValue == "boolean") ? [CPNumber numberWithBool:leftValue] : leftValue; + rightValue = (typeof rightValue == "boolean") ? [CPNumber numberWithBool:rightValue] : rightValue; + if (_modifier == CPDirectPredicateModifier) return [self _evaluateValue:leftValue rightValue:rightValue]; else diff --git a/Foundation/CPProxy.j b/Foundation/CPProxy.j index ceeac578d..2234a6f39 100644 --- a/Foundation/CPProxy.j +++ b/Foundation/CPProxy.j @@ -106,17 +106,17 @@ - (id)performSelector:(SEL)aSelector { - return objj_msgSend(self, aSelector); + return self.isa.objj_msgSend0(self, aSelector); } - (id)performSelector:(SEL)aSelector withObject:(id)anObject { - return objj_msgSend(self, aSelector, anObject); + return self.isa.objj_msgSend1(self, aSelector, anObject); } - (id)performSelector:(SEL)aSelector withObject:(id)anObject withObject:(id)anotherObject { - return objj_msgSend(self, aSelector, anObject, anotherObject); + return self.isa.objj_msgSend2(self, aSelector, anObject, anotherObject); } - (BOOL)isProxy diff --git a/Foundation/CPURLConnection.j b/Foundation/CPURLConnection.j index b520cf9fd..420ce8402 100644 --- a/Foundation/CPURLConnection.j +++ b/Foundation/CPURLConnection.j @@ -79,6 +79,8 @@ var CPURLConnectionDelegate = nil; BOOL _isCanceled; BOOL _isLocalFileConnection; + BOOL _withCredentials @accessors(property=withCredentials); + HTTPRequest _HTTPRequest; } @@ -95,26 +97,40 @@ var CPURLConnectionDelegate = nil; @return the data at the URL or \c nil if there was an error */ + (CPData)sendSynchronousRequest:(CPURLRequest)aRequest returningResponse:(/*{*/CPURLResponse/*}*/)aURLResponse +{ + var cfHTTPRequest = new CFHTTPRequest(); + + return [CPURLConnection _sendSynchronousRequest:aRequest returningResponse:aURLResponse withCFHTTPRequest:cfHTTPRequest]; +} + ++ (CPData)sendSynchronousRequest:(CPURLRequest)aRequest returningResponse:(/*{*/CPURLResponse/*}*/)aURLResponse withCredentials:(BOOL)withCredentials +{ + var cfHTTPRequest = new CFHTTPRequest(); + + cfHTTPRequest.setWithCredentials(withCredentials); + + return [CPURLConnection _sendSynchronousRequest:aRequest returningResponse:aURLResponse withCFHTTPRequest:cfHTTPRequest]; +} + ++ (CPData)_sendSynchronousRequest:(CPURLRequest)aRequest returningResponse:(/*{*/CPURLResponse/*}*/)aURLResponse withCFHTTPRequest:(CFHTTPRequest)aCFHTTPRequest { try { - var request = new CFHTTPRequest(); - - request.open([aRequest HTTPMethod], [[aRequest URL] absoluteString], NO); + aCFHTTPRequest.open([aRequest HTTPMethod], [[aRequest URL] absoluteString], NO); var fields = [aRequest allHTTPHeaderFields], key = nil, keys = [fields keyEnumerator]; while ((key = [keys nextObject]) !== nil) - request.setRequestHeader(key, [fields objectForKey:key]); + aCFHTTPRequest.setRequestHeader(key, [fields objectForKey:key]); - request.send([aRequest HTTPBody]); + aCFHTTPRequest.send([aRequest HTTPBody]); - if (!request.success()) + if (!aCFHTTPRequest.success()) return nil; - return [CPData dataWithRawString:request.responseText()]; + return [CPData dataWithRawString:aCFHTTPRequest.responseText()]; } catch (anException) { @@ -134,6 +150,17 @@ var CPURLConnectionDelegate = nil; return [[self alloc] initWithRequest:aRequest delegate:aDelegate]; } +//overloaded method that allows user to set _withCredentials ++ (CPURLConnection)connectionWithRequest:(CPURLRequest)aRequest delegate:(id)aDelegate withCredentials:(BOOL)withCredentials +{ + var connection = [[self alloc] initWithRequest:aRequest delegate:aDelegate startImmediately:NO]; + + [connection setWithCredentials:withCredentials]; + [connection start]; + + return connection; +} + /* Default class initializer. Use one of the class methods instead. @param aRequest contains the URL to contact @@ -150,6 +177,7 @@ var CPURLConnectionDelegate = nil; _request = aRequest; _delegate = aDelegate; _isCanceled = NO; + _withCredentials = NO; var URL = [_request URL], scheme = [URL scheme]; @@ -189,6 +217,8 @@ var CPURLConnectionDelegate = nil; { _isCanceled = NO; + _HTTPRequest.setWithCredentials(_withCredentials); + try { _HTTPRequest.open([_request HTTPMethod], [[_request URL] absoluteString], YES); diff --git a/Jakefile b/Jakefile index 4dcff0811..d88f8aa73 100644 --- a/Jakefile +++ b/Jakefile @@ -43,24 +43,14 @@ task ("CommonJS", [$BUILD_CJS_OBJECTIVE_J_DEBUG_FRAMEWORKS, $BUILD_CJS_CAPPUCCIN task ("install", ["CommonJS"], function() { - // FIXME: require("narwhal/tusk/install").install({}, $COMMONJS); - // Doesn't work due to some weird this.print business. - if (OS.system(["tusk", "install", "--force", $BUILD_CJS_OBJECTIVE_J, $BUILD_CJS_CAPPUCCINO])) { - colorPrint("Installation failed, possibly because you do not have permissions.", "red"); - colorPrint("Try re-running using '" + colorize("jake sudo-install", "yellow") + "'.", "red"); - OS.exit(1); //rake abort if ($? != 0) - } + installCopy($BUILD_CJS_OBJECTIVE_J, false); + installCopy($BUILD_CJS_CAPPUCCINO, false); }); task ("sudo-install", ["CommonJS"], function() { - // FIXME: require("narwhal/tusk/install").install({}, $COMMONJS); - // Doesn't work due to some weird this.print business. - if (OS.system(["sudo", "tusk", "install", "--force", $BUILD_CJS_OBJECTIVE_J, $BUILD_CJS_CAPPUCCINO])) - { - // Attempt a hackish work-around for sudo compiled with the --with-secure-path option - sudo("tusk install --force " + $BUILD_CJS_OBJECTIVE_J + " " + $BUILD_CJS_CAPPUCCINO); - } + installCopy($BUILD_CJS_OBJECTIVE_J, true); + installCopy($BUILD_CJS_CAPPUCCINO, true); }); task ("install-symlinks", function() diff --git a/Objective-J/CFHTTPRequest.js b/Objective-J/CFHTTPRequest.js index 2b2d29c73..6186dc80f 100644 --- a/Objective-J/CFHTTPRequest.js +++ b/Objective-J/CFHTTPRequest.js @@ -172,7 +172,10 @@ CFHTTPRequest.prototype.responseXML = function() { var responseXML = this._nativeRequest.responseXML; - if (responseXML && (NativeRequest === window.XMLHttpRequest)) + // Internet Explorer will return a non-null but empty request.responseXML if the response + // content type wasn't "text/html", so also check that responseXML.documentRoot is set. + // Otherwise fall back to regular parsing. + if (responseXML && (NativeRequest === window.XMLHttpRequest) && responseXML.documentRoot) return responseXML; return parseXML(this.responseText()); @@ -271,6 +274,16 @@ CFHTTPRequest.prototype.removeEventListener = function(/*String*/ anEventName, / this._eventDispatcher.removeEventListener(anEventName, anEventListener); }; +CFHTTPRequest.prototype.setWithCredentials = function(/*Boolean*/ willSendWithCredentials) +{ + this._nativeRequest.withCredentials = willSendWithCredentials; +}; + +CFHTTPRequest.prototype.getWithCredentials = function() +{ + return this._nativeRequest.withCredentials; +}; + function determineAndDispatchHTTPRequestEvents(/*CFHTTPRequest*/ aRequest) { var eventDispatcher = aRequest._eventDispatcher; diff --git a/Objective-J/CFPropertyList.js b/Objective-J/CFPropertyList.js index 00174387c..7dd16cc4c 100644 --- a/Objective-J/CFPropertyList.js +++ b/Objective-J/CFPropertyList.js @@ -320,8 +320,8 @@ var XML_XML = "xml", #define IS_WHITESPACE(anXMLNode) (NODE_TYPE(anXMLNode) === 8 || NODE_TYPE(anXMLNode) === 3) #define IS_DOCUMENTTYPE(anXMLNode) (NODE_TYPE(anXMLNode) === 10) -#define PLIST_NEXT_SIBLING(anXMLNode) while ((anXMLNode = NEXT_SIBLING(anXMLNode)) && IS_WHITESPACE(anXMLNode)) ; -#define PLIST_FIRST_CHILD(anXMLNode) anXMLNode = FIRST_CHILD(anXMLNode); if (anXMLNode !== NULL && IS_WHITESPACE(anXMLNode)) PLIST_NEXT_SIBLING(anXMLNode) +#define PLIST_NEXT_SIBLING(anXMLNode) while ((anXMLNode = NEXT_SIBLING(anXMLNode)) && IS_WHITESPACE(anXMLNode)); +#define PLIST_FIRST_CHILD(anXMLNode) { anXMLNode = FIRST_CHILD(anXMLNode); if (anXMLNode !== NULL && IS_WHITESPACE(anXMLNode)) PLIST_NEXT_SIBLING(anXMLNode) } var textContent = function(nodes) { diff --git a/Objective-J/Debug.js b/Objective-J/Debug.js index 58ec0d48f..532afc6f2 100644 --- a/Objective-J/Debug.js +++ b/Objective-J/Debug.js @@ -39,7 +39,25 @@ function objj_debug_message_format(aReceiver, aSelector) // save the original msgSend implementations so we can restore them later var objj_msgSend_original = objj_msgSend, - objj_msgSendSuper_original = objj_msgSendSuper; + objj_msgSendSuper_original = objj_msgSendSuper, + objj_msgSendFast_original = objj_msgSendFast, + objj_msgSendFast0_original = objj_msgSendFast0, + objj_msgSendFast1_original = objj_msgSendFast1, + objj_msgSendFast2_original = objj_msgSendFast2, + objj_msgSendFast3_original = objj_msgSendFast3; + +function objj_msgSend_reset_all_classes() { + objj_enumerateClassesUsingBlock(function(aClass) { + if (aClass.hasOwnProperty("objj_msgSend")) + { + aClass.objj_msgSend = objj_msgSendFast; + aClass.objj_msgSend0 = objj_msgSendFast0; + aClass.objj_msgSend1 = objj_msgSendFast1; + aClass.objj_msgSend2 = objj_msgSendFast2; + aClass.objj_msgSend3 = objj_msgSendFast3; + } + }); +} // decorator management functions @@ -48,6 +66,13 @@ GLOBAL(objj_msgSend_reset) = function() { objj_msgSend = objj_msgSend_original; objj_msgSendSuper = objj_msgSendSuper_original; + objj_msgSendFast = objj_msgSendFast_original; + objj_msgSendFast0 = objj_msgSendFast0_original; + objj_msgSendFast1 = objj_msgSendFast1_original; + objj_msgSendFast2 = objj_msgSendFast2_original; + objj_msgSendFast3 = objj_msgSendFast3_original; + + objj_msgSend_reset_all_classes(); } // decorate both objj_msgSend and objj_msgSendSuper @@ -60,7 +85,15 @@ GLOBAL(objj_msgSend_decorate) = function() { objj_msgSend = arguments[index](objj_msgSend); objj_msgSendSuper = arguments[index](objj_msgSendSuper); + objj_msgSendFast = arguments[index](objj_msgSendFast); + objj_msgSendFast0 = arguments[index](objj_msgSendFast0); + objj_msgSendFast1 = arguments[index](objj_msgSendFast1); + objj_msgSendFast2 = arguments[index](objj_msgSendFast2); + objj_msgSendFast3 = arguments[index](objj_msgSendFast3); } + + if (count) + objj_msgSend_reset_all_classes(); } // reset then decorate both objj_msgSend and objj_msgSendSuper @@ -98,7 +131,7 @@ GLOBAL(objj_backtrace_decorator) = function(msgSend) objj_backtrace.push({ receiver: aReceiver, selector : aSelector }); try { - return msgSend.apply(NULL, arguments); + return msgSend.apply(this, arguments); } catch (anException) { @@ -128,7 +161,7 @@ GLOBAL(objj_supress_exceptions_decorator) = function(msgSend) try { - return msgSend.apply(NULL, arguments); + return msgSend.apply(this, arguments); } catch (anException) { @@ -150,7 +183,7 @@ GLOBAL(objj_typecheck_decorator) = function(msgSend) var aReceiver = aReceiverOrSuper && (aReceiverOrSuper.receiver || aReceiverOrSuper); if (!aReceiver) - return msgSend.apply(NULL, arguments); + return msgSend.apply(this, arguments); var types = aReceiver.isa.method_dtable[aSelector].types; for (var i = 2; i < arguments.length; i++) diff --git a/Objective-J/ObjJAcornCompiler.js b/Objective-J/ObjJAcornCompiler.js index 3f684bb77..83f61621b 100644 --- a/Objective-J/ObjJAcornCompiler.js +++ b/Objective-J/ObjJAcornCompiler.js @@ -829,7 +829,12 @@ Program: function(node, st, c) { BlockStatement: function(node, st, c) { var compiler = st.compiler, generate = compiler.generate, + endOfScopeBody = st.endOfScopeBody, buffer; + + if (endOfScopeBody) + delete st.endOfScopeBody; + if (generate) { st.indentBlockLevel = typeof st.indentBlockLevel === "undefined" ? 0 : st.indentBlockLevel + 1; buffer = compiler.jsBuffer; @@ -840,6 +845,18 @@ BlockStatement: function(node, st, c) { c(node.body[i], st, "Statement"); } if (generate) { + var maxReceiverLevel = st.maxReceiverLevel; + if (endOfScopeBody && maxReceiverLevel) { + buffer.concat(indentation); + buffer.concat("var "); + for (var i = 0; i < maxReceiverLevel; i++) { + if (i) buffer.concat(", "); + buffer.concat("___r"); + buffer.concat((i + 1) + ""); + } + buffer.concat(";\n"); + } + buffer.concat(indentation.substring(indentationSpaces)); buffer.concat("}"); if (st.isDecl || st.indentBlockLevel > 0) @@ -1023,6 +1040,7 @@ TryStatement: function(node, st, c) { buffer.concat(") "); } indentation += indentStep; + inner.endOfScopeBody = true; c(handler.body, inner, "ScopeBody"); indentation = indentation.substring(indentationSpaces); inner.copyAddedSelfToIvarsToParent(); @@ -1161,6 +1179,7 @@ Function: function(node, st, c) { buffer.concat(")\n"); } indentation += indentStep; + inner.endOfScopeBody = true; c(node.body, inner, "ScopeBody"); indentation = indentation.substring(indentationSpaces); inner.copyAddedSelfToIvarsToParent(); @@ -1381,9 +1400,18 @@ AssignmentExpression: function(node, st, c) { return; } - var saveAssignment = st.assignment; + var saveAssignment = st.assignment, + nodeLeft = node.left; st.assignment = true; - (generate && nodePrecedence(node, node.left) ? surroundExpression(c) : c)(node.left, st, "Expression"); + if (nodeLeft.type === "Identifier" && nodeLeft.name === "self") { + var lVar = st.getLvar("self", true); + if (lVar) { + var lVarScope = lVar.scope; + if (lVarScope) + lVarScope.assignmentToSelf = true; + } + } + (generate && nodePrecedence(node, nodeLeft) ? surroundExpression(c) : c)(nodeLeft, st, "Expression"); if (generate) { buffer.concat(" "); buffer.concat(node.operator); @@ -1391,8 +1419,8 @@ AssignmentExpression: function(node, st, c) { } st.assignment = saveAssignment; (generate && nodePrecedence(node, node.right, true) ? surroundExpression(c) : c)(node.right, st, "Expression"); - if (st.isRootScope() && node.left.type === "Identifier" && !st.getLvar(node.left.name)) - st.vars[node.left.name] = {type: "global", node: node.left}; + if (st.isRootScope() && nodeLeft.type === "Identifier" && !st.getLvar(nodeLeft.name)) + st.vars[nodeLeft.name] = {type: "global", node: nodeLeft}; }, ConditionalExpression: function(node, st, c) { var compiler = st.compiler, @@ -1421,8 +1449,22 @@ NewExpression: function(node, st, c) { }, CallExpression: function(node, st, c) { var compiler = st.compiler, - generate = compiler.generate; - (generate && nodePrecedence(node, node.callee) ? surroundExpression(c) : c)(node.callee, st, "Expression"); + generate = compiler.generate, + callee = node.callee; + + // If call to function 'eval' we assume that 'self' can be altered and from this point + // we check if 'self' is null before 'objj_msgSend' is called with 'self' as receiver. + if (callee.type === "Identifier" && callee.name === "eval") { + var selfLvar = st.getLvar("self", true); + if (selfLvar) { + var selfScope = selfLvar.scope; + if (selfScope) { + selfScope.assignmentToSelf = true; + } + } + } + + (generate && nodePrecedence(node, callee) ? surroundExpression(c) : c)(callee, st, "Expression"); if (generate) compiler.jsBuffer.concat("("); if (node.arguments) { for (var i = 0; i < node.arguments.length; ++i) { @@ -2007,6 +2049,9 @@ MethodDeclarationStatement: function(node, st, c) { compiler.jsBuffer.concat("(self, _cmd"); methodScope.methodType = node.methodtype; + methodScope.vars["self"] = {type: "method base", scope: methodScope}; + methodScope.vars["_cmd"] = {type: "method base", scope: methodScope}; + if (nodeArguments) for (var i = 0; i < nodeArguments.length; i++) { var argument = nodeArguments[i], @@ -2022,6 +2067,7 @@ MethodDeclarationStatement: function(node, st, c) { if (!generate) compiler.lastPos = node.startOfBody; indentation += indentStep; + methodScope.endOfScopeBody = true; c(node.body, methodScope, "Statement"); indentation = indentation.substring(indentationSpaces); if (!generate) @@ -2105,10 +2151,11 @@ MethodDeclarationStatement: function(node, st, c) { MessageSendExpression: function(node, st, c) { var compiler = st.compiler, generate = compiler.generate, - buffer = compiler.jsBuffer; + buffer = compiler.jsBuffer, + nodeObject = node.object; if (!generate) { buffer.concat(compiler.source.substring(compiler.lastPos, node.start)); - compiler.lastPos = node.object ? node.object.start : node.arguments.length ? node.arguments[0].start : node.end; + compiler.lastPos = nodeObject ? nodeObject.start : node.arguments.length ? node.arguments[0].start : node.end; } if (node.superObject) { @@ -2118,19 +2165,77 @@ MessageSendExpression: function(node, st, c) { } else { - if (!generate) buffer.concat(" "); // Add an extra space if it looks something like this: "return()". No space between return and expression. - buffer.concat("objj_msgSend("); - c(node.object, st, "Expression"); - if (!generate) buffer.concat(compiler.source.substring(compiler.lastPos, node.object.end)); + if (generate) { + // If the recevier is not an identifier or an ivar that should have 'self.' infront we need to assign it to a temporary variable + // If it is 'self' we assume it will never be nil and remove that test + var receiverIsIdentifier = nodeObject.type === "Identifier" && !(st.currentMethodType() === "-" && compiler.getIvarForClass(nodeObject.name, st) && !st.getLvar(nodeObject.name, true)), + selfLvar, + receiverIsNotSelf; + + if (receiverIsIdentifier) { + var name = nodeObject.name, + selfLvar = st.getLvar(name); + + if (name === "self") { + receiverIsNotSelf = !selfLvar || !selfLvar.scope || selfLvar.scope.assignmentToSelf; + } else { + receiverIsNotSelf = !!selfLvar || !compiler.getClassDef(name); + } + + if (receiverIsNotSelf) { + buffer.concat("("); + c(nodeObject, st, "Expression"); + buffer.concat(" == null ? null : "); + } + c(nodeObject, st, "Expression"); + } else { + receiverIsNotSelf = true; + if (!st.receiverLevel) st.receiverLevel = 0; + buffer.concat("((___r"); + buffer.concat(++st.receiverLevel + ""); + buffer.concat(" = "); + c(nodeObject, st, "Expression"); + buffer.concat("), ___r"); + buffer.concat(st.receiverLevel + ""); + buffer.concat(" == null ? null : ___r"); + buffer.concat(st.receiverLevel + ""); + if (!(st.maxReceiverLevel >= st.receiverLevel)) + st.maxReceiverLevel = st.receiverLevel; + } + buffer.concat(".isa.objj_msgSend"); + } else { + buffer.concat(" "); // Add an extra space if it looks something like this: "return()". No space between return and expression. + buffer.concat("objj_msgSend("); + buffer.concat(compiler.source.substring(compiler.lastPos, nodeObject.end)); + } } var selectors = node.selectors, arguments = node.arguments, + argumentsLength = arguments.length, firstSelector = selectors[0], selector = firstSelector ? firstSelector.name : ""; // There is always at least one selector + if (generate && !node.superObject) { + var totalNoOfParameters = argumentsLength; + + if (node.parameters) + totalNoOfParameters += node.parameters.length; + if (totalNoOfParameters < 4) { + buffer.concat("" + totalNoOfParameters); + } + + if (receiverIsIdentifier) { + buffer.concat("("); + c(nodeObject, st, "Expression"); + } else { + buffer.concat("(___r"); + buffer.concat(st.receiverLevel + ""); + } + } + // Put together the selector. Maybe this should be done in the parser... - for (var i = 0; i < arguments.length; i++) + for (var i = 0; i < argumentsLength; i++) if (i === 0) selector += ":"; else @@ -2169,6 +2274,13 @@ MessageSendExpression: function(node, st, c) { } } + if (generate && !node.superObject) { + if (receiverIsNotSelf) + buffer.concat(")"); + if (!receiverIsIdentifier) + st.receiverLevel--; + } + buffer.concat(")"); if (!generate) compiler.lastPos = node.end; }, diff --git a/Objective-J/Runtime.js b/Objective-J/Runtime.js index 3d50604fa..75a43bf78 100644 --- a/Objective-J/Runtime.js +++ b/Objective-J/Runtime.js @@ -374,7 +374,7 @@ GLOBAL(protocol_conformsToProtocol) = function(/*Protocol*/ p1, /*Protocol*/ p2) return false; } -var REGISTERED_PROTOCOLS = { }; +var REGISTERED_PROTOCOLS = Object.create(null); GLOBAL(objj_allocateProtocol) = function(/*String*/ aName) { @@ -454,7 +454,19 @@ var _class_initialize = function(/*Class*/ aClass) { SETINFO(meta, CLS_INITIALIZING); - objj_msgSend(aClass, "initialize"); + // We don't need to initialize any more. + aClass.objj_msgSend = objj_msgSendFast; + aClass.objj_msgSend0 = objj_msgSendFast0; + aClass.objj_msgSend1 = objj_msgSendFast1; + aClass.objj_msgSend2 = objj_msgSendFast2; + aClass.objj_msgSend3 = objj_msgSendFast3; + meta.objj_msgSend = objj_msgSendFast; + meta.objj_msgSend0 = objj_msgSendFast0; + meta.objj_msgSend1 = objj_msgSendFast1; + meta.objj_msgSend2 = objj_msgSendFast2; + meta.objj_msgSend3 = objj_msgSendFast3; + + meta.objj_msgSend0(aClass, "initialize"); CHANGEINFO(meta, CLS_INITIALIZED, CLS_INITIALIZING); } @@ -493,16 +505,20 @@ var _objj_forward = function(self, _cmd) if (invocationClass) { - var invocation = objj_msgSend(invocationClass, SEL_invocationWithMethodSignature_, signature), + var invocation = invocationClass.isa.objj_msgSend1(invocationClass, SEL_invocationWithMethodSignature_, signature), index = 0, count = arguments.length; - for (; index < count; ++index) - objj_msgSend(invocation, SEL_setArgument_atIndex_, arguments[index], index); + if (invocation != null) { + var invocationIsa = invocation.isa; + + for (; index < count; ++index) + invocationIsa.objj_msgSend2(invocation, SEL_setArgument_atIndex_, arguments[index], index); + } forwardInvocationImplementation.method_imp.call(this, self, SEL_forwardInvocation_, invocation); - return objj_msgSend(invocation, SEL_returnValue); + return invocation == null ? null : invocationIsa.objj_msgSend0(invocation, SEL_returnValue); } } } @@ -533,7 +549,15 @@ GLOBAL(class_getMethodImplementation) = function(/*Class*/ aClass, /*SEL*/ aSele } // Adding Classes -var REGISTERED_CLASSES = { }; +var REGISTERED_CLASSES = Object.create(null); + +GLOBAL(objj_enumerateClassesUsingBlock) = function(/* function(aClass) */aBlock) +{ + for (var key in REGISTERED_CLASSES) + { + aBlock(REGISTERED_CLASSES[key]); + } +} GLOBAL(objj_allocateClassPair) = function(/*Class*/ superclass, /*String*/ aName) { @@ -593,8 +617,8 @@ GLOBAL(objj_resetRegisterClasses) = function() for (var key in REGISTERED_CLASSES) delete global[key]; - REGISTERED_CLASSES = {}; - REGISTERED_PROTOCOLS = {}; + REGISTERED_CLASSES = Object.create(null); + REGISTERED_PROTOCOLS = Object.create(null); resetBundle(); } @@ -788,6 +812,141 @@ GLOBAL(objj_msgSendSuper) = function(/*id*/ aSuper, /*SEL*/ aSelector) return implementation.apply(aSuper.receiver, arguments); } +GLOBAL(objj_msgSendFast) = function(/*id*/ aReceiver, /*SEL*/ aSelector) +{ + var method = this.method_dtable[aSelector], + implementation = method ? method.method_imp : _objj_forward; + +#ifdef MAXIMUM_RECURSION_CHECKS + if (__objj_msgSend__StackDepth++ > MAXIMUM_RECURSION_DEPTH) + throw new Error("Maximum call stack depth exceeded."); + + try { +#endif + + return implementation.apply(aReceiver, arguments); + +#ifdef MAXIMUM_RECURSION_CHECKS + } finally { + __objj_msgSend__StackDepth--; + } +#endif +} + +var objj_msgSendFastInitialize = function(/*id*/ aReceiver, /*SEL*/ aSelector) +{ + _class_initialize(this); + return this.objj_msgSend.apply(this, arguments); +} + +GLOBAL(objj_msgSendFast0) = function(/*id*/ aReceiver, /*SEL*/ aSelector) +{ + var method = this.method_dtable[aSelector], + implementation = method ? method.method_imp : _objj_forward; + +#ifdef MAXIMUM_RECURSION_CHECKS + if (__objj_msgSend__StackDepth++ > MAXIMUM_RECURSION_DEPTH) + throw new Error("Maximum call stack depth exceeded."); + + try { +#endif + + return implementation(aReceiver, aSelector); + +#ifdef MAXIMUM_RECURSION_CHECKS + } finally { + __objj_msgSend__StackDepth--; + } +#endif +} + +var objj_msgSendFast0Initialize = function(/*id*/ aReceiver, /*SEL*/ aSelector) +{ + _class_initialize(this); + return this.objj_msgSend0(aReceiver, aSelector); +} + +GLOBAL(objj_msgSendFast1) = function(/*id*/ aReceiver, /*SEL*/ aSelector, arg0) +{ + var method = this.method_dtable[aSelector], + implementation = method ? method.method_imp : _objj_forward; + +#ifdef MAXIMUM_RECURSION_CHECKS + if (__objj_msgSend__StackDepth++ > MAXIMUM_RECURSION_DEPTH) + throw new Error("Maximum call stack depth exceeded."); + + try { +#endif + + return implementation(aReceiver, aSelector, arg0); + +#ifdef MAXIMUM_RECURSION_CHECKS + } finally { + __objj_msgSend__StackDepth--; + } +#endif +} + +var objj_msgSendFast1Initialize = function(/*id*/ aReceiver, /*SEL*/ aSelector, arg0) +{ + _class_initialize(this); + return this.objj_msgSend1(aReceiver, aSelector, arg0); +} + +GLOBAL(objj_msgSendFast2) = function(/*id*/ aReceiver, /*SEL*/ aSelector, arg0, arg1) +{ + var method = this.method_dtable[aSelector], + implementation = method ? method.method_imp : _objj_forward; + +#ifdef MAXIMUM_RECURSION_CHECKS + if (__objj_msgSend__StackDepth++ > MAXIMUM_RECURSION_DEPTH) + throw new Error("Maximum call stack depth exceeded."); + + try { +#endif + + return implementation(aReceiver, aSelector, arg0, arg1); + +#ifdef MAXIMUM_RECURSION_CHECKS + } finally { + __objj_msgSend__StackDepth--; + } +#endif +} + +var objj_msgSendFast2Initialize = function(/*id*/ aReceiver, /*SEL*/ aSelector, arg0, arg1) +{ + _class_initialize(this); + return this.objj_msgSend2(aReceiver, aSelector, arg0, arg1); +} + +GLOBAL(objj_msgSendFast3) = function(/*id*/ aReceiver, /*SEL*/ aSelector, arg0, arg1, arg2) +{ + var method = this.method_dtable[aSelector], + implementation = method ? method.method_imp : _objj_forward; + +#ifdef MAXIMUM_RECURSION_CHECKS + if (__objj_msgSend__StackDepth++ > MAXIMUM_RECURSION_DEPTH) + throw new Error("Maximum call stack depth exceeded."); + + try { +#endif + + return implementation(aReceiver, aSelector, arg0, arg1, arg2); + +#ifdef MAXIMUM_RECURSION_CHECKS + } finally { + __objj_msgSend__StackDepth--; + } +#endif +} + +var objj_msgSendFast3Initialize = function(/*id*/ aReceiver, /*SEL*/ aSelector, arg0, arg1, arg2) +{ + _class_initialize(this); + return this.objj_msgSend3(aReceiver, aSelector, arg0, arg1, arg2); +} + // Working with Methods GLOBAL(method_getName) = function(/*Method*/ aMethod) @@ -845,7 +1004,7 @@ objj_class.prototype.toString = objj_object.prototype.toString = function() var isa = this.isa; if (class_getInstanceMethod(isa, SEL_description)) - return objj_msgSend(this, SEL_description); + return isa.objj_msgSend0(this, SEL_description); if (class_isMetaClass(isa)) return this.name; @@ -853,6 +1012,12 @@ objj_class.prototype.toString = objj_object.prototype.toString = function() return "[" + isa.name + " Object](-description not implemented)"; } +objj_class.prototype.objj_msgSend = objj_msgSendFastInitialize; +objj_class.prototype.objj_msgSend0 = objj_msgSendFast0Initialize; +objj_class.prototype.objj_msgSend1 = objj_msgSendFast1Initialize; +objj_class.prototype.objj_msgSend2 = objj_msgSendFast2Initialize; +objj_class.prototype.objj_msgSend3 = objj_msgSendFast3Initialize; + var SEL_description = sel_getUid("description"), SEL_forwardingTargetForSelector_ = sel_getUid("forwardingTargetForSelector:"), SEL_methodSignatureForSelector_ = sel_getUid("methodSignatureForSelector:"), diff --git a/Tests/AppKit/CPAutosizePerformance.j b/Tests/AppKit/CPAutosizePerformance.j new file mode 100644 index 000000000..443d8135d --- /dev/null +++ b/Tests/AppKit/CPAutosizePerformance.j @@ -0,0 +1,63 @@ +@import +@import + +[CPApplication sharedApplication]; + + +@implementation CPAutosizePerformance : OJTestCase +{ + CPInteger NUMBER_OF_VIEWS; + CPInteger RESIZES_COUNT; +} + +- (void)setUp +{ + NUMBER_OF_VIEWS = 50; + RESIZES_COUNT = 250; +} + +- (void)testAutosizePerf +{ + var dur = 0, + masks = [0, 1, 2, 3, 4, 5, 6, 7, 8]; + + for (var i = 0; i < 64; i++) + dur += [self _testAutosizePerfWithMask:i]; + + CPLog.warn(dur + " ms when autosizing " + RESIZES_COUNT + " times a window with " + NUMBER_OF_VIEWS + " views, using masks " + masks); +} + +- (CPInteger)_testAutosizePerfWithMask:(CPInteger)aMask +{ + var windowRect = CGRectMake(0, 0, 500, 500), + _autoSizeWindow = [[CPWindow alloc] initWithContentRect:windowRect styleMask:CPResizableWindowMask]; + + for (var i = 0; i < NUMBER_OF_VIEWS; i++) + { + var x = (i % 10) * 50, + y = FLOOR(i / 10) * 50, + rect = CGRectMake(x, y, 50, 50); + + var autosizeView = [[CPView alloc] initWithFrame:rect]; + [autosizeView setAutoresizingMask:aMask]; + [[_autoSizeWindow contentView] addSubview:autosizeView]; + } + + [_autoSizeWindow setFrame:CGRectMake(0, 0, 600, 600)]; + + var start = new Date(); + + for (var k = 1; k <= RESIZES_COUNT; k++) + { + var size = 600 + k; + [_autoSizeWindow setFrame:CGRectMake(0, 0, size, size)]; + } + + var total = new Date() - start; + + //CPLog.warn("AutosizingMask " + aMask + " -setFrame: avg=" + (total/ RESIZES_COUNT) + " ms. Total = " + total + " ms."); + + return total; +} + +@end diff --git a/Tests/AppKit/CPButtonTest.j b/Tests/AppKit/CPButtonTest.j index e4d46af2c..38f8a4286 100644 --- a/Tests/AppKit/CPButtonTest.j +++ b/Tests/AppKit/CPButtonTest.j @@ -132,6 +132,16 @@ [self assert:CPMixedState equals:[button state] message:@"Mixed state is allowed, state should be CPMixedState"]; } +- (void)testThemeStateWhenSettingObjectValue +{ + [button unsetThemeState:[button themeState]]; + [button setObjectValue:CPOnState]; + [self assert:String(CPThemeStateSelected) equals:String([button themeState]) message:@"object should be in the selected themestate"]; + + [button setObjectValue:CPOffState]; + [self assert:String(CPThemeStateNormal) equals:String([button themeState]) message:@"object should be in the normal themestate"]; +} + - (void)testThemeAttributes { var attributes = [CPButton themeAttributes]; diff --git a/Tests/AppKit/CPLevelIndicatorTest.j b/Tests/AppKit/CPLevelIndicatorTest.j new file mode 100644 index 000000000..7047c8dea --- /dev/null +++ b/Tests/AppKit/CPLevelIndicatorTest.j @@ -0,0 +1,90 @@ +@import + +// You should never do this. This is only for testing purposes. +#define GET_LEVEL_INDICATOR_SEGMENT(levelIndicator, i) [(levelIndicator) layoutEphemeralSubviewNamed:@"segment-bezel-" + (i) positioned:CPWindowAbove relativeToEphemeralSubviewNamed:"bezel"] + +@implementation CPLevelIndicatorTest : OJTestCase +{ +} + ++ (CPLevelIndicator)indicatorWithLowWarning +{ + var levelIndicator = [[CPLevelIndicator alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; + [levelIndicator setMinValue:0]; + [levelIndicator setMaxValue:10]; + [levelIndicator setWarningValue:4]; + [levelIndicator setCriticalValue:2]; + [levelIndicator setValue:[CPColor greenColor] forThemeAttribute:@"color-normal"]; + [levelIndicator setValue:[CPColor yellowColor] forThemeAttribute:@"color-warning"]; + [levelIndicator setValue:[CPColor redColor] forThemeAttribute:@"color-critical"]; + return levelIndicator; +} + ++ (CPLevelIndicator)indicatorWithHighWarning +{ + var levelIndicator = [self indicatorWithLowWarning]; + [levelIndicator setWarningValue:6]; + [levelIndicator setCriticalValue:8]; + return levelIndicator; +} + +- (void)testLevelIndicatorWithLowWarningAndCriticalShouldShowNormalColor +{ + var levelIndicator = [CPLevelIndicatorTest indicatorWithLowWarning]; + + [levelIndicator setObjectValue:5]; + [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; + + [self assert:[CPColor greenColor] equals:[GET_LEVEL_INDICATOR_SEGMENT(levelIndicator, 0) backgroundColor]]; +} + +- (void)testLevelIndicatorWithLowWarningAndCriticalShouldShowWarningColor +{ + var levelIndicator = [CPLevelIndicatorTest indicatorWithLowWarning]; + + [levelIndicator setObjectValue:4]; + [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; + + [self assert:[CPColor yellowColor] equals:[GET_LEVEL_INDICATOR_SEGMENT(levelIndicator, 0) backgroundColor]]; +} + +- (void)testLevelIndicatorWithLowWarningAndCriticalShouldShowCriticalColor +{ + var levelIndicator = [CPLevelIndicatorTest indicatorWithLowWarning]; + + [levelIndicator setObjectValue:2]; + [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; + + [self assert:[CPColor redColor] equals:[GET_LEVEL_INDICATOR_SEGMENT(levelIndicator, 0) backgroundColor]]; +} + +- (void)testLevelIndicatorWithHighWarningAndCriticalShouldShowNormalColor +{ + var levelIndicator = [CPLevelIndicatorTest indicatorWithHighWarning]; + + [levelIndicator setObjectValue:5]; + [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; + + [self assert:[CPColor greenColor] equals:[GET_LEVEL_INDICATOR_SEGMENT(levelIndicator, 0) backgroundColor]]; +} + +- (void)testLevelIndicatorWithHighWarningAndCriticalShouldShowWarningColor +{ + var levelIndicator = [CPLevelIndicatorTest indicatorWithHighWarning]; + + [levelIndicator setObjectValue:6]; + [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; + + [self assert:[CPColor yellowColor] equals:[GET_LEVEL_INDICATOR_SEGMENT(levelIndicator, 0) backgroundColor]]; +} + +- (void)testLevelIndicatorWithHighWarningAndCriticalShouldShowCriticalColor +{ + var levelIndicator = [CPLevelIndicatorTest indicatorWithHighWarning]; + + [levelIndicator setObjectValue:8]; + [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; + + [self assert:[CPColor redColor] equals:[GET_LEVEL_INDICATOR_SEGMENT(levelIndicator, 0) backgroundColor]]; +} +@end diff --git a/Tests/AppKit/CPThemeTest.j b/Tests/AppKit/CPThemeTest.j new file mode 100644 index 000000000..0c85d6ee9 --- /dev/null +++ b/Tests/AppKit/CPThemeTest.j @@ -0,0 +1,70 @@ +@import + +@implementation CPThemeTest : OJTestCase +{ +} + +- (void)testCreatingThemeState +{ + var themeState = new ThemeState({'test': true, 'test1': true}); + [self assertTrue:themeState._stateNames['test'] message:"Creating a new ThemeState sets the statenames correctly."]; + [self assertTrue:themeState._stateNames['test1'] message:"Creating a new ThemeState sets the statenames correctly."]; + [self assertTrue:(themeState._stateNameCount === 2) message:"Creating a new ThemeState sets count of state names correctly."]; + [self assertTrue:(String(themeState) === "test+test1") message:"Creating a new ThemeState sets its string value to its sorted state names"]; + + themeState = new ThemeState(); + [self assertTrue:themeState._stateNames['normal'] message:"Creating a new ThemeState with no states sets the ThemeState to be a normal themestate"]; + [self assertTrue:(themeState._stateNameCount === 1) message:"Creating a new ThemeState with no states creates a new ThemeState with one state (normal)."]; + + themeState = new ThemeState({'boo': true, 'normal': true}); + [self assertTrue:themeState._stateNames['boo'] message:"Creating a new combined ThemeState with normal and something else only sets the other theme state."]; + [self assertFalse:themeState._stateNames['normal'] message:"Creating a new combined ThemeState with normal and something else only sets the other theme state."]; + [self assertTrue:(themeState._stateNameCount === 1) message:"Creating a new ThemeState with no states creates a new ThemeState with one state (normal)."]; +} + +- (void)testCreatingThemeStateWithCPThemeState +{ + var themeState1 = CPThemeState('normal'); + var themeState2 = CPThemeState('normal'); + [self assertTrue:(themeState1 === themeState2) message:"Creating two themestates with the same string returns the same object for both"]; + + + themeState1 = CPThemeState('smee+blee'); + themeState2 = CPThemeState('blee+smee'); + + [self assertTrue:(themeState1 === themeState2) message:"Creating two combined themestates with the same component themestates returns the same object for both"]; + + var themeState3 = CPThemeState('hello', themeState1, themeState2); + [self assertTrue:(String(themeState3) === "blee+hello+smee") message:"Can create a combined themestate with both string and object arguments"]; + + var themeState4 = CPThemeState(themeState3); + [self assertTrue:(themeState4 === themeState3) message:"Creating a new ThemeState off an old one returns the same object"]; + + var themeState5 = CPThemeState('a', 'theme', 'state'); + [self assertTrue:(String(themeState5) === 'a+state+theme') message:"Creating a new ThemeState using multiple strings works."]; + + var themeState6 = CPThemeState('a') + var themeState7 = CPThemeState('a', 'b') + [self assertTrue:(String(CPThemeState(themeState6, themeState7)) === 'a+b') message:"Creating a new ThemeState where the same state repeats itself does not result in the state being in the new themestate twice"]; +} + +- (void)testThemeAttributeValueForState +{ + var themeAttribute = [[_CPThemeAttribute alloc] initWithName:@"test" defaultValue:5]; + [self assertTrue:([themeAttribute valueForState:CPThemeState("aState")] == 5) message:"Return the default value for the theme attribute if the theme attribute has no value defined for the given state"]; + + [themeAttribute setValue:7 forState:CPThemeState("aState")]; + [self assertTrue:([themeAttribute valueForState:CPThemeState("aState")] == 7) message:"Return the correct value for the state if the state is defined"]; + + [themeAttribute setValue:8 forState:CPThemeState('normal')]; + [self assertTrue:([themeAttribute valueForState:CPThemeState("aState1")] == 8) message:"Return the normal value for the state if the theme attribute has no value defined for the given state but has a value for the normal state defined"]; + + [themeAttribute setValue:10 forState:CPThemeState('aState3+aState4')]; + [self assertTrue:([themeAttribute valueForState:CPThemeState("aState3")] == 8) message:"Return the normal value for the state if the state is only a partial match on the theme attributes defined states"]; + [self assertTrue:([themeAttribute valueForState:CPThemeState("aState4+aState3")] == 10) message:"Correctly match combined states on the theme attribute"]; + + [themeAttribute setValue:9 forState:CPThemeState('aState3')]; + [self assertTrue:([themeAttribute valueForState:CPThemeState("aState8+aState3+aState4")] == 10) message:"Return the largest partial subset match for a combined state that isn't a perfect match"]; +} + +@end diff --git a/Tests/AppKit/CPViewTest.j b/Tests/AppKit/CPViewTest.j index bc44eccb3..509664c4b 100644 --- a/Tests/AppKit/CPViewTest.j +++ b/Tests/AppKit/CPViewTest.j @@ -42,20 +42,83 @@ [self assert:undefined same:[_CPDisplayServer run]]; } -- (void)testThemeState +- (void)testHasThemeState { - [self assertTrue:[view hasThemeState:CPThemeStateNormal] message:@"CPView should initialy have CPThemeStateNormal"]; - [self assertFalse:[view hasThemeState:CPThemeStateDisabled] message:@"view should be disabled"]; + [self assertTrue:[view hasThemeState:CPThemeStateNormal] message:@"By default, CPView should be in CPThemeStateNormal"]; + + view._themeState = CPThemeState(CPThemeStateDisabled, CPThemeStateBordered); + [self assertTrue:[view hasThemeState:CPThemeStateDisabled] message:@"CPView should be in state CPThemeStateDisabled"]; + [self assertTrue:[view hasThemeState:CPThemeStateBordered] message:@"CPView should be in state CPThemeStateBordered"]; + [self assertTrue:[view hasThemeState:CPThemeState(CPThemeStateBordered, CPThemeStateDisabled)] message:@"CPView should be in the combined state of CPThemeStateDisabled and CPThemeStateBordered"]; + [self assertTrue:[view hasThemeState:[CPThemeStateBordered, CPThemeStateDisabled]] message:@"hasThemeState works with an array argument"]; + [self assertFalse:[view hasThemeState:CPThemeState(CPThemeStateNormal)] message:@"CPView should not be in CPThemeStateNormal"]; +} + +- (void)testSetThemeState +{ + [self assert:String(CPThemeStateNormal) equals:String([view themeState]) message:@"CPView should initialy have CPThemeStateNormal"]; [view setThemeState:CPThemeStateDisabled]; - [self assertTrue:[view hasThemeState:CPThemeStateDisabled] message:@"The view should be CPThemeStateDisabled"]; + [self assert:String(CPThemeStateDisabled) equals:String([view themeState]) message:@"The view should be CPThemeStateDisabled"]; [view setThemeState:CPThemeStateHighlighted]; - [self assertTrue:[view hasThemeState:CPThemeStateHighlighted] message:@"Theme state should be CPThemeStateHighlighted"]; + [self assert:String(CPThemeState(CPThemeStateDisabled, CPThemeStateHighlighted)) equals:String([view themeState]) message:@"Theme state should be CPThemeStateHighlighted and CPThemeStateDisabled"]; - [view setThemeState:CPThemeStateNormal | CPThemeStateHighlighted]; + [view unsetThemeState:[view themeState]]; + [view setThemeState:CPThemeState(CPThemeStateNormal, CPThemeStateHighlighted)]; [self assertFalse:[view hasThemeState:CPThemeStateNormal] message:@"CPThemeStateNormal cannot exist as part of a compound state"]; + [self assert:String([view themeState]) equals:String(CPThemeStateHighlighted) message:@"The view should be CPThemeStateHighlighted"]; + + [view setThemeState:CPThemeState(CPThemeStateHighlighted, CPThemeStateDisabled)]; [self assertTrue:[view hasThemeState:CPThemeStateHighlighted] message:@"The view should be CPThemeStateHighlighted"]; + [self assertTrue:[view hasThemeState:CPThemeStateDisabled] message:@"The view should be CPThemeStateDisabled"]; + [self assert:String(CPThemeState(CPThemeStateDisabled, CPThemeStateHighlighted)) equals:String([view themeState]) message:@"The view should be in the combined state of CPThemeStateDisabled and CPThemeStateHighlighted"]; + + [view unsetThemeState:[view themeState]]; + [view setThemeState:[CPThemeStateSelected, CPThemeStateDisabled]]; + [self assert:String(CPThemeState(CPThemeStateDisabled, CPThemeStateSelected)) equals:String([view themeState]) message:@"setThemeState works with array argument"]; +} + +- (void)testUnsetThemeState +{ + [self assert:String(CPThemeStateNormal) equals:String([view themeState]) message:@"CPView should initialy have CPThemeStateNormal"]; + [view unsetThemeState:CPThemeStateNormal]; + [self assert:String(CPThemeStateNormal) equals:String([view themeState]) message:@"CPView always be in CPThemeStateNormal even if you try to unset it"]; + + [view setThemeState:CPThemeStateDisabled]; + [view unsetThemeState:CPThemeStateDisabled]; + [self assert:String(CPThemeStateNormal) equals:String([view themeState]) message:@"CPView should be in CPThemeStateNormal when all other theme states have been unset from it"]; + + [view setThemeState:CPThemeState(CPThemeStateDisabled, CPThemeStateHighlighted)]; + [view unsetThemeState:CPThemeStateDisabled]; + [self assert:String(CPThemeStateHighlighted) equals:String([view themeState]) message:"@CPView should have the remaining state when one of its combined states is unset"]; + + [view setThemeState:CPThemeState(CPThemeStateDisabled, CPThemeStateHighlighted, CPThemeStateBordered)]; + [view unsetThemeState:CPThemeState(CPThemeStateBordered, CPThemeStateHighlighted, CPThemeStateDisabled)]; + [self assert:String(CPThemeStateNormal) equals:String([view themeState]) message:@"CPView should be able to unset a combined theme state"]; + + [view setThemeState:CPThemeState(CPThemeStateDisabled, CPThemeStateHighlighted, CPThemeStateBordered)]; + [view unsetThemeState:[CPThemeStateBordered, CPThemeStateHighlighted]]; + [self assert:String(CPThemeStateDisabled) equals:String([view themeState]) message:@"unsetThemeState works with array argument"]; + + [view setThemeState:CPThemeStateDisabled]; + [view unsetThemeState:[CPThemeStateDisabled, CPThemeStateHighlighted]]; + [self assert:String(CPThemeStateNormal) equals:String([view themeState]) message:@"CPView should be able to unset a combined theme state that has more theme states than the view currently has"]; + + [view setThemeState:CPThemeState(CPThemeStateDisabled, CPThemeStateBordered)]; + var returnValue = [view unsetThemeState:[CPThemeStateDisabled, CPThemeStateHighlighted]]; + [self assert:String(CPThemeStateBordered) equals:String([view themeState]) message:@"CPView should be able to unset a combined theme state that has not entirely overlapping themestates"]; + [self assertTrue:returnValue message:@"When unsetThemeState successfully unsets anything, it return YES"]; + + [view setThemeState:CPThemeState(CPThemeStateDisabled, CPThemeStateBordered)]; + var returnValue = [view unsetThemeState:[CPThemeStateSelected, CPThemeStateHighlighted]]; + [self assert:String(CPThemeState(CPThemeStateDisabled, CPThemeStateBordered)) equals:String([view themeState]) message:@"CPView not unset any theme states it does not have"]; + [self assertFalse:returnValue message:@"When unsetThemeState doesn't unset anything, it returns NO"]; + + [view setThemeState:CPThemeState(CPThemeStateDisabled, CPThemeStateBordered)]; + var returnValue = [view unsetThemeState:null]; + [self assert:String(CPThemeState(CPThemeStateDisabled, CPThemeStateBordered)) equals:String([view themeState]) message:@"Trying to unset a null themestate does not change the current themestate of the view"]; + [self assertFalse:returnValue message:@"Trying to unset a null themestate returns false"]; } - (void)testThemeAttributes @@ -182,4 +245,214 @@ [self assertTrue:CGPointEqualToPoint(CGPointMake(4, 6), [subView0 convertPoint:CGPointMake(7, 11) fromView:tView0])] } ++ (CPArray)createResponderView:(/*@ref */CPView)viewOut siblingView:(/*@ref */CPView)siblingViewOut inWindow:(/*@ref */CPWindow)windowOut +{ + var aView = [CPResponderView new], + siblingView = [CPResponderView new], + aWindow = [CPWindow new]; + + [[aWindow contentView] addSubview:aView]; + [[aWindow contentView] addSubview:siblingView]; + + if (viewOut) + @deref(viewOut) = aView; + if (siblingViewOut) + @deref(siblingViewOut) = siblingView; + if (windowOut) + @deref(windowOut) = aWindow; + + return aView; +} + +- (void)testWhenFirstResponderShouldHaveThemeStateFirstResponder +{ + var aView, siblingView, aWindow; + [CPViewTest createResponderView:@ref(aView) siblingView:@ref(siblingView) inWindow:@ref(aWindow)]; + + [self assertFalse:[aView hasThemeState:CPThemeStateFirstResponder]]; + [self assertFalse:[siblingView hasThemeState:CPThemeStateFirstResponder]]; + + [aWindow makeFirstResponder:aView]; + [self assertTrue:[aView hasThemeState:CPThemeStateFirstResponder]]; + + [aWindow makeFirstResponder:siblingView]; + [self assertTrue:[siblingView hasThemeState:CPThemeStateFirstResponder]]; +} + +- (void)testWhenChildOfFirstResponderShouldHaveThemeStateFirstResponder +{ + var aView, siblingView, aWindow; + [CPViewTest createResponderView:@ref(aView) siblingView:@ref(siblingView) inWindow:@ref(aWindow)]; + var subview = [CPView new]; + [aView addSubview:subview]; + + [aWindow makeFirstResponder:aView]; + [self assertTrue:[aView hasThemeState:CPThemeStateFirstResponder]]; + [self assertTrue:[subview hasThemeState:CPThemeStateFirstResponder]]; +} + +- (void)testWhenNotFirstResponderShouldLoseThemeStateFirstResponder +{ + var aView, siblingView, aWindow; + [CPViewTest createResponderView:@ref(aView) siblingView:@ref(siblingView) inWindow:@ref(aWindow)]; + + [aWindow makeFirstResponder:aView]; + [self assertFalse:[siblingView hasThemeState:CPThemeStateFirstResponder]]; + + [aWindow makeFirstResponder:siblingView]; + [self assertFalse:[aView hasThemeState:CPThemeStateFirstResponder]]; +} + +- (void)testWhenNotChildOfFirstResponderShouldLoseThemeStateFirstResponder +{ + var aView, siblingView, aWindow; + [CPViewTest createResponderView:@ref(aView) siblingView:@ref(siblingView) inWindow:@ref(aWindow)]; + var subview = [CPView new]; + [aView addSubview:subview]; + + [aWindow makeFirstResponder:aView]; + [self assertTrue:[aView hasThemeState:CPThemeStateFirstResponder]]; + [self assertTrue:[subview hasThemeState:CPThemeStateFirstResponder]]; + + [aWindow makeFirstResponder:siblingView]; + [self assertFalse:[aView hasThemeState:CPThemeStateFirstResponder]]; + [self assertFalse:[subview hasThemeState:CPThemeStateFirstResponder]]; +} + +- (void)testWhenFirstResponderButNotKeyWindowShouldStillHaveThemeStateFirstResponder +{ + var aView, siblingView, aWindow; + [CPViewTest createResponderView:@ref(aView) siblingView:@ref(siblingView) inWindow:@ref(aWindow)]; + + var aView2, siblingView2, aWindow2; + [CPViewTest createResponderView:@ref(aView2) siblingView:@ref(siblingView2) inWindow:@ref(aWindow2)]; + + [aWindow makeKeyWindow]; + [aWindow makeFirstResponder:aView]; + [self assertTrue:[aView hasThemeState:CPThemeStateFirstResponder]]; + + [aWindow2 makeFirstResponder:siblingView]; + [aWindow2 makeKeyWindow]; + + [self assertTrue:[aView hasThemeState:CPThemeStateFirstResponder]]; + [self assertTrue:[siblingView hasThemeState:CPThemeStateFirstResponder]]; +} + +- (void)testWhenChildOfFirstResponderButNotKeyWindowShouldStillHaveThemeStateFirstResponder +{ + var aView, siblingView, aWindow; + [CPViewTest createResponderView:@ref(aView) siblingView:@ref(siblingView) inWindow:@ref(aWindow)]; + + var subview = [CPView new]; + [aView addSubview:subview]; + + var aView2, siblingView2, aWindow2; + [CPViewTest createResponderView:@ref(aView2) siblingView:@ref(siblingView2) inWindow:@ref(aWindow2)]; + + [aWindow makeKeyWindow]; + [aWindow makeFirstResponder:aView]; + [aWindow2 makeFirstResponder:siblingView]; + [aWindow2 makeKeyWindow]; + [self assertTrue:[subview hasThemeState:CPThemeStateFirstResponder]]; +} + +- (void)testWhenNotFirstResponderButNotKeyWindowShouldStillLoseThemeStateFirstResponder +{ + var aView, siblingView, aWindow; + [CPViewTest createResponderView:@ref(aView) siblingView:@ref(siblingView) inWindow:@ref(aWindow)]; + + var aView2, siblingView2, aWindow2; + [CPViewTest createResponderView:@ref(aView2) siblingView:@ref(siblingView2) inWindow:@ref(aWindow2)]; + + [aWindow makeKeyWindow]; + [aWindow makeFirstResponder:aView]; + [aWindow2 makeFirstResponder:siblingView]; + [aWindow2 makeKeyWindow]; + [aWindow makeFirstResponder:siblingView]; + + [self assertFalse:[aView hasThemeState:CPThemeStateFirstResponder]]; +} + +- (void)testWhenNotChildOfFirstResponderButNotKeyWindowShouldShouldStillLoseThemeStateFirstResponder +{ + var aView, siblingView, aWindow; + [CPViewTest createResponderView:@ref(aView) siblingView:@ref(siblingView) inWindow:@ref(aWindow)]; + + var subview = [CPView new]; + [aView addSubview:subview]; + + var aView2, siblingView2, aWindow2; + [CPViewTest createResponderView:@ref(aView2) siblingView:@ref(siblingView2) inWindow:@ref(aWindow2)]; + + [aWindow makeKeyWindow]; + [aWindow makeFirstResponder:aView]; + [aWindow2 makeFirstResponder:siblingView]; + [aWindow2 makeKeyWindow]; + [aWindow makeFirstResponder:siblingView]; + + [self assertFalse:[subview hasThemeState:CPThemeStateFirstResponder]]; +} + +- (void)testWhenAndOnlyWhenWindowIsKeyEveryViewShouldHaveThemeStateKeyWindow +{ + var aView, siblingView, aWindow; + [CPViewTest createResponderView:@ref(aView) siblingView:@ref(siblingView) inWindow:@ref(aWindow)]; + + var subview = [CPView new]; + [aView addSubview:subview]; + + var aView2, siblingView2, aWindow2; + [CPViewTest createResponderView:@ref(aView2) siblingView:@ref(siblingView2) inWindow:@ref(aWindow2)]; + + [aWindow makeKeyWindow]; + [self assertTrue:[aView hasThemeState:CPThemeStateKeyWindow]]; + [self assertTrue:[siblingView hasThemeState:CPThemeStateKeyWindow]]; + [self assertTrue:[subview hasThemeState:CPThemeStateKeyWindow]]; + [self assertFalse:[aView2 hasThemeState:CPThemeStateKeyWindow]]; + [self assertFalse:[siblingView2 hasThemeState:CPThemeStateKeyWindow]]; + + [aWindow2 makeKeyWindow]; + [self assertFalse:[aView hasThemeState:CPThemeStateKeyWindow]]; + [self assertFalse:[siblingView hasThemeState:CPThemeStateKeyWindow]]; + [self assertFalse:[subview hasThemeState:CPThemeStateKeyWindow]]; + [self assertTrue:[aView2 hasThemeState:CPThemeStateKeyWindow]]; + [self assertTrue:[siblingView2 hasThemeState:CPThemeStateKeyWindow]]; +} + +- (void)testWhenFirstResponderBeforeBeingAddedSubviewShouldHaveThemeStateFirstResponder +{ + var aView, siblingView, aWindow; + [CPViewTest createResponderView:@ref(aView) siblingView:@ref(siblingView) inWindow:@ref(aWindow)]; + + [self assertFalse:[aView hasThemeState:CPThemeStateFirstResponder]]; + [self assertFalse:[siblingView hasThemeState:CPThemeStateFirstResponder]]; + + [aWindow makeFirstResponder:aView]; + + var subview = [CPView new]; + [aView addSubview:subview]; + [self assertTrue:[subview hasThemeState:CPThemeStateFirstResponder]]; +} + +- (void)testWhenRemovedSubviewShouldLoseThemeStateFirstResponder +{ + var aView, siblingView, aWindow; + [CPViewTest createResponderView:@ref(aView) siblingView:@ref(siblingView) inWindow:@ref(aWindow)]; + + [aWindow makeFirstResponder:aView]; + var subview = [CPView new]; + [aView addSubview:subview]; + [subview removeFromSuperview]; + [self assertFalse:[subview hasThemeState:CPThemeStateFirstResponder]]; +} + @end + +@implementation CPResponderView : CPView + +- (BOOL)acceptsFirstResponder +{ + return YES; +} + +@end \ No newline at end of file diff --git a/Tests/Foundation/CPAttributedStringTest.j b/Tests/Foundation/CPAttributedStringTest.j index 7980124a8..43321a28c 100644 --- a/Tests/Foundation/CPAttributedStringTest.j +++ b/Tests/Foundation/CPAttributedStringTest.j @@ -5,6 +5,50 @@ var sharedObject = [CPObject new]; @implementation CPAttributedStringTest : OJTestCase +- (void)testAppendToEmptyString +{ + var string = [CPMutableAttributedString new]; + [string replaceCharactersInRange:CPMakeRange(0, 0) withString:@"hi there"]; + [self assert:[string string] equals:@"hi there"]; +} + +- (void)testAppendToEndOfString +{ + var string = [[CPMutableAttributedString alloc] initWithString:@"hi there"]; + [string replaceCharactersInRange:CPMakeRange(8, 0) withString:@" it is me"]; + [self assert:[string string] equals:@"hi there it is me"]; +} + +- (void)testWriteOverRangeBoundaries +{ + var string = [[CPMutableAttributedString alloc] initWithString:@"Fusce\n" attributes:@{"testkey": 1}]; + + [string replaceCharactersInRange:CPMakeRange(6, 0) + withAttributedString:[[CPAttributedString alloc] initWithString:@"this is boldface" + attributes:@{"testkey": 2}]]; + + [string replaceCharactersInRange:CPMakeRange(5, 3) withString:@" "]; + + var aRange = CPMakeRange(0, 0), + attribs = [string attributesAtIndex:4 effectiveRange:aRange]; + + [self assertTrue:([attribs objectForKey:@"testkey"] === 1) + message:"testWriteOverRangeBoundaries: expected:" + @"1" + " actual:" + [attribs objectForKey:@"testkey"]]; +} + +- (void)testCoalesceOnInsert +{ + var string = [[CPMutableAttributedString alloc] initWithString:@"Fusce\n" attributes:@{"testkey": 1}], + prevRangeEntriesLength = string._rangeEntries.length; + + [string insertAttributedString:[[CPAttributedString alloc] + initWithString:@"this is boldface" + attributes:@{"testkey": 1}] atIndex:2]; + + [self assertTrue:(string._rangeEntries.length === prevRangeEntriesLength) + message:"testCoalesceOnInsert: expected:" + prevRangeEntriesLength + " actual:" + string._rangeEntries.length]; +} + - (CPAttributedString)stringForTesting { var string = [[CPAttributedString alloc] initWithString:"The quick brown fox jumped over the lazy dog."]; @@ -53,7 +97,7 @@ var sharedObject = [CPObject new]; message:"testInitWithAttributedString: expected:" + [self stringForTesting] + " actual:" + string]; } -- (void)testIinitWithString_attributes +- (void)testInitWithString_attributes { var string = [[CPAttributedString alloc] initWithString:@"hi there" attributes:@{}]; @@ -179,6 +223,38 @@ var sharedObject = [CPObject new]; [self assertFalse:[a isEqual:@"HELLO!"] message:"Expected a to not equal 'HELLO!', but it did"]; } +- (void)testIsEqualEmpty +{ + var a = [[CPMutableAttributedString alloc] initWithString:@""], + b = [[CPMutableAttributedString alloc] initWithString:@""]; + + [self assertTrue:[a isEqual:b]]; +} + +- (void)testIsEqualWithSimpleAttribute +{ + var a = [[CPMutableAttributedString alloc] initWithString:@"GREETINGS!"], + b = [[CPMutableAttributedString alloc] initWithString:@"GREETINGS!"]; + + [a addAttribute:"color" value:[CPColor redColor] range:CPMakeRange(0, 5)]; + [self assertFalse:[a isEqual:b] message:"red string should not equal string without color attribute"]; + [b addAttribute:"color" value:[CPColor redColor] range:CPMakeRange(0, 5)]; + [self assertTrue:[a isEqual:b]]; +} + +- (void)testIsEqualWithTwoAttributes +{ + var a = [[CPMutableAttributedString alloc] initWithString:@"GREETINGS!"], + b = [[CPMutableAttributedString alloc] initWithString:@"GREETINGS!"]; + + [a addAttribute:"color" value:[CPColor redColor] range:CPMakeRange(0, 9)]; + [b addAttribute:"color" value:[CPColor redColor] range:CPMakeRange(0, 9)]; + [a addAttribute:"font" value:"Helvetica" range:CPMakeRange(1, 4)]; + [self assertFalse:[a isEqual:b] message:"font difference from index 1 should be found"]; + [b addAttribute:"font" value:"Helvetica" range:CPMakeRange(1, 4)]; + [self assertTrue:[a isEqual:b]]; +} + //Extracting a Substring //- (CPAttributedString)attributedSubstringFromRange:(CPRange)aRange - (void)testAttributedSubstringFromRange @@ -458,7 +534,6 @@ var sharedObject = [CPObject new]; testAttributeAtIndexWithValue(string, 10, "duck", "goose", self); testAttributeAtIndexWithValue(string, 30, "duck", "goose", self); testAttributeAtIndexWithValue(string, 40, "duck", undefined, self); - } //- (void)removeAttribute:(CPString)anAttribute range:(CPRange)aRange @@ -554,6 +629,23 @@ var sharedObject = [CPObject new]; [self assertTrue:[[self stringForTesting] isEqual:string] message:"setAttributedString should have made strings equal, but they were not"]; } +- (void)testEncoding +{ + // We can't test using [self stringForTesting] because it contains attributes without coding support. + var original = [[CPMutableAttributedString alloc] initWithString:@"firstsecondthird"]; + [original addAttribute:"color" value:[CPColor redColor] range:CPMakeRange(0, 5)]; + [original addAttribute:"color" value:[CPColor greenColor] range:CPMakeRange(5, 6)]; + [original addAttribute:"color" value:[CPColor blueColor] range:CPMakeRange(11, 5)]; + + var encoded = [CPKeyedArchiver archivedDataWithRootObject:original], + decoded = [CPKeyedUnarchiver unarchiveObjectWithData:encoded]; + [self assert:original equals:decoded]; + + // Verify that the original and decoded are not incorrectly tied together. + [original addAttribute:"color" value:[CPColor blueColor] range:CPMakeRange(0, 5)]; + [self assertFalse:[original isEqual:decoded]]; +} + @end function isEqualAllowingUndefinedCast(a, b) @@ -585,7 +677,7 @@ function testAttributeAtIndexWithValue(aString, anIndex, aKey, aValue, aSelf) var range = CPMakeRange(0, 0), attribute = [aString attribute:aKey atIndex:anIndex effectiveRange:range]; - [aSelf assertTrue: isEqualAllowingUndefinedCast(attribute, aValue) message: "expecting '" + aKey + "' to be '" + aValue + "', was '" + attribute]; + [aSelf assertTrue:isEqualAllowingUndefinedCast(attribute, aValue) message: "expecting '" + aKey + "' to be '" + aValue + "', was '" + attribute]; var index = range.location; @@ -593,7 +685,7 @@ function testAttributeAtIndexWithValue(aString, anIndex, aKey, aValue, aSelf) { attribute = [aString attribute:aKey atIndex:index++ effectiveRange:nil]; - [aSelf assertTrue: isEqualAllowingUndefinedCast(attribute, aValue) message: "expecting '" + aKey + "' to be '" + aValue + "', was '" + attribute]; + [aSelf assertTrue:isEqualAllowingUndefinedCast(attribute, aValue) message: "expecting '" + aKey + "' to be '" + aValue + "', was '" + attribute]; } } diff --git a/Tests/Foundation/CPDateTest.j b/Tests/Foundation/CPDateTest.j index 996d05787..4223e2168 100644 --- a/Tests/Foundation/CPDateTest.j +++ b/Tests/Foundation/CPDateTest.j @@ -35,6 +35,30 @@ [self assert:middle equals:[middle laterDate:past] message:"laterDate incorrect"]; } +- (void)testDateByAddingTimeIntervalZeroShouldReturnSameDate +{ + var a = [CPDate dateWithTimeIntervalSince1970:1231889490.0], + b = [a dateByAddingTimeInterval:0]; + + [self assert:[b timeIntervalSince1970] equals:1231889490]; +} + +- (void)testDateByAddingTimeIntervalPositiveShouldReturnNewerDate +{ + var a = [CPDate dateWithTimeIntervalSince1970:1231889490.0], + b = [a dateByAddingTimeInterval:789]; + + [self assert:[b timeIntervalSince1970] equals:1231889490 + 789]; +} + +- (void)testDateByAddingTimeIntervalNegativeShouldReturnOlderDate +{ + var a = [CPDate dateWithTimeIntervalSince1970:1231889490.0], + b = [a dateByAddingTimeInterval:-789]; + + [self assert:[b timeIntervalSince1970] equals:1231889490 - 789]; +} + - (void)testEquals { var now = [CPDate date]; diff --git a/Tests/Foundation/CPObjectTest.j b/Tests/Foundation/CPObjectTest.j index c10293124..f333ab2c5 100644 --- a/Tests/Foundation/CPObjectTest.j +++ b/Tests/Foundation/CPObjectTest.j @@ -4,6 +4,16 @@ { } +- (void)testCPObjectIsSubclassOfClassCPObjectShouldBeTrue +{ + [self assertTrue:[CPObject isSubclassOfClass:[CPObject class]]]; +} + +- (void)testIsSubclassOfClassWithNonSubclassShouldBeFalse +{ + [self assertFalse:[CPObject isSubclassOfClass:[SuperReceiver class]]]; +} + - (void)testImplementsSelector { var receiver = [[Receiver alloc] init]; diff --git a/Tests/Foundation/CPURLConnectionTest.j b/Tests/Foundation/CPURLConnectionTest.j index 8c046a9c2..91df094d3 100644 --- a/Tests/Foundation/CPURLConnectionTest.j +++ b/Tests/Foundation/CPURLConnectionTest.j @@ -20,7 +20,7 @@ - (void)testSynchronousRequestSuccess { - var req = [CPURLRequest requestWithURL:@"Tests/Foundation/CPURLConnectionTest.j"], + var req = [CPURLRequest requestWithURL:@"Tests/Foundation/CPURLConnectionTest.j"], data = [CPURLConnection sendSynchronousRequest:req returningResponse:nil]; [self assert:CPData equals:[data class]]; @@ -30,10 +30,16 @@ - (void)testSynchronousRequestNotFound { - var req = [CPURLRequest requestWithURL:@"NotFound"], + var req = [CPURLRequest requestWithURL:@"NotFound"], data = [CPURLConnection sendSynchronousRequest:req returningResponse:nil]; [self assertNull:data]; } -@end \ No newline at end of file +- (void)testRequestWithCredentials +{ + var connection = [CPURLConnection connectionWithRequest:[CPURLRequest requestWithURL:@"Tests/Foundation/CPURLConnectionTest.j"] delegate:self withCredentials:YES]; + [self assertTrue:[connection withCredentials]]; +} + +@end diff --git a/Tests/Manual/CPAnimationTest/AppController.j b/Tests/Manual/CPAnimationTest/AppController.j new file mode 100644 index 000000000..7b739ae32 --- /dev/null +++ b/Tests/Manual/CPAnimationTest/AppController.j @@ -0,0 +1,76 @@ +@import +@import + + +@implementation AppController : CPObject +{ + @outlet CPWindow theWindow; + @outlet CPView view; + @outlet CPButton buttonStart; + @outlet CPButton buttonStop; + + CPAnimation _animation; + CGPoint _firstPoint; +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. + _firstPoint = CGPointMakeCopy([view frameOrigin]); +} + +- (void)awakeFromCib +{ + // This is called when the cib is done loading. + // You can implement this method on any object instantiated from a Cib. + // It's a useful hook for setting up current UI values, and other things. + + // In this case, we want the window from Cib to become our full browser window + [theWindow setFullPlatformWindow:YES]; +} + +- (IBAction)clickButtonStart:(id)sender +{ + [view setFrameOrigin:_firstPoint]; + + _animation = [[CPViewAnimation alloc] initWithViewAnimations:[ + [CPDictionary dictionaryWithJSObject:{ + CPViewAnimationTargetKey:view, + CPViewAnimationStartFrameKey:[view frame], + CPViewAnimationEndFrameKey:CGRectMake([view frameOrigin].x, [view frameOrigin].y + 200, [view frameSize].width, [view frameSize].height) + }]]]; + + [_animation setAnimationCurve:CPAnimationLinear]; + [_animation setDuration:2]; + [_animation setDelegate:self]; + [_animation startAnimation]; +} + +- (IBAction)clickButtonStop:(id)sender +{ + [_animation stopAnimation]; +} + +- (void)animationDidEnd:(CPAnimation)anAnimation +{ + console.error(@"animationDidEnd"); +} + +- (void)animationDidStop:(CPAnimation)anAnimation +{ + console.error(@"animationDidStop"); +} + +- (BOOL)animationShouldStart:(CPAnimation)anAnimation +{ + console.error(@"animationShouldStart"); + return YES; +} + +- (float)animation:(CPAnimation)animation valueForProgress:(float)progress +{ + console.error(@"animation:valueForProgress: " + progress); + return progress; +} + +@end diff --git a/Tests/Manual/CPAnimationTest/Info.plist b/Tests/Manual/CPAnimationTest/Info.plist new file mode 100644 index 000000000..95579e3e2 --- /dev/null +++ b/Tests/Manual/CPAnimationTest/Info.plist @@ -0,0 +1,14 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + CPAnimationTest + CPBundleVersion + 1.0 + CPHumanReadableCopyright + Copyright © 2014, Your Company All rights reserved. + + diff --git a/Tests/Manual/CPAnimationTest/Jakefile b/Tests/Manual/CPAnimationTest/Jakefile new file mode 100644 index 000000000..a7cfaae61 --- /dev/null +++ b/Tests/Manual/CPAnimationTest/Jakefile @@ -0,0 +1,176 @@ +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"), + projectName = "CPAnimationTest"; + +app (projectName, function(task) +{ + ENV["OBJJ_INCLUDE_PATHS"] = "Frameworks"; + + if (configuration === "Debug") + ENV["OBJJ_INCLUDE_PATHS"] = FILE.join(ENV["OBJJ_INCLUDE_PATHS"], configuration); + + task.setBuildIntermediatesPath(FILE.join("Build", "CPAnimationTest.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("CPAnimationTest"); + task.setIdentifier("com.yourcompany.CPAnimationTest"); + task.setVersion("1.0"); + task.setAuthor("Your Company"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("CPAnimationTest"); + task.setSources(new FileList("**/*.j").exclude(FILE.join("Build", "**")).exclude(FILE.join("Frameworks", "Source", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", [projectName], function() +{ + printResults(configuration); +}); + +task ("build", ["default"], function() +{ + updateApplicationSize(); +}); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", projectName, "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", projectName, "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", projectName)); + OS.system(["press", "-f", FILE.join("Build", "Release", projectName), FILE.join("Build", "Deployment", projectName)]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", projectName)); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", projectName), FILE.join("Build", "Desktop", projectName, "CPAnimationTest.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", projectName, "CPAnimationTest.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, projectName)); + print("----------------------------"); +} + +function updateApplicationSize() +{ + print("Calculating application file sizes..."); + + var contents = FILE.read(FILE.join("Build", ENV["CONFIGURATION"], projectName, "Info.plist"), { charset:"UTF-8" }), + format = CFPropertyList.sniffedFormatOfString(contents), + plist = CFPropertyList.propertyListFromString(contents), + totalBytes = {executable:0, data:0, mhtml:0}; + + // Get the size of all framework executables and sprite data + var frameworksDir = "Frameworks"; + + if (ENV["CONFIGURATION"] === "Debug") + frameworksDir = FILE.join(frameworksDir, "Debug"); + + var frameworks = FILE.list(frameworksDir); + + frameworks.forEach(function(framework) + { + if (framework !== "Source") + addBundleFileSizes(FILE.join(frameworksDir, framework), totalBytes); + }); + + // Read in the default theme name, and attempt to get its size + var themeName = plist.valueForKey("CPDefaultTheme") || "Aristo2", + themePath = nil; + + if (themeName === "Aristo" || themeName === "Aristo2") + themePath = FILE.join(frameworksDir, "AppKit", "Resources", themeName + ".blend"); + else + themePath = FILE.join("Frameworks", "Resources", themeName + ".blend"); + + if (FILE.isDirectory(themePath)) + addBundleFileSizes(themePath, totalBytes); + + // Add sizes for the app + addBundleFileSizes(FILE.join("Build", ENV["CONFIGURATION"], projectName), totalBytes); + + print("Executables: " + totalBytes.executable + ", sprite data: " + totalBytes.data + ", total: " + (totalBytes.executable + totalBytes.data)); + + var dict = new CFMutableDictionary(); + + dict.setValueForKey("executable", totalBytes.executable); + dict.setValueForKey("data", totalBytes.data); + dict.setValueForKey("mhtml", totalBytes.mhtml); + + plist.setValueForKey("CPApplicationSize", dict); + + FILE.write(FILE.join("Build", ENV["CONFIGURATION"], projectName, "Info.plist"), CFPropertyList.stringFromPropertyList(plist, format), { charset:"UTF-8" }); +} + +function addBundleFileSizes(bundlePath, totalBytes) +{ + var bundleName = FILE.basename(bundlePath), + environment = bundleName === "Foundation" ? "Objj" : "Browser", + bundlePath = FILE.join(bundlePath, environment + ".environment"); + + if (FILE.isDirectory(bundlePath)) + { + var filename = bundleName + ".sj", + filePath = new FILE.Path(FILE.join(bundlePath, filename)); + + if (filePath.exists()) + totalBytes.executable += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "dataURLs.txt")); + + if (filePath.exists()) + totalBytes.data += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLData.txt")); + + if (filePath.exists()) + totalBytes.mhtml += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLPaths.txt")); + + if (filePath.exists()) + totalBytes.mhtml += filePath.size(); + } +} diff --git a/Tests/Manual/CPAnimationTest/Resources/MainMenu.cib b/Tests/Manual/CPAnimationTest/Resources/MainMenu.cib new file mode 100644 index 000000000..3a27a267f --- /dev/null +++ b/Tests/Manual/CPAnimationTest/Resources/MainMenu.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;18E;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;2;11E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;137E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;138E;E;D;K;10;$classnameS;31;CPCibRuntimeAttributesConnectorK;8;$classesA;S;31;CPCibRuntimeAttributesConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;135E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;1;0E;K;40;CPCibRuntimeAttributesConnectorObjectKeyD;K;6;CP$UIDd;3;135E;K;42;CPCibRuntimeAttributesConnectorKeyPathsKeyD;K;6;CP$UIDd;3;139E;K;40;CPCibRuntimeAttributesConnectorValuesKeyD;K;6;CP$UIDd;3;140E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;136E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;141E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;136E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;132E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;142E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;136E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;133E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;143E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;136E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;128E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;144E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;136E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;135E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;145E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;123E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;146E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;120E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;147E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;64E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;148E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;72E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;149E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;150E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;78E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;151E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;79E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;71E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;153E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;126E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;154E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;80E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;155E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;75E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;58E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;157E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;113E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;158E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;159E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;87E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;90E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;161E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;86E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;162E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;102E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;89E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;164E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;88E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;165E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;101E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;166E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;83E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;167E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;94E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;168E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;98E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;169E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;84E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;103E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;171E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;121E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;172E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;116E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;173E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;117E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;174E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;104E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;107E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;108E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;177E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;109E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;132E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;136E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;179E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;133E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;136E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;180E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;137E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;181E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;182E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;183E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;184E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;63E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;185E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;63E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;60E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;184E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;187E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;189E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;63E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;190E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;191E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;192E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;63E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;193E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;63E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;194E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;190E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;191E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;192E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;63E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;195E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;63E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;196E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;197E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;70E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;185E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;70E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;60E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;197E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;198E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;199E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;70E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;200E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;201E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;70E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;202E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;203E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;74E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;185E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;74E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;70E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;203E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;204E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;205E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;206E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;74E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;190E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;191E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;192E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;70E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;207E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;70E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;208E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;209E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;70E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;210E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;211E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;70E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;212E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;213E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;214E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;70E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;215E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;82E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;185E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;82E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;60E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;215E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;216E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;217E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;218E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;219E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;220E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;213E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;190E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;191E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;192E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;221E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;222E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;223E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;224E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;225E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;226E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;227E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;228E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;229E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;190E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;191E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;192E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;230E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;93E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;185E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;93E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;230E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;231E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;232E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;233E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;93E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;234E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;235E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;236E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;93E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;237E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;238E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;239E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;93E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;240E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;213E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;241E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;242E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;93E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;243E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;244E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;93E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;245E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;246E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;100E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;185E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;100E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;246E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;248E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;100E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;249E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;250E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;100E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;251E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;252E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;100E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;253E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;100E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;254E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;106E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;185E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;106E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;254E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;255E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;256E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;233E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;234E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;257E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;236E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;237E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;258E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;239E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;240E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;213E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;259E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;111E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;185E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;111E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;259E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;260E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;261E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;111E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;262E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;111E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;263E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;115E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;185E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;115E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;60E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;263E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;265E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;115E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;266E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;267E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;268E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;115E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;269E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;119E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;185E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;119E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;60E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;269E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;270E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;271E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;272E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;273E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;274E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;190E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;191E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;192E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;275E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;125E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;185E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;125E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;60E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;276E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;277E;E;D;K;6;$classD;K;6;CP$UIDd;2;61E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;278E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;125E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;279E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;186E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;127E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;280E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;281E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;282E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;283E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;284E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;242E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;269E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;3;130E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;129E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;285E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;286E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;286E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;287E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;288E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;289E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;289E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;192E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;131E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;130E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;285E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;290E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;291E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;130E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;292E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;293E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;294E;K;11;$aalignmentD;K;6;CP$UIDd;3;236E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;285E;K;6;$afontD;K;6;CP$UIDd;3;296E;K;7;$aimageD;K;6;CP$UIDd;3;298E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;289E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;289E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;192E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;285E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;299E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;300E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;191E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;192E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;301E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;285E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;190E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;236E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;285E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;131E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;130E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;285E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;302E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;291E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;130E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;292E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;293E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;294E;K;11;$aalignmentD;K;6;CP$UIDd;3;236E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;285E;K;6;$afontD;K;6;CP$UIDd;3;296E;K;7;$aimageD;K;6;CP$UIDd;3;303E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;289E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;289E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;192E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;285E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;299E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;304E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;191E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;192E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;301E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;285E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;190E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;236E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;285E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;16;_CPCibCustomViewK;8;$classesA;S;16;_CPCibCustomViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;134E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;130E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;285E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;305E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;306E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;130E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;292E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;288E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;289E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;289E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;192E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;307E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;308E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;128E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;309E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;311E;E;E;S;8;delegateS;11;buttonStartS;10;buttonStopS;9;theWindowS;4;viewS;15;arrangeInFront:S;19;performMiniaturize:S;29;orderFrontStandardAboutPanel:S;13;openDocument:S;13;performClose:S;13;saveDocument:S;15;saveDocumentAs:S;12;newDocument:S;9;showHelp:S;22;revertDocumentToSaved:S;21;clearRecentDocuments:S;10;terminate:S;13;stopSpeaking:S;14;startSpeaking:S;5;copy:S;10;selectAll:S;4;cut:S;14;checkSpelling:S;7;delete:S;6;paste:S;15;showGuessPanel:S;5;undo:S;23;performFindPanelAction:S;29;centerSelectionInVisibleArea:S;5;redo:S;30;toggleContinuousSpellChecking:S;12;performZoom:S;19;toggleToolbarShown:S;31;runToolbarCustomizationPalette:S;22;toggleGrammarChecking:S;24;toggleSmartInsertDelete:S;33;toggleAutomaticQuoteSubstitution:S;29;toggleAutomaticLinkDetection:S;17;clickButtonStart:S;16;clickButtonStop:S;9;AMainMenuS;11;_CPMainMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;124E;E;E;S;14;NewApplicationS;14;submenuAction:d;7;1048576S;18;_CPApplicationMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;E;E;S;20;About NewApplicationT;S;0;F;S;12;Preferences…S;1;,S;19;Quit NewApplicationS;1;qS;4;FileD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;E;E;S;3;NewS;1;nS;5;Open…S;1;oS;11;Open RecentS;22;_CPRecentDocumentsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;75E;E;E;S;10;Clear MenuS;5;CloseS;1;wS;4;SaveS;1;sS;8;Save As…S;1;Sd;7;1179648S;15;Revert to SavedS;4;EditD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;110E;E;E;S;4;UndoS;1;zS;4;RedoS;1;ZS;3;CutS;1;xS;4;CopyS;1;cS;5;PasteS;1;vS;6;DeleteS;10;Select AllS;1;aS;4;FindD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;E;E;S;5;Find…d;1;1S;1;fS;9;Find Nextd;1;2S;1;gS;13;Find Previousd;1;3S;1;GS;22;Use Selection for Findd;1;7S;1;eS;17;Jump to SelectionS;1;jS;20;Spelling and GrammarD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;E;E;S;14;Show Spelling…S;1;:S;14;Check SpellingS;1;;S;27;Check Spelling While TypingS;27;Check Grammar With SpellingS;13;SubstitutionsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;E;E;S;16;Smart Copy/PasteS;12;Smart QuotesS;11;Smart LinksS;6;SpeechD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;E;E;S;14;Start SpeakingS;13;Stop SpeakingS;4;ViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;E;E;S;12;Show ToolbarS;1;td;7;1572864S;18;Customize Toolbar…S;6;WindowS;14;_CPWindowsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;E;E;S;8;MinimizeS;1;mS;4;ZoomS;18;Bring All to FrontS;4;HelpD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;126E;E;E;S;19;NewApplication HelpS;1;?S;32;{10000000000000, 10000000000000}S;8;CPWindowd;10;1879048192S;24;{{335, 128}, {480, 360}}S;21;{{0, 0}, {1440, 878}}d;1;0S;20;{{0, 0}, {480, 360}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;135E;E;E;S;6;normalS;6;{1, 1}S;21;{{20, 17}, {127, 25}}S;19;{{0, 0}, {127, 25}}d;2;36S;6;buttonS;8;borderedD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;295E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;312E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;313E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;192E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;192E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;192E;E;D;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;4;nameD;K;6;CP$UIDd;3;314E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;315E;K;5;valueD;K;6;CP$UIDd;3;316E;E;d;1;4S;15;Start Animationd;2;14S;21;{{20, 50}, {127, 25}}D;K;6;$classD;K;6;CP$UIDd;3;297E;K;4;nameD;K;6;CP$UIDd;3;314E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;315E;K;5;valueD;K;6;CP$UIDd;3;316E;E;S;14;Stop AnimationS;22;{{167, 20}, {293, 54}}S;19;{{0, 0}, {293, 54}}S;6;CPViewS;13;AppControllerS;15;backgroundColorD;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;310E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;317E;E;S;17;.Lucida Grande UId;2;13S;5;imageS;11;highlightedD;K;6;$classD;K;6;CP$UIDd;3;295E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;312E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;313E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;192E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;192E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;192E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;233E;D;K;6;CP$UIDd;3;318E;D;K;6;CP$UIDd;3;319E;D;K;6;CP$UIDd;3;233E;E;E;f;12;0.5466516229f;12;0.9061750623E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPAnimationTest/Resources/MainMenu.xib b/Tests/Manual/CPAnimationTest/Resources/MainMenu.xib new file mode 100644 index 000000000..5e7a3de49 --- /dev/null +++ b/Tests/Manual/CPAnimationTest/Resources/MainMenu.xib @@ -0,0 +1,332 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/Manual/CPAnimationTest/index-debug.html b/Tests/Manual/CPAnimationTest/index-debug.html new file mode 100644 index 000000000..042c2c6f8 --- /dev/null +++ b/Tests/Manual/CPAnimationTest/index-debug.html @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + CPAnimationTest + + + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ + diff --git a/Tests/Manual/CPAnimationTest/index.html b/Tests/Manual/CPAnimationTest/index.html new file mode 100644 index 000000000..b48b8ea22 --- /dev/null +++ b/Tests/Manual/CPAnimationTest/index.html @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + CPAnimationTest + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ + diff --git a/Tests/Manual/CPAnimationTest/main.j b/Tests/Manual/CPAnimationTest/main.j new file mode 100644 index 000000000..72e724a50 --- /dev/null +++ b/Tests/Manual/CPAnimationTest/main.j @@ -0,0 +1,10 @@ +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tests/Manual/CPLevelIndicator/Resources/MainMenu.cib b/Tests/Manual/CPLevelIndicator/Resources/MainMenu.cib index df52dcdf8..64a5fc159 100644 --- a/Tests/Manual/CPLevelIndicator/Resources/MainMenu.cib +++ b/Tests/Manual/CPLevelIndicator/Resources/MainMenu.cib @@ -1 +1 @@ -280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;18E;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;203E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;207E;D;K;6;CP$UIDd;3;208E;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;214E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;216E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;218E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;219E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;220E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;221E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;214E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;216E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;218E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;219E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;220E;D;K;6;CP$UIDd;2;11E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;222E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;223E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;221E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;224E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;221E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;210E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;225E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;92E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;226E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;94E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;227E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;97E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;228E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;150E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;229E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;156E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;230E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;147E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;231E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;155E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;232E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;149E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;233E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;148E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;234E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;151E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;111E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;236E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;158E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;237E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;154E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;238E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;98E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;239E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;100E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;85E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;240E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;108E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;241E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;99E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;242E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;138E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;243E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;139E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;244E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;120E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;245E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;115E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;246E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;118E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;133E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;248E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;114E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;249E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;119E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;250E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;134E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;251E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;116E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;252E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;129E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;253E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;126E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;254E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;122E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;255E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;132E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;256E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;93E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;257E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;162E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;258E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;163E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;259E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;135E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;260E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;142E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;261E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;143E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;262E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;144E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;263E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;201E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;202E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;265E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;203E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;266E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;204E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;267E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;206E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;268E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;207E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;269E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;208E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;270E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;171E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;271E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;195E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;197E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;198E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;274E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;189E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;190E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;276E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;191E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;277E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;192E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;278E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;193E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;279E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;184E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;280E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;185E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;281E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;186E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;282E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;178E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;283E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;179E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;284E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;180E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;285E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;181E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;286E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;214E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;218E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;287E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;215E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;219E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;287E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;216E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;220E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;287E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;218E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;214E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;287E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;219E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;215E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;287E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;220E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;216E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;287E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;222E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;288E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;289E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;290E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;291E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;90E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;291E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;294E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;295E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;296E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;297E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;298E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;90E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;299E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;90E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;300E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;90E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;90E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;302E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;96E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;303E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;304E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;305E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;306E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;96E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;307E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;96E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;308E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;309E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;96E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;310E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;96E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;311E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;296E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;297E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;298E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;96E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;312E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;96E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;313E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;296E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;297E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;298E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;96E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;296E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;297E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;298E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;96E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;314E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;106E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;96E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;314E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;315E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;316E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;296E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;297E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;298E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;96E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;317E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;96E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;308E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;318E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;319E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;110E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;319E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;320E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;321E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;110E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;322E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;323E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;113E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;323E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;324E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;325E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;326E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;327E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;328E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;329E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;296E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;297E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;298E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;330E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;331E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;332E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;333E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;334E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;335E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;296E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;297E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;298E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;336E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;337E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;338E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;339E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;124E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;339E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;340E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;341E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;342E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;343E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;338E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;344E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;345E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;346E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;347E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;348E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;349E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;350E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;351E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;352E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;353E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;354E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;355E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;131E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;355E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;356E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;357E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;131E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;358E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;131E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;359E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;360E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;131E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;361E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;362E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;131E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;363E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;137E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;363E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;364E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;365E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;137E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;366E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;137E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;367E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;141E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;367E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;368E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;369E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;353E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;141E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;354E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;370E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;350E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;141E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;351E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;371E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;342E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;141E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;343E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;338E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;372E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;146E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;372E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;373E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;374E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;146E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;375E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;376E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;146E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;377E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;338E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;378E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;146E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;379E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;380E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;146E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;381E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;382E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;146E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;383E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;384E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;153E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;146E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;384E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;385E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;386E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;387E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;153E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;388E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;146E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;389E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;338E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;390E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;146E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;391E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;296E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;297E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;298E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;146E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;392E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;146E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;296E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;297E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;298E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;146E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;393E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;161E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;393E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;394E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;395E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;161E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;396E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;318E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;397E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;161E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;398E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;165E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;398E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;399E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;400E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;167E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;165E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;400E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;401E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;402E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;396E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;404E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;350E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;405E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;406E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;353E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;407E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;408E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;409E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;296E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;297E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;298E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;410E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;342E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;411E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;412E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;413E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;414E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;296E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;297E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;298E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;415E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;177E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;415E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;416E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;417E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;177E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;418E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;177E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;419E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;177E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;420E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;177E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;421E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;183E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;421E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;422E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;417E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;183E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;418E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;183E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;423E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;183E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;424E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;188E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;424E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;417E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;426E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;427E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;428E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;429E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;296E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;297E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;298E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;430E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;431E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;296E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;297E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;298E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;432E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;335E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;318E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;433E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;333E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;318E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;434E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;292E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;200E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;165E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;434E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;435E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;436E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;200E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;437E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;438E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;200E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;439E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;440E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;200E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;441E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;200E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;442E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;296E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;297E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;298E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;200E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;443E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;200E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;444E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;200E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;335E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;445E;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;446E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;200E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;333E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;445E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;209E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;447E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;448E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;449E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;450E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;451E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;347E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;452E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;3;212E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;453E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;454E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;455E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;456E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;457E;E;D;K;10;$classnameS;16;CPLevelIndicatorK;8;$classesA;S;16;CPLevelIndicatorS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;213E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;212E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;453E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;458E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;459E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;212E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;460E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;461E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;457E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;453E;K;11;$aalignmentD;K;6;CP$UIDd;3;453E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;350E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;413E;K;24;CPLevelIndicatorStyleKeyD;K;6;CP$UIDd;3;350E;K;27;CPLevelIndicatorMinValueKeyD;K;6;CP$UIDd;3;453E;K;27;CPLevelIndicatorMaxValueKeyD;K;6;CP$UIDd;3;350E;K;31;CPLevelIndicatorWarningValueKeyD;K;6;CP$UIDd;3;350E;K;32;CPLevelIndicatorCriticalValueKeyD;K;6;CP$UIDd;3;350E;K;35;CPLevelIndicatorTickMarkPositionKeyD;K;6;CP$UIDd;3;453E;K;36;CPLevelIndicatorNumberOfTickMarksKeyD;K;6;CP$UIDd;3;453E;K;41;CPLevelIndicatorNumberOfMajorTickMarksKeyD;K;6;CP$UIDd;1;0E;K;29;CPLevelIndicatorIsEditableKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;3;213E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;212E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;453E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;462E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;459E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;212E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;460E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;461E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;457E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;453E;K;11;$aalignmentD;K;6;CP$UIDd;3;453E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;463E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;413E;K;24;CPLevelIndicatorStyleKeyD;K;6;CP$UIDd;3;350E;K;27;CPLevelIndicatorMinValueKeyD;K;6;CP$UIDd;3;453E;K;27;CPLevelIndicatorMaxValueKeyD;K;6;CP$UIDd;3;464E;K;31;CPLevelIndicatorWarningValueKeyD;K;6;CP$UIDd;3;465E;K;32;CPLevelIndicatorCriticalValueKeyD;K;6;CP$UIDd;3;466E;K;35;CPLevelIndicatorTickMarkPositionKeyD;K;6;CP$UIDd;3;453E;K;36;CPLevelIndicatorNumberOfTickMarksKeyD;K;6;CP$UIDd;3;453E;K;41;CPLevelIndicatorNumberOfMajorTickMarksKeyD;K;6;CP$UIDd;1;0E;K;29;CPLevelIndicatorIsEditableKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;3;213E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;212E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;453E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;467E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;459E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;212E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;460E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;461E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;457E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;453E;K;11;$aalignmentD;K;6;CP$UIDd;3;453E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;350E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;413E;K;24;CPLevelIndicatorStyleKeyD;K;6;CP$UIDd;3;350E;K;27;CPLevelIndicatorMinValueKeyD;K;6;CP$UIDd;3;468E;K;27;CPLevelIndicatorMaxValueKeyD;K;6;CP$UIDd;3;350E;K;31;CPLevelIndicatorWarningValueKeyD;K;6;CP$UIDd;3;350E;K;32;CPLevelIndicatorCriticalValueKeyD;K;6;CP$UIDd;3;350E;K;35;CPLevelIndicatorTickMarkPositionKeyD;K;6;CP$UIDd;3;453E;K;36;CPLevelIndicatorNumberOfTickMarksKeyD;K;6;CP$UIDd;3;453E;K;41;CPLevelIndicatorNumberOfMajorTickMarksKeyD;K;6;CP$UIDd;1;0E;K;29;CPLevelIndicatorIsEditableKeyD;K;6;CP$UIDd;3;296E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;217E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;212E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;453E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;469E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;470E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;212E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;471E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;472E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;473E;K;6;$afontD;K;6;CP$UIDd;3;475E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;350E;K;11;$aalignmentD;K;6;CP$UIDd;3;413E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;296E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;297E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;476E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;296E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;296E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;296E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;478E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;350E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;413E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;217E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;212E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;453E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;479E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;470E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;212E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;471E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;472E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;473E;K;6;$afontD;K;6;CP$UIDd;3;475E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;350E;K;11;$aalignmentD;K;6;CP$UIDd;3;413E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;296E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;297E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;476E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;296E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;296E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;296E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;478E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;350E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;413E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;217E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;212E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;453E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;480E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;470E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;212E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;471E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;472E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;473E;K;6;$afontD;K;6;CP$UIDd;3;475E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;350E;K;11;$aalignmentD;K;6;CP$UIDd;3;413E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;296E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;297E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;476E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;296E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;296E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;296E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;478E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;350E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;413E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;481E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;210E;E;E;S;8;delegateS;9;theWindowS;15;arrangeInFront:S;19;performMiniaturize:S;29;orderFrontStandardAboutPanel:S;13;openDocument:S;13;performClose:S;13;saveDocument:S;14;runPageLayout:S;6;print:S;15;saveDocumentAs:S;12;newDocument:S;9;showHelp:S;22;revertDocumentToSaved:S;21;clearRecentDocuments:S;5;hide:S;10;terminate:S;22;hideOtherApplications:S;22;unhideAllApplications:S;13;stopSpeaking:S;14;startSpeaking:S;5;copy:S;10;selectAll:S;4;cut:S;14;checkSpelling:S;7;delete:S;6;paste:S;15;showGuessPanel:S;5;undo:S;23;performFindPanelAction:S;29;centerSelectionInVisibleArea:S;5;redo:S;30;toggleContinuousSpellChecking:S;12;performZoom:S;19;toggleToolbarShown:S;31;runToolbarCustomizationPalette:S;22;toggleGrammarChecking:S;24;toggleSmartInsertDelete:S;33;toggleAutomaticQuoteSubstitution:S;29;toggleAutomaticLinkDetection:S;10;alignLeft:S;12;alignCenter:S;15;alignJustified:S;11;alignRight:S;12;toggleRuler:S;10;copyRuler:S;11;pasteRuler:S;10;underline:S;21;orderFrontColorPanel:S;9;copyFont:S;10;pasteFont:S;9;unscript:S;12;superscript:S;10;subscript:S;14;raiseBaseline:S;14;lowerBaseline:S;21;useStandardLigatures:S;17;turnOffLigatures:S;16;useAllLigatures:S;19;useStandardKerning:S;15;turnOffKerning:S;15;tightenKerning:S;14;loosenKerning:S;17;takeIntValueFrom:S;9;AMainMenuS;11;_CPMainMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;3;109E;E;E;S;6;WindowS;14;submenuAction:d;7;1048576S;14;_CPWindowsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;E;E;T;S;0;F;S;18;Bring All to FrontS;4;ZoomS;8;MinimizeS;1;mS;14;NewApplicationS;18;_CPApplicationMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;100E;E;E;S;20;About NewApplicationS;19;Hide NewApplicationS;1;hS;8;Show AllS;19;Quit NewApplicationS;1;qS;12;Preferences…S;1;,S;8;ServicesS;15;_CPServicesMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;11;Hide Othersd;7;1572864S;4;HelpD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;111E;E;E;S;19;NewApplication HelpS;1;?S;4;EditD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;136E;E;E;S;6;DeleteS;10;Select AllS;1;aS;4;UndoS;1;zS;3;CutS;1;xS;5;PasteS;1;vS;4;CopyS;1;cS;4;RedoS;1;Zd;7;1179648S;4;FindD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;126E;E;E;S;13;Find Previousd;1;3S;1;GS;17;Jump to SelectionS;1;jS;22;Use Selection for Findd;1;7S;1;eS;9;Find Nextd;1;2S;1;gS;5;Find…d;1;1S;1;fS;20;Spelling and GrammarD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;135E;E;E;S;27;Check Spelling While TypingS;14;Check SpellingS;1;;S;14;Show Spelling…S;1;:S;27;Check Grammar With SpellingS;6;SpeechD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;138E;E;E;S;13;Stop SpeakingS;14;Start SpeakingS;13;SubstitutionsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;E;E;S;16;Smart Copy/PasteS;12;Smart QuotesS;11;Smart LinksS;4;FileD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;149E;E;E;S;4;SaveS;1;sS;8;Save As…S;1;SS;6;Print…S;1;pS;5;Open…S;1;oS;3;NewS;1;nS;11;Open RecentS;22;_CPRecentDocumentsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;154E;E;E;S;10;Clear MenuS;13;Page Setup...S;1;PS;5;CloseS;1;wS;15;Revert to SavedS;4;ViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;E;E;S;12;Show ToolbarS;1;tS;18;Customize Toolbar…S;6;FormatD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;199E;E;E;S;4;FontS;11;_CPFontMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;E;E;S;10;Show FontsS;4;BoldS;1;bS;6;ItalicS;1;iS;9;UnderlineS;1;uS;6;BiggerS;1;+S;7;Smallerd;1;4S;1;-S;4;KernD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;E;E;S;11;Use DefaultS;8;Use NoneS;7;TightenS;6;LoosenS;8;LigatureD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;E;E;S;7;Use AllS;8;BaselineD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;E;E;S;11;SuperscriptS;9;SubscriptS;5;RaiseS;5;LowerS;11;Show ColorsS;1;CS;10;Copy StyleS;11;Paste StyleS;4;TextD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;203E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;207E;D;K;6;CP$UIDd;3;208E;E;E;S;10;Align LeftS;1;{S;6;CenterS;1;|S;7;JustifyS;11;Align RightS;1;}S;10;Show RulerS;10;Copy Rulerd;7;1310720S;11;Paste RulerS;32;{10000000000000, 10000000000000}S;8;CPWindowd;10;1948778496S;24;{{213, 163}, {448, 125}}S;22;{{0, 0}, {1920, 1178}}S;16;Level Indicatorsd;1;0S;21;{{7, 11}, {448, 125}}S;20;{{0, 0}, {448, 125}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;214E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;216E;D;K;6;CP$UIDd;3;218E;D;K;6;CP$UIDd;3;219E;D;K;6;CP$UIDd;3;220E;E;E;S;6;normalS;21;{{20, 22}, {304, 18}}S;19;{{0, 0}, {304, 18}}d;2;34S;15;level-indicatorS;21;{{20, 85}, {304, 18}}d;2;13d;2;50d;2;20d;2;10S;21;{{20, 54}, {304, 18}}d;2;-2S;22;{{328, 16}, {104, 29}}S;19;{{0, 0}, {104, 29}}d;2;33S;9;textfieldS;28;bezeled+editable+placeholderD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;474E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;482E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;483E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;298E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;298E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;296E;E;d;4;3072D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;477E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;484E;E;S;22;{{328, 79}, {104, 29}}S;22;{{328, 47}, {104, 29}}S;13;AppControllerS;28;_CPFontSystemFacePlaceholderd;2;-1D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;353E;D;K;6;CP$UIDd;3;353E;D;K;6;CP$UIDd;3;353E;D;K;6;CP$UIDd;3;353E;E;E;E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;18E;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;203E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;207E;D;K;6;CP$UIDd;3;208E;D;K;6;CP$UIDd;3;209E;D;K;6;CP$UIDd;3;211E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;216E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;217E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;219E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;220E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;222E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;223E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;224E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;3;207E;D;K;6;CP$UIDd;3;208E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;3;211E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;216E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;217E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;219E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;220E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;222E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;223E;D;K;6;CP$UIDd;2;11E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;225E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;226E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;224E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;227E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;224E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;211E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;228E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;206E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;229E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;203E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;230E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;92E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;231E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;107E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;232E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;233E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;113E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;234E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;117E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;118E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;236E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;114E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;237E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;106E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;238E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;209E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;239E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;115E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;240E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;110E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;241E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;99E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;242E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;103E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;86E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;243E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;100E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;244E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;101E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;245E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;151E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;246E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;150E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;125E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;248E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;128E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;249E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;124E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;250E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;140E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;251E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;127E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;252E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;126E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;253E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;139E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;254E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;121E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;255E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;132E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;256E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;136E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;257E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;122E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;258E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;141E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;259E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;204E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;260E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;199E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;261E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;200E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;262E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;142E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;263E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;145E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;146E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;265E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;147E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;266E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;189E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;267E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;190E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;268E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;191E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;269E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;192E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;270E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;194E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;271E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;195E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;196E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;159E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;274E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;183E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;185E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;276E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;186E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;277E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;177E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;278E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;178E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;279E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;179E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;280E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;180E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;281E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;181E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;282E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;172E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;283E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;173E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;284E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;174E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;285E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;166E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;286E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;167E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;287E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;168E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;288E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;169E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;289E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;215E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;219E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;290E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;216E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;220E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;290E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;217E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;221E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;290E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;219E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;215E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;290E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;220E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;216E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;290E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;221E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;217E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;290E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;223E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;221E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;290E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;225E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;291E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;292E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;293E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;294E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;91E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;91E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;294E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;297E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;299E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;91E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;300E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;302E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;91E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;91E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;304E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;300E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;302E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;91E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;305E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;97E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;97E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;91E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;305E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;306E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;307E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;300E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;302E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;91E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;308E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;91E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;309E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;310E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;91E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;309E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;311E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;312E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;91E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;300E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;302E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;91E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;313E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;91E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;314E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;315E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;105E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;105E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;315E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;316E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;317E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;105E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;318E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;319E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;105E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;320E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;321E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;109E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;109E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;105E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;321E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;322E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;323E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;324E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;109E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;300E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;302E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;105E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;325E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;105E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;326E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;327E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;105E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;328E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;329E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;105E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;330E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;331E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;332E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;105E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;300E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;302E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;105E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;333E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;105E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;334E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;331E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;335E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;105E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;336E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;337E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;120E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;120E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;337E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;338E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;339E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;120E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;340E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;341E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;120E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;342E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;331E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;300E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;302E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;120E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;343E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;120E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;344E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;345E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;120E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;346E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;347E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;120E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;348E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;349E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;120E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;350E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;120E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;351E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;300E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;302E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;120E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;352E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;131E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;131E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;120E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;352E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;353E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;354E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;355E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;131E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;356E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;357E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;358E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;131E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;359E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;360E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;361E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;131E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;362E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;331E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;363E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;364E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;131E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;365E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;366E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;131E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;367E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;368E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;138E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;138E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;120E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;368E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;369E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;370E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;138E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;371E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;372E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;138E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;373E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;374E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;138E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;375E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;138E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;376E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;144E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;144E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;120E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;376E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;377E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;378E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;355E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;144E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;356E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;379E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;358E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;144E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;359E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;380E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;361E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;144E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;362E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;331E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;381E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;149E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;149E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;120E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;381E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;382E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;383E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;149E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;384E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;149E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;385E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;153E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;153E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;385E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;386E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;387E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;155E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;155E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;153E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;387E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;388E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;389E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;390E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;155E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;391E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;392E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;358E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;155E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;393E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;355E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;155E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;395E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;396E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;155E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;397E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;300E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;302E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;155E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;398E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;361E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;155E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;399E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;400E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;401E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;155E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;402E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;300E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;302E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;155E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;165E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;165E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;155E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;403E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;404E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;405E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;165E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;406E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;165E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;407E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;165E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;408E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;165E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;409E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;171E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;171E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;155E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;409E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;410E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;405E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;171E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;406E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;171E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;411E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;171E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;412E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;176E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;176E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;155E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;412E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;413E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;405E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;414E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;415E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;416E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;417E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;300E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;302E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;155E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;418E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;155E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;419E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;300E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;302E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;155E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;420E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;155E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;346E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;311E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;421E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;155E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;348E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;311E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;422E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;188E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;188E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;153E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;422E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;423E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;424E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;425E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;426E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;427E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;428E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;429E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;430E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;300E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;302E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;431E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;432E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;346E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;433E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;434E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;348E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;433E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;435E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;198E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;198E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;435E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;436E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;437E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;198E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;391E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;311E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;438E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;198E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;439E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;202E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;202E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;439E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;440E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;441E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;442E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;202E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;443E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;444E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;202E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;300E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;302E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;202E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;445E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;202E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;446E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;208E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;295E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;208E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;446E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;447E;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;448E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;208E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;449E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;296E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;210E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;450E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;451E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;452E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;453E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;454E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;364E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;455E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;3;213E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;212E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;456E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;457E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;457E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;458E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;459E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;460E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;460E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;302E;E;D;K;10;$classnameS;16;CPLevelIndicatorK;8;$classesA;S;16;CPLevelIndicatorS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;214E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;213E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;456E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;461E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;462E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;213E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;463E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;464E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;459E;K;11;$aalignmentD;K;6;CP$UIDd;3;456E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;456E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;460E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;460E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;302E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;358E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;401E;K;24;CPLevelIndicatorStyleKeyD;K;6;CP$UIDd;3;358E;K;27;CPLevelIndicatorMinValueKeyD;K;6;CP$UIDd;3;456E;K;27;CPLevelIndicatorMaxValueKeyD;K;6;CP$UIDd;3;358E;K;31;CPLevelIndicatorWarningValueKeyD;K;6;CP$UIDd;3;358E;K;32;CPLevelIndicatorCriticalValueKeyD;K;6;CP$UIDd;3;358E;K;35;CPLevelIndicatorTickMarkPositionKeyD;K;6;CP$UIDd;3;456E;K;36;CPLevelIndicatorNumberOfTickMarksKeyD;K;6;CP$UIDd;3;456E;K;41;CPLevelIndicatorNumberOfMajorTickMarksKeyD;K;6;CP$UIDd;1;0E;K;29;CPLevelIndicatorIsEditableKeyD;K;6;CP$UIDd;3;302E;E;D;K;6;$classD;K;6;CP$UIDd;3;214E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;213E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;456E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;465E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;462E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;213E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;463E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;464E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;459E;K;11;$aalignmentD;K;6;CP$UIDd;3;456E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;456E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;460E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;460E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;302E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;466E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;401E;K;24;CPLevelIndicatorStyleKeyD;K;6;CP$UIDd;3;358E;K;27;CPLevelIndicatorMinValueKeyD;K;6;CP$UIDd;3;456E;K;27;CPLevelIndicatorMaxValueKeyD;K;6;CP$UIDd;3;467E;K;31;CPLevelIndicatorWarningValueKeyD;K;6;CP$UIDd;3;468E;K;32;CPLevelIndicatorCriticalValueKeyD;K;6;CP$UIDd;3;469E;K;35;CPLevelIndicatorTickMarkPositionKeyD;K;6;CP$UIDd;3;456E;K;36;CPLevelIndicatorNumberOfTickMarksKeyD;K;6;CP$UIDd;3;456E;K;41;CPLevelIndicatorNumberOfMajorTickMarksKeyD;K;6;CP$UIDd;1;0E;K;29;CPLevelIndicatorIsEditableKeyD;K;6;CP$UIDd;3;300E;E;D;K;6;$classD;K;6;CP$UIDd;3;214E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;213E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;456E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;470E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;462E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;213E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;463E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;464E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;459E;K;11;$aalignmentD;K;6;CP$UIDd;3;456E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;456E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;460E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;460E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;302E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;358E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;401E;K;24;CPLevelIndicatorStyleKeyD;K;6;CP$UIDd;3;358E;K;27;CPLevelIndicatorMinValueKeyD;K;6;CP$UIDd;3;471E;K;27;CPLevelIndicatorMaxValueKeyD;K;6;CP$UIDd;3;472E;K;31;CPLevelIndicatorWarningValueKeyD;K;6;CP$UIDd;3;473E;K;32;CPLevelIndicatorCriticalValueKeyD;K;6;CP$UIDd;3;364E;K;35;CPLevelIndicatorTickMarkPositionKeyD;K;6;CP$UIDd;3;456E;K;36;CPLevelIndicatorNumberOfTickMarksKeyD;K;6;CP$UIDd;3;456E;K;41;CPLevelIndicatorNumberOfMajorTickMarksKeyD;K;6;CP$UIDd;1;0E;K;29;CPLevelIndicatorIsEditableKeyD;K;6;CP$UIDd;3;300E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;218E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;213E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;456E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;474E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;475E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;213E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;476E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;477E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;478E;K;11;$aalignmentD;K;6;CP$UIDd;3;401E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;358E;K;6;$afontD;K;6;CP$UIDd;3;480E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;460E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;460E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;302E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;300E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;301E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;401E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;300E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;300E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;300E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;482E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;358E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;401E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;218E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;213E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;456E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;483E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;475E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;213E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;476E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;477E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;478E;K;11;$aalignmentD;K;6;CP$UIDd;3;401E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;358E;K;6;$afontD;K;6;CP$UIDd;3;480E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;460E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;460E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;302E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;300E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;301E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;401E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;300E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;300E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;300E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;482E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;358E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;401E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;218E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;213E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;456E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;484E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;475E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;213E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;476E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;477E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;478E;K;11;$aalignmentD;K;6;CP$UIDd;3;401E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;358E;K;6;$afontD;K;6;CP$UIDd;3;480E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;460E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;460E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;302E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;300E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;301E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;401E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;300E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;300E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;300E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;482E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;358E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;401E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;218E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;213E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;456E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;485E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;486E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;213E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;487E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;477E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;459E;K;11;$aalignmentD;K;6;CP$UIDd;3;401E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;358E;K;6;$afontD;K;6;CP$UIDd;3;480E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;460E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;460E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;302E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;300E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;488E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;401E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;302E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;302E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;302E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;489E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;358E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;401E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;214E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;213E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;456E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;490E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;491E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;213E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;463E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;464E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;459E;K;11;$aalignmentD;K;6;CP$UIDd;3;456E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;456E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;460E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;460E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;302E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;358E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;401E;K;24;CPLevelIndicatorStyleKeyD;K;6;CP$UIDd;3;358E;K;27;CPLevelIndicatorMinValueKeyD;K;6;CP$UIDd;3;456E;K;27;CPLevelIndicatorMaxValueKeyD;K;6;CP$UIDd;3;469E;K;31;CPLevelIndicatorWarningValueKeyD;K;6;CP$UIDd;3;401E;K;32;CPLevelIndicatorCriticalValueKeyD;K;6;CP$UIDd;3;358E;K;35;CPLevelIndicatorTickMarkPositionKeyD;K;6;CP$UIDd;3;456E;K;36;CPLevelIndicatorNumberOfTickMarksKeyD;K;6;CP$UIDd;3;456E;K;41;CPLevelIndicatorNumberOfMajorTickMarksKeyD;K;6;CP$UIDd;1;0E;K;29;CPLevelIndicatorIsEditableKeyD;K;6;CP$UIDd;3;300E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;492E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;211E;E;E;S;8;delegateS;9;theWindowS;15;arrangeInFront:S;19;performMiniaturize:S;29;orderFrontStandardAboutPanel:S;13;openDocument:S;13;performClose:S;13;saveDocument:S;14;runPageLayout:S;6;print:S;15;saveDocumentAs:S;12;newDocument:S;9;showHelp:S;22;revertDocumentToSaved:S;21;clearRecentDocuments:S;5;hide:S;10;terminate:S;22;hideOtherApplications:S;22;unhideAllApplications:S;13;stopSpeaking:S;14;startSpeaking:S;5;copy:S;10;selectAll:S;4;cut:S;14;checkSpelling:S;7;delete:S;6;paste:S;15;showGuessPanel:S;5;undo:S;23;performFindPanelAction:S;29;centerSelectionInVisibleArea:S;5;redo:S;30;toggleContinuousSpellChecking:S;12;performZoom:S;19;toggleToolbarShown:S;31;runToolbarCustomizationPalette:S;22;toggleGrammarChecking:S;24;toggleSmartInsertDelete:S;33;toggleAutomaticQuoteSubstitution:S;29;toggleAutomaticLinkDetection:S;10;alignLeft:S;12;alignCenter:S;15;alignJustified:S;11;alignRight:S;12;toggleRuler:S;10;copyRuler:S;11;pasteRuler:S;10;underline:S;21;orderFrontColorPanel:S;9;copyFont:S;10;pasteFont:S;9;unscript:S;12;superscript:S;10;subscript:S;14;raiseBaseline:S;14;lowerBaseline:S;21;useStandardLigatures:S;17;turnOffLigatures:S;16;useAllLigatures:S;19;useStandardKerning:S;15;turnOffKerning:S;15;tightenKerning:S;14;loosenKerning:S;17;takeIntValueFrom:S;9;AMainMenuS;11;_CPMainMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;3;207E;E;E;S;14;NewApplicationS;14;submenuAction:d;7;1048576S;18;_CPApplicationMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;E;E;S;20;About NewApplicationT;S;0;F;S;12;Preferences…S;1;,S;8;ServicesS;15;_CPServicesMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;19;Hide NewApplicationS;1;hS;11;Hide Othersd;7;1572864S;8;Show AllS;19;Quit NewApplicationS;1;qS;4;FileD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;E;E;S;3;NewS;1;nS;5;Open…S;1;oS;11;Open RecentS;22;_CPRecentDocumentsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;110E;E;E;S;10;Clear MenuS;5;CloseS;1;wS;4;SaveS;1;sS;8;Save As…S;1;Sd;7;1179648S;15;Revert to SavedS;13;Page Setup...S;1;PS;6;Print…S;1;pS;4;EditD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;148E;E;E;S;4;UndoS;1;zS;4;RedoS;1;ZS;3;CutS;1;xS;4;CopyS;1;cS;5;PasteS;1;vS;6;DeleteS;10;Select AllS;1;aS;4;FindD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;E;E;S;5;Find…d;1;1S;1;fS;9;Find Nextd;1;2S;1;gS;13;Find Previousd;1;3S;1;GS;22;Use Selection for Findd;1;7S;1;eS;17;Jump to SelectionS;1;jS;20;Spelling and GrammarD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;E;E;S;14;Show Spelling…S;1;:S;14;Check SpellingS;1;;S;27;Check Spelling While TypingS;27;Check Grammar With SpellingS;13;SubstitutionsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;E;E;S;16;Smart Copy/PasteS;12;Smart QuotesS;11;Smart LinksS;6;SpeechD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;E;E;S;14;Start SpeakingS;13;Stop SpeakingS;6;FormatD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;187E;E;E;S;4;FontS;11;_CPFontMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;E;E;S;10;Show FontsS;1;tS;4;BoldS;1;bS;6;ItalicS;1;iS;9;UnderlineS;1;uS;6;BiggerS;1;+S;7;Smallerd;1;4S;1;-S;4;KernD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;E;E;S;11;Use DefaultS;8;Use NoneS;7;TightenS;6;LoosenS;8;LigatureD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;174E;E;E;S;7;Use AllS;8;BaselineD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;E;E;S;11;SuperscriptS;9;SubscriptS;5;RaiseS;5;LowerS;11;Show ColorsS;1;CS;10;Copy StyleS;11;Paste StyleS;4;TextD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;E;E;S;10;Align LeftS;1;{S;6;CenterS;1;|S;7;JustifyS;11;Align RightS;1;}S;10;Show RulerS;10;Copy Rulerd;7;1310720S;11;Paste RulerS;4;ViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;200E;E;E;S;12;Show ToolbarS;18;Customize Toolbar…S;6;WindowS;14;_CPWindowsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;203E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;206E;E;E;S;8;MinimizeS;1;mS;4;ZoomS;18;Bring All to FrontS;4;HelpD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;209E;E;E;S;19;NewApplication HelpS;1;?S;32;{10000000000000, 10000000000000}S;8;CPWindowd;10;1881669632S;24;{{213, 114}, {448, 174}}S;22;{{0, 0}, {1920, 1178}}S;16;Level Indicatorsd;1;0S;20;{{0, 0}, {448, 174}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;216E;D;K;6;CP$UIDd;3;217E;D;K;6;CP$UIDd;3;219E;D;K;6;CP$UIDd;3;220E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;3;222E;D;K;6;CP$UIDd;3;223E;E;E;S;6;normalS;6;{1, 1}S;21;{{20, 22}, {304, 18}}S;19;{{0, 0}, {304, 18}}d;2;34S;15;level-indicatorS;21;{{20, 85}, {304, 18}}d;2;13d;2;50d;2;20d;2;10S;21;{{20, 54}, {304, 18}}d;2;-2d;1;8d;1;5S;22;{{328, 16}, {104, 29}}S;19;{{0, 0}, {104, 29}}d;2;33S;9;textfieldS;28;bezeled+editable+placeholderD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;479E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;493E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;466E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;302E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;302E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;302E;E;D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;481E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;494E;E;S;22;{{328, 79}, {104, 29}}S;22;{{328, 47}, {104, 29}}S;22;{{21, 113}, {372, 17}}S;19;{{0, 0}, {372, 17}}d;2;36S;62;This level indicator shows warning and critical at low levels.D;K;6;$classD;K;6;CP$UIDd;3;481E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;495E;E;S;22;{{20, 138}, {408, 18}}S;19;{{0, 0}, {408, 18}}S;13;AppControllerS;17;.Lucida Grande UID;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;355E;D;K;6;CP$UIDd;3;355E;D;K;6;CP$UIDd;3;355E;D;K;6;CP$UIDd;3;355E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;496E;D;K;6;CP$UIDd;3;496E;D;K;6;CP$UIDd;3;496E;D;K;6;CP$UIDd;3;355E;E;E;f;18;0.6862745098039216E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPLevelIndicator/Resources/MainMenu.xib b/Tests/Manual/CPLevelIndicator/Resources/MainMenu.xib index e3a18a0a5..ef537378b 100644 --- a/Tests/Manual/CPLevelIndicator/Resources/MainMenu.xib +++ b/Tests/Manual/CPLevelIndicator/Resources/MainMenu.xib @@ -1,3426 +1,599 @@ - - - - 1050 - 10J3210 - 1306 - 1038.35 - 461.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 1306 - - - YES - NSView - NSMenu - NSWindowTemplate - NSMenuItem - NSTextField - NSTextFieldCell - NSLevelIndicatorCell - NSLevelIndicator - NSCustomObject - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - - - YES - - YES - - - - - YES - - NSApplication - - - FirstResponder - - - NSApplication - - - AMainMenu - - YES - - - NewApplication - - 1048576 - 2147483647 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - submenuAction: - - NewApplication - - YES - - - About NewApplication - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Preferences… - , - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Services - - 1048576 - 2147483647 - - - submenuAction: - - Services - - YES - - _NSServicesMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Hide NewApplication - h - 1048576 - 2147483647 - - - - - - Hide Others - h - 1572864 - 2147483647 - - - - - - Show All - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Quit NewApplication - q - 1048576 - 2147483647 - - - - - _NSAppleMenu - - - - - File - - 1048576 - 2147483647 - - - submenuAction: - - File - - YES - - - New - n - 1048576 - 2147483647 - - - - - - Open… - o - 1048576 - 2147483647 - - - - - - Open Recent - - 1048576 - 2147483647 - - - submenuAction: - - Open Recent - - YES - - - Clear Menu - - 1048576 - 2147483647 - - - - - _NSRecentDocumentsMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Close - w - 1048576 - 2147483647 - - - - - - Save - s - 1048576 - 2147483647 - - - - - - Save As… - S - 1179648 - 2147483647 - - - - - - Revert to Saved - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Page Setup... - P - 1179648 - 2147483647 - - - - - - - Print… - p - 1048576 - 2147483647 - - - - - - - - - Edit - - 1048576 - 2147483647 - - - submenuAction: - - Edit - - YES - - - Undo - z - 1048576 - 2147483647 - - - - - - Redo - Z - 1179648 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Cut - x - 1048576 - 2147483647 - - - - - - Copy - c - 1048576 - 2147483647 - - - - - - Paste - v - 1048576 - 2147483647 - - - - - - Delete - - 1048576 - 2147483647 - - - - - - Select All - a - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Find - - 1048576 - 2147483647 - - - submenuAction: - - Find - - YES - - - Find… - f - 1048576 - 2147483647 - - - 1 - - - - Find Next - g - 1048576 - 2147483647 - - - 2 - - - - Find Previous - G - 1179648 - 2147483647 - - - 3 - - - - Use Selection for Find - e - 1048576 - 2147483647 - - - 7 - - - - Jump to Selection - j - 1048576 - 2147483647 - - - - - - - - - Spelling and Grammar - - 1048576 - 2147483647 - - - submenuAction: - - Spelling and Grammar - - YES - - - Show Spelling… - : - 1048576 - 2147483647 - - - - - - Check Spelling - ; - 1048576 - 2147483647 - - - - - - Check Spelling While Typing - - 1048576 - 2147483647 - - - - - - Check Grammar With Spelling - - 1048576 - 2147483647 - - - - - - - - - Substitutions - - 1048576 - 2147483647 - - - submenuAction: - - Substitutions - - YES - - - Smart Copy/Paste - f - 1048576 - 2147483647 - - - 1 - - - - Smart Quotes - g - 1048576 - 2147483647 - - - 2 - - - - Smart Links - G - 1179648 - 2147483647 - - - 3 - - - - - - - Speech - - 1048576 - 2147483647 - - - submenuAction: - - Speech - - YES - - - Start Speaking - - 1048576 - 2147483647 - - - - - - Stop Speaking - - 1048576 - 2147483647 - - - - - - - - - - - - Format - - 2147483647 - - - submenuAction: - - Format - - YES - - - Font - - 2147483647 - - - submenuAction: - - Font - - YES - - - Show Fonts - t - 1048576 - 2147483647 - - - - - - Bold - b - 1048576 - 2147483647 - - - 2 - - - - Italic - i - 1048576 - 2147483647 - - - 1 - - - - Underline - u - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Bigger - + - 1048576 - 2147483647 - - - 3 - - - - Smaller - - - 1048576 - 2147483647 - - - 4 - - - - YES - YES - - - 2147483647 - - - - - - Kern - - 2147483647 - - - submenuAction: - - Kern - - YES - - - Use Default - - 2147483647 - - - - - - Use None - - 2147483647 - - - - - - Tighten - - 2147483647 - - - - - - Loosen - - 2147483647 - - - - - - - - - Ligature - - 2147483647 - - - submenuAction: - - Ligature - - YES - - - Use Default - - 2147483647 - - - - - - Use None - - 2147483647 - - - - - - Use All - - 2147483647 - - - - - - - - - Baseline - - 2147483647 - - - submenuAction: - - Baseline - - YES - - - Use Default - - 2147483647 - - - - - - Superscript - - 2147483647 - - - - - - Subscript - - 2147483647 - - - - - - Raise - - 2147483647 - - - - - - Lower - - 2147483647 - - - - - - - - - YES - YES - - - 2147483647 - - - - - - Show Colors - C - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Copy Style - c - 1572864 - 2147483647 - - - - - - Paste Style - v - 1572864 - 2147483647 - - - - - _NSFontMenu - - - - - Text - - 2147483647 - - - submenuAction: - - Text - - YES - - - Align Left - { - 1048576 - 2147483647 - - - - - - Center - | - 1048576 - 2147483647 - - - - - - Justify - - 2147483647 - - - - - - Align Right - } - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Show Ruler - - 2147483647 - - - - - - Copy Ruler - c - 1310720 - 2147483647 - - - - - - Paste Ruler - v - 1310720 - 2147483647 - - - - - - - - - - - - View - - 1048576 - 2147483647 - - - submenuAction: - - View - - YES - - - Show Toolbar - t - 1572864 - 2147483647 - - - - - - Customize Toolbar… - - 1048576 - 2147483647 - - - - - - - - - Window - - 1048576 - 2147483647 - - - submenuAction: - - Window - - YES - - - Minimize - m - 1048576 - 2147483647 - - - - - - Zoom - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Bring All to Front - - 1048576 - 2147483647 - - - - - _NSWindowsMenu - - - - - Help - - 1048576 - 2147483647 - - - submenuAction: - - Help - - YES - - - NewApplication Help - ? - 1048576 - 2147483647 - - - - - - - - _NSMainMenu - - - 7 - 2 - {{213, 890}, {448, 125}} - 1948778496 - Level Indicators - NSWindow - - - - 256 - - YES - - - 266 - {{20, 85}, {304, 18}} - - - - YES - - 130560 - 0 - - 2 - 2 - 2 - 2 - 2 - - - - - 266 - {{20, 22}, {304, 18}} - - - - YES - - 270663168 - 0 - - 13 - 50 - 20 - 10 - 2 - - - - - 266 - {{20, 53}, {304, 18}} - - - - YES - - 270663168 - 0 - - 2 - -2 - 2 - 2 - 2 - 2 - - - - - 265 - {{332, 83}, {96, 22}} - - - - YES - - -1804468671 - 272630784 - - - LucidaGrande - 13 - 1044 - - - YES - - 6 - System - textBackgroundColor - - 3 - MQA - - - - 6 - System - textColor - - 3 - MAA - - - - - - - 265 - {{332, 20}, {96, 22}} - - - - YES - - -1804468671 - 272630784 - - - - YES - - - - - - - 265 - {{332, 52}, {96, 22}} - - - - YES - - -1804468671 - 272630784 - - - - YES - - - - - - {{7, 11}, {448, 125}} - - - - - {{0, 0}, {1920, 1178}} - {1e+13, 1e+13} - - - AppController - - - - - YES - - - performMiniaturize: - - - - 37 - - - - arrangeInFront: - - - - 39 - - - - print: - - - - 86 - - - - runPageLayout: - - - - 87 - - - - clearRecentDocuments: - - - - 127 - - - - orderFrontStandardAboutPanel: - - - - 142 - - - - performClose: - - - - 193 - - - - toggleContinuousSpellChecking: - - - - 222 - - - - undo: - - - - 223 - - - - copy: - - - - 224 - - - - checkSpelling: - - - - 225 - - - - paste: - - - - 226 - - - - stopSpeaking: - - - - 227 - - - - cut: - - - - 228 - - - - showGuessPanel: - - - - 230 - - - - redo: - - - - 231 - - - - selectAll: - - - - 232 - - - - startSpeaking: - - - - 233 - - - - delete: - - - - 235 - - - - performZoom: - - - - 240 - - - - performFindPanelAction: - - - - 241 - - - - centerSelectionInVisibleArea: - - - - 245 - - - - toggleGrammarChecking: - - - - 347 - - - - toggleSmartInsertDelete: - - - - 355 - - - - toggleAutomaticQuoteSubstitution: - - - - 356 - - - - toggleAutomaticLinkDetection: - - - - 357 - - - - showHelp: - - - - 360 - - - - saveDocument: - - - - 362 - - - - saveDocumentAs: - - - - 363 - - - - revertDocumentToSaved: - - - - 364 - - - - runToolbarCustomizationPalette: - - - - 365 - - - - toggleToolbarShown: - - - - 366 - - - - hide: - - - - 367 - - - - hideOtherApplications: - - - - 368 - - - - unhideAllApplications: - - - - 370 - - - - newDocument: - - - - 373 - - - - openDocument: - - - - 374 - - - - raiseBaseline: - - - - 426 - - - - lowerBaseline: - - - - 427 - - - - copyFont: - - - - 428 - - - - subscript: - - - - 429 - - - - superscript: - - - - 430 - - - - tightenKerning: - - - - 431 - - - - underline: - - - - 432 - - - - orderFrontColorPanel: - - - - 433 - - - - useAllLigatures: - - - - 434 - - - - loosenKerning: - - - - 435 - - - - pasteFont: - - - - 436 - - - - unscript: - - - - 437 - - - - useStandardKerning: - - - - 438 - - - - useStandardLigatures: - - - - 439 - - - - turnOffLigatures: - - - - 440 - - - - turnOffKerning: - - - - 441 - - - - alignLeft: - - - - 442 - - - - alignJustified: - - - - 443 - - - - copyRuler: - - - - 444 - - - - alignCenter: - - - - 445 - - - - toggleRuler: - - - - 446 - - - - alignRight: - - - - 447 - - - - pasteRuler: - - - - 448 - - - - terminate: - - - - 449 - - - - delegate - - - - 451 - - - - theWindow - - - - 459 - - - - takeIntValueFrom: - - - - 478 - - - - takeIntValueFrom: - - - - 479 - - - - takeIntValueFrom: - - - - 480 - - - - takeIntValueFrom: - - - - 481 - - - - takeIntValueFrom: - - - - 482 - - - - takeIntValueFrom: - - - - 483 - - - - - YES - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 29 - - - YES - - - - - - - - - - MainMenu - - - 19 - - - YES - - - - - - 56 - - - YES - - - - - - 103 - - - YES - - - - 1 - - - 217 - - - YES - - - - - - 83 - - - YES - - - - - - 81 - - - YES - - - - - - - - - - - - - - - - 75 - - - 3 - - - 80 - - - 8 - - - 78 - - - 6 - - - 72 - - - - - 82 - - - 9 - - - 124 - - - YES - - - - - - 77 - - - 5 - - - 73 - - - 1 - - - 79 - - - 7 - - - 112 - - - 10 - - - 74 - - - 2 - - - 125 - - - YES - - - - - - 126 - - - - - 205 - - - YES - - - - - - - - - - - - - - - - - - 202 - - - - - 198 - - - - - 207 - - - - - 214 - - - - - 199 - - - - - 203 - - - - - 197 - - - - - 206 - - - - - 215 - - - - - 218 - - - YES - - - - - - 216 - - - YES - - - - - - 200 - - - YES - - - - - - - - - 219 - - - - - 201 - - - - - 204 - - - - - 220 - - - YES - - - - - - - - - - 213 - - - - - 210 - - - - - 221 - - - - - 208 - - - - - 209 - - - - - 106 - - - YES - - - - 2 - - - 111 - - - - - 57 - - - YES - - - - - - - - - - - - - - - - 58 - - - - - 134 - - - - - 150 - - - - - 136 - - - 1111 - - - 144 - - - - - 129 - - - 121 - - - 143 - - - - - 236 - - - - - 131 - - - YES - - - - - - 149 - - - - - 145 - - - - - 130 - - - - - 24 - - - YES - - - - - - - - - 92 - - - - - 5 - - - - - 239 - - - - - 23 - - - - - 295 - - - YES - - - - - - 296 - - - YES - - - - - - - 297 - - - - - 298 - - - - - 211 - - - YES - - - - - - 212 - - - YES - - - - - - - 195 - - - - - 196 - - - - - 346 - - - - - 348 - - - YES - - - - - - 349 - - - YES - - - - - - - - 350 - - - - - 351 - - - - - 354 - - - - - 371 - - - YES - - - - - - 372 - - - YES - - - - - - - - - - - 375 - - - YES - - - - - - 376 - - - YES - - - - - - - 377 - - - YES - - - - - - 378 - - - YES - - - - - - 379 - - - YES - - - - - - - - - - - - - 380 - - - - - 381 - - - - - 382 - - - - - 383 - - - - - 384 - - - - - 385 - - - - - 386 - - - - - 387 - - - - - 388 - - - YES - - - - - - - - - - - - - - - - - - - - - 389 - - - - - 390 - - - - - 391 - - - - - 392 - - - - - 393 - - - - - 394 - - - - - 395 - - - - - 396 - - - - - 397 - - - YES - - - - - - 398 - - - YES - - - - - - 399 - - - YES - - - - - - 400 - - - - - 401 - - - - - 402 - - - - - 403 - - - - - 404 - - - - - 405 - - - YES - - - - - - - - - - 406 - - - - - 407 - - - - - 408 - - - - - 409 - - - - - 410 - - - - - 411 - - - YES - - - - - - - - 412 - - - - - 413 - - - - - 414 - - - - - 415 - - - YES - - - - - - - - - 416 - - - - - 417 - - - - - 418 - - - - - 419 - - - - - 450 - - - - - 466 - - - YES - - - - - - 467 - - - YES - - - - - - 468 - - - YES - - - - - - 469 - - - YES - - - - - - 470 - - - YES - - - - - - 471 - - - YES - - - - - - 472 - - - - - 473 - - - - - 474 - - - - - 475 - - - - - 476 - - - - - 477 - - - - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - 103.IBPluginDependency - 103.ImportedFromIB2 - 106.IBPluginDependency - 106.ImportedFromIB2 - 106.editorWindowContentRectSynchronizationRect - 111.IBPluginDependency - 111.ImportedFromIB2 - 112.IBPluginDependency - 112.ImportedFromIB2 - 124.IBPluginDependency - 124.ImportedFromIB2 - 125.IBPluginDependency - 125.ImportedFromIB2 - 125.editorWindowContentRectSynchronizationRect - 126.IBPluginDependency - 126.ImportedFromIB2 - 129.IBPluginDependency - 129.ImportedFromIB2 - 130.IBPluginDependency - 130.ImportedFromIB2 - 130.editorWindowContentRectSynchronizationRect - 131.IBPluginDependency - 131.ImportedFromIB2 - 134.IBPluginDependency - 134.ImportedFromIB2 - 136.IBPluginDependency - 136.ImportedFromIB2 - 143.IBPluginDependency - 143.ImportedFromIB2 - 144.IBPluginDependency - 144.ImportedFromIB2 - 145.IBPluginDependency - 145.ImportedFromIB2 - 149.IBPluginDependency - 149.ImportedFromIB2 - 150.IBPluginDependency - 150.ImportedFromIB2 - 19.IBPluginDependency - 19.ImportedFromIB2 - 195.IBPluginDependency - 195.ImportedFromIB2 - 196.IBPluginDependency - 196.ImportedFromIB2 - 197.IBPluginDependency - 197.ImportedFromIB2 - 198.IBPluginDependency - 198.ImportedFromIB2 - 199.IBPluginDependency - 199.ImportedFromIB2 - 200.IBPluginDependency - 200.ImportedFromIB2 - 200.editorWindowContentRectSynchronizationRect - 201.IBPluginDependency - 201.ImportedFromIB2 - 202.IBPluginDependency - 202.ImportedFromIB2 - 203.IBPluginDependency - 203.ImportedFromIB2 - 204.IBPluginDependency - 204.ImportedFromIB2 - 205.IBPluginDependency - 205.ImportedFromIB2 - 205.editorWindowContentRectSynchronizationRect - 206.IBPluginDependency - 206.ImportedFromIB2 - 207.IBPluginDependency - 207.ImportedFromIB2 - 208.IBPluginDependency - 208.ImportedFromIB2 - 209.IBPluginDependency - 209.ImportedFromIB2 - 210.IBPluginDependency - 210.ImportedFromIB2 - 211.IBPluginDependency - 211.ImportedFromIB2 - 212.IBPluginDependency - 212.ImportedFromIB2 - 212.editorWindowContentRectSynchronizationRect - 213.IBPluginDependency - 213.ImportedFromIB2 - 214.IBPluginDependency - 214.ImportedFromIB2 - 215.IBPluginDependency - 215.ImportedFromIB2 - 216.IBPluginDependency - 216.ImportedFromIB2 - 217.IBPluginDependency - 217.ImportedFromIB2 - 218.IBPluginDependency - 218.ImportedFromIB2 - 219.IBPluginDependency - 219.ImportedFromIB2 - 220.IBPluginDependency - 220.ImportedFromIB2 - 220.editorWindowContentRectSynchronizationRect - 221.IBPluginDependency - 221.ImportedFromIB2 - 23.IBPluginDependency - 23.ImportedFromIB2 - 236.IBPluginDependency - 236.ImportedFromIB2 - 239.IBPluginDependency - 239.ImportedFromIB2 - 24.IBPluginDependency - 24.ImportedFromIB2 - 24.editorWindowContentRectSynchronizationRect - 29.IBEditorWindowLastContentRect - 29.IBPluginDependency - 29.ImportedFromIB2 - 29.WindowOrigin - 29.editorWindowContentRectSynchronizationRect - 295.IBPluginDependency - 296.IBPluginDependency - 296.editorWindowContentRectSynchronizationRect - 297.IBPluginDependency - 298.IBPluginDependency - 346.IBPluginDependency - 346.ImportedFromIB2 - 348.IBPluginDependency - 348.ImportedFromIB2 - 349.IBPluginDependency - 349.ImportedFromIB2 - 349.editorWindowContentRectSynchronizationRect - 350.IBPluginDependency - 350.ImportedFromIB2 - 351.IBPluginDependency - 351.ImportedFromIB2 - 354.IBPluginDependency - 354.ImportedFromIB2 - 371.IBEditorWindowLastContentRect - 371.IBNSWindowAutoPositionCentersHorizontal - 371.IBNSWindowAutoPositionCentersVertical - 371.IBPluginDependency - 371.IBWindowTemplateEditedContentRect - 371.NSWindowTemplate.visibleAtLaunch - 371.editorWindowContentRectSynchronizationRect - 372.IBPluginDependency - 375.IBPluginDependency - 376.IBEditorWindowLastContentRect - 376.IBPluginDependency - 377.IBPluginDependency - 378.IBPluginDependency - 379.IBPluginDependency - 380.IBPluginDependency - 381.IBPluginDependency - 382.IBPluginDependency - 383.IBPluginDependency - 384.IBPluginDependency - 385.IBPluginDependency - 386.IBPluginDependency - 387.IBPluginDependency - 388.IBEditorWindowLastContentRect - 388.IBPluginDependency - 389.IBPluginDependency - 390.IBPluginDependency - 391.IBPluginDependency - 392.IBPluginDependency - 393.IBPluginDependency - 394.IBPluginDependency - 395.IBPluginDependency - 396.IBPluginDependency - 397.IBPluginDependency - 398.IBPluginDependency - 399.IBPluginDependency - 400.IBPluginDependency - 401.IBPluginDependency - 402.IBPluginDependency - 403.IBPluginDependency - 404.IBPluginDependency - 405.IBPluginDependency - 406.IBPluginDependency - 407.IBPluginDependency - 408.IBPluginDependency - 409.IBPluginDependency - 410.IBPluginDependency - 411.IBPluginDependency - 412.IBPluginDependency - 413.IBPluginDependency - 414.IBPluginDependency - 415.IBPluginDependency - 416.IBPluginDependency - 417.IBPluginDependency - 418.IBPluginDependency - 419.IBPluginDependency - 450.IBPluginDependency - 466.IBPluginDependency - 467.IBPluginDependency - 468.IBPluginDependency - 469.IBPluginDependency - 470.IBPluginDependency - 471.IBPluginDependency - 472.IBPluginDependency - 473.IBPluginDependency - 474.IBPluginDependency - 475.IBPluginDependency - 476.IBPluginDependency - 477.IBPluginDependency - 5.IBPluginDependency - 5.ImportedFromIB2 - 56.IBPluginDependency - 56.ImportedFromIB2 - 57.IBEditorWindowLastContentRect - 57.IBPluginDependency - 57.ImportedFromIB2 - 57.editorWindowContentRectSynchronizationRect - 58.IBPluginDependency - 58.ImportedFromIB2 - 72.IBPluginDependency - 72.ImportedFromIB2 - 73.IBPluginDependency - 73.ImportedFromIB2 - 74.IBPluginDependency - 74.ImportedFromIB2 - 75.IBPluginDependency - 75.ImportedFromIB2 - 77.IBPluginDependency - 77.ImportedFromIB2 - 78.IBPluginDependency - 78.ImportedFromIB2 - 79.IBPluginDependency - 79.ImportedFromIB2 - 80.IBPluginDependency - 80.ImportedFromIB2 - 81.IBPluginDependency - 81.ImportedFromIB2 - 81.editorWindowContentRectSynchronizationRect - 82.IBPluginDependency - 82.ImportedFromIB2 - 83.IBPluginDependency - 83.ImportedFromIB2 - 92.IBPluginDependency - 92.ImportedFromIB2 - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{596, 852}, {216, 23}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{522, 812}, {146, 23}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{436, 809}, {64, 6}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{608, 612}, {275, 83}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{187, 434}, {243, 243}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{608, 612}, {167, 43}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{608, 612}, {241, 103}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{525, 802}, {197, 73}} - {{143, 285}, {478, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - - {74, 862} - {{6, 978}, {478, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{475, 832}, {234, 43}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{608, 612}, {215, 63}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{303, 221}, {480, 360}} - - - com.apple.InterfaceBuilder.CocoaPlugin - {{303, 221}, {480, 360}} - - {{33, 99}, {480, 360}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{437, 242}, {86, 43}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{523, 2}, {178, 283}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{155, 102}, {245, 183}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{23, 794}, {245, 183}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{145, 474}, {199, 203}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - - - - YES - - - - - - YES - - - - - 483 - - - - YES - - AppController - NSObject - - IBProjectSource - ./Classes/AppController.h - - - - NSDocument - - YES - - YES - printDocument: - revertDocumentToSaved: - runPageLayout: - saveDocument: - saveDocumentAs: - saveDocumentTo: - - - YES - id - id - id - id - id - id - - - - YES - - YES - printDocument: - revertDocumentToSaved: - runPageLayout: - saveDocument: - saveDocumentAs: - saveDocumentTo: - - - YES - - printDocument: - id - - - revertDocumentToSaved: - id - - - runPageLayout: - id - - - saveDocument: - id - - - saveDocumentAs: - id - - - saveDocumentTo: - id - - - - - IBProjectSource - ./Classes/NSDocument.h - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - 3 - - YES - - YES - NSMenuCheckmark - NSMenuMixedState - - - YES - {9, 8} - {7, 2} - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/Manual/CPPanelTest/AppController.j b/Tests/Manual/CPPanelTest/AppController.j new file mode 100644 index 000000000..6fab4d9df --- /dev/null +++ b/Tests/Manual/CPPanelTest/AppController.j @@ -0,0 +1,44 @@ +/* + * AppController.j + * CPPanelTest + * + * Created by You on June 18, 2014. + * Copyright 2014, Your Company All rights reserved. + */ + +@import +@import + + +@implementation AppController : CPObject +{ + @outlet CPWindow theWindow; + @outlet CPPanel panel; +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. +} + +- (void)awakeFromCib +{ + // This is called when the cib is done loading. + // You can implement this method on any object instantiated from a Cib. + // It's a useful hook for setting up current UI values, and other things. + + // In this case, we want the window from Cib to become our full browser window + [theWindow setFullPlatformWindow:YES]; +} + +- (IBAction)showPanel:(id)sender +{ + [panel makeKeyAndOrderFront:sender]; +} + +- (IBAction)closePanel:(id)sender +{ + [panel close]; +} + +@end diff --git a/Tests/Manual/CPPanelTest/Info.plist b/Tests/Manual/CPPanelTest/Info.plist new file mode 100644 index 000000000..27a81fccd --- /dev/null +++ b/Tests/Manual/CPPanelTest/Info.plist @@ -0,0 +1,14 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + CPPanelTest + CPBundleVersion + 1.0 + CPHumanReadableCopyright + Copyright © 2014, Your Company All rights reserved. + + diff --git a/Tests/Manual/CPPanelTest/Jakefile b/Tests/Manual/CPPanelTest/Jakefile new file mode 100644 index 000000000..4ce399d39 --- /dev/null +++ b/Tests/Manual/CPPanelTest/Jakefile @@ -0,0 +1,184 @@ +/* + * Jakefile + * CPPanelTest + * + * Created by You on June 18, 2014. + * Copyright 2014, Your Company All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"), + projectName = "CPPanelTest"; + +app (projectName, function(task) +{ + ENV["OBJJ_INCLUDE_PATHS"] = "Frameworks"; + + if (configuration === "Debug") + ENV["OBJJ_INCLUDE_PATHS"] = FILE.join(ENV["OBJJ_INCLUDE_PATHS"], configuration); + + task.setBuildIntermediatesPath(FILE.join("Build", "CPPanelTest.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("CPPanelTest"); + task.setIdentifier("com.yourcompany.CPPanelTest"); + task.setVersion("1.0"); + task.setAuthor("Your Company"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("CPPanelTest"); + task.setSources(new FileList("**/*.j").exclude(FILE.join("Build", "**")).exclude(FILE.join("Frameworks", "Source", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", [projectName], function() +{ + printResults(configuration); +}); + +task ("build", ["default"], function() +{ + updateApplicationSize(); +}); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", projectName, "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", projectName, "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", projectName)); + OS.system(["press", "-f", FILE.join("Build", "Release", projectName), FILE.join("Build", "Deployment", projectName)]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", projectName)); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", projectName), FILE.join("Build", "Desktop", projectName, "CPPanelTest.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", projectName, "CPPanelTest.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, projectName)); + print("----------------------------"); +} + +function updateApplicationSize() +{ + print("Calculating application file sizes..."); + + var contents = FILE.read(FILE.join("Build", ENV["CONFIGURATION"], projectName, "Info.plist"), { charset:"UTF-8" }), + format = CFPropertyList.sniffedFormatOfString(contents), + plist = CFPropertyList.propertyListFromString(contents), + totalBytes = {executable:0, data:0, mhtml:0}; + + // Get the size of all framework executables and sprite data + var frameworksDir = "Frameworks"; + + if (ENV["CONFIGURATION"] === "Debug") + frameworksDir = FILE.join(frameworksDir, "Debug"); + + var frameworks = FILE.list(frameworksDir); + + frameworks.forEach(function(framework) + { + if (framework !== "Source") + addBundleFileSizes(FILE.join(frameworksDir, framework), totalBytes); + }); + + // Read in the default theme name, and attempt to get its size + var themeName = plist.valueForKey("CPDefaultTheme") || "Aristo2", + themePath = nil; + + if (themeName === "Aristo" || themeName === "Aristo2") + themePath = FILE.join(frameworksDir, "AppKit", "Resources", themeName + ".blend"); + else + themePath = FILE.join("Frameworks", "Resources", themeName + ".blend"); + + if (FILE.isDirectory(themePath)) + addBundleFileSizes(themePath, totalBytes); + + // Add sizes for the app + addBundleFileSizes(FILE.join("Build", ENV["CONFIGURATION"], projectName), totalBytes); + + print("Executables: " + totalBytes.executable + ", sprite data: " + totalBytes.data + ", total: " + (totalBytes.executable + totalBytes.data)); + + var dict = new CFMutableDictionary(); + + dict.setValueForKey("executable", totalBytes.executable); + dict.setValueForKey("data", totalBytes.data); + dict.setValueForKey("mhtml", totalBytes.mhtml); + + plist.setValueForKey("CPApplicationSize", dict); + + FILE.write(FILE.join("Build", ENV["CONFIGURATION"], projectName, "Info.plist"), CFPropertyList.stringFromPropertyList(plist, format), { charset:"UTF-8" }); +} + +function addBundleFileSizes(bundlePath, totalBytes) +{ + var bundleName = FILE.basename(bundlePath), + environment = bundleName === "Foundation" ? "Objj" : "Browser", + bundlePath = FILE.join(bundlePath, environment + ".environment"); + + if (FILE.isDirectory(bundlePath)) + { + var filename = bundleName + ".sj", + filePath = new FILE.Path(FILE.join(bundlePath, filename)); + + if (filePath.exists()) + totalBytes.executable += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "dataURLs.txt")); + + if (filePath.exists()) + totalBytes.data += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLData.txt")); + + if (filePath.exists()) + totalBytes.mhtml += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLPaths.txt")); + + if (filePath.exists()) + totalBytes.mhtml += filePath.size(); + } +} diff --git a/Tests/Manual/CPPanelTest/Resources/MainMenu.cib b/Tests/Manual/CPPanelTest/Resources/MainMenu.cib new file mode 100644 index 000000000..9a3e42c35 --- /dev/null +++ b/Tests/Manual/CPPanelTest/Resources/MainMenu.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;1;0E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;133E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;134E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;129E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;135E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;129E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;130E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;136E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;129E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;124E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;137E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;119E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;116E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;139E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;60E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;140E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;141E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;142E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;74E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;143E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;75E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;144E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;67E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;145E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;122E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;146E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;76E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;147E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;71E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;148E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;64E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;54E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;149E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;109E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;150E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;108E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;151E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;83E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;86E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;153E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;82E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;154E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;98E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;155E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;85E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;84E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;157E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;97E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;158E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;79E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;159E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;90E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;94E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;161E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;80E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;162E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;99E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;117E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;164E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;165E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;113E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;166E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;100E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;167E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;103E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;168E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;104E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;169E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;105E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;132E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;129E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;171E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;128E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;129E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;172E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;133E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;173E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;174E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;175E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;176E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;59E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;177E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;59E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;56E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;176E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;179E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;180E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;181E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;59E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;182E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;183E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;184E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;59E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;185E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;59E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;186E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;182E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;183E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;184E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;59E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;187E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;59E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;188E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;189E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;66E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;177E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;66E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;56E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;189E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;190E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;191E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;66E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;192E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;193E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;66E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;194E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;195E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;70E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;177E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;70E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;66E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;195E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;196E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;197E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;198E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;70E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;182E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;183E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;184E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;66E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;199E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;66E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;200E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;201E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;66E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;202E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;203E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;66E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;204E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;205E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;206E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;66E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;207E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;78E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;177E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;78E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;56E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;207E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;208E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;209E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;210E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;211E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;212E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;205E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;182E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;183E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;184E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;213E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;214E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;215E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;216E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;217E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;218E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;219E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;220E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;221E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;182E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;183E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;184E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;222E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;89E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;177E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;89E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;222E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;223E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;224E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;225E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;226E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;227E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;228E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;229E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;230E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;231E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;232E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;205E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;233E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;234E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;235E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;236E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;237E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;238E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;96E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;177E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;96E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;238E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;239E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;240E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;96E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;241E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;242E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;96E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;243E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;244E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;96E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;245E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;96E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;246E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;102E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;177E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;102E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;246E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;248E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;225E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;102E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;226E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;249E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;228E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;102E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;229E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;250E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;231E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;102E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;232E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;205E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;251E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;107E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;177E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;107E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;251E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;252E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;253E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;107E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;254E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;107E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;255E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;111E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;177E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;111E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;56E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;255E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;256E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;257E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;111E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;258E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;259E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;260E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;111E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;261E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;115E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;177E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;115E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;56E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;261E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;262E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;263E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;264E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;115E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;265E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;266E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;115E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;182E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;183E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;184E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;115E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;267E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;115E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;268E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;121E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;177E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;121E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;56E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;268E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;269E;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;270E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;121E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;271E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;178E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;123E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;272E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;273E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;274E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;275E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;276E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;234E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;261E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;3;126E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;125E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;277E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;278E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;278E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;279E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;280E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;281E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;281E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;184E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;127E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;126E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;277E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;282E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;283E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;126E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;284E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;285E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;286E;K;11;$aalignmentD;K;6;CP$UIDd;3;228E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;277E;K;6;$afontD;K;6;CP$UIDd;3;288E;K;7;$aimageD;K;6;CP$UIDd;3;290E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;281E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;281E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;184E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;277E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;291E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;292E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;183E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;184E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;293E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;277E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;182E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;228E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;277E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;294E;E;D;K;6;$classD;K;6;CP$UIDd;3;123E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;272E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;295E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;296E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;297E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;276E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;298E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;261E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;3;131E;E;D;K;6;$classD;K;6;CP$UIDd;3;125E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;277E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;299E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;299E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;300E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;280E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;281E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;281E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;184E;E;D;K;6;$classD;K;6;CP$UIDd;3;127E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;131E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;277E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;301E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;302E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;131E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;284E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;285E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;286E;K;11;$aalignmentD;K;6;CP$UIDd;3;228E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;277E;K;6;$afontD;K;6;CP$UIDd;3;288E;K;7;$aimageD;K;6;CP$UIDd;3;303E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;281E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;281E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;184E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;277E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;291E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;304E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;183E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;184E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;293E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;277E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;182E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;228E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;277E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;124E;E;E;S;8;delegateS;5;panelS;9;theWindowS;15;arrangeInFront:S;19;performMiniaturize:S;29;orderFrontStandardAboutPanel:S;13;openDocument:S;13;performClose:S;13;saveDocument:S;15;saveDocumentAs:S;12;newDocument:S;9;showHelp:S;22;revertDocumentToSaved:S;21;clearRecentDocuments:S;10;terminate:S;13;stopSpeaking:S;14;startSpeaking:S;5;copy:S;10;selectAll:S;4;cut:S;14;checkSpelling:S;7;delete:S;6;paste:S;15;showGuessPanel:S;5;undo:S;23;performFindPanelAction:S;29;centerSelectionInVisibleArea:S;5;redo:S;30;toggleContinuousSpellChecking:S;12;performZoom:S;19;toggleToolbarShown:S;31;runToolbarCustomizationPalette:S;22;toggleGrammarChecking:S;24;toggleSmartInsertDelete:S;33;toggleAutomaticQuoteSubstitution:S;29;toggleAutomaticLinkDetection:S;11;closePanel:S;10;showPanel:S;9;AMainMenuS;11;_CPMainMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;120E;E;E;S;14;NewApplicationS;14;submenuAction:d;7;1048576S;18;_CPApplicationMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;E;E;S;20;About NewApplicationT;S;0;F;S;12;Preferences…S;1;,S;19;Quit NewApplicationS;1;qS;4;FileD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;E;E;S;3;NewS;1;nS;5;Open…S;1;oS;11;Open RecentS;22;_CPRecentDocumentsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;71E;E;E;S;10;Clear MenuS;5;CloseS;1;wS;4;SaveS;1;sS;8;Save As…S;1;Sd;7;1179648S;15;Revert to SavedS;4;EditD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;106E;E;E;S;4;UndoS;1;zS;4;RedoS;1;ZS;3;CutS;1;xS;4;CopyS;1;cS;5;PasteS;1;vS;6;DeleteS;10;Select AllS;1;aS;4;FindD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;E;E;S;5;Find…d;1;1S;1;fS;9;Find Nextd;1;2S;1;gS;13;Find Previousd;1;3S;1;GS;22;Use Selection for Findd;1;7S;1;eS;17;Jump to SelectionS;1;jS;20;Spelling and GrammarD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;E;E;S;14;Show Spelling…S;1;:S;14;Check SpellingS;1;;S;27;Check Spelling While TypingS;27;Check Grammar With SpellingS;13;SubstitutionsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;E;E;S;16;Smart Copy/PasteS;12;Smart QuotesS;11;Smart LinksS;6;SpeechD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;E;E;S;14;Start SpeakingS;13;Stop SpeakingS;4;ViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;E;E;S;12;Show ToolbarS;1;td;7;1572864S;18;Customize Toolbar…S;6;WindowS;14;_CPWindowsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;E;E;S;8;MinimizeS;1;mS;4;ZoomS;18;Bring All to FrontS;4;HelpD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;122E;E;E;S;19;NewApplication HelpS;1;?S;32;{10000000000000, 10000000000000}S;8;CPWindowd;10;1879048192S;24;{{335, 128}, {480, 360}}S;21;{{0, 0}, {1440, 878}}d;1;0S;20;{{0, 0}, {480, 360}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;128E;E;E;S;6;normalS;6;{1, 1}S;23;{{190, 104}, {100, 25}}S;19;{{0, 0}, {100, 25}}d;2;36S;6;buttonS;8;borderedD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;287E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;305E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;306E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;184E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;184E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;184E;E;D;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;289E;K;4;nameD;K;6;CP$UIDd;3;307E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;308E;K;5;valueD;K;6;CP$UIDd;3;309E;E;d;1;4S;10;Show paneld;2;14S;13;AppControllerS;7;CPPaneld;10;-529005568S;24;{{139, 419}, {276, 378}}d;2;15S;20;{{0, 0}, {276, 378}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;132E;E;E;S;22;{{88, 180}, {101, 25}}S;19;{{0, 0}, {101, 25}}D;K;6;$classD;K;6;CP$UIDd;3;289E;K;4;nameD;K;6;CP$UIDd;3;307E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;308E;K;5;valueD;K;6;CP$UIDd;3;309E;E;S;11;Close panelS;17;.Lucida Grande UId;2;13S;5;imageS;11;highlightedD;K;6;$classD;K;6;CP$UIDd;3;287E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;305E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;306E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;184E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;184E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;184E;E;E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPPanelTest/Resources/MainMenu.xib b/Tests/Manual/CPPanelTest/Resources/MainMenu.xib new file mode 100644 index 000000000..968150421 --- /dev/null +++ b/Tests/Manual/CPPanelTest/Resources/MainMenu.xib @@ -0,0 +1,333 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/Manual/CPPanelTest/index-debug.html b/Tests/Manual/CPPanelTest/index-debug.html new file mode 100644 index 000000000..d2336e707 --- /dev/null +++ b/Tests/Manual/CPPanelTest/index-debug.html @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + CPPanelTest + + + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ + diff --git a/Tests/Manual/CPPanelTest/index.html b/Tests/Manual/CPPanelTest/index.html new file mode 100644 index 000000000..6f82ac7f8 --- /dev/null +++ b/Tests/Manual/CPPanelTest/index.html @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + CPPanelTest + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ + diff --git a/Tests/Manual/CPPanelTest/main.j b/Tests/Manual/CPPanelTest/main.j new file mode 100644 index 000000000..4d948a81d --- /dev/null +++ b/Tests/Manual/CPPanelTest/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * CPPanelTest + * + * Created by You on June 18, 2014. + * Copyright 2014, Your Company All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tests/Manual/CPPopover/AppController.j b/Tests/Manual/CPPopover/AppController.j index 7df7a12d4..b96998380 100644 --- a/Tests/Manual/CPPopover/AppController.j +++ b/Tests/Manual/CPPopover/AppController.j @@ -122,6 +122,7 @@ buttonBehaviour = [[CPPopUpButton alloc] initWithFrame:CGRectMake(570, 10, 130, buttonHeight)]; [buttonBehaviour addItemWithTitle:"Transient"]; + [buttonBehaviour addItemWithTitle:"Semi-transient"]; [buttonBehaviour addItemWithTitle:"Not managed"]; [contentView addSubview:buttonBehaviour]; @@ -193,8 +194,8 @@ - (@action)setTransient:(id)sender { - [windowPopover setBehavior:[sender state] === CPOnState ? CPPopoverBehaviorTransient : CPPopoverBehaviorApplicationDefined]; - [nestedPopover setBehavior:[sender state] === CPOnState ? CPPopoverBehaviorTransient : CPPopoverBehaviorApplicationDefined]; + [windowPopover setBehavior:[sender state] === CPOnState ? CPPopoverBehaviorTransient : CPPopoverBehaviorSemitransient]; + [nestedPopover setBehavior:[sender state] === CPOnState ? CPPopoverBehaviorTransient : CPPopoverBehaviorSemitransient]; } - (@action)movePopover:(id)sender @@ -214,7 +215,14 @@ { [aPopover setDelegate:self]; [aPopover setAnimates:([buttonAnimation title] === @"With animation")]; - [aPopover setBehavior:([buttonBehaviour title] === @"Transient") ? CPPopoverBehaviorTransient : CPPopoverBehaviorApplicationDefined]; + + if ([buttonBehaviour title] === @"Transient") + [aPopover setBehavior:CPPopoverBehaviorTransient]; + else if ([buttonBehaviour title] === @"Semi-transient") + [aPopover setBehavior:CPPopoverBehaviorSemitransient]; + else + [aPopover setBehavior:CPPopoverBehaviorApplicationDefined]; + [aPopover setAppearance:appearance]; } diff --git a/Tests/Manual/CPPredicateEditorCibTest/AppController.j b/Tests/Manual/CPPredicateEditorCibTest/AppController.j index d648e7f74..4a46e8bc0 100644 --- a/Tests/Manual/CPPredicateEditorCibTest/AppController.j +++ b/Tests/Manual/CPPredicateEditorCibTest/AppController.j @@ -13,7 +13,7 @@ { CPWindow window; CPPredicateEditor predicateEditor; - + CPTableView leftTable; CPTableView rightTable; CPPopUpButton rightExpressionsType; @@ -28,7 +28,7 @@ + (void)initialize { var transformer = [[PredicateTransformer alloc] init]; - [CPValueTransformer setValueTransformer:transformer forName:@"PredicateTransformer"]; + [CPValueTransformer setValueTransformer:transformer forName:@"PredicateTransformer"]; } - (void)awakeFromCib @@ -109,7 +109,7 @@ template = [[CPPredicateEditorRowTemplate alloc] initWithLeftExpressions:leftExpressions rightExpressionAttributeType:CPStringAttributeType modifier:0 operators:operators options:0]; else if (type == 1) template = [[CPPredicateEditorRowTemplate alloc] initWithLeftExpressions:leftExpressions rightExpressionAttributeType:CPInteger16AttributeType modifier:0 operators:operators options:0]; - else if (type ==2) + else if (type == 2) { var rightExpressions = [CPMutableArray array], count = [rightConstants count]; @@ -121,6 +121,8 @@ template = [[CPPredicateEditorRowTemplate alloc] initWithLeftExpressions:leftExpressions rightExpressions:rightExpressions modifier:0 operators:operators options:0]; } + else if (type == 3) + template = [[CPPredicateEditorRowTemplate alloc] initWithLeftExpressions:leftExpressions rightExpressionAttributeType:CPDateAttributeType modifier:0 operators:operators options:0]; var templates = [[predicateEditor rowTemplates] arrayByAddingObject:template]; [predicateEditor setRowTemplates:templates]; diff --git a/Tests/Manual/CPPredicateEditorCibTest/Resources/MainMenu.cib b/Tests/Manual/CPPredicateEditorCibTest/Resources/MainMenu.cib index 9977f32bf..ae37f3145 100644 --- a/Tests/Manual/CPPredicateEditorCibTest/Resources/MainMenu.cib +++ b/Tests/Manual/CPPredicateEditorCibTest/Resources/MainMenu.cib @@ -1 +1 @@ -280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;18E;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;203E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;207E;D;K;6;CP$UIDd;3;208E;D;K;6;CP$UIDd;3;209E;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;3;211E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;214E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;216E;D;K;6;CP$UIDd;3;217E;D;K;6;CP$UIDd;3;218E;D;K;6;CP$UIDd;3;219E;D;K;6;CP$UIDd;3;220E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;3;222E;D;K;6;CP$UIDd;3;223E;D;K;6;CP$UIDd;3;224E;D;K;6;CP$UIDd;3;225E;D;K;6;CP$UIDd;3;226E;D;K;6;CP$UIDd;3;227E;D;K;6;CP$UIDd;3;228E;D;K;6;CP$UIDd;3;229E;D;K;6;CP$UIDd;3;231E;D;K;6;CP$UIDd;3;233E;D;K;6;CP$UIDd;3;235E;D;K;6;CP$UIDd;3;237E;D;K;6;CP$UIDd;3;238E;D;K;6;CP$UIDd;3;240E;D;K;6;CP$UIDd;3;242E;D;K;6;CP$UIDd;3;243E;D;K;6;CP$UIDd;3;244E;D;K;6;CP$UIDd;3;245E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;247E;D;K;6;CP$UIDd;3;248E;D;K;6;CP$UIDd;3;249E;D;K;6;CP$UIDd;3;250E;D;K;6;CP$UIDd;3;251E;D;K;6;CP$UIDd;3;252E;D;K;6;CP$UIDd;3;253E;D;K;6;CP$UIDd;3;254E;D;K;6;CP$UIDd;3;255E;D;K;6;CP$UIDd;3;256E;D;K;6;CP$UIDd;3;257E;D;K;6;CP$UIDd;3;258E;D;K;6;CP$UIDd;3;259E;D;K;6;CP$UIDd;3;260E;D;K;6;CP$UIDd;3;262E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;265E;D;K;6;CP$UIDd;3;267E;D;K;6;CP$UIDd;3;269E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;270E;D;K;6;CP$UIDd;3;271E;D;K;6;CP$UIDd;3;272E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;273E;D;K;6;CP$UIDd;3;274E;D;K;6;CP$UIDd;3;275E;D;K;6;CP$UIDd;3;276E;D;K;6;CP$UIDd;3;277E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;279E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;280E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;282E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;283E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;284E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;285E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;286E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;287E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;288E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;289E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;291E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;292E;D;K;6;CP$UIDd;3;293E;D;K;6;CP$UIDd;3;294E;D;K;6;CP$UIDd;3;295E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;296E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;297E;D;K;6;CP$UIDd;3;299E;D;K;6;CP$UIDd;3;300E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;203E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;208E;D;K;6;CP$UIDd;3;209E;D;K;6;CP$UIDd;3;209E;D;K;6;CP$UIDd;3;209E;D;K;6;CP$UIDd;3;209E;D;K;6;CP$UIDd;3;209E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;220E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;3;231E;D;K;6;CP$UIDd;3;233E;D;K;6;CP$UIDd;3;235E;D;K;6;CP$UIDd;3;235E;D;K;6;CP$UIDd;3;235E;D;K;6;CP$UIDd;3;240E;D;K;6;CP$UIDd;3;242E;D;K;6;CP$UIDd;3;243E;D;K;6;CP$UIDd;3;243E;D;K;6;CP$UIDd;3;242E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;240E;D;K;6;CP$UIDd;3;248E;D;K;6;CP$UIDd;3;249E;D;K;6;CP$UIDd;3;249E;D;K;6;CP$UIDd;3;248E;D;K;6;CP$UIDd;3;252E;D;K;6;CP$UIDd;3;252E;D;K;6;CP$UIDd;3;240E;D;K;6;CP$UIDd;3;255E;D;K;6;CP$UIDd;3;256E;D;K;6;CP$UIDd;3;256E;D;K;6;CP$UIDd;3;255E;D;K;6;CP$UIDd;3;259E;D;K;6;CP$UIDd;3;233E;D;K;6;CP$UIDd;3;262E;D;K;6;CP$UIDd;3;233E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;265E;D;K;6;CP$UIDd;3;267E;D;K;6;CP$UIDd;3;269E;D;K;6;CP$UIDd;3;265E;D;K;6;CP$UIDd;3;265E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;272E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;273E;D;K;6;CP$UIDd;3;273E;D;K;6;CP$UIDd;3;273E;D;K;6;CP$UIDd;3;276E;D;K;6;CP$UIDd;3;277E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;279E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;280E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;282E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;283E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;284E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;285E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;286E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;287E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;288E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;289E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;291E;D;K;6;CP$UIDd;3;300E;D;K;6;CP$UIDd;3;300E;D;K;6;CP$UIDd;3;300E;D;K;6;CP$UIDd;3;233E;D;K;6;CP$UIDd;3;295E;D;K;6;CP$UIDd;3;233E;D;K;6;CP$UIDd;3;296E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;3;291E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;301E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;302E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;106E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;303E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;297E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;295E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;304E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;297E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;267E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;305E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;297E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;240E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;306E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;297E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;291E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;307E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;297E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;276E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;308E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;297E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;264E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;309E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;297E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;231E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;310E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;240E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;303E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;267E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;311E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;267E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;303E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;276E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;311E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;276E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;303E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;113E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;312E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;115E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;313E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;118E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;314E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;171E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;315E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;177E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;316E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;168E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;317E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;176E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;318E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;170E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;319E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;169E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;320E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;172E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;321E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;132E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;322E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;179E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;323E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;175E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;324E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;119E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;325E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;121E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;106E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;129E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;327E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;120E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;328E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;159E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;329E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;160E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;330E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;141E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;331E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;136E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;332E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;139E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;333E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;154E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;334E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;135E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;335E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;140E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;336E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;155E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;337E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;137E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;338E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;150E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;339E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;147E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;340E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;143E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;341E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;153E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;342E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;114E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;343E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;183E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;344E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;184E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;345E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;156E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;346E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;163E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;347E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;164E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;348E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;165E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;349E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;222E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;350E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;223E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;351E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;224E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;352E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;225E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;353E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;227E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;354E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;228E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;355E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;229E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;356E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;192E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;357E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;216E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;358E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;218E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;219E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;360E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;210E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;361E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;211E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;362E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;212E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;363E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;213E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;364E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;214E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;365E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;205E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;366E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;206E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;367E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;207E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;368E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;199E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;369E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;200E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;201E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;371E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;202E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;372E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;262E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;240E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;373E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;272E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;374E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;285E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;375E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;283E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;375E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;282E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;375E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;284E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;375E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;287E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;375E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;288E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;375E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;286E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;375E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;291E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;376E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;280E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;377E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;289E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;375E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;295E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;297E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;378E;E;D;K;10;$classnameS;21;CPCibBindingConnectorK;8;$classesA;S;21;CPCibBindingConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;103E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;240E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;299E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;379E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;380E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;381E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;383E;E;D;K;6;$classD;K;6;CP$UIDd;3;103E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;296E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;299E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;379E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;380E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;381E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;384E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;301E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;385E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;386E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;387E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;388E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;111E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;388E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;391E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;392E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;393E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;395E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;111E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;396E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;111E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;397E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;111E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;398E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;111E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;399E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;400E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;117E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;400E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;401E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;402E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;404E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;405E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;406E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;407E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;408E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;393E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;395E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;409E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;410E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;393E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;395E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;393E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;395E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;411E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;127E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;411E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;412E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;413E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;393E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;395E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;414E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;405E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;415E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;416E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;131E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;416E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;417E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;418E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;131E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;419E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;420E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;134E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;420E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;421E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;422E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;423E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;424E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;425E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;426E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;393E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;395E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;427E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;428E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;429E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;430E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;431E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;432E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;393E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;395E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;433E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;434E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;435E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;436E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;145E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;436E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;437E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;438E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;439E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;145E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;440E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;435E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;441E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;145E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;442E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;443E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;444E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;145E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;445E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;446E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;447E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;145E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;448E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;449E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;450E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;145E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;451E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;452E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;152E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;452E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;453E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;454E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;455E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;456E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;457E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;458E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;459E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;460E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;158E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;460E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;461E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;462E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;158E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;463E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;158E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;464E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;162E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;464E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;465E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;466E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;450E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;451E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;467E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;447E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;448E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;468E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;439E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;440E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;435E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;469E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;167E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;469E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;470E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;471E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;472E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;473E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;474E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;435E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;475E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;476E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;477E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;478E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;479E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;480E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;481E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;174E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;481E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;482E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;483E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;484E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;174E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;485E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;486E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;435E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;487E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;488E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;393E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;395E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;489E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;393E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;395E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;167E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;490E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;182E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;490E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;491E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;492E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;182E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;493E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;415E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;494E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;182E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;495E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;186E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;495E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;496E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;497E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;188E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;497E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;498E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;499E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;500E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;493E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;501E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;447E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;502E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;503E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;450E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;504E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;505E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;506E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;393E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;395E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;507E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;439E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;508E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;509E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;510E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;511E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;393E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;395E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;512E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;198E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;512E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;513E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;514E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;198E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;515E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;198E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;516E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;198E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;517E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;198E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;518E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;204E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;518E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;519E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;514E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;204E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;515E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;204E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;520E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;204E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;521E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;209E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;521E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;522E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;514E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;209E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;523E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;209E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;524E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;209E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;525E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;209E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;526E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;209E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;393E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;395E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;527E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;528E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;393E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;395E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;529E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;432E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;415E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;530E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;188E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;430E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;415E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;531E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;389E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;221E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;186E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;531E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;532E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;533E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;221E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;534E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;535E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;221E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;536E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;537E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;221E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;538E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;221E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;539E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;393E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;395E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;221E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;540E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;221E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;541E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;221E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;432E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;542E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;543E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;221E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;430E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;542E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;230E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;544E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;545E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;546E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;547E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;548E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;549E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;388E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;3;233E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;232E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;551E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;551E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;552E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;234E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;233E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;554E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;555E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;556E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;233E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;557E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;558E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;560E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;1;0E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;3;237E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;3;238E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;561E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;561E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;561E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;561E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;393E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;395E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;393E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;562E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;447E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;3;550E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;236E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;235E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;563E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;564E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;235E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;565E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;566E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;567E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;568E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;550E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;235E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;569E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;550E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;3;393E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;570E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;236E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;235E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;571E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;572E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;235E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;565E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;566E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;567E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;568E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;550E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;235E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;573E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;550E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;3;395E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;450E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;17;CPPredicateEditorK;8;$classesA;S;17;CPPredicateEditorS;12;CPRuleEditorS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;239E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;560E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;574E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;574E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;575E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;560E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;576E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;577E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;20;CPRuleEditorEditableD;K;6;CP$UIDd;3;393E;K;35;CPRuleEditorAllowsEmptyCompoundRowsD;K;6;CP$UIDd;3;395E;K;25;CPRuleEditorDisallowEmptyD;K;6;CP$UIDd;3;393E;K;30;CPRuleEditorAlignmentGridWidthD;K;6;CP$UIDd;3;578E;K;23;CPRuleEditorSliceHeightD;K;6;CP$UIDd;3;579E;K;23;CPRuleEditorNestingModeD;K;6;CP$UIDd;3;439E;K;27;CPRuleEditorStringsFilenameD;K;6;CP$UIDd;3;580E;K;26;CPRuleEditorRowTypeKeyPathD;K;6;CP$UIDd;3;581E;K;24;CPRuleEditorItemsKeyPathD;K;6;CP$UIDd;3;582E;K;25;CPRuleEditorValuesKeyPathD;K;6;CP$UIDd;3;583E;K;29;CPRuleEditorBoundArrayKeyPathD;K;6;CP$UIDd;3;584E;K;31;CPRuleEditorSubrowsArrayKeyPathD;K;6;CP$UIDd;3;585E;K;24;CPRuleEditorSlicesHolderD;K;6;CP$UIDd;1;0E;K;18;CPRuleEditorSlicesD;K;6;CP$UIDd;3;586E;K;27;CPRuleEditorBoundArrayOwnerD;K;6;CP$UIDd;3;588E;K;20;CPPredicateTemplatesD;K;6;CP$UIDd;3;589E;E;D;K;10;$classnameS;28;CPPredicateEditorRowTemplateK;8;$classesA;S;28;CPPredicateEditorRowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;241E;K;23;CPPredicateTemplateTypeD;K;6;CP$UIDd;3;447E;K;26;CPPredicateTemplateOptionsD;K;6;CP$UIDd;3;550E;K;27;CPPredicateTemplateModifierD;K;6;CP$UIDd;3;550E;K;36;CPPredicateTemplateLeftAttributeTypeD;K;6;CP$UIDd;3;550E;K;37;CPPredicateTemplateRightAttributeTypeD;K;6;CP$UIDd;3;550E;K;33;CPPredicateTemplateLeftIsWildcardD;K;6;CP$UIDd;3;395E;K;34;CPPredicateTemplateRightIsWildcardD;K;6;CP$UIDd;3;395E;K;24;CPPredicateTemplateViewsD;K;6;CP$UIDd;3;590E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;394E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;591E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;592E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;593E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;450E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;243E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;447E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;594E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;593E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;243E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;450E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;394E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;595E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;596E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;593E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;450E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;246E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;241E;K;23;CPPredicateTemplateTypeD;K;6;CP$UIDd;3;450E;K;26;CPPredicateTemplateOptionsD;K;6;CP$UIDd;3;550E;K;27;CPPredicateTemplateModifierD;K;6;CP$UIDd;3;550E;K;36;CPPredicateTemplateLeftAttributeTypeD;K;6;CP$UIDd;3;550E;K;37;CPPredicateTemplateRightAttributeTypeD;K;6;CP$UIDd;3;597E;K;33;CPPredicateTemplateLeftIsWildcardD;K;6;CP$UIDd;3;395E;K;34;CPPredicateTemplateRightIsWildcardD;K;6;CP$UIDd;3;393E;K;24;CPPredicateTemplateViewsD;K;6;CP$UIDd;3;598E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;394E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;599E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;600E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;593E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;450E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;249E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;602E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;603E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;593E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;249E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;604E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;394E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;605E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;606E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;593E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;450E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;252E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;510E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;607E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;593E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;252E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;608E;E;D;K;6;$classD;K;6;CP$UIDd;3;241E;K;23;CPPredicateTemplateTypeD;K;6;CP$UIDd;3;450E;K;26;CPPredicateTemplateOptionsD;K;6;CP$UIDd;3;550E;K;27;CPPredicateTemplateModifierD;K;6;CP$UIDd;3;550E;K;36;CPPredicateTemplateLeftAttributeTypeD;K;6;CP$UIDd;3;550E;K;37;CPPredicateTemplateRightAttributeTypeD;K;6;CP$UIDd;3;609E;K;33;CPPredicateTemplateLeftIsWildcardD;K;6;CP$UIDd;3;395E;K;34;CPPredicateTemplateRightIsWildcardD;K;6;CP$UIDd;3;393E;K;24;CPPredicateTemplateViewsD;K;6;CP$UIDd;3;610E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;394E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;611E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;612E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;593E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;450E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;256E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;613E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;603E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;593E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;256E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;614E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;394E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;615E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;616E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;593E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;450E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;259E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;447E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;261E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;233E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;617E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;618E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;233E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;557E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;619E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;620E;K;16;$aimage-positionD;K;6;CP$UIDd;3;550E;K;6;$afontD;K;6;CP$UIDd;3;622E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;550E;K;11;$aalignmentD;K;6;CP$UIDd;3;447E;K;7;$aimageD;K;6;CP$UIDd;3;624E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;450E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;508E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;394E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;395E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;625E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;550E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;393E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;550E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;550E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;5;CPBoxK;8;$classesA;S;5;CPBoxS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;263E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;233E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;626E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;627E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;628E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;233E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;629E;K;25;CPViewAutoresizesSubviewsD;K;6;CP$UIDd;3;550E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;630E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;16;$acontent-marginD;K;6;CP$UIDd;3;632E;K;15;$acorner-radiusD;K;6;CP$UIDd;3;550E;K;14;$aborder-widthD;K;6;CP$UIDd;3;550E;K;18;$abackground-colorD;K;6;CP$UIDd;3;634E;K;12;CPBoxTypeKeyD;K;6;CP$UIDd;3;510E;K;18;CPBoxBorderTypeKeyD;K;6;CP$UIDd;3;450E;K;10;CPBoxTitleD;K;6;CP$UIDd;3;635E;K;18;CPBoxTitlePositionD;K;6;CP$UIDd;3;550E;K;14;CPBoxTitleViewD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;234E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;636E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;637E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;638E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;639E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;636E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;557E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;558E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;640E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;1;0E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;3;271E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;3;270E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;561E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;561E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;561E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;561E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;393E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;393E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;393E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;641E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;447E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;3;550E;E;D;K;10;$classnameS;11;CPTableViewK;8;$classesA;S;11;CPTableViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;266E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;640E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;642E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;642E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;640E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;643E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;644E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;12;$agrid-colorD;K;6;CP$UIDd;3;645E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;646E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;647E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;3;550E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;510E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;3;395E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;3;393E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;3;393E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;3;393E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;3;393E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;648E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;3;645E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;3;550E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;3;393E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;1;0E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPTableColumnK;8;$classesA;S;13;CPTableColumnS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;268E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;649E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;650E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;651E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;653E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;654E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;439E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;395E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;393E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;236E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;265E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;655E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;656E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;265E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;565E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;566E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;567E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;568E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;550E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;265E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;573E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;550E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;3;395E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;657E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;236E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;265E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;658E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;659E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;265E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;565E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;566E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;567E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;568E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;550E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;265E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;569E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;550E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;3;393E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;660E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;261E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;636E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;661E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;662E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;636E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;557E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;619E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;620E;K;16;$aimage-positionD;K;6;CP$UIDd;3;550E;K;6;$afontD;K;6;CP$UIDd;3;622E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;550E;K;11;$aalignmentD;K;6;CP$UIDd;3;447E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;450E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;508E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;394E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;395E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;625E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;550E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;393E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;550E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;550E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;234E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;636E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;663E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;638E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;664E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;636E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;557E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;558E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;665E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;1;0E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;3;274E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;3;275E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;561E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;561E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;561E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;561E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;393E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;393E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;393E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;666E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;447E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;3;550E;E;D;K;6;$classD;K;6;CP$UIDd;3;236E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;273E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;658E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;659E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;273E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;565E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;566E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;567E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;568E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;550E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;273E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;569E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;550E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;3;393E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;660E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;236E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;273E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;655E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;656E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;273E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;565E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;566E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;567E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;568E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;550E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;273E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;573E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;550E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;3;395E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;657E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;266E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;665E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;642E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;642E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;665E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;643E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;644E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;12;$agrid-colorD;K;6;CP$UIDd;3;645E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;646E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;647E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;3;550E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;510E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;3;395E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;3;393E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;3;393E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;3;393E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;3;393E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;667E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;3;645E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;3;550E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;3;393E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;1;0E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;268E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;649E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;650E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;651E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;668E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;669E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;439E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;395E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;393E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;278E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;636E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;670E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;671E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;636E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;557E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;672E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;6;$afontD;K;6;CP$UIDd;3;673E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;447E;K;11;$aalignmentD;K;6;CP$UIDd;3;510E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;393E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;674E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;675E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;395E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;395E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;395E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;676E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;447E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;510E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;261E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;636E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;677E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;662E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;636E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;557E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;619E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;620E;K;16;$aimage-positionD;K;6;CP$UIDd;3;550E;K;6;$afontD;K;6;CP$UIDd;3;622E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;550E;K;11;$aalignmentD;K;6;CP$UIDd;3;447E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;450E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;508E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;394E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;395E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;625E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;550E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;393E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;550E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;550E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPCheckBoxK;8;$classesA;S;10;CPCheckBoxS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;281E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;636E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;678E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;679E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;680E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;636E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;557E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;681E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;16;$aimage-positionD;K;6;CP$UIDd;3;447E;K;6;$afontD;K;6;CP$UIDd;3;673E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;550E;K;11;$aalignmentD;K;6;CP$UIDd;3;550E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;550E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;682E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;394E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;395E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;450E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;450E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;393E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;447E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;550E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;281E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;636E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;565E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;683E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;684E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;636E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;557E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;681E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;16;$aimage-positionD;K;6;CP$UIDd;3;447E;K;6;$afontD;K;6;CP$UIDd;3;673E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;550E;K;11;$aalignmentD;K;6;CP$UIDd;3;550E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;550E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;685E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;394E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;395E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;450E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;450E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;393E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;447E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;550E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;281E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;636E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;686E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;687E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;688E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;636E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;557E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;681E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;16;$aimage-positionD;K;6;CP$UIDd;3;447E;K;6;$afontD;K;6;CP$UIDd;3;673E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;550E;K;11;$aalignmentD;K;6;CP$UIDd;3;550E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;550E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;689E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;394E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;395E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;450E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;450E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;393E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;447E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;550E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;281E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;636E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;447E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;690E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;688E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;636E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;557E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;681E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;16;$aimage-positionD;K;6;CP$UIDd;3;447E;K;6;$afontD;K;6;CP$UIDd;3;673E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;550E;K;11;$aalignmentD;K;6;CP$UIDd;3;550E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;550E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;691E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;394E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;395E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;450E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;450E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;393E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;447E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;550E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;281E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;636E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;692E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;693E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;694E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;636E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;557E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;681E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;16;$aimage-positionD;K;6;CP$UIDd;3;447E;K;6;$afontD;K;6;CP$UIDd;3;673E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;550E;K;11;$aalignmentD;K;6;CP$UIDd;3;550E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;550E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;695E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;394E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;395E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;450E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;450E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;393E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;447E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;550E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;281E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;636E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;510E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;696E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;688E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;636E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;557E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;681E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;16;$aimage-positionD;K;6;CP$UIDd;3;447E;K;6;$afontD;K;6;CP$UIDd;3;673E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;550E;K;11;$aalignmentD;K;6;CP$UIDd;3;550E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;550E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;697E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;394E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;395E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;450E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;450E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;393E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;447E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;550E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;281E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;636E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;608E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;698E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;684E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;636E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;557E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;681E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;16;$aimage-positionD;K;6;CP$UIDd;3;447E;K;6;$afontD;K;6;CP$UIDd;3;673E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;550E;K;11;$aalignmentD;K;6;CP$UIDd;3;550E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;550E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;699E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;394E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;395E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;450E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;450E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;393E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;447E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;550E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;281E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;636E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;700E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;688E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;636E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;557E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;681E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;16;$aimage-positionD;K;6;CP$UIDd;3;447E;K;6;$afontD;K;6;CP$UIDd;3;673E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;550E;K;11;$aalignmentD;K;6;CP$UIDd;3;550E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;550E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;701E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;394E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;395E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;450E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;450E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;393E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;447E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;550E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;290E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;636E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;3;300E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;702E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;703E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;636E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;557E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;704E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;705E;K;6;$afontD;K;6;CP$UIDd;3;622E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;510E;K;11;$aalignmentD;K;6;CP$UIDd;3;550E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;550E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;394E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;395E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;706E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;550E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;393E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;447E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;550E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;707E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;291E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;593E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;300E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;708E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;291E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;593E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;300E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;709E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;291E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;593E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;450E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;300E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;390E;E;D;K;6;$classD;K;6;CP$UIDd;3;261E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;233E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;710E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;711E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;233E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;629E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;619E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;712E;K;16;$aimage-positionD;K;6;CP$UIDd;3;550E;K;6;$afontD;K;6;CP$UIDd;3;622E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;550E;K;11;$aalignmentD;K;6;CP$UIDd;3;447E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;450E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;510E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;713E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;394E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;395E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;625E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;550E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;393E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;550E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;550E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;278E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;233E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;714E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;715E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;233E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;576E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;672E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;716E;K;6;$afontD;K;6;CP$UIDd;3;673E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;447E;K;11;$aalignmentD;K;6;CP$UIDd;3;510E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;394E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;675E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;393E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;393E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;393E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;643E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;447E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;510E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;717E;E;D;K;10;$classnameS;18;CPObjectControllerK;8;$classesA;S;18;CPObjectControllerS;12;CPControllerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;298E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;3;718E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;3;393E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;3;393E;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;719E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;720E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;231E;E;E;S;8;delegateS;11;addTemplateS;9;leftTableS;15;predicateEditorS;20;rightExpressionsTypeS;10;rightTableS;11;templateBoxS;6;windowS;10;dataSourceS;15;arrangeInFront:S;19;performMiniaturize:S;29;orderFrontStandardAboutPanel:S;13;openDocument:S;13;performClose:S;13;saveDocument:S;14;runPageLayout:S;6;print:S;15;saveDocumentAs:S;12;newDocument:S;9;showHelp:S;22;revertDocumentToSaved:S;21;clearRecentDocuments:S;5;hide:S;10;terminate:S;22;hideOtherApplications:S;22;unhideAllApplications:S;13;stopSpeaking:S;14;startSpeaking:S;5;copy:S;10;selectAll:S;4;cut:S;14;checkSpelling:S;7;delete:S;6;paste:S;15;showGuessPanel:S;5;undo:S;23;performFindPanelAction:S;29;centerSelectionInVisibleArea:S;5;redo:S;30;toggleContinuousSpellChecking:S;12;performZoom:S;19;toggleToolbarShown:S;31;runToolbarCustomizationPalette:S;22;toggleGrammarChecking:S;24;toggleSmartInsertDelete:S;33;toggleAutomaticQuoteSubstitution:S;29;toggleAutomaticLinkDetection:S;10;alignLeft:S;12;alignCenter:S;15;alignJustified:S;11;alignRight:S;12;toggleRuler:S;10;copyRuler:S;11;pasteRuler:S;10;underline:S;21;orderFrontColorPanel:S;9;copyFont:S;10;pasteFont:S;9;unscript:S;12;superscript:S;10;subscript:S;14;raiseBaseline:S;14;lowerBaseline:S;21;useStandardLigatures:S;17;turnOffLigatures:S;16;useAllLigatures:S;19;useStandardKerning:S;15;turnOffKerning:S;15;tightenKerning:S;14;loosenKerning:S;7;addRow:S;15;addLeftKeyPath:S;16;updateOperators:S;25;selectRightAttributeType:S;17;addRightConstant:S;12;addTemplate:S;26;value: selection.predicateS;5;valueS;19;selection.predicateD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;382E;K;10;CP.objectsD;E;E;D;K;6;$classD;K;6;CP$UIDd;3;382E;K;10;CP.objectsD;K;22;CPValueTransformerNameD;K;6;CP$UIDd;3;721E;K;27;CPConditionallySetsEditableD;K;6;CP$UIDd;3;395E;K;38;CPAllowsEditingMultipleValuesSelectionD;K;6;CP$UIDd;3;395E;E;E;S;9;AMainMenuS;11;_CPMainMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;130E;E;E;S;6;WindowS;14;submenuAction:d;7;1048576S;14;_CPWindowsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;E;E;T;S;0;F;S;18;Bring All to FrontS;4;ZoomS;8;MinimizeS;1;mS;14;NewApplicationS;18;_CPApplicationMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;121E;E;E;S;20;About NewApplicationS;19;Hide NewApplicationS;1;hS;8;Show AllS;19;Quit NewApplicationS;1;qS;12;Preferences…S;1;,S;8;ServicesS;15;_CPServicesMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;11;Hide Othersd;7;1572864S;4;HelpD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;132E;E;E;S;19;NewApplication HelpS;1;?S;4;EditD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;157E;E;E;S;6;DeleteS;10;Select AllS;1;aS;4;UndoS;1;zS;3;CutS;1;xS;5;PasteS;1;vS;4;CopyS;1;cS;4;RedoS;1;Zd;7;1179648S;4;FindD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;147E;E;E;S;13;Find Previousd;1;3S;1;GS;17;Jump to SelectionS;1;jS;22;Use Selection for Findd;1;7S;1;eS;9;Find Nextd;1;2S;1;gS;5;Find…d;1;1S;1;fS;20;Spelling and GrammarD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;156E;E;E;S;27;Check Spelling While TypingS;14;Check SpellingS;1;;S;14;Show Spelling…S;1;:S;27;Check Grammar With SpellingS;6;SpeechD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;159E;E;E;S;13;Stop SpeakingS;14;Start SpeakingS;13;SubstitutionsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;165E;E;E;S;16;Smart Copy/PasteS;12;Smart QuotesS;11;Smart LinksS;4;FileD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;170E;E;E;S;4;SaveS;1;sS;8;Save As…S;1;SS;6;Print…S;1;pS;5;Open…S;1;oS;3;NewS;1;nS;11;Open RecentS;22;_CPRecentDocumentsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;175E;E;E;S;10;Clear MenuS;13;Page Setup...S;1;PS;5;CloseS;1;wS;15;Revert to SavedS;4;ViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;E;E;S;12;Show ToolbarS;1;tS;18;Customize Toolbar…S;6;FormatD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;220E;E;E;S;4;FontS;11;_CPFontMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;203E;D;K;6;CP$UIDd;3;208E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;216E;D;K;6;CP$UIDd;3;217E;D;K;6;CP$UIDd;3;218E;D;K;6;CP$UIDd;3;219E;E;E;S;10;Show FontsS;4;BoldS;1;bS;6;ItalicS;1;iS;9;UnderlineS;1;uS;6;BiggerS;1;+S;7;Smallerd;1;4S;1;-S;4;KernD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;3;202E;E;E;S;11;Use DefaultS;8;Use NoneS;7;TightenS;6;LoosenS;8;LigatureD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;207E;E;E;S;7;Use AllS;8;BaselineD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;3;211E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;214E;E;E;S;11;SuperscriptS;9;SubscriptS;5;RaiseS;5;LowerS;11;Show ColorsS;1;CS;10;Copy StyleS;11;Paste StyleS;4;TextD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;222E;D;K;6;CP$UIDd;3;223E;D;K;6;CP$UIDd;3;224E;D;K;6;CP$UIDd;3;225E;D;K;6;CP$UIDd;3;226E;D;K;6;CP$UIDd;3;227E;D;K;6;CP$UIDd;3;228E;D;K;6;CP$UIDd;3;229E;E;E;S;10;Align LeftS;1;{S;6;CenterS;1;|S;7;JustifyS;11;Align RightS;1;}S;10;Show RulerS;10;Copy Rulerd;7;1310720S;11;Paste RulerS;32;{10000000000000, 10000000000000}S;8;CPWindowd;10;1946157056S;23;{{335, 77}, {960, 534}}S;22;{{0, 0}, {1680, 1028}}d;2;15d;1;0S;20;{{0, 0}, {960, 534}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;262E;D;K;6;CP$UIDd;3;296E;D;K;6;CP$UIDd;3;235E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;295E;E;E;S;6;normalS;22;{{20, 74}, {611, 164}}S;20;{{0, 0}, {611, 164}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;560E;D;K;6;CP$UIDd;3;237E;D;K;6;CP$UIDd;3;238E;D;K;6;CP$UIDd;3;562E;E;E;d;2;36S;10;scrollviewD;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;559E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;235E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;722E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;574E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;723E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;235E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;565E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;724E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;3;240E;E;d;2;10D;K;6;$classD;K;6;CP$UIDd;3;232E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;235E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;725E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;725E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;235E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;E;S;21;{{336, 79}, {15, 84}}S;18;{{0, 0}, {15, 84}}d;1;8d;11;-2147483648S;8;scrollerS;8;disabledS;27;_verticalScrollerDidScroll:f;17;0.977011501789093S;24;{{-100, 249}, {360, 15}}S;19;{{0, 0}, {360, 15}}S;29;_horizontalScrollerDidScroll:S;20;{{0, 0}, {609, 162}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;727E;E;E;d;2;38S;11;rule-editord;2;75d;2;26S;14;format.stringsS;7;rowTypeS;8;criteriaS;13;displayValuesS;10;boundArrayS;7;subrowsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;33;_CPRuleEditorViewUnboundRowHolderK;8;$classesA;S;33;_CPRuleEditorViewUnboundRowHolderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;587E;K;12;CPBoundArrayD;K;6;CP$UIDd;3;728E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;242E;D;K;6;CP$UIDd;3;248E;D;K;6;CP$UIDd;3;255E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;729E;D;K;6;CP$UIDd;3;730E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;244E;D;K;6;CP$UIDd;3;245E;E;E;S;3;AnyS;17;_popUpItemAction:S;3;AllD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;247E;E;E;S;25;of the following are trued;3;700D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;731E;D;K;6;CP$UIDd;3;732E;D;K;6;CP$UIDd;3;733E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;250E;D;K;6;CP$UIDd;3;251E;E;E;S;6;stringD;K;10;$classnameS;20;_CPKeyPathExpressionK;8;$classesA;S;20;_CPKeyPathExpressionS;21;_CPFunctionExpressionS;12;CPExpressionS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;601E;K;14;CPSelectorNameD;K;6;CP$UIDd;3;734E;K;11;CPArgumentsD;K;6;CP$UIDd;3;735E;K;9;CPOperandD;K;6;CP$UIDd;3;737E;K;16;CPExpressionTypeD;K;6;CP$UIDd;3;439E;E;S;5;mixedD;K;6;$classD;K;6;CP$UIDd;3;601E;K;14;CPSelectorNameD;K;6;CP$UIDd;3;734E;K;11;CPArgumentsD;K;6;CP$UIDd;3;738E;K;9;CPOperandD;K;6;CP$UIDd;3;737E;K;16;CPExpressionTypeD;K;6;CP$UIDd;3;439E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;253E;D;K;6;CP$UIDd;3;254E;E;E;S;2;isS;7;matchesd;1;6d;3;300D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;739E;D;K;6;CP$UIDd;3;740E;D;K;6;CP$UIDd;3;741E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;257E;D;K;6;CP$UIDd;3;258E;E;E;S;6;numberD;K;6;$classD;K;6;CP$UIDd;3;601E;K;14;CPSelectorNameD;K;6;CP$UIDd;3;734E;K;11;CPArgumentsD;K;6;CP$UIDd;3;742E;K;9;CPOperandD;K;6;CP$UIDd;3;737E;K;16;CPExpressionTypeD;K;6;CP$UIDd;3;439E;E;D;K;6;$classD;K;6;CP$UIDd;3;601E;K;14;CPSelectorNameD;K;6;CP$UIDd;3;734E;K;11;CPArgumentsD;K;6;CP$UIDd;3;743E;K;9;CPOperandD;K;6;CP$UIDd;3;737E;K;16;CPExpressionTypeD;K;6;CP$UIDd;3;439E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;260E;E;E;S;15;is greater thanS;22;{{599, 240}, {30, 25}}S;18;{{0, 0}, {30, 25}}S;6;buttonS;17;selected+borderedD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;621E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;744E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;745E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;393E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;395E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;393E;E;D;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;623E;K;4;nameD;K;6;CP$UIDd;3;746E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;747E;K;5;valueD;K;6;CP$UIDd;3;748E;E;d;2;14S;23;{{705, 36}, {234, 434}}S;20;{{0, 0}, {234, 434}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;636E;E;E;d;2;33S;3;boxD;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;631E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;749E;E;D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;633E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;750E;E;S;3;BoxD;K;6;$classD;K;6;CP$UIDd;3;232E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;264E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;806E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;807E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;808E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;264E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;768E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;E;S;20;{{9, 30}, {218, 97}}S;19;{{0, 0}, {218, 97}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;640E;D;K;6;CP$UIDd;3;271E;D;K;6;CP$UIDd;3;270E;D;K;6;CP$UIDd;3;641E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;559E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;265E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;751E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;642E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;752E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;265E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;565E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;753E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;3;267E;E;D;K;6;$classD;K;6;CP$UIDd;3;232E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;265E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;725E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;725E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;265E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;E;S;19;{{0, 0}, {216, 95}}D;K;6;$classD;K;6;CP$UIDd;3;633E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;754E;E;S;9;tableviewD;K;6;$classD;K;6;CP$UIDd;3;633E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;755E;E;d;2;25S;6;{3, 2}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;269E;E;E;d;3;213d;2;40d;4;1000D;K;10;$classnameS;24;_CPTableColumnHeaderViewK;8;$classesA;S;24;_CPTableColumnHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;652E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;725E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;725E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;756E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;757E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;6;$afontD;K;6;CP$UIDd;3;758E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;550E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;394E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;758E;K;36;_CPTableColumnHeaderViewTextColorKeyD;K;6;CP$UIDd;1;0E;K;42;_CPTableColumnHeaderViewTextShadowColorKeyD;K;6;CP$UIDd;1;0E;K;36;_CPTableColumnHeaderViewAlignmentKeyD;K;6;CP$UIDd;3;550E;K;40;_CPTableColumnHeaderViewLineBreakModeKeyD;K;6;CP$UIDd;3;510E;E;D;K;6;$classD;K;6;CP$UIDd;3;278E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;725E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;725E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;672E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;759E;K;6;$afontD;K;6;CP$UIDd;3;760E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;510E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;447E;K;11;$aalignmentD;K;6;CP$UIDd;3;550E;K;15;$acontent-insetD;K;6;CP$UIDd;3;761E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;394E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;675E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;510E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;550E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;394E;E;S;21;{{1, -37}, {223, 15}}S;19;{{0, 0}, {223, 15}}f;18;0.9953917050691244S;23;{{224, -22}, {15, 102}}S;19;{{0, 0}, {15, 102}}f;18;0.9925373134328358S;20;{{8, 125}, {25, 25}}S;18;{{0, 0}, {25, 25}}S;21;{{9, 302}, {218, 97}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;665E;D;K;6;CP$UIDd;3;274E;D;K;6;CP$UIDd;3;275E;D;K;6;CP$UIDd;3;666E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;559E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;273E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;550E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;751E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;642E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;762E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;273E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;565E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;753E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;3;276E;E;D;K;6;$classD;K;6;CP$UIDd;3;232E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;273E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;725E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;725E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;273E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;277E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;652E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;725E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;725E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;763E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;757E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;553E;K;6;$afontD;K;6;CP$UIDd;3;758E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;550E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;394E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;758E;K;36;_CPTableColumnHeaderViewTextColorKeyD;K;6;CP$UIDd;1;0E;K;42;_CPTableColumnHeaderViewTextShadowColorKeyD;K;6;CP$UIDd;1;0E;K;36;_CPTableColumnHeaderViewAlignmentKeyD;K;6;CP$UIDd;3;550E;K;40;_CPTableColumnHeaderViewLineBreakModeKeyD;K;6;CP$UIDd;3;510E;E;D;K;6;$classD;K;6;CP$UIDd;3;278E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;725E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;725E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;672E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;759E;K;6;$afontD;K;6;CP$UIDd;3;764E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;510E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;447E;K;11;$aalignmentD;K;6;CP$UIDd;3;550E;K;15;$acontent-insetD;K;6;CP$UIDd;3;765E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;394E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;675E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;510E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;550E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;394E;E;S;20;{{10, 5}, {136, 17}}S;19;{{0, 0}, {136, 17}}S;9;textfieldD;K;6;$classD;K;6;CP$UIDd;3;621E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;744E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;745E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;395E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;395E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;393E;E;S;10;Key Paths:d;4;3072D;K;6;$classD;K;6;CP$UIDd;3;633E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;766E;E;S;20;{{7, 397}, {25, 25}}d;1;9S;22;{{144, 198}, {84, 21}}S;18;{{0, 0}, {84, 21}}S;9;check-boxS;9;Ends WithS;21;{{14, 198}, {96, 21}}S;18;{{0, 0}, {96, 21}}S;11;Begins Withd;1;5S;21;{{72, 172}, {33, 21}}S;18;{{0, 0}, {33, 21}}S;1;≠S;22;{{127, 172}, {33, 21}}S;1;>d;2;99S;22;{{144, 224}, {78, 21}}S;18;{{0, 0}, {78, 21}}S;8;ContainsS;21;{{14, 172}, {33, 21}}S;1;=S;21;{{14, 224}, {96, 21}}S;7;MatchesS;22;{{189, 172}, {33, 21}}S;1;d;2;99S;22;{{144, 224}, {78, 21}}S;18;{{0, 0}, {78, 21}}S;8;ContainsS;21;{{14, 172}, {33, 21}}S;1;=S;20;{{10, 5}, {136, 17}}S;19;{{0, 0}, {136, 17}}S;10;Key Paths:D;K;6;$classD;K;6;CP$UIDd;3;575E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;772E;E;S;21;{{9, 302}, {218, 97}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;293E;D;K;6;CP$UIDd;3;296E;D;K;6;CP$UIDd;3;297E;D;K;6;CP$UIDd;3;712E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;232E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;292E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;739E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;739E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;292E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;558E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;559E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;559E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;401E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;294E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;295E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;668E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;739E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;739E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;773E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;764E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;558E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;555E;K;6;$afontD;K;6;CP$UIDd;3;765E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;559E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;559E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;401E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;400E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;766E;E;D;K;6;$classD;K;6;CP$UIDd;3;236E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;767E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;768E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;573E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;769E;K;11;$aalignmentD;K;6;CP$UIDd;3;555E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;500E;K;6;$afontD;K;6;CP$UIDd;3;566E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;559E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;559E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;401E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;770E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;771E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;399E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;399E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;401E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;659E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;500E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;555E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;S;20;{{8, 125}, {25, 25}}D;K;6;$classD;K;6;CP$UIDd;3;567E;K;4;nameD;K;6;CP$UIDd;3;735E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;736E;K;5;valueD;K;6;CP$UIDd;3;737E;E;S;21;{{14, 224}, {96, 21}}S;7;MatchesS;22;{{189, 172}, {33, 21}}S;1; - - - 1060 - 11E53 - 851 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 851 - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - - NSApplication - - - FirstResponder - - - NSApplication - - - AMainMenu - - - - NewApplication - - 1048576 - 2147483647 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - submenuAction: - - NewApplication - - - - About NewApplication - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Preferences… - , - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Services - - 1048576 - 2147483647 - - - submenuAction: - - Services - - _NSServicesMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Hide NewApplication - h - 1048576 - 2147483647 - - - - - - Hide Others - h - 1572864 - 2147483647 - - - - - - Show All - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Quit NewApplication - q - 1048576 - 2147483647 - - - - - _NSAppleMenu - - - - - File - - 1048576 - 2147483647 - - - submenuAction: - - File - - - - New - n - 1048576 - 2147483647 - - - - - - Open… - o - 1048576 - 2147483647 - - - - - - Open Recent - - 1048576 - 2147483647 - - - submenuAction: - - Open Recent - - - - Clear Menu - - 1048576 - 2147483647 - - - - - _NSRecentDocumentsMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Close - w - 1048576 - 2147483647 - - - - - - Save - s - 1048576 - 2147483647 - - - - - - Save As… - S - 1179648 - 2147483647 - - - - - - Revert to Saved - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Page Setup... - P - 1179648 - 2147483647 - - - - - - - Print… - p - 1048576 - 2147483647 - - - - - - - - - Edit - - 1048576 - 2147483647 - - - submenuAction: - - Edit - - - - Undo - z - 1048576 - 2147483647 - - - - - - Redo - Z - 1179648 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Cut - x - 1048576 - 2147483647 - - - - - - Copy - c - 1048576 - 2147483647 - - - - - - Paste - v - 1048576 - 2147483647 - - - - - - Delete - - 1048576 - 2147483647 - - - - - - Select All - a - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Find - - 1048576 - 2147483647 - - - submenuAction: - - Find - - - - Find… - f - 1048576 - 2147483647 - - - 1 - - - - Find Next - g - 1048576 - 2147483647 - - - 2 - - - - Find Previous - G - 1179648 - 2147483647 - - - 3 - - - - Use Selection for Find - e - 1048576 - 2147483647 - - - 7 - - - - Jump to Selection - j - 1048576 - 2147483647 - - - - - - - - - Spelling and Grammar - - 1048576 - 2147483647 - - - submenuAction: - - Spelling and Grammar - - - - Show Spelling… - : - 1048576 - 2147483647 - - - - - - Check Spelling - ; - 1048576 - 2147483647 - - - - - - Check Spelling While Typing - - 1048576 - 2147483647 - - - - - - Check Grammar With Spelling - - 1048576 - 2147483647 - - - - - - - - - Substitutions - - 1048576 - 2147483647 - - - submenuAction: - - Substitutions - - - - Smart Copy/Paste - f - 1048576 - 2147483647 - - - 1 - - - - Smart Quotes - g - 1048576 - 2147483647 - - - 2 - - - - Smart Links - G - 1179648 - 2147483647 - - - 3 - - - - - - - Speech - - 1048576 - 2147483647 - - - submenuAction: - - Speech - - - - Start Speaking - - 1048576 - 2147483647 - - - - - - Stop Speaking - - 1048576 - 2147483647 - - - - - - - - - - - - Format - - 2147483647 - - - submenuAction: - - Format - - - - Font - - 2147483647 - - - submenuAction: - - Font - - - - Show Fonts - t - 1048576 - 2147483647 - - - - - - Bold - b - 1048576 - 2147483647 - - - 2 - - - - Italic - i - 1048576 - 2147483647 - - - 1 - - - - Underline - u - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Bigger - + - 1048576 - 2147483647 - - - 3 - - - - Smaller - - - 1048576 - 2147483647 - - - 4 - - - - YES - YES - - - 2147483647 - - - - - - Kern - - 2147483647 - - - submenuAction: - - Kern - - - - Use Default - - 2147483647 - - - - - - Use None - - 2147483647 - - - - - - Tighten - - 2147483647 - - - - - - Loosen - - 2147483647 - - - - - - - - - Ligature - - 2147483647 - - - submenuAction: - - Ligature - - - - Use Default - - 2147483647 - - - - - - Use None - - 2147483647 - - - - - - Use All - - 2147483647 - - - - - - - - - Baseline - - 2147483647 - - - submenuAction: - - Baseline - - - - Use Default - - 2147483647 - - - - - - Superscript - - 2147483647 - - - - - - Subscript - - 2147483647 - - - - - - Raise - - 2147483647 - - - - - - Lower - - 2147483647 - - - - - - - - - YES - YES - - - 2147483647 - - - - - - Show Colors - C - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Copy Style - c - 1572864 - 2147483647 - - - - - - Paste Style - v - 1572864 - 2147483647 - - - - - _NSFontMenu - - - - - Text - - 2147483647 - - - submenuAction: - - Text - - - - Align Left - { - 1048576 - 2147483647 - - - - - - Center - | - 1048576 - 2147483647 - - - - - - Justify - - 2147483647 - - - - - - Align Right - } - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Show Ruler - - 2147483647 - - - - - - Copy Ruler - c - 1310720 - 2147483647 - - - - - - Paste Ruler - v - 1310720 - 2147483647 - - - - - - - - - - - - View - - 1048576 - 2147483647 - - - submenuAction: - - View - - - - Show Toolbar - t - 1572864 - 2147483647 - - - - - - Customize Toolbar… - - 1048576 - 2147483647 - - - - - - - - - Window - - 1048576 - 2147483647 - - - submenuAction: - - Window - - - - Minimize - m - 1048576 - 2147483647 - - - - - - Zoom - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Bring All to Front - - 1048576 - 2147483647 - - - - - _NSWindowsMenu - - - - - Help - - 1048576 - 2147483647 - - - submenuAction: - - Help - - - - NewApplication Help - ? - 1048576 - 2147483647 - - - - - - - - _NSMainMenu - - - 15 - 2 - {{335, 417}, {960, 534}} - 1946157056 - Window - NSWindow - - - {1.7976931348623157e+308, 1.7976931348623157e+308} - - - 256 - - - - 268 - {{601, 264}, {30, 30}} - - - YES - - -2080244224 - 134217728 - + - - LucidaGrande - 13 - 1040 - - - -2038021889 - 134 - - LucidaGrande - 13 - 16 - - - - 400 - 75 - - - - - 270 - {{20, 478}, {611, 22}} - - - YES - - -1804468671 - 268436480 - - - - YES - - 6 - System - textBackgroundColor - - 3 - MQA - - - - 6 - System - textColor - - 3 - MAA - - - - - - - 268 - - - - 2304 - - - - 294 - - - - 274 - - - - 290 - - - - 257 - {{581, 4}, {18, 18}} - - - -1 - YES - - 67239424 - 134348800 - + - - LucidaGrande-Bold - 12 - 16 - - - - add - - - - - _addOption: - - -2038284033 - 36 - - LucidaGrande - 12 - 4880 - - - 400 - 75 - - - - - -2147483391 - {{561, 4}, {18, 18}} - - - -1 - YES - - 67239424 - 134348800 - - - - - - remove - - - - - _deleteOption: - - -2038284033 - 36 - - - 400 - 75 - - - - - 256 - {{7, 4}, {58, 19}} - - - -1 - YES - - 67239488 - 4196352 - - LucidaGrande - 11 - 3088 - - - - -2038284033 - 36 - - LucidaGrande - 11 - 16 - - - 400 - 75 - - - Any - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - - YES - - - - - - - All - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - - - 3 - YES - YES - 2 - - - - - 256 - {{71, 4}, {167, 19}} - - - -1 - YES - - 67239488 - 4196352 - - - -2038284033 - 36 - - - 400 - 75 - - - of the following are true - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - - - - - - - 3 - YES - YES - 2 - - - - {609, 26} - - - 0 - 0 - - - - - - - 2 - {{7, 4}, {58, 19}} - {{71, 4}, {167, 19}} - - - - - 2 - 0 - 0 - 0 - 0 - - - - - NO - NO - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PredicateTransformer - - - - - - 2 - {{7, 4}, {58, 19}} - {{71, 4}, {167, 19}} - - - 0 - 0 - YES - - - - 290 - - - - 257 - {{581, 4}, {18, 18}} - - - -1 - YES - - 67239424 - 134348800 - + - - - - add - - - - - _addOption: - - -2038284033 - 36 - - - 400 - 75 - - - - - 257 - {{561, 4}, {18, 18}} - - - -1 - YES - - 67239424 - 134348800 - - - - - - remove - - - - - _deleteOption: - - -2038284033 - 36 - - - 400 - 75 - - - - - 256 - {{37, 4}, {79, 19}} - - - -1 - YES - - 67239488 - 4196352 - - - 3 - valueForKey: - - 1 - - - - 10 - string - - - - - -2038284033 - 36 - - - 400 - 75 - - - string - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - - YES - - - - - - - mixed - - 1048576 - 2147483647 - - - _popUpItemAction: - - 3 - valueForKey: - - - - 10 - mixed - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + string + + + mixed + - - - - - - - 3 - YES - YES - 2 - - - - - 256 - {{122, 4}, {99, 19}} - - - -1 - YES - - 67239488 - 4196352 - - - - -2038284033 - 36 - - - 400 - 75 - - - is - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - - YES - - - - - - - matches - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - - - 3 - YES - YES - 2 - - - - - 256 - {{227, 4}, {160, 18}} - - - YES - - 343014976 - 4326400 - - - - YES - - - 6 - System - controlTextColor - - - - - - {{0, 26}, {609, 26}} - - - 1 - 1 - - - - - - - - 3 - {{37, 4}, {79, 19}} - {{122, 4}, {99, 19}} - {{227, 4}, {160, 18}} - - - - - 1 - 0 - 0 - 0 - 700 - - - - - - NO - YES - - - - - - - - - - - - 3 - {{37, 4}, {79, 19}} - {{122, 4}, {99, 19}} - {{227, 4}, {160, 18}} - - - 0 - 0 - YES - - - - 290 - - - - 257 - {{581, 4}, {18, 18}} - - - -1 - YES - - 67239424 - 134348800 - + - - - - add - - - - - _addOption: - - -2038284033 - 36 - - - 400 - 75 - - - - - 257 - {{561, 4}, {18, 18}} - - - -1 - YES - - 67239424 - 134348800 - - - - - - remove - - - - - _deleteOption: - - -2038284033 - 36 - - - 400 - 75 - - - - - 256 - {{37, 4}, {74, 19}} - - - -1 - YES - - 67239488 - 4196352 - - - 3 - valueForKey: - - - - 10 - number - - - - - -2038284033 - 36 - - - 400 - 75 - - - number - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - - YES - - - - - - - mixed - - 1048576 - 2147483647 - - - _popUpItemAction: - - 3 - valueForKey: - - - - 10 - mixed - + + + + + + + string + + + + + mixed + + + + + + + + + + + + + + + + + + + + number + + + mixed + - - - - - - 3 - YES - YES - 2 - - - - - 256 - {{117, 4}, {82, 19}} - - - -1 - YES - - 67239488 - 4196352 - - - - -2038284033 - 36 - - - 400 - 75 - - - is greater than - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - - YES - - - - - - - 3 - YES - YES - 2 - - - - - 256 - {{205, 4}, {25, 18}} - - - YES - - 343014976 - 4326400 - - - - YES - - - - - - {{0, 52}, {609, 26}} - - - 2 - 1 - - - - - - - - 3 - {{37, 4}, {74, 19}} - {{117, 4}, {82, 19}} - {{205, 4}, {25, 18}} - - - - - 1 - 0 - 0 - 0 - 300 - - - - - - NO - YES - - - - - - - - - - - - 3 - {{37, 4}, {74, 19}} - {{117, 4}, {82, 19}} - {{205, 4}, {25, 18}} - - - 0 - 0 - YES - - - {609, 162} - - - - - - NSRuleEditorItemPBoardType - - {609, 162} - - - YES - 75 - 26 - format.strings - YES - NO - YES - 3 - rowType - subrows - criteria - displayValues - boundArray - NSMutableDictionary - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{1, 1}, {609, 162}} - - - - - 3 - MC45MTAwMDAwMjYyAA - - 4 - - - - -2147483392 - {{336, 1}, {15, 84}} - - - - _doScroller: - 0.97701150178909302 - - - - -2147483392 - {{-100, -100}, {360, 15}} - - - 1 - - _doScroller: - - - {{20, 296}, {611, 164}} - - - 133650 - - - - - - - 9 - - - - 274 - - - - 268 - {{9, 11}, {25, 25}} - - - YES - - -2080244224 - 134217728 - + - - - -2038152961 - 134 - - - 400 - 75 - - - - - 268 - - - - 2304 - - - - 256 - {216, 95} - - - YES - - - -2147483392 - {{224, 0}, {16, 17}} - - - - 213 - 40 - 1000 - - 75628096 - 2048 - - - - 3 - MC4zMzMzMzI5ODU2AA - - - 6 - System - headerTextColor - - - - - 337772096 - 2048 - Text Cell - - - - 6 - System - controlBackgroundColor - - 3 - MC42NjY2NjY2NjY3AA - - - - - 3 - YES - YES - - - - 3 - 2 - - - 6 - System - gridColor - - 3 - MC41AA - - - 17 - -692060160 - - - 4 - 15 - 0 - YES - 0 - 1 - - - {{1, 1}, {216, 95}} - - - - - 4 - - - - -2147483392 - {{224, 17}, {15, 102}} - - - - _doScroller: - 0.9925373134328358 - - - - -2147483392 - {{1, 119}, {223, 15}} - - - 1 - - _doScroller: - 0.99539170506912444 - - - {{9, 311}, {218, 97}} - - - 133682 - - - - QSAAAEEgAABBmAAAQZgAAA - - - - 268 - {{144, 219}, {84, 18}} - - - 9 - YES - - 67239424 - 0 - Ends With - - - 1211912703 - 2 - - NSImage - NSSwitch - - - NSSwitch - - - - 200 - 25 - - - - - 268 - {{6, 145}, {223, 26}} - - - YES - - -2076049856 - 2048 - - - 109199615 - 129 - - - 400 - 75 - - - Strings - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - YES - - OtherViews - - - - - Numbers - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Constant Values - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - - 1 - YES - YES - 2 - - - - - 268 - {{14, 219}, {96, 18}} - - - 8 - YES - - 67239424 - 0 - Begins With - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{72, 245}, {33, 18}} - - - 5 - YES - - 67239424 - 0 - ≠ - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{127, 245}, {33, 18}} - - - 2 - YES - - 67239424 - 0 - > - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{144, 193}, {78, 18}} - - - 99 - YES - - 67239424 - 0 - Contains - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{14, 245}, {33, 18}} - - - 4 - YES - - 67239424 - 0 - = - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{7, 416}, {142, 17}} - - - YES - - 68288064 - 272630784 - Key Paths: - - - - 6 - System - controlColor - - - - - - - - 268 - - - - 2304 - - - - 256 - {216, 95} - - - YES - - - -2147483392 - {{224, 0}, {16, 17}} - - - - 213 - 40 - 1000 - - 75628096 - 2048 - - - - 3 - MC4zMzMzMzI5ODU2AA - - - - - 337772096 - 2048 - Text Cell - - - - - - 3 - YES - YES - - - - 3 - 2 - - - 17 - -692060160 - - - 4 - 15 - 0 - YES - 0 - 1 - - - {{1, 1}, {216, 95}} - - - - - 4 - - - - -2147483392 - {{224, 17}, {15, 102}} - - - - _doScroller: - 0.9925373134328358 - - - - -2147483392 - {{1, 119}, {223, 15}} - - - 1 - - _doScroller: - 0.99539170506912444 - - - {{9, 39}, {218, 97}} - - - 133682 - - - - QSAAAEEgAABBmAAAQZgAAA - - - - 268 - {{10, 283}, {25, 25}} - - - YES - - -2080244224 - 134217728 - + - - - -2038152961 - 134 - - - 400 - 75 - - - - - 268 - {{14, 193}, {96, 18}} - - - 6 - YES - - 67239424 - 0 - Matches - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{189, 245}, {33, 18}} - - - YES - - 67239424 - 0 - < - - - 1211912703 - 2 - - - - - 200 - 25 - - - - {{1, 1}, {240, 438}} - - - - - {{701, 60}, {242, 440}} - - - {0, 0} - - 67239424 - 0 - Box - - - - 3 - MCAwLjgwMDAwMDAxMTkAA - - - - 1 - 4 - 0 - NO - - 1 - MC44OTExMjkwMzIzIDAuODkwMTM0MTM1OSAwLjg4OTk0NTgwNTEAA - - - - - 265 - {{837, 20}, {103, 25}} - - YES - - -1543373312 - 134217728 - Add Template - - - -2038152961 - 134 - - - 400 - 75 - - - - {960, 534} - - - - {{0, 0}, {1680, 1028}} - {1.7976931348623157e+308, 1.7976931348623157e+308} - YES - - - AppController - - - - predicate - - YES - YES - - - - - - - - performMiniaturize: - - - - 37 - - - - arrangeInFront: - - - - 39 - - - - print: - - - - 86 - - - - runPageLayout: - - - - 87 - - - - clearRecentDocuments: - - - - 127 - - - - orderFrontStandardAboutPanel: - - - - 142 - - - - performClose: - - - - 193 - - - - toggleContinuousSpellChecking: - - - - 222 - - - - undo: - - - - 223 - - - - copy: - - - - 224 - - - - checkSpelling: - - - - 225 - - - - paste: - - - - 226 - - - - stopSpeaking: - - - - 227 - - - - cut: - - - - 228 - - - - showGuessPanel: - - - - 230 - - - - redo: - - - - 231 - - - - selectAll: - - - - 232 - - - - startSpeaking: - - - - 233 - - - - delete: - - - - 235 - - - - performZoom: - - - - 240 - - - - performFindPanelAction: - - - - 241 - - - - centerSelectionInVisibleArea: - - - - 245 - - - - toggleGrammarChecking: - - - - 347 - - - - toggleSmartInsertDelete: - - - - 355 - - - - toggleAutomaticQuoteSubstitution: - - - - 356 - - - - toggleAutomaticLinkDetection: - - - - 357 - - - - showHelp: - - - - 360 - - - - saveDocument: - - - - 362 - - - - saveDocumentAs: - - - - 363 - - - - revertDocumentToSaved: - - - - 364 - - - - runToolbarCustomizationPalette: - - - - 365 - - - - toggleToolbarShown: - - - - 366 - - - - hide: - - - - 367 - - - - hideOtherApplications: - - - - 368 - - - - unhideAllApplications: - - - - 370 - - - - newDocument: - - - - 373 - - - - openDocument: - - - - 374 - - - - raiseBaseline: - - - - 426 - - - - lowerBaseline: - - - - 427 - - - - copyFont: - - - - 428 - - - - subscript: - - - - 429 - - - - superscript: - - - - 430 - - - - tightenKerning: - - - - 431 - - - - underline: - - - - 432 - - - - orderFrontColorPanel: - - - - 433 - - - - useAllLigatures: - - - - 434 - - - - loosenKerning: - - - - 435 - - - - pasteFont: - - - - 436 - - - - unscript: - - - - 437 - - - - useStandardKerning: - - - - 438 - - - - useStandardLigatures: - - - - 439 - - - - turnOffLigatures: - - - - 440 - - - - turnOffKerning: - - - - 441 - - - - alignLeft: - - - - 442 - - - - alignJustified: - - - - 443 - - - - copyRuler: - - - - 444 - - - - alignCenter: - - - - 445 - - - - toggleRuler: - - - - 446 - - - - alignRight: - - - - 447 - - - - pasteRuler: - - - - 448 - - - - terminate: - - - - 449 - - - - delegate - - - - 475 - - - - addRow: - - - - 1131 - - - - delegate - - - - 1133 - - - - predicateEditor - - - - 1136 - - - - window - - - - 1138 - - - - leftTable - - - - 1318 - - - - rightExpressionsType - - - - 1320 - - - - rightTable - - - - 1321 - - - - templateBox - - - - 1322 - - - - addLeftKeyPath: - - - - 1323 - - - - addRightConstant: - - - - 1324 - - - - selectRightAttributeType: - - - - 1327 - - - - updateOperators: - - - - 1329 - - - - updateOperators: - - - - 1330 - - - - updateOperators: - - - - 1331 - - - - updateOperators: - - - - 1332 - - - - updateOperators: - - - - 1333 - - - - updateOperators: - - - - 1334 - - - - updateOperators: - - - - 1335 - - - - updateOperators: - - - - 1336 - - - - dataSource - - - - 1337 - - - - delegate - - - - 1338 - - - - dataSource - - - - 1339 - - - - delegate - - - - 1340 - - - - addTemplate: - - - - 1344 - - - - addTemplate - - - - 1345 - - - - value: selection.predicate - - - - - - value: selection.predicate - value - selection.predicate - 2 - - - 1435 - - - - value: selection.predicate - - - - - - value: selection.predicate - value - selection.predicate - - - - PredicateTransformer - - 2 - - - 1439 - - - - - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 29 - - - - - - - - - - - - MainMenu - - - 19 - - - - - - - - 56 - - - - - - - - 103 - - - - - - 1 - - - 217 - - - - - - - - 83 - - - - - - - - 81 - - - - - - - - - - - - - - - - - - 75 - - - 3 - - - 80 - - - 8 - - - 78 - - - 6 - - - 72 - - - - - 82 - - - 9 - - - 124 - - - - - - - - 77 - - - 5 - - - 73 - - - 1 - - - 79 - - - 7 - - - 112 - - - 10 - - - 74 - - - 2 - - - 125 - - - - - - - - 126 - - - - - 205 - - - - - - - - - - - - - - - - - - - - 202 - - - - - 198 - - - - - 207 - - - - - 214 - - - - - 199 - - - - - 203 - - - - - 197 - - - - - 206 - - - - - 215 - - - - - 218 - - - - - - - - 216 - - - - - - - - 200 - - - - - - - - - - - 219 - - - - - 201 - - - - - 204 - - - - - 220 - - - - - - - - - - - - 213 - - - - - 210 - - - - - 221 - - - - - 208 - - - - - 209 - - - - - 106 - - - - - - 2 - - - 111 - - - - - 57 - - - - - - - - - - - - - - - - - - 58 - - - - - 134 - - - - - 150 - - - - - 136 - - - 1111 - - - 144 - - - - - 129 - - - 121 - - - 143 - - - - - 236 - - - - - 131 - - - - - - - - 149 - - - - - 145 - - - - - 130 - - - - - 24 - - - - - - - - - - - 92 - - - - - 5 - - - - - 239 - - - - - 23 - - - - - 295 - - - - - - - - 296 - - - - - - - - - 297 - - - - - 298 - - - - - 211 - - - - - - - - 212 - - - - - - - - - 195 - - - - - 196 - - - - - 346 - - - - - 348 - - - - - - - - 349 - - - - - - - - - - 350 - - - - - 351 - - - - - 354 - - - - - 371 - - - - - - - - 372 - - - - - - - - - - - - 375 - - - - - - - - 376 - - - - - - - - - 377 - - - - - - - - 378 - - - - - - - - 379 - - - - - - - - - - - - - - - 380 - - - - - 381 - - - - - 382 - - - - - 383 - - - - - 384 - - - - - 385 - - - - - 386 - - - - - 387 - - - - - 388 - - - - - - - - - - - - - - - - - - - - - - - 389 - - - - - 390 - - - - - 391 - - - - - 392 - - - - - 393 - - - - - 394 - - - - - 395 - - - - - 396 - - - - - 397 - - - - - - - - 398 - - - - - - - - 399 - - - - - - - - 400 - - - - - 401 - - - - - 402 - - - - - 403 - - - - - 404 - - - - - 405 - - - - - - - - - - - - 406 - - - - - 407 - - - - - 408 - - - - - 409 - - - - - 410 - - - - - 411 - - - - - - - - - - 412 - - - - - 413 - - - - - 414 - - - - - 415 - - - - - - - - - - - 416 - - - - - 417 - - - - - 418 - - - - - 419 - - - - - 471 - - - - - - - - 472 - - - - - 474 - - - AppController - - - 476 - - - - - - - - 477 - - - - - 1051 - - - - - - - - - - 1052 - - - - - 1053 - - - - - 1054 - - - - - - - - - - 1055 - - - - - - - - - 1056 - - - - - - - - - 1057 - - - - - - - - - 1058 - - - - - - - - - 1309 - - - - - - - - - - - - - - - - - - - - - 1280 - - - - - - - - 1281 - - - - - 1239 - - - - - - - - - - 1243 - - - - - - - - 1242 - - - - - 1240 - - - - - 1244 - - - - - - - - 1247 - - - - - 1256 - - - - - - - - 1257 - - - - - 1274 - - - - - - - - 1275 - - - - - - - - 1276 - - - - - - - - - - 1279 - - - - - 1278 - - - - - 1277 - - - - - 1254 - - - - - - - - 1255 - - - - - 1260 - - - - - - - - 1261 - - - - - 1252 - - - - - - - - 1253 - - - - - 1266 - - - - - - - - 1267 - - - - - 1262 - - - - - - - - 1263 - - - - - 1248 - - - - - - - - 1249 - - - - - 1268 - - - - - - - - - - 1271 - - - - - 1270 - - - - - 1269 - - - - - - - - 1272 - - - - - - - - 1273 - - - - - 1250 - - - - - - - - 1251 - - - - - 1264 - - - - - - - - 1265 - - - - - 1310 - - - - - - - - 1311 - - - - - 1342 - - - - - - - - 1343 - - - - - 1346 - - - - - 1347 - - - - - 1350 - - - - - - - - - 1351 - - - - - - - - - 1355 - - - - - - - - 1372 - - - - - 1377 - - - - - 1378 - - - - - 1381 - - - - - 1382 - - - - - 1414 - - - - - 1440 - - - - - - - - - 1441 - - - - - 1442 - - - - - 1443 - - - - - - - - 1444 - - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{0, 851}, {960, 534}} - com.apple.InterfaceBuilder.CocoaPlugin - {{0, 851}, {960, 534}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - - - 1444 - - - - - AppController - NSObject - - id - id - id - id - id - id - id - id - - - - addLeftKeyPath: - id - - - addRightConstant: - id - - - addTemplate: - id - - - displayPredicate: - id - - - newTemplate: - id - - - predicateEditorAction: - id - - - selectRightAttributeType: - id - - - updateOperators: - id - - - - NSButton - NSTableView - NSPredicateEditor - NSTextField - NSPopUpButton - NSTableView - NSBox - NSWindow - - - - addTemplate - NSButton - - - leftTable - NSTableView - - - predicateEditor - NSPredicateEditor - - - predicateField - NSTextField - - - rightExpressionsType - NSPopUpButton - - - rightTable - NSTableView - - - templateBox - NSBox - - - window - NSWindow - - - - IBProjectSource - ./Classes/AppController.h - - - - NSDocument - - id - id - id - id - id - id - - - - printDocument: - id - - - revertDocumentToSaved: - id - - - runPageLayout: - id - - - saveDocument: - id - - - saveDocumentAs: - id - - - saveDocumentTo: - id - - - - IBProjectSource - ./Classes/NSDocument.h - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - - 3 - - {11, 11} - {10, 3} - {15, 15} - - - + + + + + + + number + + + + + mixed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + predicate + + + + \ No newline at end of file diff --git a/Tests/Manual/CPScrollView/AppController.j b/Tests/Manual/CPScrollView/AppController.j index ca14df599..47f6ed117 100644 --- a/Tests/Manual/CPScrollView/AppController.j +++ b/Tests/Manual/CPScrollView/AppController.j @@ -59,6 +59,7 @@ var scrollView = [self makeScrollview]; [scrollView setFrameOrigin:CGPointMake(20,20)] + [[scrollView documentView] setBackgroundColor:[CPColor checkerBoardColor]]; [[scrollView documentView] addSubview:innerScrollView]; [[aWindow contentView] addSubview:scrollView]; diff --git a/Tests/Manual/CPScrollView2/AppController.j b/Tests/Manual/CPScrollView2/AppController.j index bd5ced4c7..86bca236d 100644 --- a/Tests/Manual/CPScrollView2/AppController.j +++ b/Tests/Manual/CPScrollView2/AppController.j @@ -31,6 +31,7 @@ [scrollView setDocumentView:contentView]; [contentView2 setAutoresizingMask:CPViewWidthSizable]; + [contentView2 setBackgroundColor:[CPColor checkerBoardColor]]; [scrollView2 setDocumentView:contentView2]; } diff --git a/Tests/Manual/CPTextField/AppController.j b/Tests/Manual/CPTextField/AppController.j index b803522df..52cbb591b 100644 --- a/Tests/Manual/CPTextField/AppController.j +++ b/Tests/Manual/CPTextField/AppController.j @@ -84,15 +84,15 @@ y = CGRectGetMaxY([textField frame]) + 6; } - label = [[CPTextField alloc] initWithFrame:CGRectMake(15, 420, 600, 30)]; + label = [[CPTextField alloc] initWithFrame:CGRectMake(15, 420, 600, 60)]; [label setLineBreakMode:CPLineBreakByWordWrapping]; - [label setStringValue:"This text field has been configured to show its text at a fixed location both with and without bezel."]; + [label setStringValue:"This text field has been configured to show its text at a fixed location both with and without bezel.\nThis text should also display the word \"Placeholder\" when its value is empty."]; [contentView addSubview:label]; bezelToggleField = [CPTextField textFieldWithStringValue:"" placeholder:"Placeholder" width:200], [bezelToggleField setEditable:YES]; - [bezelToggleField setFrameOrigin:CGPointMake(15, 445)]; + [bezelToggleField setFrameOrigin:CGPointMake(15, 475)]; console.log("" + bezelToggleField._themeAttributes['content-inset']._themeDefaultAttribute._values); console.log("" + bezelToggleField._themeAttributes['content-inset']._values); [bezelToggleField setValue:[bezelToggleField valueForThemeAttribute:@"content-inset" inState:CPThemeStateBezeled] forThemeAttribute:@"content-inset" inState:CPThemeStateNormal]; @@ -108,7 +108,7 @@ [bezelToggleButton setTarget:self]; [bezelToggleButton setState:CPOnState]; [bezelToggleButton sizeToFit]; - [bezelToggleButton setFrameOrigin:CGPointMake(CGRectGetMaxX([bezelToggleField frame]) + 15, 448)]; + [bezelToggleButton setFrameOrigin:CGPointMake(CGRectGetMaxX([bezelToggleField frame]) + 15, 478)]; [contentView addSubview:bezelToggleButton]; [theWindow orderFront:self]; diff --git a/Tests/Manual/CPTextFieldEditingStyleTest/AppController.j b/Tests/Manual/CPTextFieldEditingStyleTest/AppController.j new file mode 100644 index 000000000..1743b4913 --- /dev/null +++ b/Tests/Manual/CPTextFieldEditingStyleTest/AppController.j @@ -0,0 +1,41 @@ +/* + * AppController.j + * CPTextFieldEditingStyleTest + * + * Created by Alexandre Wilhelm on June 9, 2014. + */ + +@import +@import + + +@implementation AppController : CPObject +{ + @outlet CPWindow theWindow; + @outlet CPTextField textField; +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. +} + +- (void)awakeFromCib +{ + // This is called when the cib is done loading. + // You can implement this method on any object instantiated from a Cib. + // It's a useful hook for setting up current UI values, and other things. + + // In this case, we want the window from Cib to become our full browser window + [textField setPlaceholderString:@"I'm a nice placeholder"]; + [theWindow setFullPlatformWindow:YES]; +} + +- (IBAction)changeStyle:(id)sender +{ + [textField setTextColor:[CPColor redColor]]; + [textField setFont:[CPFont boldSystemFontOfSize:10]]; + [textField setAlignment:CPRightTextAlignment]; +} + +@end diff --git a/Tests/Manual/CPTextFieldEditingStyleTest/Info.plist b/Tests/Manual/CPTextFieldEditingStyleTest/Info.plist new file mode 100644 index 000000000..50be19c28 --- /dev/null +++ b/Tests/Manual/CPTextFieldEditingStyleTest/Info.plist @@ -0,0 +1,14 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + CPTextFieldEditingStyleTest + CPBundleVersion + 1.0 + CPHumanReadableCopyright + Copyright © 2014, Your Company All rights reserved. + + diff --git a/Tests/Manual/CPTextFieldEditingStyleTest/Jakefile b/Tests/Manual/CPTextFieldEditingStyleTest/Jakefile new file mode 100644 index 000000000..8d30e7c27 --- /dev/null +++ b/Tests/Manual/CPTextFieldEditingStyleTest/Jakefile @@ -0,0 +1,183 @@ +/* + * Jakefile + * CPTextFieldEditingStyleTest + * + * Created by Alexandre Wilhelm on June 9, 2014. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"), + projectName = "CPTextFieldEditingStyleTest"; + +app (projectName, function(task) +{ + ENV["OBJJ_INCLUDE_PATHS"] = "Frameworks"; + + if (configuration === "Debug") + ENV["OBJJ_INCLUDE_PATHS"] = FILE.join(ENV["OBJJ_INCLUDE_PATHS"], configuration); + + task.setBuildIntermediatesPath(FILE.join("Build", "CPTextFieldEditingStyleTest.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("CPTextFieldEditingStyleTest"); + task.setIdentifier("com.yourcompany.CPTextFieldEditingStyleTest"); + task.setVersion("1.0"); + task.setAuthor("Your Company"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("CPTextFieldEditingStyleTest"); + task.setSources(new FileList("**/*.j").exclude(FILE.join("Build", "**")).exclude(FILE.join("Frameworks", "Source", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", [projectName], function() +{ + printResults(configuration); +}); + +task ("build", ["default"], function() +{ + updateApplicationSize(); +}); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", projectName, "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", projectName, "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", projectName)); + OS.system(["press", "-f", FILE.join("Build", "Release", projectName), FILE.join("Build", "Deployment", projectName)]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", projectName)); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", projectName), FILE.join("Build", "Desktop", projectName, "CPTextFieldEditingStyleTest.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", projectName, "CPTextFieldEditingStyleTest.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, projectName)); + print("----------------------------"); +} + +function updateApplicationSize() +{ + print("Calculating application file sizes..."); + + var contents = FILE.read(FILE.join("Build", ENV["CONFIGURATION"], projectName, "Info.plist"), { charset:"UTF-8" }), + format = CFPropertyList.sniffedFormatOfString(contents), + plist = CFPropertyList.propertyListFromString(contents), + totalBytes = {executable:0, data:0, mhtml:0}; + + // Get the size of all framework executables and sprite data + var frameworksDir = "Frameworks"; + + if (ENV["CONFIGURATION"] === "Debug") + frameworksDir = FILE.join(frameworksDir, "Debug"); + + var frameworks = FILE.list(frameworksDir); + + frameworks.forEach(function(framework) + { + if (framework !== "Source") + addBundleFileSizes(FILE.join(frameworksDir, framework), totalBytes); + }); + + // Read in the default theme name, and attempt to get its size + var themeName = plist.valueForKey("CPDefaultTheme") || "Aristo2", + themePath = nil; + + if (themeName === "Aristo" || themeName === "Aristo2") + themePath = FILE.join(frameworksDir, "AppKit", "Resources", themeName + ".blend"); + else + themePath = FILE.join("Frameworks", "Resources", themeName + ".blend"); + + if (FILE.isDirectory(themePath)) + addBundleFileSizes(themePath, totalBytes); + + // Add sizes for the app + addBundleFileSizes(FILE.join("Build", ENV["CONFIGURATION"], projectName), totalBytes); + + print("Executables: " + totalBytes.executable + ", sprite data: " + totalBytes.data + ", total: " + (totalBytes.executable + totalBytes.data)); + + var dict = new CFMutableDictionary(); + + dict.setValueForKey("executable", totalBytes.executable); + dict.setValueForKey("data", totalBytes.data); + dict.setValueForKey("mhtml", totalBytes.mhtml); + + plist.setValueForKey("CPApplicationSize", dict); + + FILE.write(FILE.join("Build", ENV["CONFIGURATION"], projectName, "Info.plist"), CFPropertyList.stringFromPropertyList(plist, format), { charset:"UTF-8" }); +} + +function addBundleFileSizes(bundlePath, totalBytes) +{ + var bundleName = FILE.basename(bundlePath), + environment = bundleName === "Foundation" ? "Objj" : "Browser", + bundlePath = FILE.join(bundlePath, environment + ".environment"); + + if (FILE.isDirectory(bundlePath)) + { + var filename = bundleName + ".sj", + filePath = new FILE.Path(FILE.join(bundlePath, filename)); + + if (filePath.exists()) + totalBytes.executable += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "dataURLs.txt")); + + if (filePath.exists()) + totalBytes.data += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLData.txt")); + + if (filePath.exists()) + totalBytes.mhtml += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLPaths.txt")); + + if (filePath.exists()) + totalBytes.mhtml += filePath.size(); + } +} diff --git a/Tests/Manual/CPTextFieldEditingStyleTest/Resources/MainMenu.cib b/Tests/Manual/CPTextFieldEditingStyleTest/Resources/MainMenu.cib new file mode 100644 index 000000000..16496ff10 --- /dev/null +++ b/Tests/Manual/CPTextFieldEditingStyleTest/Resources/MainMenu.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;130E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;2;11E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;131E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;132E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;130E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;133E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;130E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;129E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;134E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;130E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;123E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;135E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;118E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;136E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;115E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;137E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;67E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;139E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;72E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;140E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;141E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;74E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;142E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;66E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;143E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;121E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;144E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;75E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;145E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;70E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;146E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;53E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;147E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;108E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;148E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;107E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;149E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;82E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;150E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;85E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;151E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;97E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;153E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;84E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;154E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;83E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;155E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;96E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;78E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;157E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;89E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;158E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;93E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;159E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;79E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;98E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;161E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;116E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;162E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;111E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;164E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;99E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;165E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;102E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;166E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;103E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;167E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;104E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;168E;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;127E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;130E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;169E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;131E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;170E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;171E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;172E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;173E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;58E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;174E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;58E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;55E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;173E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;176E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;177E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;178E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;58E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;179E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;180E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;181E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;58E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;182E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;58E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;183E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;179E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;180E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;181E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;58E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;184E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;58E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;185E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;186E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;65E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;174E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;65E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;55E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;186E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;187E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;188E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;65E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;189E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;190E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;65E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;191E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;192E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;69E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;174E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;69E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;65E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;192E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;193E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;194E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;195E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;69E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;179E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;180E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;181E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;65E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;196E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;65E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;197E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;198E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;65E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;199E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;200E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;65E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;201E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;202E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;203E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;65E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;204E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;77E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;174E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;77E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;55E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;204E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;205E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;206E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;207E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;208E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;209E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;202E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;179E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;180E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;181E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;210E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;211E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;212E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;213E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;214E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;215E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;216E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;217E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;218E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;179E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;180E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;181E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;219E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;88E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;174E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;88E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;219E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;220E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;221E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;222E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;223E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;224E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;225E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;226E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;227E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;228E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;229E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;202E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;230E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;231E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;232E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;233E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;234E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;235E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;95E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;174E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;95E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;235E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;236E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;237E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;95E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;238E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;239E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;95E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;240E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;241E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;95E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;242E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;95E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;243E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;101E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;174E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;101E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;243E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;244E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;245E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;222E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;101E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;223E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;246E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;225E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;101E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;226E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;247E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;228E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;101E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;229E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;202E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;248E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;106E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;174E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;106E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;248E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;249E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;250E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;251E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;252E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;110E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;174E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;110E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;55E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;252E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;253E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;254E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;110E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;255E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;256E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;257E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;110E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;258E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;114E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;174E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;114E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;55E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;258E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;259E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;260E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;261E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;114E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;262E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;263E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;114E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;179E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;180E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;181E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;114E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;264E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;114E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;265E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;120E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;174E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;120E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;55E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;265E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;266E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;267E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;120E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;268E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;122E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;269E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;270E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;271E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;272E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;273E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;231E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;258E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;3;125E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;124E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;274E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;275E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;275E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;276E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;277E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;278E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;278E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;181E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;126E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;125E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;274E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;279E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;280E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;125E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;281E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;282E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;283E;K;11;$aalignmentD;K;6;CP$UIDd;3;225E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;274E;K;6;$afontD;K;6;CP$UIDd;3;285E;K;7;$aimageD;K;6;CP$UIDd;3;287E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;278E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;278E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;181E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;274E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;288E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;289E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;180E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;181E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;290E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;274E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;179E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;225E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;274E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;128E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;125E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;274E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;291E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;292E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;125E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;281E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;293E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;294E;K;11;$aalignmentD;K;6;CP$UIDd;3;288E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;225E;K;6;$afontD;K;6;CP$UIDd;3;285E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;278E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;278E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;181E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;179E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;180E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;288E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;179E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;179E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;179E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;296E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;225E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;288E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;297E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;123E;E;E;S;8;delegateS;9;textFieldS;9;theWindowS;15;arrangeInFront:S;19;performMiniaturize:S;29;orderFrontStandardAboutPanel:S;13;openDocument:S;13;performClose:S;13;saveDocument:S;15;saveDocumentAs:S;12;newDocument:S;9;showHelp:S;22;revertDocumentToSaved:S;21;clearRecentDocuments:S;10;terminate:S;13;stopSpeaking:S;14;startSpeaking:S;5;copy:S;10;selectAll:S;4;cut:S;14;checkSpelling:S;7;delete:S;6;paste:S;15;showGuessPanel:S;5;undo:S;23;performFindPanelAction:S;29;centerSelectionInVisibleArea:S;5;redo:S;30;toggleContinuousSpellChecking:S;12;performZoom:S;19;toggleToolbarShown:S;31;runToolbarCustomizationPalette:S;22;toggleGrammarChecking:S;24;toggleSmartInsertDelete:S;33;toggleAutomaticQuoteSubstitution:S;29;toggleAutomaticLinkDetection:S;12;changeStyle:S;9;AMainMenuS;11;_CPMainMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;119E;E;E;S;14;NewApplicationS;14;submenuAction:d;7;1048576S;18;_CPApplicationMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;E;E;S;20;About NewApplicationT;S;0;F;S;12;Preferences…S;1;,S;19;Quit NewApplicationS;1;qS;4;FileD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;E;E;S;3;NewS;1;nS;5;Open…S;1;oS;11;Open RecentS;22;_CPRecentDocumentsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;70E;E;E;S;10;Clear MenuS;5;CloseS;1;wS;4;SaveS;1;sS;8;Save As…S;1;Sd;7;1179648S;15;Revert to SavedS;4;EditD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;105E;E;E;S;4;UndoS;1;zS;4;RedoS;1;ZS;3;CutS;1;xS;4;CopyS;1;cS;5;PasteS;1;vS;6;DeleteS;10;Select AllS;1;aS;4;FindD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;E;E;S;5;Find…d;1;1S;1;fS;9;Find Nextd;1;2S;1;gS;13;Find Previousd;1;3S;1;GS;22;Use Selection for Findd;1;7S;1;eS;17;Jump to SelectionS;1;jS;20;Spelling and GrammarD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;E;E;S;14;Show Spelling…S;1;:S;14;Check SpellingS;1;;S;27;Check Spelling While TypingS;27;Check Grammar With SpellingS;13;SubstitutionsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;E;E;S;16;Smart Copy/PasteS;12;Smart QuotesS;11;Smart LinksS;6;SpeechD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;E;E;S;14;Start SpeakingS;13;Stop SpeakingS;4;ViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;E;E;S;12;Show ToolbarS;1;td;7;1572864S;18;Customize Toolbar…S;6;WindowS;14;_CPWindowsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;E;E;S;8;MinimizeS;1;mS;4;ZoomS;18;Bring All to FrontS;4;HelpD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;121E;E;E;S;19;NewApplication HelpS;1;?S;32;{10000000000000, 10000000000000}S;8;CPWindowd;10;1879048192S;24;{{335, 128}, {480, 360}}S;21;{{0, 0}, {1440, 878}}d;1;0S;20;{{0, 0}, {480, 360}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;129E;E;E;S;6;normalS;6;{1, 1}S;22;{{136, 24}, {208, 25}}S;19;{{0, 0}, {208, 25}}d;2;36S;6;buttonS;8;borderedD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;284E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;298E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;299E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;181E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;181E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;181E;E;D;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;286E;K;4;nameD;K;6;CP$UIDd;3;300E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;301E;K;5;valueD;K;6;CP$UIDd;3;302E;E;d;1;4S;29;Change style of the textFieldd;2;14S;22;{{132, 57}, {216, 29}}S;19;{{0, 0}, {216, 29}}S;9;textfieldS;28;bezeled+editable+placeholderD;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;295E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;303E;E;S;13;AppControllerS;17;.Lucida Grande UId;2;13S;5;imageS;11;highlightedD;K;6;$classD;K;6;CP$UIDd;3;284E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;298E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;299E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;181E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;181E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;181E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;222E;D;K;6;CP$UIDd;3;222E;D;K;6;CP$UIDd;3;222E;D;K;6;CP$UIDd;3;222E;E;E;E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPTextFieldEditingStyleTest/Resources/MainMenu.xib b/Tests/Manual/CPTextFieldEditingStyleTest/Resources/MainMenu.xib new file mode 100644 index 000000000..c0c4fce32 --- /dev/null +++ b/Tests/Manual/CPTextFieldEditingStyleTest/Resources/MainMenu.xib @@ -0,0 +1,319 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/Manual/CPTextFieldEditingStyleTest/index-debug.html b/Tests/Manual/CPTextFieldEditingStyleTest/index-debug.html new file mode 100644 index 000000000..d98a6aa5b --- /dev/null +++ b/Tests/Manual/CPTextFieldEditingStyleTest/index-debug.html @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + CPTextFieldEditingStyleTest + + + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ + diff --git a/Tests/Manual/CPTextFieldEditingStyleTest/index.html b/Tests/Manual/CPTextFieldEditingStyleTest/index.html new file mode 100644 index 000000000..61cb32972 --- /dev/null +++ b/Tests/Manual/CPTextFieldEditingStyleTest/index.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + CPTextFieldEditingStyleTest + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ + diff --git a/Tests/Manual/CPTextFieldEditingStyleTest/main.j b/Tests/Manual/CPTextFieldEditingStyleTest/main.j new file mode 100644 index 000000000..061b81ad6 --- /dev/null +++ b/Tests/Manual/CPTextFieldEditingStyleTest/main.j @@ -0,0 +1,17 @@ +/* + * AppController.j + * CPTextFieldEditingStyleTest + * + * Created by Alexandre Wilhelm on June 9, 2014. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tests/Manual/SmartFoldersDemo/ImageAndTextView.j b/Tests/Manual/SmartFoldersDemo/ImageAndTextView.j index 995c5926f..3746fcc09 100644 --- a/Tests/Manual/SmartFoldersDemo/ImageAndTextView.j +++ b/Tests/Manual/SmartFoldersDemo/ImageAndTextView.j @@ -44,7 +44,7 @@ [self setText:value]; } -- (void)setThemeState:(CPThemeState)state +- (void)setThemeState:(ThemeState)state { if (state === CPThemeStateSelectedDataView) { @@ -55,7 +55,7 @@ [super setThemeState:state]; } -- (void)unsetThemeState:(CPThemeState)state +- (void)unsetThemeState:(ThemeState)state { if (state === CPThemeStateSelectedDataView) { diff --git a/Tests/Manual/ThemeBrowser/AppController.j b/Tests/Manual/ThemeBrowser/AppController.j index f60e077d3..445b3bce4 100644 --- a/Tests/Manual/ThemeBrowser/AppController.j +++ b/Tests/Manual/ThemeBrowser/AppController.j @@ -113,7 +113,7 @@ var BrowserColumnTheme = 0, var value = [theme valueForAttributeWithName:[attribute name] inState:state forClass:className]; - [valueLabel setStringValue:[SCString stringWithTemplate:ValueLabelTemplate, [theme name], className, [attribute name], CPThemeStateName(state)]] + [valueLabel setStringValue:[SCString stringWithTemplate:ValueLabelTemplate, [theme name], className, [attribute name], String(state)]] [self showValueDescription:value]; } diff --git a/Tests/Manual/ThemeKitchenSink/AppController.j b/Tests/Manual/ThemeKitchenSink/AppController.j new file mode 100644 index 000000000..6252c96bb --- /dev/null +++ b/Tests/Manual/ThemeKitchenSink/AppController.j @@ -0,0 +1,40 @@ +/* + * AppController.j + * ThemeKitchenSink + * + * Created by Alexander Ljungberg on May 11, 2014. + * Copyright 2014, SlevenBits, Ltd. All rights reserved. + */ + +@import +@import + + +@implementation AppController : CPObject +{ + @outlet CPWindow window1; + @outlet CPWindow window2; + @outlet CPTableView tableView; + @outlet CPOutlineView outlineView; + @outlet CPTokenField tokenField; + @outlet CPArrayController arrayController1; +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. +} + +- (void)awakeFromCib +{ + // This is called when the cib is done loading. + // You can implement this method on any object instantiated from a Cib. + // It's a useful hook for setting up current UI values, and other things. + [arrayController1 setContent:@[ + @{'animal': 'cat', 'legs': 4}, + @{'animal': 'duck', 'legs': 2}, + @{'animal': 'centipede', 'legs': 100}, + ]]; +} + +@end diff --git a/Tests/Manual/ThemeKitchenSink/Info.plist b/Tests/Manual/ThemeKitchenSink/Info.plist new file mode 100644 index 000000000..50a05631c --- /dev/null +++ b/Tests/Manual/ThemeKitchenSink/Info.plist @@ -0,0 +1,16 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + ThemeKitchenSink + CPDefaultTheme + Aristo2 + CPBundleVersion + 1.0 + CPHumanReadableCopyright + Copyright © 2014, SlevenBits, Ltd. All rights reserved. + + diff --git a/Tests/Manual/ThemeKitchenSink/Jakefile b/Tests/Manual/ThemeKitchenSink/Jakefile new file mode 100644 index 000000000..3fde4dff5 --- /dev/null +++ b/Tests/Manual/ThemeKitchenSink/Jakefile @@ -0,0 +1,184 @@ +/* + * Jakefile + * ThemeKitchenSink + * + * Created by Alexander Ljungberg on May 11, 2014. + * Copyright 2014, SlevenBits, Ltd. All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"), + projectName = "ThemeKitchenSink"; + +app (projectName, function(task) +{ + ENV["OBJJ_INCLUDE_PATHS"] = "Frameworks"; + + if (configuration === "Debug") + ENV["OBJJ_INCLUDE_PATHS"] = FILE.join(ENV["OBJJ_INCLUDE_PATHS"], configuration); + + task.setBuildIntermediatesPath(FILE.join("Build", "ThemeKitchenSink.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("ThemeKitchenSink"); + task.setIdentifier("com.yourcompany.ThemeKitchenSink"); + task.setVersion("1.0"); + task.setAuthor("SlevenBits, Ltd."); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("ThemeKitchenSink"); + task.setSources(new FileList("**/*.j").exclude(FILE.join("Build", "**")).exclude(FILE.join("Frameworks", "Source", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", [projectName], function() +{ + printResults(configuration); +}); + +task ("build", ["default"], function() +{ + updateApplicationSize(); +}); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", projectName, "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", projectName, "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", projectName)); + OS.system(["press", "-f", FILE.join("Build", "Release", projectName), FILE.join("Build", "Deployment", projectName)]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", projectName)); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", projectName), FILE.join("Build", "Desktop", projectName, "ThemeKitchenSink.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", projectName, "ThemeKitchenSink.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, projectName)); + print("----------------------------"); +} + +function updateApplicationSize() +{ + print("Calculating application file sizes..."); + + var contents = FILE.read(FILE.join("Build", ENV["CONFIGURATION"], projectName, "Info.plist"), { charset:"UTF-8" }), + format = CFPropertyList.sniffedFormatOfString(contents), + plist = CFPropertyList.propertyListFromString(contents), + totalBytes = {executable:0, data:0, mhtml:0}; + + // Get the size of all framework executables and sprite data + var frameworksDir = "Frameworks"; + + if (ENV["CONFIGURATION"] === "Debug") + frameworksDir = FILE.join(frameworksDir, "Debug"); + + var frameworks = FILE.list(frameworksDir); + + frameworks.forEach(function(framework) + { + if (framework !== "Source") + addBundleFileSizes(FILE.join(frameworksDir, framework), totalBytes); + }); + + // Read in the default theme name, and attempt to get its size + var themeName = plist.valueForKey("CPDefaultTheme") || "Aristo2", + themePath = nil; + + if (themeName === "Aristo" || themeName === "Aristo2") + themePath = FILE.join(frameworksDir, "AppKit", "Resources", themeName + ".blend"); + else + themePath = FILE.join("Frameworks", "Resources", themeName + ".blend"); + + if (FILE.isDirectory(themePath)) + addBundleFileSizes(themePath, totalBytes); + + // Add sizes for the app + addBundleFileSizes(FILE.join("Build", ENV["CONFIGURATION"], projectName), totalBytes); + + print("Executables: " + totalBytes.executable + ", sprite data: " + totalBytes.data + ", total: " + (totalBytes.executable + totalBytes.data)); + + var dict = new CFMutableDictionary(); + + dict.setValueForKey("executable", totalBytes.executable); + dict.setValueForKey("data", totalBytes.data); + dict.setValueForKey("mhtml", totalBytes.mhtml); + + plist.setValueForKey("CPApplicationSize", dict); + + FILE.write(FILE.join("Build", ENV["CONFIGURATION"], projectName, "Info.plist"), CFPropertyList.stringFromPropertyList(plist, format), { charset:"UTF-8" }); +} + +function addBundleFileSizes(bundlePath, totalBytes) +{ + var bundleName = FILE.basename(bundlePath), + environment = bundleName === "Foundation" ? "Objj" : "Browser", + bundlePath = FILE.join(bundlePath, environment + ".environment"); + + if (FILE.isDirectory(bundlePath)) + { + var filename = bundleName + ".sj", + filePath = new FILE.Path(FILE.join(bundlePath, filename)); + + if (filePath.exists()) + totalBytes.executable += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "dataURLs.txt")); + + if (filePath.exists()) + totalBytes.data += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLData.txt")); + + if (filePath.exists()) + totalBytes.mhtml += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLPaths.txt")); + + if (filePath.exists()) + totalBytes.mhtml += filePath.size(); + } +} diff --git a/Tests/Manual/ThemeKitchenSink/Resources/MainMenu.cib b/Tests/Manual/ThemeKitchenSink/Resources/MainMenu.cib new file mode 100644 index 000000000..f5f08f607 --- /dev/null +++ b/Tests/Manual/ThemeKitchenSink/Resources/MainMenu.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;18E;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;203E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;207E;D;K;6;CP$UIDd;3;208E;D;K;6;CP$UIDd;3;209E;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;211E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;217E;D;K;6;CP$UIDd;3;219E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;3;223E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;224E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;226E;D;K;6;CP$UIDd;3;227E;D;K;6;CP$UIDd;3;229E;D;K;6;CP$UIDd;3;231E;D;K;6;CP$UIDd;3;232E;D;K;6;CP$UIDd;3;233E;D;K;6;CP$UIDd;3;235E;D;K;6;CP$UIDd;3;237E;D;K;6;CP$UIDd;3;238E;D;K;6;CP$UIDd;3;239E;D;K;6;CP$UIDd;3;240E;D;K;6;CP$UIDd;3;241E;D;K;6;CP$UIDd;3;242E;D;K;6;CP$UIDd;3;243E;D;K;6;CP$UIDd;3;244E;D;K;6;CP$UIDd;3;245E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;247E;D;K;6;CP$UIDd;3;248E;D;K;6;CP$UIDd;3;249E;D;K;6;CP$UIDd;3;250E;D;K;6;CP$UIDd;3;251E;D;K;6;CP$UIDd;3;252E;D;K;6;CP$UIDd;3;253E;D;K;6;CP$UIDd;3;254E;D;K;6;CP$UIDd;3;255E;D;K;6;CP$UIDd;3;256E;D;K;6;CP$UIDd;3;257E;D;K;6;CP$UIDd;3;259E;D;K;6;CP$UIDd;3;260E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;261E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;262E;D;K;6;CP$UIDd;3;263E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;266E;D;K;6;CP$UIDd;3;267E;D;K;6;CP$UIDd;3;268E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;267E;D;K;6;CP$UIDd;3;267E;D;K;6;CP$UIDd;3;267E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;268E;D;K;6;CP$UIDd;3;268E;D;K;6;CP$UIDd;3;268E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;203E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;209E;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;217E;D;K;6;CP$UIDd;3;219E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;3;223E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;3;224E;D;K;6;CP$UIDd;3;217E;D;K;6;CP$UIDd;3;217E;D;K;6;CP$UIDd;3;217E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;231E;D;K;6;CP$UIDd;3;232E;D;K;6;CP$UIDd;3;233E;D;K;6;CP$UIDd;3;235E;D;K;6;CP$UIDd;3;237E;D;K;6;CP$UIDd;3;238E;D;K;6;CP$UIDd;3;238E;D;K;6;CP$UIDd;3;237E;D;K;6;CP$UIDd;3;241E;D;K;6;CP$UIDd;3;235E;D;K;6;CP$UIDd;3;243E;D;K;6;CP$UIDd;3;244E;D;K;6;CP$UIDd;3;244E;D;K;6;CP$UIDd;3;244E;D;K;6;CP$UIDd;3;243E;D;K;6;CP$UIDd;3;248E;D;K;6;CP$UIDd;3;248E;D;K;6;CP$UIDd;3;248E;D;K;6;CP$UIDd;3;248E;D;K;6;CP$UIDd;3;248E;D;K;6;CP$UIDd;3;232E;D;K;6;CP$UIDd;3;232E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;256E;D;K;6;CP$UIDd;3;257E;D;K;6;CP$UIDd;3;259E;D;K;6;CP$UIDd;3;260E;D;K;6;CP$UIDd;3;259E;D;K;6;CP$UIDd;3;261E;D;K;6;CP$UIDd;3;256E;D;K;6;CP$UIDd;3;256E;D;K;6;CP$UIDd;3;256E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;192E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;269E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;270E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;211E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;271E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;132E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;140E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;211E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;266E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;211E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;259E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;274E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;211E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;221E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;211E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;132E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;276E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;211E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;145E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;277E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;211E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;132E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;278E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;211E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;212E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;279E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;180E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;185E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;272E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;127E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;280E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;124E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;281E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;282E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;76E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;283E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;284E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;82E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;285E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;83E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;286E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;75E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;287E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;130E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;288E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;84E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;289E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;79E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;290E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;72E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;62E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;291E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;117E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;292E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;116E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;293E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;91E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;294E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;94E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;295E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;90E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;106E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;297E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;93E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;92E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;299E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;105E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;300E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;87E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;301E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;98E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;302E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;102E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;303E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;88E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;304E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;107E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;305E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;125E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;306E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;120E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;307E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;121E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;308E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;108E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;309E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;111E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;310E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;311E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;113E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;312E;E;D;K;10;$classnameS;21;CPCibBindingConnectorK;8;$classesA;S;21;CPCibBindingConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;223E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;266E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;313E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;314E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;315E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;317E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;224E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;266E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;318E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;314E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;319E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;320E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;269E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;321E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;322E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;323E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;324E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;67E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;325E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;67E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;64E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;324E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;327E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;328E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;329E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;330E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;331E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;332E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;333E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;334E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;330E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;331E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;332E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;335E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;336E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;337E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;74E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;325E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;74E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;64E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;337E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;338E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;339E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;74E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;340E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;341E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;74E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;342E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;343E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;78E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;325E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;78E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;74E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;343E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;344E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;345E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;346E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;78E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;330E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;331E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;332E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;74E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;347E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;74E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;348E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;349E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;74E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;350E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;351E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;74E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;352E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;353E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;354E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;74E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;355E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;86E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;325E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;86E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;64E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;355E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;356E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;357E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;358E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;359E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;360E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;353E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;330E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;331E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;332E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;361E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;362E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;363E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;364E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;365E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;366E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;367E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;368E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;369E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;330E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;331E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;332E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;370E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;97E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;325E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;97E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;370E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;371E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;372E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;373E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;97E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;374E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;375E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;376E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;97E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;377E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;378E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;379E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;97E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;380E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;353E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;381E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;382E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;97E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;383E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;384E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;97E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;385E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;386E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;104E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;325E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;104E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;386E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;387E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;388E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;104E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;389E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;390E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;104E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;391E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;392E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;104E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;393E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;104E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;110E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;325E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;110E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;394E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;395E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;396E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;373E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;110E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;374E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;397E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;376E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;110E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;377E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;398E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;379E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;110E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;380E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;353E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;399E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;115E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;325E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;115E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;399E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;400E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;401E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;115E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;402E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;115E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;119E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;325E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;119E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;64E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;403E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;404E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;405E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;406E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;407E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;408E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;119E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;409E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;123E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;325E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;123E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;64E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;409E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;410E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;411E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;412E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;123E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;413E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;414E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;123E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;330E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;331E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;332E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;123E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;415E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;123E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;416E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;129E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;325E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;129E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;64E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;416E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;417E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;418E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;129E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;419E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;131E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;3;171E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;420E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;421E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;422E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;423E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;382E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;424E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;3;134E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;133E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;426E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;426E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;427E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;135E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;430E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;431E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;433E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;434E;K;11;$aalignmentD;K;6;CP$UIDd;3;376E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;7;$aimageD;K;6;CP$UIDd;3;438E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;440E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;331E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;441E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;425E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;135E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;442E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;443E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;433E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;444E;K;11;$aalignmentD;K;6;CP$UIDd;3;376E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;7;$aimageD;K;6;CP$UIDd;3;445E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;373E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;446E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;331E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;441E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;425E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;135E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;447E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;448E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;433E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;444E;K;11;$aalignmentD;K;6;CP$UIDd;3;376E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;449E;K;7;$aimageD;K;6;CP$UIDd;3;450E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;373E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;451E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;331E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;441E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;425E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;139E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;452E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;453E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;454E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;455E;K;11;$aalignmentD;K;6;CP$UIDd;3;439E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;376E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;330E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;331E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;330E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;457E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;376E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;439E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;458E;E;D;K;6;$classD;K;6;CP$UIDd;3;139E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;459E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;453E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;454E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;11;$aalignmentD;K;6;CP$UIDd;3;439E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;376E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;330E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;461E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;330E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;457E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;376E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;439E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;461E;E;D;K;10;$classnameS;13;CPSearchFieldK;8;$classesA;S;13;CPSearchFieldS;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;142E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;462E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;453E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;463E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;464E;K;11;$aalignmentD;K;6;CP$UIDd;3;439E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;376E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;331E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;330E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;332E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;457E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;376E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;439E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;465E;K;27;CPSendsWholeSearchStringKeyD;K;6;CP$UIDd;3;332E;K;33;CPSendsSearchStringImmediatelyKeyD;K;6;CP$UIDd;3;332E;K;19;CPMaximumRecentsKeyD;K;6;CP$UIDd;3;466E;E;D;K;10;$classnameS;12;CPTokenFieldK;8;$classesA;S;12;CPTokenFieldS;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;144E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;467E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;453E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;468E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;469E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;330E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;457E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;425E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;425E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;470E;K;37;CPTokenFieldTokenizingCharacterSetKeyD;K;6;CP$UIDd;1;0E;K;27;CPTokenFieldCompletionDelayD;K;6;CP$UIDd;1;0E;K;25;CPTokenFieldButtonTypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPComboBoxK;8;$classesA;S;10;CPComboBoxS;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;146E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;471E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;472E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;473E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;474E;K;11;$aalignmentD;K;6;CP$UIDd;3;439E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;376E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;330E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;331E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;330E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;457E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;376E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;439E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;475E;K;18;CPComboBoxItemsKeyD;K;6;CP$UIDd;3;476E;K;17;CPComboBoxListKeyD;K;6;CP$UIDd;1;0E;K;21;CPComboBoxDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPComboBoxDataSourceKeyD;K;6;CP$UIDd;1;0E;K;27;CPComboBoxUsesDataSourceKeyD;K;6;CP$UIDd;3;332E;K;22;CPComboBoxCompletesKeyD;K;6;CP$UIDd;3;332E;K;33;CPComboBoxNumberOfVisibleItemsKeyD;K;6;CP$UIDd;3;477E;K;32;CPComboBoxHasVerticalScrollerKeyD;K;6;CP$UIDd;3;330E;K;27;CPComboBoxButtonBorderedKeyD;K;6;CP$UIDd;3;330E;E;D;K;10;$classnameS;12;CPDatePickerK;8;$classesA;S;12;CPDatePickerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;148E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;478E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;479E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;480E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;481E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;482E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;484E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;13;CPIntervalKeyD;K;6;CP$UIDd;3;425E;K;19;CPDatePickerModeKeyD;K;6;CP$UIDd;3;425E;K;20;CPDatePickerStyleKeyD;K;6;CP$UIDd;3;425E;K;23;CPDatePickerElementsKeyD;K;6;CP$UIDd;3;485E;K;12;CPMinDateKeyD;K;6;CP$UIDd;3;486E;K;12;CPMaxDateKeyD;K;6;CP$UIDd;3;487E;K;14;CPDateValueKeyD;K;6;CP$UIDd;3;484E;K;13;CPTextFontKeyD;K;6;CP$UIDd;1;0E;K;11;CPLocaleKeyD;K;6;CP$UIDd;1;0E;K;20;CPBackgroundColorKeyD;K;6;CP$UIDd;3;480E;K;20;CPDrawsBackgroundKeyD;K;6;CP$UIDd;3;330E;K;13;CPBorderedKeyD;K;6;CP$UIDd;3;330E;E;D;K;10;$classnameS;10;CPCheckBoxK;8;$classesA;S;10;CPCheckBoxS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;150E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;488E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;489E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;490E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;491E;K;11;$aalignmentD;K;6;CP$UIDd;3;439E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;373E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;492E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;331E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;373E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;373E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;152E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;3;267E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;493E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;494E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;495E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;434E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;439E;K;6;$afontD;K;6;CP$UIDd;3;496E;K;7;$aimageD;K;6;CP$UIDd;3;497E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;331E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;498E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;425E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;499E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;153E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;373E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;267E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;501E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;153E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;267E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;502E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;153E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;267E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;10;$classnameS;18;CPSegmentedControlK;8;$classesA;S;18;CPSegmentedControlS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;157E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;503E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;504E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;505E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;11;$aalignmentD;K;6;CP$UIDd;3;376E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;29;CPSegmentedControlSegmentsKeyD;K;6;CP$UIDd;3;506E;K;29;CPSegmentedControlSelectedKeyD;K;6;CP$UIDd;3;373E;K;33;CPSegmentedControlSegmentStyleKeyD;K;6;CP$UIDd;3;373E;K;33;CPSegmentedControlTrackingModeKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;3;133E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;507E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;508E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;509E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;E;D;K;10;$classnameS;16;CPLevelIndicatorK;8;$classesA;S;16;CPLevelIndicatorS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;160E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;510E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;511E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;512E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;376E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;24;CPLevelIndicatorStyleKeyD;K;6;CP$UIDd;3;376E;K;27;CPLevelIndicatorMinValueKeyD;K;6;CP$UIDd;3;425E;K;27;CPLevelIndicatorMaxValueKeyD;K;6;CP$UIDd;3;439E;K;31;CPLevelIndicatorWarningValueKeyD;K;6;CP$UIDd;3;376E;K;32;CPLevelIndicatorCriticalValueKeyD;K;6;CP$UIDd;3;376E;K;35;CPLevelIndicatorTickMarkPositionKeyD;K;6;CP$UIDd;3;425E;K;36;CPLevelIndicatorNumberOfTickMarksKeyD;K;6;CP$UIDd;3;425E;K;41;CPLevelIndicatorNumberOfMajorTickMarksKeyD;K;6;CP$UIDd;1;0E;K;29;CPLevelIndicatorIsEditableKeyD;K;6;CP$UIDd;3;332E;E;D;K;10;$classnameS;8;CPSliderK;8;$classesA;S;8;CPSliderS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;162E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;513E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;514E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;515E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;516E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;19;CPSliderMinValueKeyD;K;6;CP$UIDd;3;425E;K;19;CPSliderMaxValueKeyD;K;6;CP$UIDd;3;517E;K;23;CPSliderAltIncrValueKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;3;162E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;518E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;519E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;515E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;520E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;516E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;19;CPSliderMinValueKeyD;K;6;CP$UIDd;3;425E;K;19;CPSliderMaxValueKeyD;K;6;CP$UIDd;3;517E;K;23;CPSliderAltIncrValueKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;3;162E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;521E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;522E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;515E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;523E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;516E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;19;CPSliderMinValueKeyD;K;6;CP$UIDd;3;425E;K;19;CPSliderMaxValueKeyD;K;6;CP$UIDd;3;517E;K;23;CPSliderAltIncrValueKeyD;K;6;CP$UIDd;3;425E;E;D;K;10;$classnameS;19;CPProgressIndicatorK;8;$classesA;S;19;CPProgressIndicatorS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;166E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;524E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;525E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;526E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;9;_minValueD;K;6;CP$UIDd;3;425E;K;9;_maxValueD;K;6;CP$UIDd;3;517E;K;12;_doubleValueD;K;6;CP$UIDd;3;425E;K;12;_controlSizeD;K;6;CP$UIDd;3;425E;K;14;_indeterminateD;K;6;CP$UIDd;3;330E;K;6;_styleD;K;6;CP$UIDd;3;425E;K;12;_isAnimatingD;K;6;CP$UIDd;1;0E;K;26;_isDisplayedWhenStoppedSetD;K;6;CP$UIDd;1;0E;K;23;_isDisplayedWhenStoppedD;K;6;CP$UIDd;3;330E;E;D;K;6;$classD;K;6;CP$UIDd;3;150E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;527E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;528E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;490E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;11;$aalignmentD;K;6;CP$UIDd;3;439E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;529E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;331E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;373E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;373E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;150E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;530E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;531E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;490E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;491E;K;11;$aalignmentD;K;6;CP$UIDd;3;439E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;373E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;532E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;331E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;330E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;373E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;373E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;9;CPToolbarK;8;$classesA;S;9;CPToolbarS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;170E;K;22;CPToolbarIdentifierKeyD;K;6;CP$UIDd;3;533E;K;23;CPToolbarDisplayModeKeyD;K;6;CP$UIDd;3;373E;K;34;CPToolbarShowsBaselineSeparatorKeyD;K;6;CP$UIDd;3;330E;K;35;CPToolbarAllowsUserCustomizationKeyD;K;6;CP$UIDd;3;330E;K;21;CPToolbarIsVisibleKeyD;K;6;CP$UIDd;3;330E;K;20;CPToolbarSizeModeKeyD;K;6;CP$UIDd;3;373E;K;27;CPToolbarIdentifiedItemsKeyD;K;6;CP$UIDd;3;535E;K;24;CPToolbarDefaultItemsKeyD;K;6;CP$UIDd;3;536E;K;24;CPToolbarAllowedItemsKeyD;K;6;CP$UIDd;3;537E;K;27;CPToolbarSelectableItemsKeyD;K;6;CP$UIDd;3;538E;K;20;CPToolbarDelegateKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPToolbarItemK;8;$classesA;S;13;CPToolbarItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;172E;K;30;CPToolbarItemItemIdentifierKeyD;K;6;CP$UIDd;3;539E;K;21;CPToolbarItemLabelKeyD;K;6;CP$UIDd;3;540E;K;28;CPToolbarItemPaletteLabelKeyD;K;6;CP$UIDd;3;540E;K;23;CPToolbarItemToolTipKeyD;K;6;CP$UIDd;3;541E;K;19;CPToolbarItemTagKeyD;K;6;CP$UIDd;3;542E;K;22;CPToolbarItemTargetKeyD;K;6;CP$UIDd;1;0E;K;22;CPToolbarItemActionKeyD;K;6;CP$UIDd;3;543E;K;23;CPToolbarItemEnabledKeyD;K;6;CP$UIDd;3;330E;K;21;CPToolbarItemImageKeyD;K;6;CP$UIDd;3;545E;K;30;CPToolbarItemAlternateImageKeyD;K;6;CP$UIDd;1;0E;K;20;CPToolbarItemViewKeyD;K;6;CP$UIDd;1;0E;K;23;CPToolbarItemMinSizeKeyD;K;6;CP$UIDd;3;546E;K;23;CPToolbarItemMaxSizeKeyD;K;6;CP$UIDd;3;546E;K;34;CPToolbarItemVisibilityPriorityKeyD;K;6;CP$UIDd;3;425E;K;29;CPToolbarItemAutovalidatesKeyD;K;6;CP$UIDd;3;330E;E;D;K;10;$classnameS;19;_CPToolbarSpaceItemK;8;$classesA;S;19;_CPToolbarSpaceItemS;13;CPToolbarItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;174E;E;D;K;10;$classnameS;27;_CPToolbarFlexibleSpaceItemK;8;$classesA;S;27;_CPToolbarFlexibleSpaceItemS;13;CPToolbarItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;3;172E;K;30;CPToolbarItemItemIdentifierKeyD;K;6;CP$UIDd;3;547E;K;21;CPToolbarItemLabelKeyD;K;6;CP$UIDd;3;548E;K;28;CPToolbarItemPaletteLabelKeyD;K;6;CP$UIDd;3;548E;K;23;CPToolbarItemToolTipKeyD;K;6;CP$UIDd;1;0E;K;19;CPToolbarItemTagKeyD;K;6;CP$UIDd;3;425E;K;22;CPToolbarItemTargetKeyD;K;6;CP$UIDd;1;0E;K;22;CPToolbarItemActionKeyD;K;6;CP$UIDd;1;0E;K;23;CPToolbarItemEnabledKeyD;K;6;CP$UIDd;3;330E;K;21;CPToolbarItemImageKeyD;K;6;CP$UIDd;1;0E;K;30;CPToolbarItemAlternateImageKeyD;K;6;CP$UIDd;1;0E;K;20;CPToolbarItemViewKeyD;K;6;CP$UIDd;3;179E;K;23;CPToolbarItemMinSizeKeyD;K;6;CP$UIDd;3;549E;K;23;CPToolbarItemMaxSizeKeyD;K;6;CP$UIDd;3;549E;K;34;CPToolbarItemVisibilityPriorityKeyD;K;6;CP$UIDd;3;425E;K;29;CPToolbarItemAutovalidatesKeyD;K;6;CP$UIDd;3;330E;E;D;K;6;$classD;K;6;CP$UIDd;3;142E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;550E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;551E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;498E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;463E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;464E;K;11;$aalignmentD;K;6;CP$UIDd;3;439E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;376E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;331E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;330E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;332E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;457E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;376E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;439E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;27;CPSendsWholeSearchStringKeyD;K;6;CP$UIDd;3;332E;K;33;CPSendsSearchStringImmediatelyKeyD;K;6;CP$UIDd;3;332E;K;19;CPMaximumRecentsKeyD;K;6;CP$UIDd;3;466E;E;D;K;6;$classD;K;6;CP$UIDd;3;131E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;3;205E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;420E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;421E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;422E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;423E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;382E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;552E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;3;181E;E;D;K;6;$classD;K;6;CP$UIDd;3;133E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;426E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;426E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;553E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;E;D;K;6;$classD;K;6;CP$UIDd;3;135E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;430E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;431E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;433E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;554E;K;11;$aalignmentD;K;6;CP$UIDd;3;376E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;7;$aimageD;K;6;CP$UIDd;3;555E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;440E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;331E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;441E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;425E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;135E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;442E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;443E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;433E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;556E;K;11;$aalignmentD;K;6;CP$UIDd;3;376E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;7;$aimageD;K;6;CP$UIDd;3;557E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;373E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;446E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;331E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;441E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;425E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;135E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;447E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;448E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;433E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;556E;K;11;$aalignmentD;K;6;CP$UIDd;3;376E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;449E;K;7;$aimageD;K;6;CP$UIDd;3;558E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;373E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;451E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;331E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;441E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;425E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;139E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;452E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;453E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;454E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;559E;K;11;$aalignmentD;K;6;CP$UIDd;3;439E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;376E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;330E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;331E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;330E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;457E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;376E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;439E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;458E;E;D;K;6;$classD;K;6;CP$UIDd;3;139E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;459E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;453E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;454E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;560E;K;11;$aalignmentD;K;6;CP$UIDd;3;439E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;376E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;330E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;461E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;330E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;457E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;376E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;439E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;461E;E;D;K;6;$classD;K;6;CP$UIDd;3;142E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;462E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;453E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;463E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;561E;K;11;$aalignmentD;K;6;CP$UIDd;3;439E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;376E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;331E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;330E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;332E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;457E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;376E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;439E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;465E;K;27;CPSendsWholeSearchStringKeyD;K;6;CP$UIDd;3;332E;K;33;CPSendsSearchStringImmediatelyKeyD;K;6;CP$UIDd;3;332E;K;19;CPMaximumRecentsKeyD;K;6;CP$UIDd;3;466E;E;D;K;6;$classD;K;6;CP$UIDd;3;144E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;467E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;453E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;468E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;560E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;562E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;330E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;457E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;425E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;425E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;470E;K;37;CPTokenFieldTokenizingCharacterSetKeyD;K;6;CP$UIDd;1;0E;K;27;CPTokenFieldCompletionDelayD;K;6;CP$UIDd;1;0E;K;25;CPTokenFieldButtonTypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;146E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;471E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;472E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;473E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;563E;K;11;$aalignmentD;K;6;CP$UIDd;3;439E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;376E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;330E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;331E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;330E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;457E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;376E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;439E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;475E;K;18;CPComboBoxItemsKeyD;K;6;CP$UIDd;3;564E;K;17;CPComboBoxListKeyD;K;6;CP$UIDd;1;0E;K;21;CPComboBoxDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPComboBoxDataSourceKeyD;K;6;CP$UIDd;1;0E;K;27;CPComboBoxUsesDataSourceKeyD;K;6;CP$UIDd;3;332E;K;22;CPComboBoxCompletesKeyD;K;6;CP$UIDd;3;332E;K;33;CPComboBoxNumberOfVisibleItemsKeyD;K;6;CP$UIDd;3;477E;K;32;CPComboBoxHasVerticalScrollerKeyD;K;6;CP$UIDd;3;330E;K;27;CPComboBoxButtonBorderedKeyD;K;6;CP$UIDd;3;330E;E;D;K;6;$classD;K;6;CP$UIDd;3;148E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;478E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;479E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;480E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;481E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;565E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;566E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;13;CPIntervalKeyD;K;6;CP$UIDd;3;425E;K;19;CPDatePickerModeKeyD;K;6;CP$UIDd;3;425E;K;20;CPDatePickerStyleKeyD;K;6;CP$UIDd;3;425E;K;23;CPDatePickerElementsKeyD;K;6;CP$UIDd;3;485E;K;12;CPMinDateKeyD;K;6;CP$UIDd;3;567E;K;12;CPMaxDateKeyD;K;6;CP$UIDd;3;568E;K;14;CPDateValueKeyD;K;6;CP$UIDd;3;566E;K;13;CPTextFontKeyD;K;6;CP$UIDd;1;0E;K;11;CPLocaleKeyD;K;6;CP$UIDd;1;0E;K;20;CPBackgroundColorKeyD;K;6;CP$UIDd;3;480E;K;20;CPDrawsBackgroundKeyD;K;6;CP$UIDd;3;330E;K;13;CPBorderedKeyD;K;6;CP$UIDd;3;330E;E;D;K;6;$classD;K;6;CP$UIDd;3;150E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;488E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;489E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;490E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;569E;K;11;$aalignmentD;K;6;CP$UIDd;3;439E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;373E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;492E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;331E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;373E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;373E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;152E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;3;268E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;493E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;494E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;495E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;554E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;439E;K;6;$afontD;K;6;CP$UIDd;3;496E;K;7;$aimageD;K;6;CP$UIDd;3;570E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;331E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;498E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;425E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;499E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;192E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;373E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;268E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;501E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;192E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;268E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;502E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;192E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;268E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;3;157E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;503E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;504E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;505E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;571E;K;11;$aalignmentD;K;6;CP$UIDd;3;376E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;29;CPSegmentedControlSegmentsKeyD;K;6;CP$UIDd;3;572E;K;29;CPSegmentedControlSelectedKeyD;K;6;CP$UIDd;3;373E;K;33;CPSegmentedControlSegmentStyleKeyD;K;6;CP$UIDd;3;373E;K;33;CPSegmentedControlTrackingModeKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;3;133E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;507E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;508E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;573E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;E;D;K;6;$classD;K;6;CP$UIDd;3;160E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;510E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;511E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;512E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;571E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;376E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;24;CPLevelIndicatorStyleKeyD;K;6;CP$UIDd;3;376E;K;27;CPLevelIndicatorMinValueKeyD;K;6;CP$UIDd;3;425E;K;27;CPLevelIndicatorMaxValueKeyD;K;6;CP$UIDd;3;439E;K;31;CPLevelIndicatorWarningValueKeyD;K;6;CP$UIDd;3;376E;K;32;CPLevelIndicatorCriticalValueKeyD;K;6;CP$UIDd;3;376E;K;35;CPLevelIndicatorTickMarkPositionKeyD;K;6;CP$UIDd;3;425E;K;36;CPLevelIndicatorNumberOfTickMarksKeyD;K;6;CP$UIDd;3;425E;K;41;CPLevelIndicatorNumberOfMajorTickMarksKeyD;K;6;CP$UIDd;1;0E;K;29;CPLevelIndicatorIsEditableKeyD;K;6;CP$UIDd;3;332E;E;D;K;6;$classD;K;6;CP$UIDd;3;162E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;513E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;514E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;515E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;516E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;19;CPSliderMinValueKeyD;K;6;CP$UIDd;3;425E;K;19;CPSliderMaxValueKeyD;K;6;CP$UIDd;3;517E;K;23;CPSliderAltIncrValueKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;3;162E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;518E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;519E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;515E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;520E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;516E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;19;CPSliderMinValueKeyD;K;6;CP$UIDd;3;425E;K;19;CPSliderMaxValueKeyD;K;6;CP$UIDd;3;517E;K;23;CPSliderAltIncrValueKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;3;162E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;521E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;522E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;515E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;523E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;516E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;19;CPSliderMinValueKeyD;K;6;CP$UIDd;3;425E;K;19;CPSliderMaxValueKeyD;K;6;CP$UIDd;3;517E;K;23;CPSliderAltIncrValueKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;3;166E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;524E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;525E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;526E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;9;_minValueD;K;6;CP$UIDd;3;425E;K;9;_maxValueD;K;6;CP$UIDd;3;517E;K;12;_doubleValueD;K;6;CP$UIDd;3;425E;K;12;_controlSizeD;K;6;CP$UIDd;3;425E;K;14;_indeterminateD;K;6;CP$UIDd;3;330E;K;6;_styleD;K;6;CP$UIDd;3;425E;K;12;_isAnimatingD;K;6;CP$UIDd;1;0E;K;26;_isDisplayedWhenStoppedSetD;K;6;CP$UIDd;1;0E;K;23;_isDisplayedWhenStoppedD;K;6;CP$UIDd;3;330E;E;D;K;6;$classD;K;6;CP$UIDd;3;150E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;527E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;528E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;490E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;571E;K;11;$aalignmentD;K;6;CP$UIDd;3;439E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;529E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;331E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;373E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;373E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;150E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;530E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;531E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;432E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;490E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;569E;K;11;$aalignmentD;K;6;CP$UIDd;3;439E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;373E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;532E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;331E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;330E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;373E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;373E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;170E;K;22;CPToolbarIdentifierKeyD;K;6;CP$UIDd;3;533E;K;23;CPToolbarDisplayModeKeyD;K;6;CP$UIDd;3;373E;K;34;CPToolbarShowsBaselineSeparatorKeyD;K;6;CP$UIDd;3;330E;K;35;CPToolbarAllowsUserCustomizationKeyD;K;6;CP$UIDd;3;330E;K;21;CPToolbarIsVisibleKeyD;K;6;CP$UIDd;3;330E;K;20;CPToolbarSizeModeKeyD;K;6;CP$UIDd;3;373E;K;27;CPToolbarIdentifiedItemsKeyD;K;6;CP$UIDd;3;574E;K;24;CPToolbarDefaultItemsKeyD;K;6;CP$UIDd;3;575E;K;24;CPToolbarAllowedItemsKeyD;K;6;CP$UIDd;3;576E;K;27;CPToolbarSelectableItemsKeyD;K;6;CP$UIDd;3;577E;K;20;CPToolbarDelegateKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;172E;K;30;CPToolbarItemItemIdentifierKeyD;K;6;CP$UIDd;3;539E;K;21;CPToolbarItemLabelKeyD;K;6;CP$UIDd;3;540E;K;28;CPToolbarItemPaletteLabelKeyD;K;6;CP$UIDd;3;540E;K;23;CPToolbarItemToolTipKeyD;K;6;CP$UIDd;3;541E;K;19;CPToolbarItemTagKeyD;K;6;CP$UIDd;3;542E;K;22;CPToolbarItemTargetKeyD;K;6;CP$UIDd;1;0E;K;22;CPToolbarItemActionKeyD;K;6;CP$UIDd;3;543E;K;23;CPToolbarItemEnabledKeyD;K;6;CP$UIDd;3;330E;K;21;CPToolbarItemImageKeyD;K;6;CP$UIDd;3;545E;K;30;CPToolbarItemAlternateImageKeyD;K;6;CP$UIDd;1;0E;K;20;CPToolbarItemViewKeyD;K;6;CP$UIDd;1;0E;K;23;CPToolbarItemMinSizeKeyD;K;6;CP$UIDd;3;546E;K;23;CPToolbarItemMaxSizeKeyD;K;6;CP$UIDd;3;546E;K;34;CPToolbarItemVisibilityPriorityKeyD;K;6;CP$UIDd;3;425E;K;29;CPToolbarItemAutovalidatesKeyD;K;6;CP$UIDd;3;330E;E;D;K;6;$classD;K;6;CP$UIDd;3;174E;E;D;K;6;$classD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;3;172E;K;30;CPToolbarItemItemIdentifierKeyD;K;6;CP$UIDd;3;547E;K;21;CPToolbarItemLabelKeyD;K;6;CP$UIDd;3;548E;K;28;CPToolbarItemPaletteLabelKeyD;K;6;CP$UIDd;3;548E;K;23;CPToolbarItemToolTipKeyD;K;6;CP$UIDd;1;0E;K;19;CPToolbarItemTagKeyD;K;6;CP$UIDd;3;425E;K;22;CPToolbarItemTargetKeyD;K;6;CP$UIDd;1;0E;K;22;CPToolbarItemActionKeyD;K;6;CP$UIDd;1;0E;K;23;CPToolbarItemEnabledKeyD;K;6;CP$UIDd;3;330E;K;21;CPToolbarItemImageKeyD;K;6;CP$UIDd;1;0E;K;30;CPToolbarItemAlternateImageKeyD;K;6;CP$UIDd;1;0E;K;20;CPToolbarItemViewKeyD;K;6;CP$UIDd;3;210E;K;23;CPToolbarItemMinSizeKeyD;K;6;CP$UIDd;3;549E;K;23;CPToolbarItemMaxSizeKeyD;K;6;CP$UIDd;3;549E;K;34;CPToolbarItemVisibilityPriorityKeyD;K;6;CP$UIDd;3;425E;K;29;CPToolbarItemAutovalidatesKeyD;K;6;CP$UIDd;3;330E;E;D;K;6;$classD;K;6;CP$UIDd;3;142E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;550E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;551E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;498E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;463E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;464E;K;11;$aalignmentD;K;6;CP$UIDd;3;439E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;376E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;331E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;330E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;332E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;457E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;376E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;439E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;27;CPSendsWholeSearchStringKeyD;K;6;CP$UIDd;3;332E;K;33;CPSendsSearchStringImmediatelyKeyD;K;6;CP$UIDd;3;332E;K;19;CPMaximumRecentsKeyD;K;6;CP$UIDd;3;466E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;578E;E;D;K;6;$classD;K;6;CP$UIDd;3;131E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;579E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;420E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;580E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;581E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;423E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;582E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;409E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;3;213E;E;D;K;6;$classD;K;6;CP$UIDd;3;133E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;583E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;583E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;584E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;E;D;K;10;$classnameS;11;CPSplitViewK;8;$classesA;S;11;CPSplitViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;214E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;213E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;583E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;583E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;585E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;213E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;586E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;587E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;22;CPSplitViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;24;CPSplitViewIsVerticalKeyD;K;6;CP$UIDd;3;332E;K;28;CPSplitViewIsPaneSplitterKeyD;K;6;CP$UIDd;3;330E;K;26;CPSplitViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;216E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;215E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;588E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;589E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;590E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;215E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;591E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;592E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;219E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;3;593E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;3;227E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;3;226E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;594E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;594E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;594E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;594E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;330E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;330E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;330E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;595E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;376E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;3;425E;E;D;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;218E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;217E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;596E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;597E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;598E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;217E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;586E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;480E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;3;221E;E;D;K;10;$classnameS;11;CPTableViewK;8;$classesA;S;11;CPTableViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;220E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;219E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;597E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;597E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;219E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;457E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;599E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;12;$agrid-colorD;K;6;CP$UIDd;3;600E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;601E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;602E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;3;425E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;439E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;3;332E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;3;330E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;3;330E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;3;330E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;3;330E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;603E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;3;600E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;3;425E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;3;332E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;3;605E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;3;229E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPTableColumnK;8;$classesA;S;13;CPTableColumnS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;222E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;606E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;607E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;608E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;610E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;611E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;379E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;332E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;330E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;222E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;612E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;607E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;608E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;613E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;614E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;379E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;332E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;330E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;225E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;217E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;615E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;616E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;217E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;591E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;617E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;618E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;571E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;217E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;619E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;425E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;3;332E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;373E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;225E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;217E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;620E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;621E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;217E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;591E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;617E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;618E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;571E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;217E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;622E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;425E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;3;330E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;373E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;17;CPTableHeaderViewK;8;$classesA;S;17;CPTableHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;228E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;593E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;623E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;623E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;593E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;624E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;29;CPTableHeaderViewTableViewKeyD;K;6;CP$UIDd;3;221E;K;33;CPTableHeaderViewDrawsColumnLinesD;K;6;CP$UIDd;3;330E;E;D;K;10;$classnameS;16;_CPCibCustomViewK;8;$classesA;S;16;_CPCibCustomViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;230E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;215E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;625E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;626E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;627E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;215E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;591E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;628E;E;D;K;6;$classD;K;6;CP$UIDd;3;216E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;231E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;626E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;626E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;629E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;231E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;586E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;592E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;233E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;1;0E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;3;255E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;3;254E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;594E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;594E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;594E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;594E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;330E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;332E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;330E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;630E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;376E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;3;218E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;232E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;631E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;632E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;633E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;232E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;586E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;634E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;3;235E;E;D;K;10;$classnameS;17;CPPredicateEditorK;8;$classesA;S;17;CPPredicateEditorS;12;CPRuleEditorS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;234E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;233E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;632E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;632E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;635E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;233E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;636E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;637E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;20;CPRuleEditorEditableD;K;6;CP$UIDd;3;330E;K;35;CPRuleEditorAllowsEmptyCompoundRowsD;K;6;CP$UIDd;3;332E;K;25;CPRuleEditorDisallowEmptyD;K;6;CP$UIDd;3;332E;K;30;CPRuleEditorAlignmentGridWidthD;K;6;CP$UIDd;3;638E;K;23;CPRuleEditorSliceHeightD;K;6;CP$UIDd;3;601E;K;23;CPRuleEditorNestingModeD;K;6;CP$UIDd;3;376E;K;27;CPRuleEditorStringsFilenameD;K;6;CP$UIDd;1;0E;K;26;CPRuleEditorRowTypeKeyPathD;K;6;CP$UIDd;3;639E;K;24;CPRuleEditorItemsKeyPathD;K;6;CP$UIDd;3;640E;K;25;CPRuleEditorValuesKeyPathD;K;6;CP$UIDd;3;641E;K;29;CPRuleEditorBoundArrayKeyPathD;K;6;CP$UIDd;3;642E;K;31;CPRuleEditorSubrowsArrayKeyPathD;K;6;CP$UIDd;3;643E;K;24;CPRuleEditorSlicesHolderD;K;6;CP$UIDd;1;0E;K;18;CPRuleEditorSlicesD;K;6;CP$UIDd;3;644E;K;27;CPRuleEditorBoundArrayOwnerD;K;6;CP$UIDd;3;646E;K;20;CPPredicateTemplatesD;K;6;CP$UIDd;3;647E;E;D;K;10;$classnameS;28;CPPredicateEditorRowTemplateK;8;$classesA;S;28;CPPredicateEditorRowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;236E;K;23;CPPredicateTemplateTypeD;K;6;CP$UIDd;3;376E;K;26;CPPredicateTemplateOptionsD;K;6;CP$UIDd;3;425E;K;27;CPPredicateTemplateModifierD;K;6;CP$UIDd;3;425E;K;36;CPPredicateTemplateLeftAttributeTypeD;K;6;CP$UIDd;3;425E;K;37;CPPredicateTemplateRightAttributeTypeD;K;6;CP$UIDd;3;425E;K;33;CPPredicateTemplateLeftIsWildcardD;K;6;CP$UIDd;3;332E;K;34;CPPredicateTemplateRightIsWildcardD;K;6;CP$UIDd;3;332E;K;24;CPPredicateTemplateViewsD;K;6;CP$UIDd;3;648E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;331E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;649E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;650E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;373E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;238E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;376E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;651E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;238E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;373E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;331E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;652E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;653E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;373E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;241E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;3;236E;K;23;CPPredicateTemplateTypeD;K;6;CP$UIDd;3;373E;K;26;CPPredicateTemplateOptionsD;K;6;CP$UIDd;3;425E;K;27;CPPredicateTemplateModifierD;K;6;CP$UIDd;3;425E;K;36;CPPredicateTemplateLeftAttributeTypeD;K;6;CP$UIDd;3;425E;K;37;CPPredicateTemplateRightAttributeTypeD;K;6;CP$UIDd;3;654E;K;33;CPPredicateTemplateLeftIsWildcardD;K;6;CP$UIDd;3;332E;K;34;CPPredicateTemplateRightIsWildcardD;K;6;CP$UIDd;3;330E;K;24;CPPredicateTemplateViewsD;K;6;CP$UIDd;3;655E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;331E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;656E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;657E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;373E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;244E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;659E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;660E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;244E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;661E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;662E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;244E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;663E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;331E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;664E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;665E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;373E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;248E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;666E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;667E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;248E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;591E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;668E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;248E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;669E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;670E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;248E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;439E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;671E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;248E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;326E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;477E;E;D;K;6;$classD;K;6;CP$UIDd;3;225E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;232E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;672E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;673E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;232E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;591E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;617E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;618E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;571E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;232E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;619E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;425E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;3;332E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;373E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;225E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;232E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;674E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;675E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;232E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;591E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;618E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;571E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;232E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;622E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;425E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;3;330E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;373E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;216E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;215E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;676E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;676E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;677E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;215E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;591E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;592E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;257E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;3;678E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;3;263E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;3;262E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;594E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;594E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;594E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;594E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;330E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;330E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;330E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;679E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;376E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;3;218E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;256E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;680E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;681E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;682E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;256E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;586E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;480E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;3;259E;E;D;K;10;$classnameS;13;CPOutlineViewK;8;$classesA;S;13;CPOutlineViewS;11;CPTableViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;258E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;257E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;681E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;681E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;257E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;457E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;599E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;12;$agrid-colorD;K;6;CP$UIDd;3;600E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;601E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;602E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;3;425E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;439E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;3;332E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;3;330E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;3;330E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;3;330E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;3;332E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;683E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;3;600E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;3;425E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;3;332E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;3;684E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;3;264E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;K;34;CPOutlineViewOutlineTableColumnKeyD;K;6;CP$UIDd;3;260E;K;35;CPOutlineViewIndentationPerLevelKeyD;K;6;CP$UIDd;3;685E;K;26;CPOutlineViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;24;CPOutlineViewDelegateKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;222E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;686E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;685E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;608E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;687E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;688E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;379E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;332E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;330E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;222E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;689E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;607E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;608E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;690E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;691E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;379E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;332E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;330E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;225E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;256E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;692E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;616E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;256E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;591E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;617E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;618E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;571E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;256E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;619E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;425E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;3;332E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;373E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;225E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;256E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;693E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;621E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;256E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;591E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;617E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;618E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;571E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;256E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;622E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;425E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;3;330E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;373E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;228E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;678E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;623E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;623E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;678E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;624E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;29;CPTableHeaderViewTableViewKeyD;K;6;CP$UIDd;3;259E;K;33;CPTableHeaderViewDrawsColumnLinesD;K;6;CP$UIDd;3;330E;E;D;K;10;$classnameS;17;CPArrayControllerK;8;$classesA;S;17;CPArrayControllerS;18;CPObjectControllerS;12;CPControllerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;265E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;3;694E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;3;330E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;3;332E;K;37;CPArrayControllerAvoidsEmptySelectionD;K;6;CP$UIDd;3;330E;K;49;CPArrayControllerClearsFilterPredicateOnInsertionD;K;6;CP$UIDd;3;330E;K;41;CPArrayControllerFilterRestrictsInsertionD;K;6;CP$UIDd;3;330E;K;35;CPArrayControllerPreservesSelectionD;K;6;CP$UIDd;3;330E;K;39;CPArrayControllerSelectsInsertedObjectsD;K;6;CP$UIDd;3;330E;K;47;CPArrayControllerAlwaysUsesMultipleValuesMarkerD;K;6;CP$UIDd;3;332E;K;47;CPArrayControllerAutomaticallyRearrangesObjectsD;K;6;CP$UIDd;3;332E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;695E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;696E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;695E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;697E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;180E;E;E;S;8;delegateS;21;initialFirstResponderS;16;arrayController1S;11;outlineViewS;9;tableViewS;9;theWindowS;10;tokenFieldS;7;window1S;7;window2S;15;arrangeInFront:S;19;performMiniaturize:S;29;orderFrontStandardAboutPanel:S;13;openDocument:S;13;performClose:S;13;saveDocument:S;15;saveDocumentAs:S;12;newDocument:S;9;showHelp:S;22;revertDocumentToSaved:S;21;clearRecentDocuments:S;10;terminate:S;13;stopSpeaking:S;14;startSpeaking:S;5;copy:S;10;selectAll:S;4;cut:S;14;checkSpelling:S;7;delete:S;6;paste:S;15;showGuessPanel:S;5;undo:S;23;performFindPanelAction:S;29;centerSelectionInVisibleArea:S;5;redo:S;30;toggleContinuousSpellChecking:S;12;performZoom:S;19;toggleToolbarShown:S;31;runToolbarCustomizationPalette:S;22;toggleGrammarChecking:S;24;toggleSmartInsertDelete:S;33;toggleAutomaticQuoteSubstitution:S;29;toggleAutomaticLinkDetection:S;29;value: arrangedObjects.animalS;5;valueS;22;arrangedObjects.animalD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;316E;K;10;CP.objectsD;E;E;S;27;value: arrangedObjects.legsS;20;arrangedObjects.legsD;K;6;$classD;K;6;CP$UIDd;3;316E;K;10;CP.objectsD;E;E;S;9;AMainMenuS;11;_CPMainMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;128E;E;E;S;14;NewApplicationS;14;submenuAction:d;7;1048576S;18;_CPApplicationMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;E;E;S;20;About NewApplicationT;S;0;F;S;12;Preferences…S;1;,S;19;Quit NewApplicationS;1;qS;4;FileD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;E;E;S;3;NewS;1;nS;5;Open…S;1;oS;11;Open RecentS;22;_CPRecentDocumentsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;79E;E;E;S;10;Clear MenuS;5;CloseS;1;wS;4;SaveS;1;sS;8;Save As…S;1;Sd;7;1179648S;15;Revert to SavedS;4;EditD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;114E;E;E;S;4;UndoS;1;zS;4;RedoS;1;ZS;3;CutS;1;xS;4;CopyS;1;cS;5;PasteS;1;vS;6;DeleteS;10;Select AllS;1;aS;4;FindD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;E;E;S;5;Find…d;1;1S;1;fS;9;Find Nextd;1;2S;1;gS;13;Find Previousd;1;3S;1;GS;22;Use Selection for Findd;1;7S;1;eS;17;Jump to SelectionS;1;jS;20;Spelling and GrammarD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;E;E;S;14;Show Spelling…S;1;:S;14;Check SpellingS;1;;S;27;Check Spelling While TypingS;27;Check Grammar With SpellingS;13;SubstitutionsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;E;E;S;16;Smart Copy/PasteS;12;Smart QuotesS;11;Smart LinksS;6;SpeechD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;E;E;S;14;Start SpeakingS;13;Stop SpeakingS;4;ViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;E;E;S;12;Show ToolbarS;1;td;7;1572864S;18;Customize Toolbar…S;6;WindowS;14;_CPWindowsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;E;E;S;8;MinimizeS;1;mS;4;ZoomS;18;Bring All to FrontS;4;HelpD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;130E;E;E;S;19;NewApplication HelpS;1;?S;8;CPWindowd;10;1879048192S;24;{{335, 649}, {393, 379}}S;22;{{0, 0}, {2560, 1418}}S;18;Theme Kitchen Sinkd;1;0S;20;{{0, 0}, {393, 379}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;E;E;S;6;normalS;6;{1, 1}S;21;{{53, 17}, {103, 25}}S;19;{{0, 0}, {103, 25}}d;2;36S;6;buttonS;8;borderedD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;435E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;698E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;699E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;332E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;332E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;332E;E;D;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;437E;K;4;nameD;K;6;CP$UIDd;3;700E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;701E;K;5;valueD;K;6;CP$UIDd;3;702E;E;d;1;4S;11;Push Buttond;2;14S;21;{{49, 58}, {106, 25}}S;19;{{0, 0}, {106, 25}}S;17;bordered+selectedD;K;6;$classD;K;6;CP$UIDd;3;437E;K;4;nameD;K;6;CP$UIDd;3;700E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;701E;K;5;valueD;K;6;CP$UIDd;3;702E;E;S;15;Gradient ButtonS;21;{{18, 97}, {168, 25}}S;19;{{0, 0}, {168, 25}}D;K;6;$classD;K;6;CP$UIDd;3;435E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;698E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;498E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;332E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;332E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;332E;E;D;K;6;$classD;K;6;CP$UIDd;3;437E;K;4;nameD;K;6;CP$UIDd;3;700E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;701E;K;5;valueD;K;6;CP$UIDd;3;449E;E;S;17;Round Rect ButtonS;22;{{16, 134}, {176, 29}}S;19;{{0, 0}, {176, 29}}S;9;textfieldS;28;bezeled+editable+placeholderD;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;456E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;703E;E;S;11;PlaceholderS;22;{{16, 175}, {176, 29}}S;16;bezeled+editableS;10;Text FieldS;22;{{16, 215}, {176, 29}}S;11;searchfieldS;36;bezeled+editable+placeholder+roundedS;9;Search...d;3;254S;22;{{16, 253}, {176, 29}}S;10;tokenfieldD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;11;Token FieldS;22;{{16, 292}, {176, 31}}S;19;{{0, 0}, {176, 31}}S;8;comboboxS;44;bezeled+button-bordered+editable+placeholderS;17;Combo PlaceholderD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;704E;D;K;6;CP$UIDd;3;705E;E;E;d;1;5S;22;{{212, 16}, {161, 29}}S;19;{{0, 0}, {161, 29}}D;K;6;$classD;K;6;CP$UIDd;3;456E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;706E;E;S;10;datePickerS;16;bezeled+borderedD;K;10;$classnameS;6;CPDateK;8;$classesA;S;6;CPDateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;483E;K;13;CPDateTimeKeyD;K;6;CP$UIDd;3;425E;E;d;3;224D;K;6;$classD;K;6;CP$UIDd;3;483E;K;13;CPDateTimeKeyD;K;6;CP$UIDd;3;707E;E;D;K;6;$classD;K;6;CP$UIDd;3;483E;K;13;CPDateTimeKeyD;K;6;CP$UIDd;3;708E;E;S;21;{{210, 60}, {50, 21}}S;18;{{0, 0}, {50, 21}}S;9;check-boxS;8;selectedS;2;OnS;22;{{212, 97}, {161, 25}}S;19;{{0, 0}, {161, 25}}S;12;popup-buttonD;K;6;$classD;K;6;CP$UIDd;3;435E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;698E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;699E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;332E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;332E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;332E;E;D;K;6;$classD;K;6;CP$UIDd;3;437E;K;4;nameD;K;6;CP$UIDd;3;700E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;701E;K;5;valueD;K;6;CP$UIDd;3;702E;E;d;2;12S;6;Item 1S;17;_popUpItemAction:S;6;Item 2S;6;Item 3S;23;{{212, 136}, {165, 25}}S;19;{{0, 0}, {165, 25}}S;17;segmented-controlD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;710E;D;K;6;CP$UIDd;3;711E;D;K;6;CP$UIDd;3;712E;E;E;S;23;{{212, 179}, {161, 38}}S;19;{{0, 0}, {161, 38}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;714E;D;K;6;CP$UIDd;3;715E;E;E;S;23;{{212, 257}, {161, 18}}S;19;{{0, 0}, {161, 18}}S;15;level-indicatorS;23;{{212, 295}, {136, 21}}S;19;{{0, 0}, {136, 21}}S;6;sliderd;2;50d;3;100S;22;{{356, 295}, {17, 60}}S;18;{{0, 0}, {17, 60}}S;8;verticalS;22;{{210, 317}, {30, 32}}S;18;{{0, 0}, {30, 32}}S;17;circular+verticalS;22;{{20, 333}, {168, 20}}S;19;{{0, 0}, {168, 20}}S;18;progress-indicatorS;21;{{264, 60}, {64, 21}}S;18;{{0, 0}, {64, 21}}S;3;OffS;21;{{318, 60}, {57, 21}}S;18;{{0, 0}, {57, 21}}S;4;BothS;36;31335BF5-06C2-4494-957E-17ECA44216CDD;K;10;$classnameS;19;CPMutableDictionaryK;8;$classesA;S;19;CPMutableDictionaryS;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;534E;K;10;CP.objectsD;K;23;CPToolbarShowColorsItemD;K;6;CP$UIDd;3;173E;K;18;CPToolbarSpaceItemD;K;6;CP$UIDd;3;175E;K;36;244A013B-F872-4F2A-8B72-516062AA8096D;K;6;CP$UIDd;3;178E;K;26;CPToolbarFlexibleSpaceItemD;K;6;CP$UIDd;3;177E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;23;CPToolbarShowColorsItemS;6;ColorsS;16;Show Color Paneld;2;-1S;21;orderFrontColorPanel:D;K;10;$classnameS;20;_CPCibCustomResourceK;8;$classesA;S;20;_CPCibCustomResourceS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;544E;K;32;_CPCibCustomResourceClassNameKeyD;K;6;CP$UIDd;3;716E;K;35;_CPCibCustomResourceResourceNameKeyD;K;6;CP$UIDd;3;717E;K;33;_CPCibCustomResourcePropertiesKeyD;K;6;CP$UIDd;3;718E;E;S;6;{0, 0}S;36;244A013B-F872-4F2A-8B72-516062AA8096S;6;SearchS;8;{96, 29}S;21;{{-4, 11}, {104, 29}}S;19;{{0, 0}, {104, 29}}S;8;DisabledD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;203E;D;K;6;CP$UIDd;3;204E;E;E;S;17;bordered+disabledD;K;6;$classD;K;6;CP$UIDd;3;437E;K;4;nameD;K;6;CP$UIDd;3;700E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;701E;K;5;valueD;K;6;CP$UIDd;3;702E;E;S;26;bordered+disabled+selectedD;K;6;$classD;K;6;CP$UIDd;3;437E;K;4;nameD;K;6;CP$UIDd;3;700E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;701E;K;5;valueD;K;6;CP$UIDd;3;702E;E;D;K;6;$classD;K;6;CP$UIDd;3;437E;K;4;nameD;K;6;CP$UIDd;3;700E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;701E;K;5;valueD;K;6;CP$UIDd;3;449E;E;S;37;bezeled+disabled+editable+placeholderS;25;bezeled+disabled+editableS;45;bezeled+disabled+editable+placeholder+roundedD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;53;bezeled+button-bordered+disabled+editable+placeholderD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;704E;D;K;6;CP$UIDd;3;705E;E;E;S;25;bezeled+bordered+disabledD;K;6;$classD;K;6;CP$UIDd;3;483E;K;13;CPDateTimeKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;3;483E;K;13;CPDateTimeKeyD;K;6;CP$UIDd;3;707E;E;D;K;6;$classD;K;6;CP$UIDd;3;483E;K;13;CPDateTimeKeyD;K;6;CP$UIDd;3;708E;E;S;17;disabled+selectedD;K;6;$classD;K;6;CP$UIDd;3;437E;K;4;nameD;K;6;CP$UIDd;3;700E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;701E;K;5;valueD;K;6;CP$UIDd;3;702E;E;S;8;disabledD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;719E;D;K;6;CP$UIDd;3;720E;D;K;6;CP$UIDd;3;721E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;722E;D;K;6;CP$UIDd;3;723E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;534E;K;10;CP.objectsD;K;23;CPToolbarShowColorsItemD;K;6;CP$UIDd;3;206E;K;18;CPToolbarSpaceItemD;K;6;CP$UIDd;3;207E;K;36;244A013B-F872-4F2A-8B72-516062AA8096D;K;6;CP$UIDd;3;209E;K;26;CPToolbarFlexibleSpaceItemD;K;6;CP$UIDd;3;208E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;208E;D;K;6;CP$UIDd;3;209E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;207E;D;K;6;CP$UIDd;3;208E;D;K;6;CP$UIDd;3;209E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;13;AppControllerS;32;{10000000000000, 10000000000000}d;10;1618478080S;24;{{283, 843}, {480, 270}}d;2;15S;20;{{0, 0}, {480, 270}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;215E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;217E;D;K;6;CP$UIDd;3;231E;D;K;6;CP$UIDd;3;256E;E;E;d;2;18S;9;splitviewS;21;{{0, 183}, {480, 87}}S;19;{{0, 0}, {480, 87}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;219E;D;K;6;CP$UIDd;3;593E;D;K;6;CP$UIDd;3;226E;D;K;6;CP$UIDd;3;227E;D;K;6;CP$UIDd;3;595E;E;E;d;1;8S;10;scrollviewD;K;6;$classD;K;6;CP$UIDd;3;218E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;217E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;724E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;725E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;726E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;217E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;591E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;480E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;3;229E;E;d;2;10D;K;6;$classD;K;6;CP$UIDd;3;133E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;217E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;727E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;727E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;217E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;E;S;19;{{1, 1}, {478, 69}}S;19;{{0, 0}, {478, 69}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;221E;E;E;S;9;tableviewD;K;6;$classD;K;6;CP$UIDd;3;456E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;728E;E;d;2;25S;6;{3, 2}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;223E;D;K;6;CP$UIDd;3;224E;E;E;D;K;10;$classnameS;13;_CPCornerViewK;8;$classesA;S;13;_CPCornerViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;604E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;729E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;729E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;730E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;E;d;3;116d;2;40d;4;1000D;K;10;$classnameS;24;_CPTableColumnHeaderViewK;8;$classesA;S;24;_CPTableColumnHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;609E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;727E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;727E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;731E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;732E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;733E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;734E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;733E;K;36;_CPTableColumnHeaderViewTextColorKeyD;K;6;CP$UIDd;1;0E;K;42;_CPTableColumnHeaderViewTextShadowColorKeyD;K;6;CP$UIDd;1;0E;K;36;_CPTableColumnHeaderViewAlignmentKeyD;K;6;CP$UIDd;3;425E;K;40;_CPTableColumnHeaderViewLineBreakModeKeyD;K;6;CP$UIDd;3;439E;E;D;K;6;$classD;K;6;CP$UIDd;3;139E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;735E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;736E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;454E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;737E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;439E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;738E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;739E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;330E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;332E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;480E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;439E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;425E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;d;3;356D;K;6;$classD;K;6;CP$UIDd;3;609E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;727E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;727E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;740E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;732E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;733E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;741E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;733E;K;36;_CPTableColumnHeaderViewTextColorKeyD;K;6;CP$UIDd;1;0E;K;42;_CPTableColumnHeaderViewTextShadowColorKeyD;K;6;CP$UIDd;1;0E;K;36;_CPTableColumnHeaderViewAlignmentKeyD;K;6;CP$UIDd;3;425E;K;40;_CPTableColumnHeaderViewLineBreakModeKeyD;K;6;CP$UIDd;3;439E;E;D;K;6;$classD;K;6;CP$UIDd;3;139E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;735E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;736E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;454E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;737E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;439E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;738E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;739E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;330E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;332E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;480E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;439E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;425E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;S;21;{{1, -47}, {223, 15}}S;19;{{0, 0}, {223, 15}}d;11;-2147483648S;8;scrollerS;29;_horizontalScrollerDidScroll:S;23;{{224, -32}, {15, 102}}S;19;{{0, 0}, {15, 102}}S;27;_verticalScrollerDidScroll:S;19;{{0, 0}, {478, 25}}S;14;tableHeaderRowS;20;{{0, 99}, {480, 75}}S;19;{{0, 0}, {480, 75}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;232E;E;E;S;6;CPViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;233E;D;K;6;CP$UIDd;3;254E;D;K;6;CP$UIDd;3;255E;D;K;6;CP$UIDd;3;630E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;133E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;232E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;727E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;727E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;232E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;E;S;19;{{1, 1}, {478, 73}}S;19;{{0, 0}, {478, 73}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;235E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;456E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;742E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;744E;E;E;d;2;34S;11;rule-editord;2;75S;7;rowTypeS;8;criteriaS;13;displayValuesS;10;boundArrayS;7;subrowsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;33;_CPRuleEditorViewUnboundRowHolderK;8;$classesA;S;33;_CPRuleEditorViewUnboundRowHolderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;645E;K;12;CPBoundArrayD;K;6;CP$UIDd;3;745E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;237E;D;K;6;CP$UIDd;3;243E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;746E;D;K;6;CP$UIDd;3;747E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;239E;D;K;6;CP$UIDd;3;240E;E;E;S;3;AnyS;3;AllD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;242E;E;E;S;25;of the following are trued;3;700D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;748E;D;K;6;CP$UIDd;3;749E;D;K;6;CP$UIDd;3;750E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;245E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;247E;E;E;S;4;nameD;K;10;$classnameS;20;_CPKeyPathExpressionK;8;$classesA;S;20;_CPKeyPathExpressionS;21;_CPFunctionExpressionS;12;CPExpressionS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;658E;K;14;CPSelectorNameD;K;6;CP$UIDd;3;751E;K;11;CPArgumentsD;K;6;CP$UIDd;3;752E;K;9;CPOperandD;K;6;CP$UIDd;3;754E;K;16;CPExpressionTypeD;K;6;CP$UIDd;3;379E;E;S;7;addressD;K;6;$classD;K;6;CP$UIDd;3;658E;K;14;CPSelectorNameD;K;6;CP$UIDd;3;751E;K;11;CPArgumentsD;K;6;CP$UIDd;3;755E;K;9;CPOperandD;K;6;CP$UIDd;3;754E;K;16;CPExpressionTypeD;K;6;CP$UIDd;3;379E;E;S;4;signD;K;6;$classD;K;6;CP$UIDd;3;658E;K;14;CPSelectorNameD;K;6;CP$UIDd;3;751E;K;11;CPArgumentsD;K;6;CP$UIDd;3;756E;K;9;CPOperandD;K;6;CP$UIDd;3;754E;K;16;CPExpressionTypeD;K;6;CP$UIDd;3;379E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;249E;D;K;6;CP$UIDd;3;250E;D;K;6;CP$UIDd;3;251E;D;K;6;CP$UIDd;3;252E;D;K;6;CP$UIDd;3;253E;E;E;S;8;containsd;2;99S;11;begins withS;9;ends withd;1;9S;2;isS;6;is notS;24;{{-100, 160}, {360, 15}}S;19;{{0, 0}, {360, 15}}S;20;{{463, 1}, {15, 73}}S;18;{{0, 0}, {15, 73}}S;19;{{0, 0}, {480, 90}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;257E;D;K;6;CP$UIDd;3;678E;D;K;6;CP$UIDd;3;262E;D;K;6;CP$UIDd;3;263E;D;K;6;CP$UIDd;3;679E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;218E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;256E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;757E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;725E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;758E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;256E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;591E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;480E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;3;133E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;256E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;727E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;727E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;256E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;E;S;19;{{1, 1}, {478, 72}}S;19;{{0, 0}, {478, 72}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;259E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;260E;D;K;6;CP$UIDd;3;261E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;604E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;729E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;729E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;730E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;E;d;2;16d;3;101D;K;6;$classD;K;6;CP$UIDd;3;609E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;727E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;727E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;759E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;732E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;733E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;331E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;733E;K;36;_CPTableColumnHeaderViewTextColorKeyD;K;6;CP$UIDd;1;0E;K;42;_CPTableColumnHeaderViewTextShadowColorKeyD;K;6;CP$UIDd;1;0E;K;36;_CPTableColumnHeaderViewAlignmentKeyD;K;6;CP$UIDd;3;425E;K;40;_CPTableColumnHeaderViewLineBreakModeKeyD;K;6;CP$UIDd;3;439E;E;D;K;6;$classD;K;6;CP$UIDd;3;139E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;735E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;736E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;454E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;737E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;439E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;738E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;739E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;330E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;332E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;480E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;439E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;425E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;d;3;371D;K;6;$classD;K;6;CP$UIDd;3;609E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;727E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;727E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;760E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;732E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;733E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;331E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;733E;K;36;_CPTableColumnHeaderViewTextColorKeyD;K;6;CP$UIDd;1;0E;K;42;_CPTableColumnHeaderViewTextShadowColorKeyD;K;6;CP$UIDd;1;0E;K;36;_CPTableColumnHeaderViewAlignmentKeyD;K;6;CP$UIDd;3;425E;K;40;_CPTableColumnHeaderViewLineBreakModeKeyD;K;6;CP$UIDd;3;439E;E;D;K;6;$classD;K;6;CP$UIDd;3;139E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;735E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;736E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;454E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;737E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;439E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;738E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;739E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;330E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;332E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;480E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;439E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;425E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;S;21;{{1, -44}, {223, 15}}S;23;{{224, -29}, {15, 102}}S;19;CPMutableDictionaryS;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;E;E;S;17;.Lucida Grande UId;2;13S;5;imageS;11;highlightedD;K;6;$classD;K;6;CP$UIDd;3;435E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;698E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;699E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;332E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;332E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;332E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;373E;D;K;6;CP$UIDd;3;373E;D;K;6;CP$UIDd;3;373E;D;K;6;CP$UIDd;3;373E;E;E;S;7;Combo 1S;7;Combo 2D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;373E;D;K;6;CP$UIDd;3;373E;D;K;6;CP$UIDd;3;373E;D;K;6;CP$UIDd;3;373E;E;E;d;15;-62135510400000d;14;64092297600000D;K;10;$classnameS;14;_CPSegmentItemK;8;$classesA;S;14;_CPSegmentItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;709E;K;21;CPSegmentItemImageKeyD;K;6;CP$UIDd;1;0E;K;21;CPSegmentItemLabelKeyD;K;6;CP$UIDd;3;761E;K;20;CPSegmentItemMenuKeyD;K;6;CP$UIDd;1;0E;K;24;CPSegmentItemSelectedKeyD;K;6;CP$UIDd;3;332E;K;23;CPSegmentItemEnabledKeyD;K;6;CP$UIDd;3;330E;K;19;CPSegmentItemTagKeyD;K;6;CP$UIDd;3;425E;K;21;CPSegmentItemWidthKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;3;709E;K;21;CPSegmentItemImageKeyD;K;6;CP$UIDd;1;0E;K;21;CPSegmentItemLabelKeyD;K;6;CP$UIDd;3;762E;K;20;CPSegmentItemMenuKeyD;K;6;CP$UIDd;1;0E;K;24;CPSegmentItemSelectedKeyD;K;6;CP$UIDd;3;330E;K;23;CPSegmentItemEnabledKeyD;K;6;CP$UIDd;3;330E;K;19;CPSegmentItemTagKeyD;K;6;CP$UIDd;3;373E;K;21;CPSegmentItemWidthKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;3;709E;K;21;CPSegmentItemImageKeyD;K;6;CP$UIDd;1;0E;K;21;CPSegmentItemLabelKeyD;K;6;CP$UIDd;3;763E;K;20;CPSegmentItemMenuKeyD;K;6;CP$UIDd;1;0E;K;24;CPSegmentItemSelectedKeyD;K;6;CP$UIDd;3;332E;K;23;CPSegmentItemEnabledKeyD;K;6;CP$UIDd;3;330E;K;19;CPSegmentItemTagKeyD;K;6;CP$UIDd;3;425E;K;21;CPSegmentItemWidthKeyD;K;6;CP$UIDd;3;425E;E;D;K;10;$classnameS;7;CPRadioK;8;$classesA;S;7;CPRadioS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;713E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;159E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;373E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;764E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;764E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;159E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;586E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;765E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;766E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;767E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;376E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;376E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;373E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;768E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;373E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;373E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;769E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;770E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;772E;E;D;K;6;$classD;K;6;CP$UIDd;3;713E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;159E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;773E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;764E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;159E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;586E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;765E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;766E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;774E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;376E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;376E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;775E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;373E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;373E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;769E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;770E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;772E;E;S;7;CPImageS;21;CPImageNameColorPanelD;K;6;$classD;K;6;CP$UIDd;3;316E;K;10;CP.objectsD;K;4;sizeD;K;6;CP$UIDd;3;777E;K;16;bundleIdentifierD;K;6;CP$UIDd;3;331E;K;9;frameworkD;K;6;CP$UIDd;3;331E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;709E;K;21;CPSegmentItemImageKeyD;K;6;CP$UIDd;1;0E;K;21;CPSegmentItemLabelKeyD;K;6;CP$UIDd;3;761E;K;20;CPSegmentItemMenuKeyD;K;6;CP$UIDd;1;0E;K;24;CPSegmentItemSelectedKeyD;K;6;CP$UIDd;3;332E;K;23;CPSegmentItemEnabledKeyD;K;6;CP$UIDd;3;330E;K;19;CPSegmentItemTagKeyD;K;6;CP$UIDd;3;425E;K;21;CPSegmentItemWidthKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;3;709E;K;21;CPSegmentItemImageKeyD;K;6;CP$UIDd;1;0E;K;21;CPSegmentItemLabelKeyD;K;6;CP$UIDd;3;762E;K;20;CPSegmentItemMenuKeyD;K;6;CP$UIDd;1;0E;K;24;CPSegmentItemSelectedKeyD;K;6;CP$UIDd;3;330E;K;23;CPSegmentItemEnabledKeyD;K;6;CP$UIDd;3;330E;K;19;CPSegmentItemTagKeyD;K;6;CP$UIDd;3;373E;K;21;CPSegmentItemWidthKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;3;709E;K;21;CPSegmentItemImageKeyD;K;6;CP$UIDd;1;0E;K;21;CPSegmentItemLabelKeyD;K;6;CP$UIDd;3;763E;K;20;CPSegmentItemMenuKeyD;K;6;CP$UIDd;1;0E;K;24;CPSegmentItemSelectedKeyD;K;6;CP$UIDd;3;332E;K;23;CPSegmentItemEnabledKeyD;K;6;CP$UIDd;3;330E;K;19;CPSegmentItemTagKeyD;K;6;CP$UIDd;3;425E;K;21;CPSegmentItemWidthKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;3;713E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;197E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;373E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;764E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;764E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;197E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;586E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;765E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;766E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;778E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;376E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;376E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;373E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;768E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;373E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;373E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;769E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;770E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;779E;E;D;K;6;$classD;K;6;CP$UIDd;3;713E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;197E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;773E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;764E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;197E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;586E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;765E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;766E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;780E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;376E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;425E;K;6;$afontD;K;6;CP$UIDd;3;436E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;376E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;775E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;373E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;373E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;769E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;770E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;779E;E;S;20;{{1, 70}, {478, 17}}S;19;{{0, 0}, {478, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;229E;E;E;S;16;{{0, 0}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;781E;D;K;6;CP$UIDd;3;781E;D;K;6;CP$UIDd;3;781E;D;K;6;CP$UIDd;3;373E;E;E;S;18;{{0, 0}, {14, 25}}S;10;cornerviewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;783E;E;E;S;12;columnHeaderD;K;6;$classD;K;6;CP$UIDd;3;435E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;698E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;784E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;332E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;332E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;332E;E;S;6;AnimalS;17;{{3, 0}, {-6, 0}}S;17;{{0, 0}, {-6, 0}}S;22;editable+tableDataViewS;9;Text Celld;4;3072D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;785E;E;E;S;4;LegsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;786E;D;K;6;CP$UIDd;3;786E;D;K;6;CP$UIDd;3;786E;D;K;6;CP$UIDd;3;373E;E;E;D;K;10;$classnameS;28;_CPRuleEditorViewSliceHolderK;8;$classesA;S;28;_CPRuleEditorViewSliceHolderS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;743E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;235E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;632E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;632E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;235E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;586E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;3;152E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;3;238E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;787E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;788E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;495E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;434E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;439E;K;6;$afontD;K;6;CP$UIDd;3;733E;K;7;$aimageD;K;6;CP$UIDd;3;789E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;441E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;425E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;152E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;3;241E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;790E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;791E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;495E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;434E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;439E;K;6;$afontD;K;6;CP$UIDd;3;733E;K;7;$aimageD;K;6;CP$UIDd;3;792E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;441E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;425E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;152E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;3;244E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;793E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;794E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;495E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;434E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;439E;K;6;$afontD;K;6;CP$UIDd;3;733E;K;7;$aimageD;K;6;CP$UIDd;3;795E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;441E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;425E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;152E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;3;248E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;796E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;797E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;495E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;434E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;439E;K;6;$afontD;K;6;CP$UIDd;3;733E;K;7;$aimageD;K;6;CP$UIDd;3;798E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;425E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;332E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;441E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;425E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;330E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;376E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;425E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;139E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;425E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;799E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;448E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;454E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;455E;K;11;$aalignmentD;K;6;CP$UIDd;3;425E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;376E;K;6;$afontD;K;6;CP$UIDd;3;733E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;330E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;331E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;439E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;330E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;330E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;457E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;376E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;425E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;S;12;valueForKey:D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;801E;E;E;D;K;10;$classnameS;17;_CPSelfExpressionK;8;$classesA;S;17;_CPSelfExpressionS;12;CPExpressionS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;753E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;802E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;803E;E;E;S;20;{{1, 73}, {478, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;264E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;804E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;805E;E;E;S;9;Segment 1S;2;s2S;2;s3S;18;{{0, 0}, {78, 18}}D;K;6;$classD;K;6;CP$UIDd;3;456E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;806E;E;S;5;radioS;27;bordered+roundRect+selectedS;8;Choice 1f;3;0.5f;4;0.05D;K;10;$classnameS;12;CPRadioGroupK;8;$classesA;S;12;CPRadioGroupS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;771E;K;21;CPRadioGroupRadiosKeyD;K;6;CP$UIDd;3;807E;K;28;CPRadioGroupSelectedRadioKeyD;K;6;CP$UIDd;3;714E;E;S;19;{{0, 20}, {78, 18}}S;18;bordered+roundRectS;7;Radio 2D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;776E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;808E;E;S;36;bordered+disabled+roundRect+selectedD;K;6;$classD;K;6;CP$UIDd;3;771E;K;21;CPRadioGroupRadiosKeyD;K;6;CP$UIDd;3;809E;K;28;CPRadioGroupSelectedRadioKeyD;K;6;CP$UIDd;3;722E;E;S;27;bordered+disabled+roundRectf;3;0.8D;K;10;$classnameS;19;_CPImageAndTextViewK;8;$classesA;S;19;_CPImageAndTextViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;782E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;610E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;727E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;727E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;610E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;586E;K;17;CPViewHitTestsKeyD;K;6;CP$UIDd;3;332E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;E;d;2;11D;K;6;$classD;K;6;CP$UIDd;3;782E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;613E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;727E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;727E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;613E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;586E;K;17;CPViewHitTestsKeyD;K;6;CP$UIDd;3;332E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;E;f;12;0.9100000262S;19;{{1, -4}, {66, 25}}S;18;{{0, 0}, {66, 25}}D;K;6;$classD;K;6;CP$UIDd;3;437E;K;4;nameD;K;6;CP$UIDd;3;700E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;701E;K;5;valueD;K;6;CP$UIDd;3;810E;E;S;21;{{66, -4}, {175, 25}}S;19;{{0, 0}, {175, 25}}D;K;6;$classD;K;6;CP$UIDd;3;437E;K;4;nameD;K;6;CP$UIDd;3;700E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;701E;K;5;valueD;K;6;CP$UIDd;3;810E;E;S;20;{{31, -4}, {86, 25}}S;18;{{0, 0}, {86, 25}}D;K;6;$classD;K;6;CP$UIDd;3;437E;K;4;nameD;K;6;CP$UIDd;3;700E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;701E;K;5;valueD;K;6;CP$UIDd;3;810E;E;S;22;{{116, -4}, {107, 25}}S;19;{{0, 0}, {107, 25}}D;K;6;$classD;K;6;CP$UIDd;3;437E;K;4;nameD;K;6;CP$UIDd;3;700E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;5;stateD;K;6;CP$UIDd;3;701E;K;5;valueD;K;6;CP$UIDd;3;810E;E;S;21;{{224, 1}, {168, 25}}D;K;10;$classnameS;26;_CPConstantValueExpressionK;8;$classesA;S;26;_CPConstantValueExpressionS;12;CPExpressionS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;800E;K;15;CPConstantValueD;K;6;CP$UIDd;3;657E;E;D;K;6;$classD;K;6;CP$UIDd;3;800E;K;15;CPConstantValueD;K;6;CP$UIDd;3;660E;E;D;K;6;$classD;K;6;CP$UIDd;3;800E;K;15;CPConstantValueD;K;6;CP$UIDd;3;662E;E;D;K;6;$classD;K;6;CP$UIDd;3;782E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;687E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;727E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;727E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;687E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;586E;K;17;CPViewHitTestsKeyD;K;6;CP$UIDd;3;332E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;E;D;K;6;$classD;K;6;CP$UIDd;3;782E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;690E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;727E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;727E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;690E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;586E;K;17;CPViewHitTestsKeyD;K;6;CP$UIDd;3;332E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;428E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;429E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;429E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;332E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;425E;D;K;6;CP$UIDd;3;425E;D;K;6;CP$UIDd;3;425E;D;K;6;CP$UIDd;3;425E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;714E;D;K;6;CP$UIDd;3;715E;E;E;S;22;{"width":0,"height":0}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;722E;D;K;6;CP$UIDd;3;723E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;435E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;698E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;784E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;332E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;332E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;332E;E;E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/ThemeKitchenSink/Resources/MainMenu.xib b/Tests/Manual/ThemeKitchenSink/Resources/MainMenu.xib new file mode 100644 index 000000000..1ca3a9d40 --- /dev/null +++ b/Tests/Manual/ThemeKitchenSink/Resources/MainMenu.xib @@ -0,0 +1,1032 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Combo 1 + Combo 2 + + + + + + + + + + + + +VFppZgAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAC5AAAABAAAABCepkign7sVkKCGKqChmveQ +y4kaoNIj9HDSYSYQ1v50INiArZDa/tGg28CQENzes6DdqayQ3r6VoN+JjpDgnneg4WlwkOJ+WaDjSVKQ +5F47oOUpNJDmR1gg5xJREOgnOiDo8jMQ6gccIOrSFRDr5v4g7LH3EO3G4CDukdkQ76/8oPBxuxDxj96g +8n/BkPNvwKD0X6OQ9U+ioPY/hZD3L4Sg+CiiEPkPZqD6CIQQ+viDIPvoZhD82GUg/chIEP64RyD/qCoQ +AJgpIAGIDBACeAsgA3EokARhJ6AFUQqQBkEJoAcw7JAHjUOgCRDOkAmtvyAK8LCQC+CvoAzZzRANwJGg +DrmvEA+priAQmZEQEYmQIBJ5cxATaXIgFFlVEBVJVCAWOTcQFyk2IBgiU5AZCRggGgI1kBryNKAb4heQ +HNIWoB3B+ZAesfigH6HbkCB2KyAhgb2QIlYNICNq2hAkNe8gJUq8ECYV0SAnKp4QJ/7toCkKgBAp3s+g +KupiECu+saAs036QLZ6ToC6zYJAvfnWgMJNCkDFnkiAycySQM0d0IDRTBpA1J1YgNjLokDcHOCA4HAUQ +OOcaIDn75xA6xvwgO9vJEDywGKA9u6sQPo/6oD+bjRBAb9ygQYSpkEJPvqBDZIuQRC+goEVEbZBF89Mg +Ry2KEEfTtSBJDWwQSbOXIErtThBLnLOgTNZqkE18laBOtkyQT1x3oFCWLpBRPFmgUnYQkFMcO6BUVfKQ +VPwdoFY11JBW5TogWB7xEFjFHCBZ/tMQWqT+IFvetRBchOAgXb6XEF5kwiBfnnkQYE3eoGGHlZBiLcCg +Y2d3kGQNoqBlR1mQZe2EoGcnO5BnzWagaQcdkGmtSKBq5v+Qa5ZlIGzQHBBtdkcgbq/+EG9WKSBwj+AQ +cTYLIHJvwhBzFe0gdE+kEHT/CaB2OMCQdt7roHgYopB4vs2gefiEkHqer6B72GaQfH6RoH24SJB+XnOg +f5gqkAABAAECAwEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA +AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA +AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA +AQABAAEAAQAB//+dkAEA//+PgAAE//+dkAEI//+dkAEMUERUAFBTVABQV1QAUFBUAAAAAAEAAAABA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Combo 1 + Combo 2 + + + + + + + + + + + + +VFppZgAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAC5AAAABAAAABCepkign7sVkKCGKqChmveQ +y4kaoNIj9HDSYSYQ1v50INiArZDa/tGg28CQENzes6DdqayQ3r6VoN+JjpDgnneg4WlwkOJ+WaDjSVKQ +5F47oOUpNJDmR1gg5xJREOgnOiDo8jMQ6gccIOrSFRDr5v4g7LH3EO3G4CDukdkQ76/8oPBxuxDxj96g +8n/BkPNvwKD0X6OQ9U+ioPY/hZD3L4Sg+CiiEPkPZqD6CIQQ+viDIPvoZhD82GUg/chIEP64RyD/qCoQ +AJgpIAGIDBACeAsgA3EokARhJ6AFUQqQBkEJoAcw7JAHjUOgCRDOkAmtvyAK8LCQC+CvoAzZzRANwJGg +DrmvEA+priAQmZEQEYmQIBJ5cxATaXIgFFlVEBVJVCAWOTcQFyk2IBgiU5AZCRggGgI1kBryNKAb4heQ +HNIWoB3B+ZAesfigH6HbkCB2KyAhgb2QIlYNICNq2hAkNe8gJUq8ECYV0SAnKp4QJ/7toCkKgBAp3s+g +KupiECu+saAs036QLZ6ToC6zYJAvfnWgMJNCkDFnkiAycySQM0d0IDRTBpA1J1YgNjLokDcHOCA4HAUQ +OOcaIDn75xA6xvwgO9vJEDywGKA9u6sQPo/6oD+bjRBAb9ygQYSpkEJPvqBDZIuQRC+goEVEbZBF89Mg +Ry2KEEfTtSBJDWwQSbOXIErtThBLnLOgTNZqkE18laBOtkyQT1x3oFCWLpBRPFmgUnYQkFMcO6BUVfKQ +VPwdoFY11JBW5TogWB7xEFjFHCBZ/tMQWqT+IFvetRBchOAgXb6XEF5kwiBfnnkQYE3eoGGHlZBiLcCg +Y2d3kGQNoqBlR1mQZe2EoGcnO5BnzWagaQcdkGmtSKBq5v+Qa5ZlIGzQHBBtdkcgbq/+EG9WKSBwj+AQ +cTYLIHJvwhBzFe0gdE+kEHT/CaB2OMCQdt7roHgYopB4vs2gefiEkHqer6B72GaQfH6RoH24SJB+XnOg +f5gqkAABAAECAwEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA +AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA +AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA +AQABAAEAAQAB//+dkAEA//+PgAAE//+dkAEI//+dkAEMUERUAFBTVABQV1QAUFBUAAAAAAEAAAABA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + name + + + address + + + sign + + + + + + + + + name + + + + + address + + + + + sign + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/Manual/ThemeKitchenSink/index-debug.html b/Tests/Manual/ThemeKitchenSink/index-debug.html new file mode 100644 index 000000000..393668d41 --- /dev/null +++ b/Tests/Manual/ThemeKitchenSink/index-debug.html @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + ThemeKitchenSink + + + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ + diff --git a/Tests/Manual/ThemeKitchenSink/index.html b/Tests/Manual/ThemeKitchenSink/index.html new file mode 100644 index 000000000..6b4358625 --- /dev/null +++ b/Tests/Manual/ThemeKitchenSink/index.html @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + ThemeKitchenSink + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ + diff --git a/Tests/Manual/ThemeKitchenSink/main.j b/Tests/Manual/ThemeKitchenSink/main.j new file mode 100644 index 000000000..690218ac0 --- /dev/null +++ b/Tests/Manual/ThemeKitchenSink/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * ThemeKitchenSink + * + * Created by Alexander Ljungberg on May 11, 2014. + * Copyright 2014, SlevenBits, Ltd. All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tests/Objective-J/CFHTTPRequestTest.j b/Tests/Objective-J/CFHTTPRequestTest.j new file mode 100644 index 000000000..f6afe5a58 --- /dev/null +++ b/Tests/Objective-J/CFHTTPRequestTest.j @@ -0,0 +1,16 @@ +@import + +@implementation CFHTTPRequestTest : OJTestCase +{ +} + +- (void)testSetWithCredentials +{ + var cfHTTPRequest = new CFHTTPRequest(); + [self assertFalse:cfHTTPRequest.getWithCredentials()]; + + cfHTTPRequest.setWithCredentials(YES); + [self assertTrue:cfHTTPRequest.getWithCredentials()]; +} + +@end diff --git a/Tests/Objective-J/CFPropertyListTest.j b/Tests/Objective-J/CFPropertyListTest.j index ad6e9c643..94efd4156 100644 --- a/Tests/Objective-J/CFPropertyListTest.j +++ b/Tests/Objective-J/CFPropertyListTest.j @@ -25,4 +25,57 @@ var FILE = require("file"), [self assert:[[CPDate alloc] initWithString:"2012-01-01 10:00:00 +0100"] equals:date]; } +- (void)testPropertyListFromXMLShouldHandleEmptyXMLGracefully { + // rhino can't parse empty XML documents + if (system.engine !== "rhino") { + var XML = "", + object = CFPropertyList.propertyListFromXML(XML); + + [self assert:object equals:null]; + } +} + +- (void)testPropertyListFromXMLShouldHandleEmptierXMLGracefully { + // rhino can't parse empty XML documents + if (system.engine !== "rhino") { + var XML = "", + object = CFPropertyList.propertyListFromXML(XML); + + [self assert:object equals:null]; + } +} + +- (void)testPropertyListFromXMLShouldHandleEmptiestXMLGracefully { + // rhino can't parse empty XML documents + if (system.engine !== "rhino") { + var XML = "", + object = CFPropertyList.propertyListFromXML(XML); + + [self assert:object equals:null]; + } +} + +- (void)testPropertyListFromXMLShouldParseNiceAndCleanXML { + var XML = "Main cib file base nameMainMenu.cibCPBundleNameCopyAndPasteCPBundleVersion1.0CPHumanReadableCopyrightCopyright \u00a9 2013, SlevenBits, Ltd. All rights reserved.", + object = CFPropertyList.propertyListFromXML(XML); + + [self assert:[object valueForKey:"Main cib file base name"] equals:"MainMenu.cib"]; + [self assert:[object valueForKey:"CPBundleName"] equals:"CopyAndPaste"]; + [self assert:[object valueForKey:"CPBundleVersion"] equals:"1.0"]; + [self assert:[object valueForKey:"CPHumanReadableCopyright"] equals:"Copyright \u00a9 2013, SlevenBits, Ltd. All rights reserved."]; + [self assert:[object count] equals:4]; +} + +- (void)testPropertyListFromXMLShouldIgnoreWhiteSpace{ + var XML = "\n \n \n\n\tMain cib file base name\n\tMainMenu.cib\n\t CPBundleName\n\tCopyAndPaste\n CPBundleVersion\n 1.0\n CPHumanReadableCopyright\n Copyright \u00a9 2013, SlevenBits, Ltd. All rights reserved.\n\n\n", + // feed in preparsed XML to ensure we preserve whitespace for purposes of this test + object = CFPropertyList.propertyListFromXML(new window.DOMParser().parseFromString(XML, "text/xml")); + + [self assert:[object valueForKey:"Main cib file base name"] equals:"MainMenu.cib"]; + [self assert:[object valueForKey:"CPBundleName"] equals:"CopyAndPaste"]; + [self assert:[object valueForKey:"CPBundleVersion"] equals:"1.0"]; + [self assert:[object valueForKey:"CPHumanReadableCopyright"] equals:"Copyright \u00a9 2013, SlevenBits, Ltd. All rights reserved."]; + [self assert:[object count] equals:4]; +} + @end diff --git a/Tests/Objective-J/DebugTest.j b/Tests/Objective-J/DebugTest.j new file mode 100644 index 000000000..d48daa5fb --- /dev/null +++ b/Tests/Objective-J/DebugTest.j @@ -0,0 +1,72 @@ +var SEEN_MESSAGES = []; + +objj_test_decorator = function(msgSend) +{ + return function(aReceiverOrSuper, aSelector) + { + if (aSelector === @selector(intify:)) + SEEN_MESSAGES.push([aReceiverOrSuper, aSelector]); + return msgSend.apply(this, arguments); + }; +} + +@implementation TestClass0 : CPObject + +- (CPInteger)intify:(CPInteger)anInput +{ + return anInput * 2; // now twice as int +} + +@end + +@implementation TestClass1 : CPObject + +- (CPInteger)intify:(CPInteger)anInput +{ + return anInput * 2; // now twice as int +} + +@end + + +@implementation DebugTest : OJTestCase + +- (void)setUp +{ + SEEN_MESSAGES = []; +} + +- (void)tearDown +{ + objj_msgSend_reset(); +} + +- (void)test_objj_msgSend_decorate_should_replace_fast_msgSend_for_unitialised_class +{ + objj_msgSend_decorate(objj_test_decorator); + var a = [TestClass0 new]; + [self assert:[a intify:3] equals:6]; + [self assert:SEEN_MESSAGES equals:[[a, @selector(intify:)]]]; +} + +- (void)test_objj_msgSend_decorate_should_replace_fast_msgSend_for_initialised_class +{ + var a = [TestClass1 new]; + [a intify:5]; + + objj_msgSend_decorate(objj_test_decorator); + [self assert:[a intify:3] equals:6]; + [self assert:SEEN_MESSAGES equals:[[a, @selector(intify:)]]]; +} + +- (void)test_objj_msgSend_reset_should_reset +{ + objj_msgSend_decorate(objj_test_decorator); + var a = [TestClass1 new]; + [self assert:[a intify:3] equals:6]; + objj_msgSend_reset(); + [self assert:[a intify:3] equals:6]; + [self assert:SEEN_MESSAGES equals:[[a, @selector(intify:)]]]; +} + +@end diff --git a/Tests/Objective-J/Preprocessor/OutputTests/Messages/colon-selector.js b/Tests/Objective-J/Preprocessor/OutputTests/Messages/colon-selector.js index aff484c53..1104fd603 100644 --- a/Tests/Objective-J/Preprocessor/OutputTests/Messages/colon-selector.js +++ b/Tests/Objective-J/Preprocessor/OutputTests/Messages/colon-selector.js @@ -1,2 +1,2 @@ -objj_msgSend(object, ":", argument); +(object==null?null:object.isa.objj_msgSend1(object,":",argument)); \ No newline at end of file diff --git a/Tests/Objective-J/Preprocessor/OutputTests/Messages/complex-receiver.j b/Tests/Objective-J/Preprocessor/OutputTests/Messages/complex-receiver.j new file mode 100644 index 000000000..78343f17a --- /dev/null +++ b/Tests/Objective-J/Preprocessor/OutputTests/Messages/complex-receiver.j @@ -0,0 +1,2 @@ +var a = 0; +[(a++ < 2 ? small_target : big_target) doStuff]; diff --git a/Tests/Objective-J/Preprocessor/OutputTests/Messages/complex-receiver.js b/Tests/Objective-J/Preprocessor/OutputTests/Messages/complex-receiver.js new file mode 100644 index 000000000..1ed012c6d --- /dev/null +++ b/Tests/Objective-J/Preprocessor/OutputTests/Messages/complex-receiver.js @@ -0,0 +1,2 @@ +var a=0; +((___r1=a++<2?small_target:big_target),___r1==null?null:___r1.isa.objj_msgSend0(___r1,"doStuff")); diff --git a/Tests/Objective-J/Preprocessor/OutputTests/Messages/keyword-in-selector.js b/Tests/Objective-J/Preprocessor/OutputTests/Messages/keyword-in-selector.js index bb6a71ee7..8e4bc3bda 100644 --- a/Tests/Objective-J/Preprocessor/OutputTests/Messages/keyword-in-selector.js +++ b/Tests/Objective-J/Preprocessor/OutputTests/Messages/keyword-in-selector.js @@ -1 +1 @@ -objj_msgSend(object,"for:in:nil:",a,b,nil); \ No newline at end of file +(object==null?null:object.isa.objj_msgSend3(object,"for:in:nil:",a,b,nil)); \ No newline at end of file diff --git a/Tests/Objective-J/Preprocessor/OutputTests/Messages/multiple-parameters.js b/Tests/Objective-J/Preprocessor/OutputTests/Messages/multiple-parameters.js index 1f88bb343..4c55b7aef 100644 --- a/Tests/Objective-J/Preprocessor/OutputTests/Messages/multiple-parameters.js +++ b/Tests/Objective-J/Preprocessor/OutputTests/Messages/multiple-parameters.js @@ -1,2 +1,2 @@ -objj_msgSend(object, "label:label2:label3:label4:", argument, argument2, argument3, argument4); +(object==null?null:object.isa.objj_msgSend(object,"label:label2:label3:label4:",argument,argument2,argument3,argument4)); diff --git a/Tests/Objective-J/Preprocessor/OutputTests/Messages/no-parameters.j b/Tests/Objective-J/Preprocessor/OutputTests/Messages/no-parameters.j index 3292fea80..dc4f82b03 100644 --- a/Tests/Objective-J/Preprocessor/OutputTests/Messages/no-parameters.j +++ b/Tests/Objective-J/Preprocessor/OutputTests/Messages/no-parameters.j @@ -1,2 +1,2 @@ - +[CPArray new]; [object message]; diff --git a/Tests/Objective-J/Preprocessor/OutputTests/Messages/no-parameters.js b/Tests/Objective-J/Preprocessor/OutputTests/Messages/no-parameters.js index e66a87e46..023c09bdf 100644 --- a/Tests/Objective-J/Preprocessor/OutputTests/Messages/no-parameters.js +++ b/Tests/Objective-J/Preprocessor/OutputTests/Messages/no-parameters.js @@ -1,2 +1,2 @@ - -objj_msgSend(object, "message"); +CPArray.isa.objj_msgSend0(CPArray,"new"); +(object==null?null:object.isa.objj_msgSend0(object,"message")); \ No newline at end of file diff --git a/Tests/Objective-J/Preprocessor/OutputTests/Messages/one-parameter.j b/Tests/Objective-J/Preprocessor/OutputTests/Messages/one-parameter.j index dee678fde..8e01d2bab 100644 --- a/Tests/Objective-J/Preprocessor/OutputTests/Messages/one-parameter.j +++ b/Tests/Objective-J/Preprocessor/OutputTests/Messages/one-parameter.j @@ -1,2 +1,2 @@ - +[CPArray arrayWithArray:[]]; [object label:argument]; diff --git a/Tests/Objective-J/Preprocessor/OutputTests/Messages/one-parameter.js b/Tests/Objective-J/Preprocessor/OutputTests/Messages/one-parameter.js index 99386a35c..b8795333c 100644 --- a/Tests/Objective-J/Preprocessor/OutputTests/Messages/one-parameter.js +++ b/Tests/Objective-J/Preprocessor/OutputTests/Messages/one-parameter.js @@ -1,2 +1,2 @@ - -objj_msgSend(object, "label:", argument); +CPArray.isa.objj_msgSend1(CPArray,"arrayWithArray:",[]); +(object==null?null:object.isa.objj_msgSend1(object,"label:",argument)); \ No newline at end of file diff --git a/Tests/Objective-J/Preprocessor/OutputTests/Messages/self-as-receiver.j b/Tests/Objective-J/Preprocessor/OutputTests/Messages/self-as-receiver.j new file mode 100644 index 000000000..fa715ed5d --- /dev/null +++ b/Tests/Objective-J/Preprocessor/OutputTests/Messages/self-as-receiver.j @@ -0,0 +1,17 @@ +@implementation MyClass + +- (id)mySelector +{ + [self init]; + self = nil; + [self init]; +} + +- (id)mySelector2 +{ + [self init]; + eval("self = null;"); + [self init]; +} + +@end diff --git a/Tests/Objective-J/Preprocessor/OutputTests/Messages/self-as-receiver.js b/Tests/Objective-J/Preprocessor/OutputTests/Messages/self-as-receiver.js new file mode 100644 index 000000000..561ad60cb --- /dev/null +++ b/Tests/Objective-J/Preprocessor/OutputTests/Messages/self-as-receiver.js @@ -0,0 +1,11 @@ +var the_class=objj_allocateClassPair(Nil,"MyClass"),meta_class=the_class.isa; +objj_registerClassPair(the_class); +class_addMethods(the_class,[new objj_method(sel_getUid("mySelector"),function $MyClass__mySelector(_1,_2){ +_1.isa.objj_msgSend0(_1,"init"); +_1=nil; +(_1==null?null:_1.isa.objj_msgSend0(_1,"init")); +},["id"]),new objj_method(sel_getUid("mySelector2"),function $MyClass__mySelector2(_3,_4){ +_3.isa.objj_msgSend0(_3,"init"); +eval("self = null;"); +(_3==null?null:_3.isa.objj_msgSend0(_3,"init")); +},["id"])]); \ No newline at end of file diff --git a/Tests/Objective-J/Preprocessor/OutputTests/Messages/ternary-operator-argument.js b/Tests/Objective-J/Preprocessor/OutputTests/Messages/ternary-operator-argument.js index bdd50a691..f879e332c 100644 --- a/Tests/Objective-J/Preprocessor/OutputTests/Messages/ternary-operator-argument.js +++ b/Tests/Objective-J/Preprocessor/OutputTests/Messages/ternary-operator-argument.js @@ -1,4 +1,4 @@ -objj_msgSend(object, "label:", condition ? true : false); -objj_msgSend(object, "label:", condition ? true : false); -objj_msgSend(object, "label:", condition ? true : false); +(object==null?null:object.isa.objj_msgSend1(object,"label:",condition?true:false)); +(object==null?null:object.isa.objj_msgSend1(object,"label:",condition?true:false)); +(object==null?null:object.isa.objj_msgSend1(object,"label:",condition?true:false)); diff --git a/Tests/Objective-J/Preprocessor/OutputTests/Misc/parenthesis-return.js b/Tests/Objective-J/Preprocessor/OutputTests/Misc/parenthesis-return.js index 6664877bc..4b3da9ec7 100644 --- a/Tests/Objective-J/Preprocessor/OutputTests/Misc/parenthesis-return.js +++ b/Tests/Objective-J/Preprocessor/OutputTests/Misc/parenthesis-return.js @@ -1,3 +1,3 @@ x=function(){ -return objj_msgSend(someIval,"someMethod"); -} \ No newline at end of file +return (someIval==null?null:someIval.isa.objj_msgSend0(someIval,"someMethod")); +}; diff --git a/Tests/Objective-J/Preprocessor/OutputTests/OutputTest.j b/Tests/Objective-J/Preprocessor/OutputTests/OutputTest.j index 302ce7823..46375b36d 100644 --- a/Tests/Objective-J/Preprocessor/OutputTests/OutputTest.j +++ b/Tests/Objective-J/Preprocessor/OutputTests/OutputTest.j @@ -13,6 +13,8 @@ var FILENAMES = [ "Messages/ternary-operator-argument", "Messages/keyword-in-selector", "Messages/colon-selector", + "Messages/self-as-receiver", + "Messages/complex-receiver", "Misc/parenthesis-return", "Misc/preprocess-if-directives", diff --git a/Tools/Documentation/Cappuccino.doxygen b/Tools/Documentation/Cappuccino.doxygen index 9ffc4f361..5cd23fc26 100644 --- a/Tools/Documentation/Cappuccino.doxygen +++ b/Tools/Documentation/Cappuccino.doxygen @@ -31,7 +31,7 @@ PROJECT_NAME = " API" # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 0.9.7 +PROJECT_NUMBER = 0.9.7-1 PROJECT_LOGO = ./Tools/Documentation/logo.png diff --git a/Tools/Documentation/doxygen.css b/Tools/Documentation/doxygen.css index 3a4678440..e3afc6fcb 100644 --- a/Tools/Documentation/doxygen.css +++ b/Tools/Documentation/doxygen.css @@ -116,6 +116,7 @@ div.qindex, div.navtab { div.qindex, div.navpath { width: 100%; line-height: 140%; + background: white; } div.qindex+table { @@ -175,7 +176,11 @@ a.elRef { } a.code { - color: #4765A1; + color: #8AACE5; +} + +a.code:visited { + color: #8AACE5; } a.codeRef { @@ -188,24 +193,33 @@ dl.el { margin-left: -1cm; } +.fragment { + margin-top: 20px; + background-color: #27292C; + width: 100%; + border-radius: 3px; +} +.fragment .line:first-child { + padding-top: 20px; +} .fragment .line { font-family: Consolas, Courier, monospace, fixed; white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ - word-wrap: break-word; /* Internet Explorer 5.5+ */ font-size: 11px; margin-bottom: 3px; + color: #d4d4d4; } .fragment .lineno { - color: #d4d4d4; + color: #555; margin-right: 10px; } .fragment .lineno a { - color: #d4d4d4; + color: #777; } pre.fragment { @@ -221,21 +235,14 @@ pre.fragment { } div.ah { - background-color: black; + background-color: #333; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px; padding: 0.2em; border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); + background-color: #F6F6F6; } div.groupHeader { @@ -252,8 +259,8 @@ div.groupText { body { background-color: white; - color: black; - margin: 0; + color: #333; + margin: 0; } div.contents { @@ -301,7 +308,7 @@ table tr.memlist > td { tr.memlist td { font-family: Consolas, "Lucida Console", Courier, monospace; padding: .25em 0; - border-bottom: 1px solid #eee; + border-bottom: 1px solid #F6F6F6; } /* Don't show the [static] column in full member list */ @@ -340,16 +347,18 @@ address.footer { img.footer { border: 0px; vertical-align: middle; + height: 15px; + margin-top: -5px; } /* @group Code Colorization */ span.keyword { - color: #008000 + color: #D67C7B } span.keywordtype { - color: #604020 + color: #C0A7C6 } span.keywordflow { @@ -357,7 +366,7 @@ span.keywordflow { } span.comment { - color: #A085E4 + color: #6A6C73 } span.preprocessor { @@ -365,7 +374,7 @@ span.preprocessor { } span.stringliteral { - color: #002080 + color: #C2C67F; } span.charliteral { @@ -427,7 +436,7 @@ th.dirtab { hr { height: 0px; border: none; - border-top: 2px solid #ddd; + border-top: 1px solid #ddd; margin: 1em 0; } @@ -458,7 +467,7 @@ table.memberdecls { } .memItemLeft, .memItemRight, .memTemplParams { - border-top: 1px solid #f3f3f3; + border-top: 1px solid #F3F3F3; } .memItemLeft, .memTemplItemLeft { @@ -513,50 +522,27 @@ table.memberdecls { } .memproto, dl.reflist dt { - border-top: 1px solid #BDBDBD; - border-left: 1px solid #BDBDBD; - border-right: 1px solid #BDBDBD; padding: 6px 0px 6px 0px; color: #333; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 8px; - border-top-left-radius: 8px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 1px 1px 5px; - -moz-border-radius-topright: 3px; - -moz-border-radius-topleft: 3px; - /* webkit specific markup */ - -webkit-box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 3px; - -webkit-border-top-left-radius: 3px; - background-color: #E2E2E2; + font-weight: normal; + background-color: #F6F6F6; padding-left: 9px; } .memdoc > p { margin-top: 0; } + +.memdoc > p:last-child { + color: #AAAAAA; + font-size: 80%; +} .memdoc, dl.reflist dd { - border-bottom: 1px solid #BDBDBD; - border-left: 1px solid #BDBDBD; - border-right: 1px solid #BDBDBD; + border-bottom: 1px solid #F6F6F6; + border-left: 1px solid #F6F6F6; + border-right: 1px solid #F6F6F6; background-color: white; border-top-width: 0; - /* opera specific markup */ - border-bottom-left-radius: 3px; - border-bottom-right-radius: 3px; - box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 3px; - -moz-border-radius-bottomright: 3px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 1px 1px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 3px; - -webkit-border-bottom-right-radius: 3px; - -webkit-box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.15); padding: .8em 12px 0 12px; } @@ -595,6 +581,15 @@ dl.reflist dt { color: #602020; white-space: nowrap; } + +.params .paramname { + color: #602020 !important; + white-space: nowrap; + text-align: right; + font-family: Consolas, "Lucida Console", Courier, monospace; + padding: 3px; +} + .paramname em { font-style: normal; } @@ -751,12 +746,6 @@ table.fieldtable { margin-bottom: 10px; border: 1px solid #A9B9D8; border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); } .fieldtable td, .fieldtable th { @@ -788,12 +777,6 @@ table.fieldtable { padding-bottom: 4px; padding-top: 5px; text-align:left; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; border-bottom: 1px solid #A9B9D8; } @@ -811,12 +794,11 @@ table.fieldtable { .navpath ul { font-size: 11px; - background: -moz-linear-gradient(-90deg, whiteSmoke, #CCC); - background: -webkit-gradient(linear, left top, left bottom, from(whiteSmoke), to(#CCC)); + background-color: white; height:30px; line-height:30px; color:#333; - border:solid 1px #CCC; + border:solid 1px #f3f3f3; overflow:hidden; margin:0px; padding:0px; @@ -824,7 +806,7 @@ table.fieldtable { .navpath li { - list-style-type:none; + list-style-type: none; float:left; padding-left:10px; padding-right: 15px; @@ -843,6 +825,7 @@ table.fieldtable { color: #333; } + .navpath li.navelem a:hover { color:#6985BC; @@ -858,7 +841,7 @@ table.fieldtable { background-image:none; background-repeat:no-repeat; background-position:right; - color:#374E7C; + color:#aaa; font-size: 8pt; } @@ -902,17 +885,14 @@ div.header { background-color: #F9FAFC; margin: 0px; - border-bottom: 1px solid #C5CFE5; + border-bottom: 1px solid #eaeaea; } div.headertitle { padding: 10px 5px 10px 20px; - background: #333; - background: -moz-linear-gradient(-90deg, #444, #333); - background: -webkit-gradient(linear, left top, left bottom, from(#444), to(#333)); - color: white; - text-shadow: -1px -1px black; + background-color: #f6f6f6; + color: #333; min-height: 36px; } @@ -977,16 +957,24 @@ dl.bug border-collapse: separate; } -#projectlogo img +#projectlogo { border: 0px none; - max-height: 55px; padding-left: 5px; + margin-top: 8px; + display: block; + float: right; + width: 200px; +} + +#projectlogo img +{ + max-height: 40px; } #projectname { - font: 300% Tahoma, Arial,sans-serif; + font: 200% Tahoma, Arial,sans-serif; margin: 0px; padding: 2px 0px; } @@ -1010,13 +998,9 @@ dl.bug padding: 0px; margin: 0px; width: 100%; - border-bottom: 1px solid #CCC; color: white; font-weight: bold; - text-shadow: -1px -1px black; - background: #485D77; - background: -moz-linear-gradient(-90deg, #485D77, #252D38); - background: -webkit-gradient(linear, left top, left bottom, from(#485D77), to(#252D38)); + background: #FA7622; } .image @@ -1093,9 +1077,8 @@ dl.citelist dd { /* ADDITIONS */ .tabs, .tabs2, .tabs3 { - background: -moz-linear-gradient(-90deg, #fff, #eee); - background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#eee)); - border-bottom: 1px solid #ccc; + background: #F6F6F6 !important; + border-bottom: 1px solid #eaeaea; width: 100%; z-index: 101; font-size: 100%; @@ -1128,17 +1111,15 @@ dl.citelist dd { display: block; padding: 0 20px; font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); text-decoration: none; outline: none; background: none; color: #444; - border-right: 1px solid #ccc; + border-right: 1px solid #eaeaea; } .tablist a:hover { background: inherit; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); text-decoration: none; text-shadow: none; color: gray; @@ -1164,10 +1145,9 @@ dl.citelist dd { } .tablist li.current a { - background: -moz-linear-gradient(-90deg, #eee, #fff); - background: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#fff)); + background: #ddd; color: #444; - text-shadow: 0px 1px 1px #f2f2f2; + text-shadow: none; } .tabs2 li{ @@ -1191,7 +1171,7 @@ dl.citelist dd { #nav-tree li { white-space:nowrap; margin:0px; - padding:0px; + padding-top: 5px; } #nav-tree .plus { @@ -1199,17 +1179,23 @@ dl.citelist dd { } #nav-tree .selected { - background: -moz-linear-gradient(-90deg, #62B9ED, #308CD9) !important; - background: -webkit-gradient(linear, left top, left bottom, from(#62B9ED), to(#308CD9)) !important; - border-top: 1px solid #308CD9; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + background-color: #F87631 !important; + border-top: none; + background-image: none; } #nav-tree img { margin:0px; padding:0px; border:0px; - vertical-align: middle; + -webkit-filter: grayscale(1); + width: 8px; + height: 11px; + margin-top: -4px; +} + +#nav-tree .selected img { + -webkit-filter: grayscale(0); } #nav-tree a { @@ -1233,7 +1219,9 @@ dl.citelist dd { text-decoration:none; padding:2px; margin:0px; - color:#fff; + color: white; + text-shadow: none; + font-weight: bold; } #nav-tree .children_ul { @@ -1243,17 +1231,16 @@ dl.citelist dd { #nav-tree .item { margin:0px; - padding:0px; + padding:0px;; } #nav-tree { padding: 0px 0px; - background: #E8EAEE; + background: white; font-size:14px; overflow:auto; padding-right: 0px !important; margin-right: -5px !important; - background: #E8EAEE !important; } #doc-content { @@ -1280,7 +1267,7 @@ dl.citelist dd { } .ui-resizable-e { - background: #CCC !important; + background: #eaeaea !important; cursor:e-resize; height:100%; right:0; @@ -1314,7 +1301,14 @@ dl.citelist dd { right: 5px; } #nav-sync img { - width: 16px; + width: 10px; + height: 10px; } -} \ No newline at end of file +.mlabels-right { + visibility: hidden; +} + +.groupheader { + color: #FA7622; +} diff --git a/Tools/Documentation/preprocess/001.markdown_readme.sh b/Tools/Documentation/preprocess/001.markdown_readme.sh index 62d153707..0e0dfe139 100755 --- a/Tools/Documentation/preprocess/001.markdown_readme.sh +++ b/Tools/Documentation/preprocess/001.markdown_readme.sh @@ -15,7 +15,7 @@ if [ -n "$markdown" ]; then else processor_msg "markdown binary is not installed, documentation cannot be generated." "red" echo "On Mac OS X, install brew with the following command line:" - echo ' ruby -e "$(curl -fsSL https://gist.github.com/raw/323731/install_homebrew.rb)"' + echo ' ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"' echo "Then use 'brew install markdown' from the command line to install markdown." exit 1 fi diff --git a/Tools/Documentation/preprocess/002.make_headers.sh b/Tools/Documentation/preprocess/002.make_headers.sh index e598f31ef..ea914e3d4 100755 --- a/Tools/Documentation/preprocess/002.make_headers.sh +++ b/Tools/Documentation/preprocess/002.make_headers.sh @@ -28,7 +28,7 @@ bsdtar cf Foundation.doc.tar --exclude='_*' -s /^Foundation/Foundation.doc/ Foun bsdtar xf Foundation.doc.tar rm Foundation.doc.tar -# Remove @import from the source files, doxygen doesn't know what to do with them -processor_msg "Removing @import from source files..." -find AppKit.doc -name *.j -exec sed -e '/@import.*/ d' -i '' {} \; -find Foundation.doc -name *.j -exec sed -e '/@import.*/ d' -i '' {} \; +# Remove @import and @class from the source files, doxygen doesn't know what to do with them +processor_msg "Removing @import and @class from source files..." +find AppKit.doc -name *.j -exec sed -e '/@import.*/ d' -e '/@class.*/ d' -i '' {} \; +find Foundation.doc -name *.j -exec sed -e '/@import.*/ d' -e '/@class.*/ d' -i '' {} \; diff --git a/Tools/Jakefile b/Tools/Jakefile index 40a8a1fb9..d57ab7c6c 100644 --- a/Tools/Jakefile +++ b/Tools/Jakefile @@ -2,6 +2,6 @@ require("../common.jake"); // nib2cib uses fontinfo and imagesize and capp uses nib2cib -subtasks(["fontinfo", "imagesize", "nib2cib", "capp", "dump_theme", "NativeHost", "XcodeCapp"], ["build"/*, "clean", "clobber"*/]); +subtasks(["fontinfo", "imagesize", "nib2cib", "capp", "capp_lint", "dump_theme", "NativeHost", "XcodeCapp"], ["build"/*, "clean", "clobber"*/]); subtasks(["fontinfo", "imagesize"], ["clean", "clobber"]); diff --git a/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj b/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj index 0154116d1..dce859d69 100644 --- a/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj +++ b/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 68A43034191BF044008A68A7 /* help.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 68A43033191BF044008A68A7 /* help.pdf */; }; E10E4CD717298E5F004AB09E /* project.pbxproj in Resources */ = {isa = PBXBuildFile; fileRef = E164FE2A172188F300263CE3 /* project.pbxproj */; }; E14015421740248C006C2792 /* XcodeProjectCloser.m in Sources */ = {isa = PBXBuildFile; fileRef = E14015411740248C006C2792 /* XcodeProjectCloser.m */; }; E1401543174025B8006C2792 /* XcodeProjectCloser.m in Sources */ = {isa = PBXBuildFile; fileRef = E14015411740248C006C2792 /* XcodeProjectCloser.m */; }; @@ -36,7 +37,6 @@ E171D26C173C1C8300210893 /* xcc in CopyFiles */ = {isa = PBXBuildFile; fileRef = E171D25D173C168C00210893 /* xcc */; }; E17A822D172700B90095CD83 /* XcodeCapp.iconset in Resources */ = {isa = PBXBuildFile; fileRef = E17A822C172700B90095CD83 /* XcodeCapp.iconset */; }; E17B55411732F57700809FFB /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E17B55401732F57700809FFB /* Quartz.framework */; }; - E17B55431732F72700809FFB /* help.pdf in Resources */ = {isa = PBXBuildFile; fileRef = E17B55421732F72700809FFB /* help.pdf */; }; E1A5594A172C5EE20088FB61 /* FindSourceFilesOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E1A55949172C5EE20088FB61 /* FindSourceFilesOperation.m */; }; E1A5594D172CA8D40088FB61 /* ProcessSourceOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E1A5594C172CA8D40088FB61 /* ProcessSourceOperation.m */; }; E1E90C411735D846005C6D5B /* DDLogLevel.m in Sources */ = {isa = PBXBuildFile; fileRef = E1E90C391735D846005C6D5B /* DDLogLevel.m */; }; @@ -106,6 +106,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 68A43033191BF044008A68A7 /* help.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = help.pdf; path = Resources/help.pdf; sourceTree = ""; }; E14015401740248C006C2792 /* XcodeProjectCloser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XcodeProjectCloser.h; sourceTree = ""; }; E14015411740248C006C2792 /* XcodeProjectCloser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XcodeProjectCloser.m; sourceTree = ""; }; E164FDCF1720E77100263CE3 /* XcodeCapp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = XcodeCapp.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -140,7 +141,6 @@ E171D264173C168C00210893 /* xcc-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "xcc-Prefix.pch"; sourceTree = ""; }; E17A822C172700B90095CD83 /* XcodeCapp.iconset */ = {isa = PBXFileReference; lastKnownFileType = folder.iconset; name = XcodeCapp.iconset; path = Resources/XcodeCapp.iconset; sourceTree = ""; }; E17B55401732F57700809FFB /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = System/Library/Frameworks/Quartz.framework; sourceTree = SDKROOT; }; - E17B55421732F72700809FFB /* help.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = help.pdf; path = Resources/help.pdf; sourceTree = ""; }; E1A55949172C5EE20088FB61 /* FindSourceFilesOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = FindSourceFilesOperation.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; E1A5594C172CA8D40088FB61 /* ProcessSourceOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = ProcessSourceOperation.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; E1E90C371735D82B005C6D5B /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppController.h; sourceTree = ""; }; @@ -273,6 +273,7 @@ E164FE071720F25400263CE3 /* Resources */ = { isa = PBXGroup; children = ( + 68A43033191BF044008A68A7 /* help.pdf */, E1ED6B6F173414E100641628 /* icon_128x128.png */, E1ED6B70173414E100641628 /* icon_128x128@2x.png */, E164FE2D1721A34900263CE3 /* icon-inactive.png */, @@ -284,7 +285,6 @@ E170C3FF17298833003DC489 /* icon-error.png */, E170C40017298833003DC489 /* icon-error@2x.png */, E17A822C172700B90095CD83 /* XcodeCapp.iconset */, - E17B55421732F72700809FFB /* help.pdf */, E164FE2A172188F300263CE3 /* project.pbxproj */, E164FE191720F49A00263CE3 /* Growl Registration Ticket.growlRegDict */, ); @@ -418,6 +418,7 @@ E10E4CD717298E5F004AB09E /* project.pbxproj in Resources */, E164FE181720F44B00263CE3 /* parser.j in Resources */, E164FE1A1720F49A00263CE3 /* Growl Registration Ticket.growlRegDict in Resources */, + 68A43034191BF044008A68A7 /* help.pdf in Resources */, E164FE2F1721A34900263CE3 /* icon-active.png in Resources */, E164FE301721A34900263CE3 /* icon-inactive.png in Resources */, E164FE311721A34900263CE3 /* icon-working.png in Resources */, @@ -427,7 +428,6 @@ E170C40517298833003DC489 /* icon-error@2x.png in Resources */, E170C40617298833003DC489 /* icon-inactive@2x.png in Resources */, E170C40717298833003DC489 /* icon-working@2x.png in Resources */, - E17B55431732F72700809FFB /* help.pdf in Resources */, E1ED6B71173414E100641628 /* icon_128x128.png in Resources */, E1ED6B72173414E100641628 /* icon_128x128@2x.png in Resources */, E1E90C62173B42D0005C6D5B /* MainMenu.xib in Resources */, diff --git a/Tools/XcodeCapp/XcodeCapp/AppController.m b/Tools/XcodeCapp/XcodeCapp/AppController.m index 8cbb1689b..86aa8c3d7 100644 --- a/Tools/XcodeCapp/XcodeCapp/AppController.m +++ b/Tools/XcodeCapp/XcodeCapp/AppController.m @@ -111,7 +111,7 @@ AppController *SharedAppControllerInstance = nil; [[NSApplication sharedApplication] terminate:self]; return; } - + // If we were opened from the command line, self.pathToOpenAtLaunch will be set. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; @@ -144,13 +144,14 @@ AppController *SharedAppControllerInstance = nil; kDefaultXCCAPIMode: [NSNumber numberWithInt:kXCCAPIModeAuto], kDefaultXCCReactToInodeMod: @YES, kDefaultXCCReopenLastProject: @YES, - kDefaultXCCAutoOpenErrorsPanelOnWarnings: @YES, kDefaultXCCAutoOpenErrorsPanelOnErrors: @YES, + kDefaultXCCAutoOpenErrorsPanelOnCappLint: @YES, + kDefaultXCCAutoShowNotificationOnErrors: @YES, + kDefaultXCCAutoShowNotificationOnCappLint: @YES, kDefaultXCCProjectHistory: [NSArray new], kDefaultMaxRecentProjects: @20, kDefaultLogLevel: [NSNumber numberWithInt:LOG_LEVEL_WARN], kDefaultAutoOpenXcodeProject: @YES, - kDefaultShowProcessingNotices: @YES, kDefaultUseSymlinkWhenCreatingProject: @YES }; @@ -526,4 +527,11 @@ AppController *SharedAppControllerInstance = nil; self.menuItemHistory.enabled = [projectHistory count] > 0; } +#pragma mark - Cappuccino methods + +- (IBAction)updateCappuccino:(id)sender +{ + [self.xcc performSelectorInBackground:@selector(updateCappuccino) withObject:nil]; +} + @end diff --git a/Tools/XcodeCapp/XcodeCapp/Info.plist b/Tools/XcodeCapp/XcodeCapp/Info.plist index 2ac7f472c..7f59ef93d 100644 --- a/Tools/XcodeCapp/XcodeCapp/Info.plist +++ b/Tools/XcodeCapp/XcodeCapp/Info.plist @@ -2,6 +2,10 @@ + XCCLastCappuccinoReleaseURL + https://github.com/cappuccino/cappuccino/archive/0.9.7.zip + XCCLastCappuccinoMasterBranchURL + https://github.com/cappuccino/cappuccino/archive/master.zip CFBundleDevelopmentRegion English CFBundleExecutable @@ -17,11 +21,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 3.0.6 + 3.1 CFBundleSignature ???? CFBundleVersion - 3.0.6 + 3.1 LSApplicationCategoryType public.app-category.developer-tools LSUIElement diff --git a/Tools/XcodeCapp/XcodeCapp/ProcessSourceOperation.m b/Tools/XcodeCapp/XcodeCapp/ProcessSourceOperation.m index e40530853..81e9b7cf6 100644 --- a/Tools/XcodeCapp/XcodeCapp/ProcessSourceOperation.m +++ b/Tools/XcodeCapp/XcodeCapp/ProcessSourceOperation.m @@ -152,12 +152,24 @@ [self postErrorNotificationForPath:self.sourcePath line:0 message:response status:status]; } } - - [self notifyUserWithTitle:notificationTitle message:notificationMessage]; + + if ([self.xcc shouldShowErrorNotification]) + [self notifyUserWithTitle:notificationTitle message:notificationMessage]; } else if (!self.xcc.isLoadingProject) { - [self notifyUserWithTitle:notificationTitle message:notificationMessage]; + BOOL showFinalNotification = YES; + + if ([self.xcc shouldProcessWithCappLint]) + { + showFinalNotification = [self.xcc checkCappLintForPath:[NSArray arrayWithObject:self.sourcePath]]; + + if (!showFinalNotification) + [self.xcc showCappLintErrors]; + } + + if (showFinalNotification) + [self notifyUserWithTitle:notificationTitle message:notificationMessage]; } } @@ -178,7 +190,7 @@ nil]; info[@"projectId"] = self.projectId; - info[@"message"] = [NSString stringWithFormat:@"%@, line %d\n%@", [self.sourcePath lastPathComponent], 0, message]; + info[@"message"] = [NSString stringWithFormat:@"Compilation issue: %@, line %d\n%@", [self.sourcePath lastPathComponent], 0, message]; if (self.isCancelled) return; diff --git a/Tools/XcodeCapp/XcodeCapp/Resources/XcodeCapp help.pages b/Tools/XcodeCapp/XcodeCapp/Resources/XcodeCapp help.pages deleted file mode 100644 index 73b168d3f..000000000 Binary files a/Tools/XcodeCapp/XcodeCapp/Resources/XcodeCapp help.pages and /dev/null differ diff --git a/Tools/XcodeCapp/XcodeCapp/Resources/XcodeCapp help.zip b/Tools/XcodeCapp/XcodeCapp/Resources/XcodeCapp help.zip new file mode 100644 index 000000000..6d110cd89 Binary files /dev/null and b/Tools/XcodeCapp/XcodeCapp/Resources/XcodeCapp help.zip differ diff --git a/Tools/XcodeCapp/XcodeCapp/Resources/help.pdf b/Tools/XcodeCapp/XcodeCapp/Resources/help.pdf index 550ba1d08..d0361b49d 100644 Binary files a/Tools/XcodeCapp/XcodeCapp/Resources/help.pdf and b/Tools/XcodeCapp/XcodeCapp/Resources/help.pdf differ diff --git a/Tools/XcodeCapp/XcodeCapp/UserDefaults.h b/Tools/XcodeCapp/XcodeCapp/UserDefaults.h index 7e7726099..a89476cd0 100644 --- a/Tools/XcodeCapp/XcodeCapp/UserDefaults.h +++ b/Tools/XcodeCapp/XcodeCapp/UserDefaults.h @@ -17,15 +17,17 @@ extern NSString * const kDefaultFirstLaunchVersion; extern NSString * const kDefaultXCCAPIMode; extern NSString * const kDefaultXCCReactToInodeMod; extern NSString * const kDefaultXCCReopenLastProject; -extern NSString * const kDefaultXCCAutoOpenErrorsPanelOnWarnings; extern NSString * const kDefaultXCCAutoOpenErrorsPanelOnErrors; +extern NSString * const kDefaultXCCAutoOpenErrorsPanelOnCappLint; +extern NSString * const kDefaultXCCAutoShowNotificationOnErrors; +extern NSString * const kDefaultXCCAutoShowNotificationOnCappLint; extern NSString * const kDefaultXCCProjectHistory; extern NSString * const kDefaultLastOpenedPath; extern NSString * const kDefaultPathModificationDates; extern NSString * const kDefaultMaxRecentProjects; extern NSString * const kDefaultLogLevel; extern NSString * const kDefaultAutoOpenXcodeProject; -extern NSString * const kDefaultShowProcessingNotices; extern NSString * const kDefaultUseSymlinkWhenCreatingProject; +extern NSString * const kDefaultUpdateCappuccinoWithLastVersionOfMasterBranch; #endif diff --git a/Tools/XcodeCapp/XcodeCapp/UserDefaults.m b/Tools/XcodeCapp/XcodeCapp/UserDefaults.m index 4701d7052..aee5793ae 100644 --- a/Tools/XcodeCapp/XcodeCapp/UserDefaults.m +++ b/Tools/XcodeCapp/XcodeCapp/UserDefaults.m @@ -15,13 +15,15 @@ NSString * const kDefaultFirstLaunchVersion = @"firstLaunchVersion"; NSString * const kDefaultXCCAPIMode = @"XCCAPIMode"; NSString * const kDefaultXCCReactToInodeMod = @"XCCReactMode"; NSString * const kDefaultXCCReopenLastProject = @"XCCReopenLastProject"; -NSString * const kDefaultXCCAutoOpenErrorsPanelOnWarnings = @"XCCAutoOpenErrorsPanelOnWarnings"; NSString * const kDefaultXCCAutoOpenErrorsPanelOnErrors = @"XCCAutoOpenErrorsPanelOnErrors"; +NSString * const kDefaultXCCAutoOpenErrorsPanelOnCappLint = @"XCCAutoOpenErrorsPanelOnCappLint"; +NSString * const kDefaultXCCAutoShowNotificationOnErrors = @"XCCAutoOpenShowNotificationErrors"; +NSString * const kDefaultXCCAutoShowNotificationOnCappLint = @"XCCAutoShowNotificationOnCappLint"; NSString * const kDefaultXCCProjectHistory = @"XCCProjectHistory"; NSString * const kDefaultLastOpenedPath = @"LastOpenedPath"; NSString * const kDefaultPathModificationDates = @"pathModificationDates"; NSString * const kDefaultMaxRecentProjects = @"maxRecentProjects"; NSString * const kDefaultLogLevel = @"logLevel"; NSString * const kDefaultAutoOpenXcodeProject = @"autoOpenXcodeProject"; -NSString * const kDefaultShowProcessingNotices = @"showProcessingNotices"; NSString * const kDefaultUseSymlinkWhenCreatingProject = @"useSymlinkWhenCreatingProject"; +NSString * const kDefaultUpdateCappuccinoWithLastVersionOfMasterBranch = @"updateCappuccinoWithLastVersionOfMasterBranch"; diff --git a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.h b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.h index f6a5df812..09f9ae64f 100644 --- a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.h +++ b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.h @@ -45,7 +45,8 @@ enum { extern NSString * const XCCConversionDidStartNotification; extern NSString * const XCCConversionDidEndNotification; extern NSString * const XCCProjectDidFinishLoadingNotification; - +extern NSString * const XCCCappLintDidStartNotification; +extern NSString * const XCCCappLintDidEndNotification; @interface XcodeCapp : NSObject @@ -100,6 +101,9 @@ extern NSString * const XCCProjectDidFinishLoadingNotification; // Whether we are currently processing source files @property BOOL isProcessing; +// Whether we are currently processing source files +@property BOOL isCappuccinoUpdating; + // Whether $CAPP_BUILD is defined or not @property BOOL isCappBuildDefined; @@ -109,16 +113,24 @@ extern NSString * const XCCProjectDidFinishLoadingNotification; // A list of errors generated from the current batch of source processing @property NSMutableArray *errorList; +// A list of files name who can be processed, based on xcapp-ignore and path pf the project +@property NSMutableArray *xCodeCappTargetedFiles; + // Panel, table and controller used to display errors @property (strong) IBOutlet NSPanel *errorsPanel; @property (unsafe_unretained) IBOutlet NSTableView *errorTable; @property (strong) IBOutlet NSArrayController *errorListController; +@property (strong) IBOutlet NSProgressIndicator *progressIndicator; +@property (strong) IBOutlet NSTextField *fieldCurrentTask; +@property (strong) IBOutlet NSPanel *updatingCappuccinoPanel; + - (IBAction)openErrorsPanel:(id)sender; - (IBAction)clearErrors:(id)sender; - (IBAction)openErrorInEditor:(id)sender; - (IBAction)openXcodeProject:(id)aSender; - (IBAction)synchronizeProject:(id)aSender; +- (IBAction)checkProjectWithCappLint:(id)aSender; - (BOOL)executablesAreAccessible; - (void)stop; @@ -131,6 +143,8 @@ extern NSString * const XCCProjectDidFinishLoadingNotification; - (BOOL)isXibFile:(NSString *)path; - (BOOL)isXCCIgnoreFile:(NSString *)path; +- (BOOL)shouldShowErrorNotification; + - (NSString *)shadowBasePathForProjectSourcePath:(NSString *)path; - (BOOL)hasErrors; @@ -142,6 +156,12 @@ extern NSString * const XCCProjectDidFinishLoadingNotification; - (NSDictionary*)createProject:(NSString*)aPath; +- (BOOL)shouldProcessWithCappLint; +- (BOOL)checkCappLintForPath:(NSArray*)paths; +- (void)showCappLintErrors; + +- (void)updateCappuccino; + @end @interface XcodeCapp (SnowLeopard) diff --git a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m index 9b1e3af35..36ebc6c63 100644 --- a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m +++ b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m @@ -74,6 +74,8 @@ static NSPredicate * XCCDirectoriesToIgnorePredicate = nil; // An array of the default predicates used to ignore paths. static NSArray *XCCDefaultIgnoredPathPredicates = nil; +NSString * const XCCCappLintDidStartNotification = @"XCCCappLintDidStartNotification"; +NSString * const XCCCappLintDidEndNotification = @"XCCCappLintDidEndNotification"; @interface XcodeCapp () @@ -228,7 +230,8 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, @"/usr/local/bin", @"/usr/local/narwhal/bin", @"~/narwhal/bin", - @"~/bin" + @"~/bin", + @"/usr/bin" ]; NSMutableArray *paths = [self.environmentPaths mutableCopy]; @@ -240,8 +243,11 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, // Make sure we are using jsc as the narwhal engine! self.environment[@"NARWHAL_ENGINE"] = @"jsc"; + + // Make sure to not do something in sudo + self.environment[@"CAPP_NOSUDO"] = @"1"; - self.executables = @[@"python", @"narwhal-jsc", @"objj", @"nib2cib", @"capp"]; + self.executables = @[@"python", @"narwhal-jsc", @"objj", @"nib2cib", @"capp", @"capp_lint", @"jake", @"curl", @"unzip", @"rm"]; // This is used to get the env var of $CAPP_BUILD NSDictionary *processEnvironment = [[NSProcessInfo processInfo] environment]; @@ -317,9 +323,10 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, [self clearErrors:self]; [self computeIgnoredPaths]; - + [self prepareXcodeSupport]; [self populateXcodeProject]; + [self populatexCodeCappTargetedFiles]; [self waitForOperationQueueToFinishWithSelector:@selector(projectDidFinishLoading)]; } @@ -372,6 +379,25 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, return projectCompatibilityVersion.doubleValue >= appCompatibilityVersion; } +- (void)populatexCodeCappTargetedFiles +{ + NSFileManager *fm = [NSFileManager defaultManager]; + NSDirectoryEnumerator *filesOfProject = [fm enumeratorAtPath:self.projectPath]; + NSString *filename; + + self.xCodeCappTargetedFiles = [NSMutableArray array]; + + while ((filename = [filesOfProject nextObject] )) { + + NSString *fullPath = [self.projectPath stringByAppendingPathComponent:filename]; + + if (![self isSourceFile:fullPath]) + continue; + + [self.xCodeCappTargetedFiles addObject:fullPath]; + } +} + - (void)createXcodeProject { if ([self.fm fileExistsAtPath:self.xcodeProjectPath]) @@ -729,7 +755,7 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, self.pbxOperations[@"add"] = addPaths; } } - + DDLogVerbose(@"%@ %@", NSStringFromSelector(_cmd), path); } @@ -1243,15 +1269,29 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, #pragma mark - Shell Helpers +/*! + Run an NSTask with the given arguments + + @param launchPath The executable to launch + @param arguments NSArray containing the NSTask arguments + @param returnType Determines whether to return stdout, stderr, either, or nothing in the response + @return NSDictionary containing the return status (NSNumber) and the response (NSString) + */ +- (NSDictionary *)runTaskWithLaunchPath:(NSString *)launchPath arguments:(NSArray *)arguments returnType:(XCCTaskReturnType)returnType +{ + return [self runTaskWithLaunchPath:launchPath arguments:arguments returnType:returnType currentDirectoryPath:nil]; +} + /*! Run an NSTask with the given arguments @param launchPath The executable to launch @param arguments NSArray containing the NSTask arguments @param returnType Determines whether to return stdout, stderr, either, or nothing in the response + @param the currentDirectoryPath for the task @return NSDictionary containing the return status (NSNumber) and the response (NSString) */ -- (NSDictionary *)runTaskWithLaunchPath:(NSString *)launchPath arguments:(NSArray *)arguments returnType:(XCCTaskReturnType)returnType +- (NSDictionary *)runTaskWithLaunchPath:(NSString *)launchPath arguments:(NSArray *)arguments returnType:(XCCTaskReturnType)returnType currentDirectoryPath:(NSString*)aCurrentDirectoryPath { NSTask *task = [NSTask new]; @@ -1260,7 +1300,10 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, task.environment = self.environment; task.standardOutput = [NSPipe pipe]; task.standardError = [NSPipe pipe]; - + + if (aCurrentDirectoryPath) + task.currentDirectoryPath = aCurrentDirectoryPath; + [task launch]; DDLogVerbose(@"Task launched: %@\n%@", launchPath, arguments); @@ -1314,6 +1357,7 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, return YES; } + #pragma mark - Source Files Management - (BOOL)isObjjFile:(NSString *)path @@ -1359,6 +1403,7 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, return [path substringFromIndex:self.projectPath.length + 1]; } + #pragma mark - Shadow Files Management - (NSString *)shadowBasePathForProjectSourcePath:(NSString *)path @@ -1636,17 +1681,56 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, [self runTaskWithLaunchPath:executablePath arguments:args returnType:kTaskReturnTypeNone]; } +- (BOOL)shouldShowErrorNotification +{ + return [[NSUserDefaults standardUserDefaults] boolForKey:kDefaultXCCAutoShowNotificationOnErrors]; +} + +- (BOOL)shouldProcessWithCappLint +{ + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + + return [defaults boolForKey:kDefaultXCCAutoOpenErrorsPanelOnCappLint] + || [defaults boolForKey:kDefaultXCCAutoShowNotificationOnCappLint]; +} + - (void)showErrors { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - if (([defaults boolForKey:kDefaultXCCAutoOpenErrorsPanelOnErrors] && self.hasErrors) || - ([defaults boolForKey:kDefaultXCCAutoOpenErrorsPanelOnWarnings] && self.errorList.count)) + if ([defaults boolForKey:kDefaultXCCAutoOpenErrorsPanelOnErrors] && self.errorList.count) { [self openErrorsPanel:self]; } } +- (void)showCappLintErrors +{ + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + + if ([defaults boolForKey:kDefaultXCCAutoOpenErrorsPanelOnCappLint] && self.errorList.count) + [self openErrorsPanel:self]; + + if ([defaults boolForKey:kDefaultXCCAutoShowNotificationOnCappLint]) + { + NSUInteger numberError = [self.errorList count]; + + if (numberError) + { + NSDictionary *error = [self.errorList objectAtIndex:0]; + NSString *filename = [error objectForKey:@"path"]; + + NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInteger:self.projectId] , @"projectId", + @"Code Style Issues", @"title", + filename.lastPathComponent , @"message", + nil]; + + [self wantUserNotificationWithInfo:dict]; + } + } +} + - (void)pruneProcessingErrorsForProjectPath:(NSString *)path { // Remove all errors for the path being processed @@ -1674,6 +1758,338 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, return index != NSNotFound; } + +#pragma mark - capp_lint + +- (IBAction)checkProjectWithCappLint:(id)aSender +{ + [self clearErrors:self]; + + NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; + [center addObserver:self selector:@selector(cappLintDidEndNotification:) name:XCCCappLintDidEndNotification object:nil]; + + [self performSelectorInBackground:@selector(checkCappLintForPath:) withObject:self.xCodeCappTargetedFiles]; +} + +- (void)cappLintDidEndNotification:(NSNotification*)aNotification +{ + [self showCappLintErrors]; + [[NSNotificationCenter defaultCenter] removeObserver:self name:XCCCappLintDidEndNotification object:nil]; +} + +- (BOOL)checkCappLintForPath:(NSArray*)paths +{ + DDLogVerbose(@"Checking path %@ with capp_lint", paths); + + NSUInteger numberOfFiles = [paths count]; + + if (!numberOfFiles) + return YES; + + self.isProcessing = YES; + [[NSNotificationCenter defaultCenter] postNotificationName:XCCBatchDidStartNotification object:self]; + [[NSNotificationCenter defaultCenter] postNotificationName:XCCCappLintDidStartNotification object:self]; + + NSString *baseDirectory = [NSString stringWithFormat:@"--basedir='%@'", self.projectPath]; + NSMutableArray *arguments = [NSMutableArray arrayWithObjects:baseDirectory, nil]; + [arguments addObjectsFromArray:paths]; + + NSDictionary *taskResult = [self runTaskWithLaunchPath:self.executablePaths[@"capp_lint"] + arguments:arguments + returnType:kTaskReturnTypeStdOut]; + + NSInteger status = [taskResult[@"status"] intValue]; + + if (status == 0) + { + [[NSNotificationCenter defaultCenter] postNotificationName:XCCBatchDidEndNotification object:self]; + [[NSNotificationCenter defaultCenter] postNotificationName:XCCCappLintDidEndNotification object:self]; + return YES; + } + + NSString *response = taskResult[@"response"]; + NSMutableArray *errors = [NSMutableArray arrayWithArray:[response componentsSeparatedByString:@"\n\n"]]; + + // We need to remove the first object who is the number of errors and the last object who is an empty line + [errors removeLastObject]; + [errors removeObjectAtIndex:0]; + + NSInteger numberOfErrors = [errors count]; + NSInteger i = 0; + NSString *path; + NSMutableArray *dicts = [NSMutableArray array]; + + if (numberOfFiles == 1) + path = [paths objectAtIndex:0]; + + for (i = 0; i < numberOfErrors; i++) + { + NSMutableString *error = (NSMutableString*)[errors objectAtIndex:i]; + NSString *line; + NSString *firstCaract = [NSString stringWithFormat:@"%c" ,[error characterAtIndex:0]]; + + if ([[NSScanner scannerWithString:firstCaract] scanInt:nil]) + error = (NSMutableString*)[NSString stringWithFormat:@"%@:%@", path, error]; + + NSInteger positionOfFirstColon = [error rangeOfString:@":"].location; + + if (numberOfFiles > 1) + path = [error substringToIndex:positionOfFirstColon]; + + NSString *errorWithoutPath = [error substringFromIndex:(positionOfFirstColon + 1)]; + NSInteger positionOfSecondColon = [errorWithoutPath rangeOfString:@":"].location; + line = [errorWithoutPath substringToIndex:positionOfSecondColon]; + + NSString *messageError = [NSString stringWithFormat:@"Code style issue: %@ \n%@", path.lastPathComponent, errorWithoutPath]; + + NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt:[line intValue]], @"line", + messageError , @"message", + path, @"path", + nil]; + + [dicts addObject:dict]; + } + + [self performSelectorOnMainThread:@selector(cappLintConversionDidGenerateError:) withObject:dicts waitUntilDone:NO]; + + self.isProcessing = NO; + [[NSNotificationCenter defaultCenter] postNotificationName:XCCBatchDidEndNotification object:self]; + [[NSNotificationCenter defaultCenter] postNotificationName:XCCCappLintDidEndNotification object:self]; + + return NO; +} + +- (void)cappLintConversionDidGenerateError:(NSArray*)errors +{ + [self.errorListController addObjects:errors]; +} + +#pragma mark - Cappuccino update + +- (void)updateCappuccino +{ + [[NSNotificationCenter defaultCenter] postNotificationName:XCCBatchDidStartNotification object:self]; + + [[NSApplication sharedApplication] activateIgnoringOtherApps:YES]; + [self.updatingCappuccinoPanel makeKeyAndOrderFront:self]; + + self.isCappuccinoUpdating = YES; + + [self.progressIndicator startAnimation:self]; + [self.progressIndicator setMaxValue:4]; + [self.progressIndicator setDoubleValue:0]; + + NSString *temporaryFolder = NSTemporaryDirectory(); + + if(![self _hasInitializedUpdateCappuccinoFromFolder:temporaryFolder] || + ![self _hasCleanedInstallOfCappuccinoFromFolder:temporaryFolder] || + ![self _hasInstalledCappuccinoFromFolder:temporaryFolder]) + return; + + [self notifyUserWithTitle:@"Update Cappuccino" message:@"Updating of Cappuccino completed"]; + [self _incrementeProgressBarAndUpdateInformationFieldWithMessage:@"Updating completed"]; + [self.progressIndicator stopAnimation:self]; + self.isCappuccinoUpdating = NO; + + [[NSNotificationCenter defaultCenter] postNotificationName:XCCBatchDidEndNotification object:self]; +} + +- (BOOL)_hasInitializedUpdateCappuccinoFromFolder:(NSString*)aFolder +{ + //Be sure to remove an old install + NSMutableArray *rmArguments = [NSMutableArray arrayWithObjects:@"-r", @"cappuccino", nil]; + [self runTaskWithLaunchPath:self.executablePaths[@"rm"] + arguments:rmArguments + returnType:kTaskReturnTypeAny + currentDirectoryPath:aFolder]; + + + [self _incrementeProgressBarAndUpdateInformationFieldWithMessage:@"Downloading Cappuccino"]; + + // Download the file + NSString *cappuccinoURL; + + if ([[NSUserDefaults standardUserDefaults] boolForKey:kDefaultUpdateCappuccinoWithLastVersionOfMasterBranch]) + cappuccinoURL = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"XCCLastCappuccinoMasterBranchURL"]; + else + cappuccinoURL = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"XCCLastCappuccinoReleaseURL"]; + + NSString *destination = [NSString stringWithFormat:@"%@cappuccino.zip", aFolder]; + NSMutableArray *arguments = [NSMutableArray arrayWithObjects:@"-Lk", cappuccinoURL, @"-o", destination, nil]; + NSDictionary *taskResult = [self runTaskWithLaunchPath:self.executablePaths[@"curl"] + arguments:arguments + returnType:kTaskReturnTypeStdOut]; + + NSInteger status = [taskResult[@"status"] intValue]; + + if (status > 1) + { + [self _updatingCappuccinoFailedWithMessage:@"Unable to download Cappuccino"]; + return NO; + } + + //Unzip the file + NSMutableArray *unzipArguments = [NSMutableArray arrayWithObjects:@"-u", @"-o", @"-q", @"-d", @"cappuccino", @"cappuccino.zip", nil]; + NSDictionary *unzipTaskResult = [self runTaskWithLaunchPath:self.executablePaths[@"unzip"] + arguments:unzipArguments + returnType:kTaskReturnTypeAny + currentDirectoryPath:aFolder]; + + NSInteger unzipStatus = [unzipTaskResult[@"status"] intValue]; + + if (unzipStatus >= 1) + { + DDLogVerbose(@"Unable to unzip Cappuccino"); + [self _updatingCappuccinoFailedWithMessage:@"Unable to unzip Cappuccino"]; + return NO; + } + + return YES; +} + +- (BOOL)_hasCleanedInstallOfCappuccinoFromFolder:(NSString*)aFolder +{ + NSString* path = [self _cappuccinoPathForFolder:aFolder]; + + [self _incrementeProgressBarAndUpdateInformationFieldWithMessage:@"Jake clobber"]; + + //Jake clobber + NSMutableArray *jakeClobberArguments = [NSMutableArray arrayWithObjects:@"clobber", nil]; + NSDictionary *jakeClobberTaskResult = [self runJakeTaskWithArguments:jakeClobberArguments currentDirectoryPath:path]; + + NSInteger jakeInstallStatus = [jakeClobberTaskResult[@"status"] intValue]; + + if (jakeInstallStatus == 1) + { + DDLogVerbose(@"Jake clobber failed: %@", jakeClobberTaskResult[@"response"]); + [self _updatingCappuccinoFailedWithMessage:@"Jake clobber failed"]; + return NO; + } + + return YES; +} + +- (BOOL)_hasInstalledCappuccinoFromFolder:(NSString*)aFolder +{ + NSString* path = [self _cappuccinoPathForFolder:aFolder]; + + [self _incrementeProgressBarAndUpdateInformationFieldWithMessage:@"Jake install"]; + + //Jake install + NSMutableArray *jakeInstallArguments = [NSMutableArray arrayWithObjects:@"install", nil]; + NSDictionary *jakeInstallTaskResult = [self runJakeTaskWithArguments:jakeInstallArguments currentDirectoryPath:path]; + + NSInteger jakeInstallStatus = [jakeInstallTaskResult[@"status"] intValue]; + + if (jakeInstallStatus == 1) + { + DDLogVerbose(@"Jake install failed: %@", jakeInstallTaskResult[@"response"]); + [self _updatingCappuccinoFailedWithMessage:@"Jake install failed"]; + return NO; + } + + return YES; +} + +- (NSDictionary*)runJakeTaskWithArguments:(NSMutableArray*)arguments currentDirectoryPath:(NSString*)aCurrentDirectoryPath +{ + NSString *launchPath = self.executablePaths[@"jake"]; + + NSTask *task = [NSTask new]; + + task.launchPath = launchPath; + task.arguments = arguments; + task.environment = self.environment; + task.standardOutput = [NSPipe new]; + task.standardError = [NSPipe new]; + + if (aCurrentDirectoryPath) + task.currentDirectoryPath = aCurrentDirectoryPath; + + // This is needed to log the jake + NSFileHandle* fhOut = [task.standardOutput fileHandleForReading]; + [fhOut readInBackgroundAndNotify]; + NSFileHandle* fhErr = [task.standardError fileHandleForReading]; + [fhErr readInBackgroundAndNotify]; + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(jakeReceivedData:) name:NSFileHandleReadCompletionNotification object:fhOut]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(jakeReceivedError:) name:NSFileHandleReadCompletionNotification object:fhErr]; + + [task launch]; + + DDLogVerbose(@"Task launched: %@\n%@", launchPath, arguments); + + [task waitUntilExit]; + + DDLogVerbose(@"Task exited: %@:%d", launchPath, task.terminationStatus); + + NSNumber *status = [NSNumber numberWithInt:task.terminationStatus]; + NSData *data = nil; + + if ([status intValue] == 0) + data = [[task.standardOutput fileHandleForReading] availableData]; + else + data = [[task.standardError fileHandleForReading] availableData]; + + NSString *response = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; + + [[NSNotificationCenter defaultCenter] removeObserver:self name:NSFileHandleReadCompletionNotification object:fhOut]; + [[NSNotificationCenter defaultCenter] removeObserver:self name:NSFileHandleReadCompletionNotification object:fhErr]; + + return @{@"status" : status, @"response" : response}; +} + +-(void)jakeReceivedData:(NSNotification*)notification +{ + NSData *data = [[notification userInfo] objectForKey:NSFileHandleNotificationDataItem]; + NSString *string = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; + + DDLogVerbose(@"%@", string); + + [[notification object] readInBackgroundAndNotify]; +} + +-(void)jakeReceivedError:(NSNotification*)notification +{ + NSData *data = [[notification userInfo] objectForKey:NSFileHandleNotificationDataItem]; + NSString *string = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; + + DDLogVerbose(@"%@", string); +} + +/*! + This return the current path where the tmp cappuccino was downloaded + */ +- (NSString*)_cappuccinoPathForFolder:(NSString*)aFolder +{ + NSFileManager *fileManger = [NSFileManager defaultManager]; + NSString *contentOfCappuccinoFolder = [[fileManger contentsOfDirectoryAtPath:[NSString stringWithFormat:@"%@cappuccino", aFolder] error:nil] firstObject]; + + return [NSString stringWithFormat:@"%@cappuccino/%@", aFolder, contentOfCappuccinoFolder]; +} + +- (void)_incrementeProgressBarAndUpdateInformationFieldWithMessage:(NSString*)aString +{ + double currentValue = [self.progressIndicator doubleValue]; + [self.progressIndicator setDoubleValue:++currentValue]; + + [self.fieldCurrentTask setStringValue:[NSString stringWithFormat:@"Step %.0f/%.0f : %@", [self.progressIndicator doubleValue], [self.progressIndicator maxValue], aString]]; +} + +- (void)_updatingCappuccinoFailedWithMessage:(NSString*)aMessage +{ + [self.progressIndicator stopAnimation:self]; + [self.progressIndicator setDoubleValue:0]; + [self.fieldCurrentTask setStringValue:[NSString stringWithFormat:@"Issue : %@", aMessage]]; + + [self notifyUserWithTitle:@"Error updating Cappuccino" message:aMessage]; + + self.isCappuccinoUpdating = NO; + [[NSNotificationCenter defaultCenter] postNotificationName:XCCBatchDidEndNotification object:self]; +} + + #pragma mark - User notifications - (NSString *)applicationNameForGrowl @@ -1713,8 +2129,7 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, if ([info[@"projectId"] intValue] != self.projectId) return; - if ([[NSUserDefaults standardUserDefaults] boolForKey:kDefaultShowProcessingNotices]) - [self notifyUserWithTitle:info[@"title"] message:info[@"message"]]; + [self notifyUserWithTitle:info[@"title"] message:info[@"message"]]; } - (BOOL)userNotificationCenter:(NSUserNotificationCenter *)center shouldPresentNotification:(NSUserNotification *)notification @@ -1723,6 +2138,14 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, return YES; } +- (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification +{ + if ([self.errorList count]) + [self openErrorsPanel:self]; + + [center removeDeliveredNotification:notification]; +} + @end diff --git a/Tools/XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib b/Tools/XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib index 3fa8d38e3..3efdd46af 100644 --- a/Tools/XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib +++ b/Tools/XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib @@ -2,13 +2,13 @@ 1060 - 12E55 - 4457.6 - 1187.39 - 626.00 + 13C1021 + 5056 + 1265.19 + 697.40 - 4457.6 - 3330 + 5056 + 5056 NSArrayController @@ -22,6 +22,7 @@ NSMenuItem NSPopUpButton NSPopUpButtonCell + NSProgressIndicator NSScrollView NSScroller NSTableColumn @@ -41,200 +42,228 @@ PluginDependencyRecalculationVersion
- - + + NSApplication - + FirstResponder - + NSApplication - + NSFontManager - + - - + + Create Project... 2147483647 - + NSImage NSMenuCheckmark - + NSImage NSMenuMixedState - - + + Open Project… 2147483647 - - + + - - + + Open Recent 2147483647 - - + + - - + + Open Xcode Project 2147483647 - - + + 1 - - + + YES YES 2147483647 - - + + - - + + + Check Project Code Style + + 2147483647 + + + + + Synchronize Project 2147483647 - - + + - - + + Show in %@ 2147483647 - - + + - - + + YES YES 2147483647 - - + + - - + + Show Errors & Warnings 2147483647 - - + + - - + + YES YES 2147483647 - - + + - - + + + Update Cappuccino + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + About XcodeCapp... 2147483647 - - + + - - + + Preferences… 2147483647 - - + + - - + + XcodeCapp Help 2147483647 - - + + 7 - - + + YES YES 2147483647 - - + + - - + + Quit XcodeCapp 2147483647 - - + + - + AppController - + 3 2 - {{196, 240}, {402, 202}} - 1685586944 + {{196, 240}, {402, 247}} + 1618478080 About NSPanel - - - 1792 + + + 256 - - - 1804 - - {{164, 20}, {203, 98}} - + + + 268 + {{164, 20}, {203, 143}} + + + YES - + 68157504 4326400 WGNvZGVDYXBwIDMgZGV2ZWxvcGVkIGJ5OgogICAgQXBhcmFqaXRhIEZpc2htYW4KICAgIGFwYXJhaml0 -YUBhcGFyYWppdGEuY29tCgpPcmlnaW5hbCBDb2NvYSB2ZXJzaW9uIGRldmVsb3BlZCBieToKICAgIEFu -dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA +YUBhcGFyYWppdGEuY29tCiAgICAKICAgIEFsZXhhbmRyZSBXaWxoZWxtCiAgICBhbGV4YW5kcmUud2ls +aGVsbWZyQGdtYWlsLmNvbQoKT3JpZ2luYWwgQ29jb2EgdmVyc2lvbiBkZXZlbG9wZWQgYnk6CiAgICBB +bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ - LucidaGrande + .LucidaGrandeUI 11 3100 - - + + 6 System textBackgroundColor - + 3 MQA @@ -245,15 +274,17 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA NO + 1 - - - 1802 - - {{164, 126}, {221, 74}} - + + + 266 + {{164, 171}, {221, 74}} + + + YES - + 68157504 4326400 XcodeCapp 3.0.0 @@ -262,12 +293,12 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA 18 16 - - + + 6 System controlColor - + 3 MC42NjY2NjY2NjY3AA @@ -276,18 +307,18 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA 6 System textColor - + 3 MAA NO + 1 - - - 1804 - + + + 268 Apple PDF pasteboard type Apple PICT pasteboard type @@ -296,10 +327,12 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA NeXT Encapsulated PostScript v1.2 pasteboard type NeXT TIFF v4.0 pasteboard type - {{17, 63}, {128, 128}} - + {{17, 108}, {128, 128}} + + + YES - + 0 33554432 @@ -315,52 +348,54 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA YES - - {402, 202} + {402, 247} + + + - {{0, 0}, {2560, 1418}} + {{0, 0}, {1440, 878}} {10000000000000, 10000000000000} NO - + 15 2 {{1826, 825}, {550, 237}} - 1685586944 - Errors & Warnings + 1618478080 + Reporting NSPanel {315, 77} - + - 1792 + 256 - - - 1810 + + + 274 - - - 3858 + + + 2322 - - - 1792 - + + + 256 {550, 201} - + + YES NO YES - -2147481856 + 256 {15, 20} - + error 536 40 @@ -378,36 +413,36 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA 6 System headerTextColor - + - + 69206081 2304 Text Cell - - + + 6 System controlBackgroundColor - + - + 6 System controlTextColor - + 1 YES - + 14 10 - + 1 MSAxIDEgMAA @@ -425,73 +460,72 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA {{1, 1}, {550, 201}} - + - - - + + + 4 - - - -2147481856 - + + + -2147483392 {{1, 273}, {512, 16}} - + + NO 1 - + _doScroller: - - - -2147481856 - + + + -2147483392 {{535, 1}, {16, 45}} - + + NO - + _doScroller: - {{-1, 35}, {552, 203}} - + - + 133682 - - - + + + QSAAAEEgAABCIAAAQiAAAA 0.25 4 1 - - - 1825 - + + + 289 {{352, 8}, {85, 19}} - + + {250, 750} YES - + -2080374784 134217728 Clear - - LucidaGrande + + .LucidaGrandeUI 12 - 4883 + 787 - + -2038284288 164 - + 400 @@ -499,24 +533,24 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA NO - - - 1828 - + + + 292 {{20, 8}, {85, 19}} - + + {250, 750} YES - + -1543503872 134217728 Open - - + + -2038284288 164 - + 400 @@ -524,24 +558,24 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA NO - - - 1825 - + + + 289 {{445, 8}, {85, 19}} - + + {250, 750} YES - + -2080374784 134217728 Close - - + + -2038284288 164 - + 400 @@ -550,63 +584,63 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA NO - {550, 237} + - {{0, 0}, {2560, 1418}} + {{1440, -180}, {1920, 1058}} {315, 99} {10000000000000, 10000000000000} errorPanel YES - + 3 2 - {{1964, 505}, {431, 321}} - 1685586944 + {{1964, 505}, {369, 415}} + 1618478080 Preferences NSWindow - + - 1792 + 256 - - - 1548 + + + 12 - - - 1810 + + + 274 - - - 1804 - + + + 268 {{16, 81}, {271, 18}} - + + YES - + -2080374784 0 Load the most recent project on launch - - LucidaGrande + + .LucidaGrandeUI 13 1044 - + 1211912448 2 - + NSImage NSSwitch - + NSSwitch @@ -616,24 +650,24 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA NO - - - 1804 - + + + 268 {{16, 51}, {241, 18}} - + + YES - + -2080374784 0 Automatically open Xcode projects - - + + 1211912448 2 - - + + 400 @@ -641,24 +675,24 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA NO - - - 1804 - + + + 268 {{16, 109}, {298, 18}} - + + YES - + -2080374784 0 Symlink frameworks when creating projects - - + + 1211912448 2 - - + + 400 @@ -666,46 +700,47 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA NO - - - 1804 - + + + 268 {{15, 20}, {106, 17}} - + + YES - + 68157504 272630784 Recent projects: - - - - + + + + NO + 1 - - - 1804 - + + + 268 {{124, 14}, {56, 26}} - + + YES - + -2076180416 2048 - LucidaGrande + .LucidaGrandeUI 13 1301 - + 109199360 129 - LucidaGrande + .LucidaGrandeUI 13 16 @@ -713,45 +748,45 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA 400 75 - - + + 30 1048576 2147483647 1 - - + + _popUpItemAction: - + YES - + OtherViews - - + + 10 1048576 2147483647 - - + + _popUpItemAction: - + - - + + 20 1048576 2147483647 - - + + _popUpItemAction: - + - + 2 @@ -763,64 +798,64 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA NO - - {{1, 1}, {395, 139}} - + {{1, 1}, {330, 139}} + + - - {{17, 151}, {397, 155}} - + {{17, 245}, {332, 155}} + + {0, 0} 67108864 134217728 Projects - + LucidaGrande 11 16 - + 3 MCAwLjgAA - + 1 0 2 NO - - - 1548 + + + 12 - - - 1810 + + + 274 - - - 1804 - - {{16, 73}, {363, 18}} - + + + 268 + {{146, 12}, {171, 18}} + + YES - + -2080374784 0 - Show notifications when individual files are processed - - + Open reporting window + + 1211912448 2 - - + + 400 @@ -828,158 +863,309 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA NO - - - 1804 - - {{35, 17}, {81, 18}} - + + + 268 + {{16, 39}, {126, 17}} + + YES - - -2080374784 - 0 - Warnings - - - 1211912448 - 2 - - - - - 400 - 75 - - NO - - - - 1804 - - {{137, 17}, {60, 18}} - - - YES - - -2080374784 - 0 - Errors - - - 1211912448 - 2 - - - - - 400 - 75 - - NO - - - - 1804 - - {{16, 43}, {306, 17}} - - - YES - + 68157504 272630784 - Automatically open Errors & Warnings panel on: - - - - + Compilation issues: + + + + + + NO + 1 + + + + 268 + {{146, 38}, {171, 18}} + + + + YES + + -2080374784 + 0 + Show notification + + + 1211912448 + 2 + + + + + 400 + 75 NO - - {{1, 1}, {395, 104}} - + {{1, 1}, {330, 66}} + + - - {{17, 16}, {397, 120}} - + {{17, 159}, {332, 82}} + + {0, 0} 67108864 134217728 File processing - - + + 3 MCAwLjgAA - + + 1 + 0 + 2 + NO + + + + 12 + + + + 274 + + + + 268 + {{146, 12}, {171, 18}} + + + + YES + + -2080374784 + 0 + Open reporting window + + + 1211912448 + 2 + + + + + 400 + 75 + + NO + + + + 268 + {{146, 37}, {171, 18}} + + + + YES + + -2080374784 + 0 + Show notification + + + 1211912448 + 2 + + + + + 400 + 75 + + NO + + + + 268 + {{16, 38}, {126, 17}} + + + + YES + + 68157504 + 272630784 + Code style issues: + + + + + + NO + 1 + + + {{1, 1}, {333, 65}} + + + + _NS:11 + + + {{17, 74}, {335, 81}} + + + + _NS:9 + {0, 0} + + 67108864 + 0 + Code style + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 2 + NO + + + + 12 + + + + 274 + + + + 268 + {{16, 12}, {226, 18}} + + + + YES + + -2080374784 + 0 + Use latest master branch version + + + 1211912448 + 2 + + + + + 400 + 75 + + NO + + + {{1, 1}, {333, 38}} + + + + + + {{17, 16}, {335, 54}} + + + + {0, 0} + + 67108864 + 134217728 + Update + + + + 3 + MCAwLjgAA + + + 1 0 2 NO - - {431, 321} + {369, 415} + - {{0, 0}, {2560, 1418}} + {{1440, -180}, {1920, 1058}} {10000000000000, 10000000000000} xcc-prefs YES - + 15 2 - {{163, 199}, {716, 654}} - 1685586944 + {{163, 199}, {716, 662}} + 1618478080 XcodeCapp Help NSWindow - - - 1792 + + + 256 - - - 1554 + + + 18 - NSFilenamesPboardType - {716, 654} - + {{0, 8}, {716, 654}} + + + + YES 1 NO 1 YES - - {716, 654} + {716, 662} + + + - {{0, 0}, {2560, 1418}} + {{0, 0}, {1440, 878}} {10000000000000, 10000000000000} YES - + YES - + XcodeCapp - + message file @@ -990,322 +1176,457 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA YES YES + + 7 + 2 + {{139, 81}, {357, 84}} + 1685586944 + Updating Cappuccino + NSPanel + + + + + 256 + + + + 268 + {{18, 22}, {251, 17}} + + + _NS:397 + {251, 750} + YES + + 68157504 + 272630784 + Step 1/5 : Downloading Cappuccino + + _NS:397 + + + + + NO + 1 + + + + 268 + {{269, 13}, {74, 32}} + + _NS:9 + YES + + 67108864 + 134217728 + Close + + _NS:9 + + -2038284288 + 129 + + Gw + 200 + 25 + + NO + + + + 268 + {{20, 45}, {317, 20}} + + + _NS:9 + {250, 250} + 16397 + 5 + + + {357, 84} + + _NS:21 + + {{0, 0}, {1440, 878}} + {10000000000000, 10000000000000} + updatingCappuccinoPanel + YES + NO + + + delegate + + + + 694 + terminate: - - + + 695 delegate - - - - 694 - - - - delegate - - + + 874 createProject: - - + + kGC-iR-GHt loadProject: - - + + 864 + + + showInFinder: + + + + 872 + openAbout: - - + + 615 - - - openHelp: - - - - 612 - openPreferences: - - + + 796 - showInFinder: - - + openHelp: + + - 872 + 612 aboutWindow - - + + 613 helpView - - + + 858 helpWindow - - + + 610 menuItemHistory - - + + 621 menuItemOpenProject - - + + 869 menuItemOpenXcodeProject - - + + 873 menuItemShowInFinder - - + + 871 preferencesController - - + + 616 preferencesWindow - - + + 795 statusMenu - - + + 607 xcc - - + + 617 + + + updateCappuccino: + + + + M7T-qw-MgB + performClose: - - + + 625 save: - - + + 634 save: - - - - 792 - - - - save: - - - - 821 - - - - save: - - + + 841 save: - - + + + + Qld-lL-7rM + + + + save: + + 849 save: - - + + - 854 + 821 save: - - + + - Qld-lL-7rM + Buu-6t-pce - clearErrors: - - + save: + + - 751 + XTE-kN-O4x - openErrorInEditor: - - + save: + + - 786 + 6Xe-Bt-eXK - openErrorsPanel: - - + save: + + - 774 + 30N-ga-LBo openXcodeProject: - - + + 866 synchronizeProject: - - + + 867 + + + openErrorsPanel: + + + + 774 + + + + checkProjectWithCappLint: + + + + cNV-We-Why + + + + clearErrors: + + + + 751 + + + + openErrorInEditor: + + + + 786 + clearErrors - - + + 749 errorListController - - + + 760 errorsPanel - - + + 775 symlinkRadioButton - - + + UhG-7c-NP8 errorTable - - + + 748 + + + fieldCurrentTask + + + + P4O-YG-v1J + + + + progressIndicator + + + + Z7k-63-Ujv + + + + updatingCappuccinoPanel + + + + HJ3-bt-3EP + values.XCCReopenLastProject - - + + - - + + value: values.XCCReopenLastProject value values.XCCReopenLastProject @@ -1318,22 +1639,14 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA 636 - - - dataSource - - - - 752 - errorTable - - - - - + + + + + doubleClickArgument: errorTable doubleClickArgument errorTable @@ -1349,19 +1662,19 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA delegate - - + + 753 self - - + + - - + + doubleClickTarget: self doubleClickTarget self @@ -1369,20 +1682,28 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA NSSelectorName openErrorInEditor: - + 2 788 + + + dataSource + + + + 752 + arrangedObjects.message - - + + - - + + value: arrangedObjects.message value arrangedObjects.message @@ -1394,11 +1715,11 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA bundleVersion - - + + - - + + displayPatternValue1: bundleVersion displayPatternValue1 bundleVersion @@ -1414,11 +1735,11 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA projectPath.length - - - - - + + + + + enabled: projectPath.length enabled projectPath.length @@ -1430,15 +1751,15 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA xcodeProjectCanBeOpened - - + + - - + + enabled: xcodeProjectCanBeOpened enabled xcodeProjectCanBeOpened - + 2 @@ -1447,11 +1768,11 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA selection.@count - - + + - - + + enabled: selection.@count enabled selection.@count @@ -1463,11 +1784,11 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA errorList - - + + - - + + contentArray: errorList contentArray errorList @@ -1476,34 +1797,14 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA 762 - - - values.XCCAutoOpenErrorsPanelOnWarnings - - - - - - value: values.XCCAutoOpenErrorsPanelOnWarnings - value - values.XCCAutoOpenErrorsPanelOnWarnings - - NSValidatesImmediately - - - 2 - - - 823 - values.maxRecentProjects - - + + - - + + selectedValue: values.maxRecentProjects selectedValue values.maxRecentProjects @@ -1515,11 +1816,11 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA projectPath.length - - + + - - + + enabled: projectPath.length enabled projectPath.length @@ -1531,11 +1832,11 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA values.XCCAutoOpenErrorsPanelOnErrors - - + + - - + + value: values.XCCAutoOpenErrorsPanelOnErrors value values.XCCAutoOpenErrorsPanelOnErrors @@ -1551,11 +1852,11 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA values.autoOpenXcodeProject - - + + - - + + value: values.autoOpenXcodeProject value values.autoOpenXcodeProject @@ -1568,34 +1869,14 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA 851 - - - values.showProcessingNotices - - - - - - value: values.showProcessingNotices - value - values.showProcessingNotices - - NSValidatesImmediately - - - 2 - - - 856 - projectPath.length - - + + - - + + enabled: projectPath.length enabled projectPath.length @@ -1607,11 +1888,11 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA isCappBuildDefined - - + + - - + + enabled: isCappBuildDefined enabled isCappBuildDefined @@ -1623,11 +1904,11 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA toolTipSymlinkRadioButton - - + + - - + + toolTip: toolTipSymlinkRadioButton toolTip toolTipSymlinkRadioButton @@ -1639,11 +1920,11 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA values.useSymlinkWhenCreatingProject - - + + - - + + value: values.useSymlinkWhenCreatingProject value values.useSymlinkWhenCreatingProject @@ -1656,518 +1937,767 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA aRN-Fd-MPN + + + value: values.XCCAutoOpenErrorsPanelOnCappLint + + + + + + value: values.XCCAutoOpenErrorsPanelOnCappLint + value + values.XCCAutoOpenErrorsPanelOnCappLint + + NSValidatesImmediately + + + 2 + + + du5-hg-MfC + + + + orderOut: + + + + dP2-Fc-one + + + + value: values.updateCappuccinoWithLastVersionOfMasterBranch + + + + + + value: values.updateCappuccinoWithLastVersionOfMasterBranch + value + values.updateCappuccinoWithLastVersionOfMasterBranch + + NSValidatesImmediately + + + 2 + + + 1fo-ym-Q0u + + + + projectPath.length + + + + + + enabled: projectPath.length + enabled + projectPath.length + 2 + + + b84-dT-kSk + + + + value: values.XCCAutoShowNotificationOnCappLint + + + + + + value: values.XCCAutoShowNotificationOnCappLint + value + values.XCCAutoShowNotificationOnCappLint + + NSValidatesImmediately + + + 2 + + + uwx-aq-p86 + + + + value: values.XCCAutoOpenShowNotificationErrors + + + + + + value: values.XCCAutoOpenShowNotificationErrors + value + values.XCCAutoOpenShowNotificationErrors + + NSValidatesImmediately + + + 2 + + + j0c-o6-KBW + + + + enabled: isCappuccinoUpdating + + + + + + enabled: isCappuccinoUpdating + enabled + isCappuccinoUpdating + + NSValueTransformerName + NSNegateBoolean + + 2 + + + aof-Pn-nzf + 0 - + -2 - + File's Owner -1 - + First Responder -3 - + Application 420 - + 538 - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + itE-v1-Sv4 - - + + 605 - - + + 597 - - + + 606 - - + + 859 - - + + 811 - - + + 860 - - + + 603 - - + + 604 - - + + + + + PcB-xW-jUW + + 598 - - + + 600 - - + + 537 - - + + 601 - - + + 599 - - + + 602 - - + + 539 - + 540 - + - + 592 - + - - - + + + - + 593 - + - + - + 596 - - + + 594 - + - + - + 595 - - + + 797 - + - + - + 798 - - + + 541 - + - + 581 - + - - - - + + + + - + 582 - + - - - + + + - + 588 - - + + 589 - - + + 584 - + - + - + 585 - - + + 754 - + - + - + 755 - - + + 583 - + - + - + 586 - - + + 542 - + - + 558 - + - - + + + + - + 847 - + - - - - - + + + + + - + 563 - + - + - + 576 - - + + 839 - + - + - + 840 - - + + 1qI-ol-J5k - + - + - + 272-W8-Ygy - - + + 801 - + - + - + 802 - - + + 803 - + - + - + 804 - + - + - + 805 - + - - - + + + - + 806 - - + + 807 - - + + 808 - - + + 848 - + - - - - + + + - - - - 843 - - - - - - - - 844 - - - - - 789 - - - - - - - - 790 - - + 819 - + - + - + 820 - - + + 817 - + - + - + 818 - - - - - 543 - - - - - - - - 553 - - - - - - - - 857 - - + + 544 - + 545 - + XCodeCapp 759 - + Errors Controller 587 - + - + - + 590 - + - + - + 591 - - + + + + + 543 + + + + + + + + 553 + + + + + + + + 857 + + + + + iiD-Nj-M6o + + + + + + + + BYW-Rk-rZ4 + + + + + qFm-3c-NH7 + + + + + + + + + + 2M5-3o-Zwl + + + + + + + + sZm-jR-Tet + + + + + QAd-SJ-XIV + + + + + + + + ptR-WM-qet + + + + + cwr-C6-dkY + + + + + + + + dTw-kK-6IJ + + + + + M7S-MC-N7d + + + + + + + + GR3-Dn-qSe + + + + + + + + LOW-1X-7ih + + + + + om5-3M-ZoK + + + + + ubl-jf-ybu + + + + + 8BD-V9-Gcp + + + + + + + + E18-tY-KOl + + + + + + + + + + 9wn-zh-iT9 + + + + + + + + 5vI-kk-gfO + + + + + D0i-5i-RLQ + + + + + + + + KxJ-gX-jZV + + + + + o12-G8-NOm + + @@ -2178,11 +2708,24 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + When an error or warning occurs, automatically open the Errors & Warnings panel + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -2217,6 +2760,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin @@ -2228,9 +2772,11 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin @@ -2238,12 +2784,15 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin @@ -2254,9 +2803,11 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin @@ -2270,6 +2821,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -2284,6 +2836,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin @@ -2291,29 +2844,19 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA com.apple.InterfaceBuilder.CocoaPlugin - - ToolTip - - ToolTip - - When an error or warning occurs, automatically open the Errors & Warnings panel - - - com.apple.InterfaceBuilder.CocoaPlugin - - - com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin @@ -2329,6 +2872,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin @@ -2338,10 +2882,11 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA ToolTip ToolTip - + When an error or warning occurs, automatically open the Errors & Warnings panel + com.apple.InterfaceBuilder.CocoaPlugin @@ -2351,28 +2896,16 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA ToolTip ToolTip - + If this is checked, when a Cappuccino project is opened, the project’s Xcode support project will be opened automatically + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - ToolTip - - ToolTip - - If this is checked, when a Cappuccino project is opened, the project’s Xcode support project will be opened automatically - - - com.apple.InterfaceBuilder.CocoaPlugin - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin @@ -2386,8 +2919,73 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + If this is checked, xCodeCapp will take the last version of Cappuccino on the master branch to install Cappuccino + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + + ToolTip + + ToolTip + + When an error or warning occurs, automatically open the Errors & Warnings panel + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + + ToolTip + + ToolTip + + When an error or warning occurs, automatically open the Errors & Warnings panel + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin @@ -2406,6 +3004,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA id id id + id @@ -2432,6 +3031,10 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA showInFinder: id + + updateCappuccino: + id + NSPanel @@ -2496,6 +3099,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA XcodeCapp NSObject + id id id id @@ -2503,6 +3107,10 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA id + + checkProjectWithCappLint: + id + clearErrors: id @@ -2528,6 +3136,9 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA NSArrayController NSTableView NSPanel + NSTextField + NSProgressIndicator + NSPanel @@ -2542,6 +3153,18 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA errorsPanel NSPanel + + fieldCurrentTask + NSTextField + + + progressIndicator + NSProgressIndicator + + + updatingCappuccinoPanel + NSPanel + IBProjectSource @@ -2552,6 +3175,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA 0 IBCocoaFramework + YES com.apple.InterfaceBuilder.CocoaPlugin.macosx diff --git a/Tools/capp_lint/Jakefile b/Tools/capp_lint/Jakefile new file mode 100644 index 000000000..fd6dd3750 --- /dev/null +++ b/Tools/capp_lint/Jakefile @@ -0,0 +1,12 @@ + +require ("../../common.jake"); + +var OS = require("os"), + task = require("jake").task; + +task ("build", function() +{ + sudo(["./install.sh"]); +}); + +task ("default", ["build"]); \ No newline at end of file diff --git a/Tools/capp_lint/capp_lint b/Tools/capp_lint/capp_lint index 248adadc1..13e45e124 100755 --- a/Tools/capp_lint/capp_lint +++ b/Tools/capp_lint/capp_lint @@ -281,7 +281,7 @@ class LintChecker(object): }, { # Filter out possible = within @accessors - 'filter': {'regex': re.compile(ur'^\s*(?:@outlet\s+)?[a-zA-Z_$]\w*\s+[a-zA-Z_$]\w*\s+@accessors\b'), 'pass': False}, + 'filter': {'regex': re.compile(ur'^\s*(?:@outlet\s+)?[a-zA-Z_$]\w*\s+(<\s*[a-zA-Z_$]*\s*>\s+)?[a-zA-Z_$]\w*\s+@accessors\b'), 'pass': False}, 'preprocess': STD_IGNORES, 'regex': re.compile(ur'(?<=[\w)\]"\']|([ ]))(=|[-+*/%^&|]=|<<=|>>>?=)(?=[\w({\["\']|(?(1)\b\b|[ ]))'), @@ -291,7 +291,7 @@ class LintChecker(object): }, { # Filter out @import statements and @implementation/method declarations - 'filter': {'regex': re.compile(ur'^(@import\b|@implementation\b|\s*' + METHOD_RE + ')'), 'pass': False}, + 'filter': {'regex': re.compile(ur'^(@import\b|@implementation\b|@protocol\b|\s*' + METHOD_RE + ')|([a-zA-Z_$]*\s+<\s*[a-zA-Z_$]*\s*>)'), 'pass': False}, 'preprocess': STD_IGNORES, 'regex': re.compile(ur'(?<=[\w)\]"\']|([ ]))(===?|!==?|[<>]=?)(?=[\w({\["\']|(?(1)\b\b|[ ]))'), @@ -299,6 +299,13 @@ class LintChecker(object): 'showPositionForGroup': 2, 'type': ERROR_TYPE_WARNING }, + { + 'preprocess': STD_IGNORES, + 'regex': re.compile(ur'^(.*<\s+[a-zA-Z_$]*>.*)|(.*<[a-zA-Z_$]*\s+>.*)|(.*<\s+[a-zA-Z_$]*\s+>.*)'), + 'error': 'bracket operator with extra spaces', + 'showPositionForGroup': 0, + 'type': ERROR_TYPE_WARNING + }, { 'regex': re.compile(ur'^(\s+)' + METHOD_RE + '|^\s*[-+](\()[a-zA-Z_$][\w]*\)\s*[a-zA-Z_$]\w*|^\s*[-+]\s*\([a-zA-Z_$][\w]*\)(\s+)[a-zA-Z_$]\w*'), 'error': 'extra or missing space in a method declaration', diff --git a/Tools/capp_lint/install.sh b/Tools/capp_lint/install.sh index 40a90bb50..73ac9a904 100755 --- a/Tools/capp_lint/install.sh +++ b/Tools/capp_lint/install.sh @@ -2,14 +2,14 @@ chmod +x capp_lint -if [[ ! -d /usr/local/bin ]]; then - sudo mkdir -p /usr/local/bin +if [[ ! -d /usr/local/narwhal/bin ]]; then + mkdir -p /usr/local/narwhal/bin fi -sudo cp capp_lint /usr/local/bin +cp capp_lint /usr/local/narwhal/bin if [[ ! -d /usr/local/share/man/man1 ]]; then - sudo mkdir -p /usr/local/share/man/man1 + mkdir -p /usr/local/share/man/man1 fi -sudo cp capp_lint.1 /usr/local/share/man/man1 +cp capp_lint.1 /usr/local/share/man/man1 diff --git a/Tools/dump_theme/dump_theme b/Tools/dump_theme/dump_theme index 379b5c6fa..14db96b9f 100755 --- a/Tools/dump_theme/dump_theme +++ b/Tools/dump_theme/dump_theme @@ -136,7 +136,7 @@ function main(args) value = [theme valueForAttributeWithName:attributeName inState:state forClass:className], description = CPDescriptionOfObject(value).replace(/^/mg, " "); - colorPrint("cyan", " " + CPThemeStateName(state)); + colorPrint("cyan", " " + String(state)); stream.print(description + "\n"); } } diff --git a/Tools/fontinfo/fontinfo.xcodeproj/project.pbxproj b/Tools/fontinfo/fontinfo.xcodeproj/project.pbxproj index 87275d658..942253827 100644 --- a/Tools/fontinfo/fontinfo.xcodeproj/project.pbxproj +++ b/Tools/fontinfo/fontinfo.xcodeproj/project.pbxproj @@ -172,7 +172,7 @@ ); PREBINDING = NO; PRODUCT_NAME = fontinfo; - SDKROOT = macosx10.5; + SDKROOT = macosx; SYMROOT = "$(CAPP_BUILD)/Debug/CommonJS/cappuccino/bin"; }; name = Debug; @@ -186,7 +186,7 @@ GCC_WARN_UNUSED_VARIABLE = YES; ONLY_ACTIVE_ARCH = NO; PRODUCT_NAME = fontinfo; - SDKROOT = macosx10.5; + SDKROOT = macosx; }; name = Release; }; @@ -199,7 +199,6 @@ E1D3CF6E12AFEE3900CBB79E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - MACOSX_DEPLOYMENT_TARGET = 10.5; }; name = Release; }; diff --git a/Tools/imagesize/imagesize.xcodeproj/project.pbxproj b/Tools/imagesize/imagesize.xcodeproj/project.pbxproj index 6aaea8579..3a8193e9b 100644 --- a/Tools/imagesize/imagesize.xcodeproj/project.pbxproj +++ b/Tools/imagesize/imagesize.xcodeproj/project.pbxproj @@ -170,7 +170,6 @@ ); PREBINDING = NO; PRODUCT_NAME = imagesize; - SDKROOT = macosx10.5; SYMROOT = "$(CAPP_BUILD)/Debug/CommonJS/cappuccino/bin"; }; name = Debug; @@ -187,7 +186,6 @@ ONLY_ACTIVE_ARCH = NO; PREBINDING = NO; PRODUCT_NAME = imagesize; - SDKROOT = macosx10.5; }; name = Release; }; @@ -201,7 +199,6 @@ E1D3CF6E12AFEE3900CBB79E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - MACOSX_DEPLOYMENT_TARGET = 10.5; PRODUCT_NAME = imagesize; }; name = Release; diff --git a/Tools/nib2cib/NSCustomResource.j b/Tools/nib2cib/NSCustomResource.j index d97d2a1b9..7f4f6d1fc 100644 --- a/Tools/nib2cib/NSCustomResource.j +++ b/Tools/nib2cib/NSCustomResource.j @@ -31,10 +31,11 @@ var FILE = require("file"), imageSize = require("cappuccino/imagesize").imagesize, - supportedTemplateImages = [ - "NSAddTemplate", - "NSRemoveTemplate" - ]; + supportedTemplateImages = { + "NSAddTemplate": "CPAddTemplate", + "NSRemoveTemplate": "CPRemoveTemplate", + "NSToolbarShowColors": "CPImageNameColorPanel" + }; @implementation _CPCibCustomResource (NSCoding) @@ -51,14 +52,14 @@ var FILE = require("file"), framework = @"", bundleIdentifier = @""; - if (_resourceName == "NSSwitch") + if (_resourceName == "NSSwitch" || _resourceName == "NSRadioButton") return nil; else if (/^NS[A-Z][A-Za-z]+$/.test(_resourceName)) { - if (supportedTemplateImages.indexOf(_resourceName) >= 0) + if (supportedTemplateImages[_resourceName]) { // Defer resolving this path until runtime. - _resourceName = _resourceName.replace("NS", "CP"); + _resourceName = supportedTemplateImages[_resourceName]; } else [CPException raise:Nib2CibException format:@"The built in image “%@” is not supported.", _resourceName]; diff --git a/Tools/nib2cib/NSDatePicker.j b/Tools/nib2cib/NSDatePicker.j index 3e80b0fef..5a89f8f26 100644 --- a/Tools/nib2cib/NSDatePicker.j +++ b/Tools/nib2cib/NSDatePicker.j @@ -58,6 +58,7 @@ var NSDatePickerDefaultSize = 22, [self setBezeled:[cell isBezeled]]; [self setBordered:[cell isBordered]]; + [self setEnabled:[cell isEnabled]]; var theme = [Nib2Cib defaultTheme]; diff --git a/Tools/nib2cib/NSSegmentedControl.j b/Tools/nib2cib/NSSegmentedControl.j index 27abc164b..95ca6902c 100644 --- a/Tools/nib2cib/NSSegmentedControl.j +++ b/Tools/nib2cib/NSSegmentedControl.j @@ -72,6 +72,7 @@ frame.size.height += 1; frame.size.width = originalWidth; + [self setEnabled:[cell isEnabled]]; [self setFrame:frame]; } diff --git a/Tools/nib2cib/NSTableColumn.j b/Tools/nib2cib/NSTableColumn.j index cd53c1827..2a55492f6 100644 --- a/Tools/nib2cib/NSTableColumn.j +++ b/Tools/nib2cib/NSTableColumn.j @@ -113,10 +113,10 @@ var IBDefaultFontSizeTableHeader = 11.0; if (![textColor isEqual:defaultColor]) { - var selectedColor = [self valueForDataViewThemeAttribute:@"text-color" inState:CPThemeStateTableDataView | CPThemeStateSelectedDataView]; + var selectedColor = [self valueForDataViewThemeAttribute:@"text-color" inState:CPThemeState(CPThemeStateTableDataView, CPThemeStateSelectedDataView)]; - [dataView setValue:selectedColor forThemeAttribute:@"text-color" inState:CPThemeStateTableDataView | CPThemeStateSelectedDataView]; - [dataView setValue:textColor forThemeAttribute:@"text-color" inState:CPThemeStateTableDataView | CPThemeStateSelectedDataView | CPThemeStateEditing]; + [dataView setValue:selectedColor forThemeAttribute:@"text-color" inState:CPThemeState(CPThemeStateTableDataView, CPThemeStateSelectedDataView)]; + [dataView setValue:textColor forThemeAttribute:@"text-color" inState:CPThemeState(CPThemeStateTableDataView, CPThemeStateSelectedDataView, CPThemeStateEditing)]; } } diff --git a/Tools/nib2cib/_NSCornerView.j b/Tools/nib2cib/_NSCornerView.j index 83e667d50..d488de69c 100644 --- a/Tools/nib2cib/_NSCornerView.j +++ b/Tools/nib2cib/_NSCornerView.j @@ -51,7 +51,7 @@ { var theme = [Nib2Cib defaultTheme], height = [theme valueForAttributeWithName:@"default-row-height" forClass:[CPTableView class]], - width = [theme valueForAttributeWithName:@"scroller-width" inState:CPThemeStateVertical | CPThemeStateScrollViewLegacy forClass:[CPScroller class]]; + width = [theme valueForAttributeWithName:@"scroller-width" inState:CPThemeState(CPThemeStateVertical, CPThemeStateScrollViewLegacy) forClass:[CPScroller class]]; _frame.size.height = height; _bounds.size.height = height; diff --git a/bootstrap.sh b/bootstrap.sh index 4f0c8badf..92cc46028 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -134,8 +134,8 @@ function check_install_environment () { java_version=$(java -version 2>&1) echo $java_version | grep OpenJDK > /dev/null if [ "$?" = "0" ]; then # OpenJDK: make sure >= 6b18 - openjdk_version=$(echo $java_version | egrep -o '[0-9]b[0-9]+') - if [ $(echo $openjdk_version | tr -d 'b') -lt 618 ]; then + openjdk_version=$(echo $java_version | egrep -o '[0-9]\-?b[0-9]+') + if [ $(echo $openjdk_version | tr -d 'b' | tr -d '-') -lt 618 ]; then echo "Error: Narwhal is not compatible with your version of OpenJDK: $openjdk_version." echo "Please upgrade to OpenJDK >= 6b18 or switch to the Sun JVM. Then re-run bootstrap.sh." exit 1 @@ -165,9 +165,10 @@ fi install_directory="" tmp_zip="/tmp/cappuccino.zip" +local_distrib="" github_user="cappuccino" -github_ref="v0.9.7" +github_ref="v0.9.7-1" noprompt="" install_capp="" @@ -176,21 +177,23 @@ verbosity=1 while [ $# -gt 0 ]; do case "$1" in - --noprompt) noprompt="yes";; - --directory) install_directory="$2"; shift;; - --clone) install_method="clone";; - --clone-http) install_method="clone --http";; - --github-user) github_user="$2"; shift;; - --github-ref) github_ref="$2"; shift;; - -q|--quiet) verbosity=$[verbosity - 1];; - -v|--verbose) verbosity=$[verbosity + 1];; - *) cat >&2 <<-EOT + --noprompt) noprompt="yes";; + --directory) install_directory="$2"; shift;; + --clone) install_method="clone";; + --clone-http) install_method="clone --http";; + --copy-local) local_distrib="$2"; shift;; + --github-user) github_user="$2"; shift;; + --github-ref) github_ref="$2"; shift;; + -q|--quiet) verbosity=$[verbosity - 1];; + -v|--verbose) verbosity=$[verbosity + 1];; + *) cat >&2 <<-EOT usage: ./bootstrap.sh [OPTIONS] --noprompt: Don't prompt, use relatively safe defaults. --directory [DIR]: Use a directory other than $default_directory. --clone: Do "git clone git://" instead of downloading zips. --clone-http: Do "git clone http://" instead of downloading zips. + --copy-local: Use a local copy instead of downloading zips. --github-user [USER]: Github user (default: $github_user). --github-ref [REF]: Use another git ref (default: $github_ref). -q | --quiet: Output less logging. @@ -203,6 +206,7 @@ done github_project="$github_user-cappuccino-base" github_path="$github_user/cappuccino-base" +local_project="cappuccino-base" # The purpose of bootstrap is to install Cappuccino. install_cappuccino="yes" @@ -306,6 +310,18 @@ if [ "$install_cappuccino" ]; then echo "Cloning Cappuccino base from \"$git_repo\"..." git clone "$git_repo" "$install_directory" (cd "$install_directory" && git checkout "origin/$github_ref") + elif [ -n "$local_distrib" ]; then + echo "Extracting local copy of the distribution from $local_distrib to $install_directory" + + quiet_arg="" + if (( $verbosity < 2 )); then quiet_arg="-q"; fi + unzip $quiet_arg "$local_distrib" -d "$install_directory" + check_and_exit + + mv "$install_directory/$local_project-"*/* "$install_directory/." + check_and_exit + rm -rf "$install_directory/$local_project-"* + check_and_exit else zip_ball="https://github.com/$github_path/zipball/$github_ref" diff --git a/common.jake b/common.jake index d9112d415..f9a7f6569 100644 --- a/common.jake +++ b/common.jake @@ -35,6 +35,8 @@ SYSTEM.args.slice(1).forEach(function(arg) function ensurePackageUpToDate(packageName, requiredVersion, options) { + return; + options = options || {}; var packageInfo = require("narwhal/packages").catalog[packageName]; @@ -94,23 +96,25 @@ function ensurePackageUpToDate(packageName, requiredVersion, options) } } -// UPDATE THESE TO PICK UP CORRESPONDING CHANGES IN DEPENDENCIES -ensurePackageUpToDate("jake", "0.3"); -ensurePackageUpToDate("browserjs", "0.1.1"); -ensurePackageUpToDate("shrinksafe", "0.2"); -ensurePackageUpToDate("narwhal", "0.3.1", { - noupdate : true, - message : "Update Narwhal by re-running bootstrap.sh, or pulling the latest from git (see: http://github.com/280north/narwhal)." -}); -ensurePackageUpToDate("narwhal-jsc", "0.3", { - optional : true, - after : function(dir) { - if (OS.system("cd " + OS.enquote(dir) + " && make webkit")) { - print("Problem building narwhal-jsc."); - OS.exit(1); - } - } -}); +// This is disabled because tusk causes a lot of problems, and no packages will +// never be updated anyway +// // UPDATE THESE TO PICK UP CORRESPONDING CHANGES IN DEPENDENCIES +// ensurePackageUpToDate("jake", "0.3"); +// ensurePackageUpToDate("browserjs", "0.1.1"); +// ensurePackageUpToDate("shrinksafe", "0.2"); +// ensurePackageUpToDate("narwhal", "0.3.1", { +// noupdate : true, +// message : "Update Narwhal by re-running bootstrap.sh, or pulling the latest from git (see: http://github.com/280north/narwhal)." +// }); +// ensurePackageUpToDate("narwhal-jsc", "0.3", { +// optional : true, +// after : function(dir) { +// if (OS.system("cd " + OS.enquote(dir) + " && make webkit")) { +// print("Problem building narwhal-jsc."); +// OS.exit(1); +// } +// } +// }); var JAKE = require("jake"); @@ -444,6 +448,39 @@ global.installSymlink = function(sourcePath) } }; +global.installCopy = function(sourcePath, useSudo) +{ + if (!FILE.isDirectory(sourcePath)) + return; + + var packageName = FILE.basename(sourcePath), + targetPath = FILE.join(SYSTEM.prefix, "packages", packageName); + + if (FILE.isDirectory(targetPath)) + FILE.rmtree(targetPath); + else if (FILE.linkExists(targetPath)) + FILE.remove(targetPath); + + stream.print("Copying \0cyan(" + sourcePath + "\0) ==> \0cyan(" + targetPath + "\0)"); + + // hacky way to do a sudo copy. + if (useSudo) + OS.system(["sudo", "cp", "-r", sourcePath, targetPath]); + else + FILE.copyTree(sourcePath, targetPath); + + var binPath = FILE.Path(FILE.join(targetPath, "bin")); + + if (binPath.isDirectory()) + { + binPath.list().forEach(function (name) + { + var binary = binPath.join(name); + binary.chmod(0755); + }); + } +}; + global.spawnJake = function(/*String*/ aTaskName) { if (OS.system(serializedENV() + " " + SYSTEM.args[0] + " " + aTaskName)) diff --git a/version.json b/version.json index fdc6b2a1e..f0c6f3ceb 100644 --- a/version.json +++ b/version.json @@ -1,3 +1,3 @@ { - "version": "0.9.7" + "version": "0.9.7-1" } \ No newline at end of file