
(object Petal
    version    	42
    _written   	"Rose 4.5.8163.3"
    charSet    	0)

(object Design "Logical View"
    is_unit    	TRUE
    is_loaded  	TRUE
    defaults   	(object defaults
	rightMargin 	0.250000
	leftMargin 	0.250000
	topMargin  	0.250000
	bottomMargin 	0.500000
	pageOverlap 	0.250000
	clipIconLabels 	TRUE
	autoResize 	TRUE
	snapToGrid 	TRUE
	gridX      	16
	gridY      	16
	defaultFont 	(object Font
	    size       	10
	    face       	"Arial"
	    bold       	FALSE
	    italics    	FALSE
	    underline  	FALSE
	    strike     	FALSE
	    color      	0
	    default_color 	TRUE)
	showMessageNum 	1
	showClassOfObject 	TRUE
	notation   	"Unified")
    root_usecase_package 	(object Class_Category "Use Case View"
	quid       	"374B18190016"
	exportControl 	"Public"
	global     	TRUE
	logical_models 	(list unit_reference_list)
	logical_presentations 	(list unit_reference_list
	    (object UseCaseDiagram "Main"
		quid       	"374B1819002A"
		title      	"Main"
		zoom       	100
		max_height 	28350
		max_width  	21600
		origin_x   	0
		origin_y   	0
		items      	(list diagram_item_list))))
    root_category 	(object Class_Category "Logical View"
	quid       	"374B18190015"
	exportControl 	"Public"
	global     	TRUE
	subsystem  	"Component View"
	quidu      	"374B18190017"
	logical_models 	(list unit_reference_list
	    (object Class_Category "xsd"
		is_unit    	TRUE
		is_loaded  	FALSE
		file_name  	"$VABASE_PLUGINS_PATH\\org.eclipse.xsd\\model\\org.eclipse.XSD.cat"
		quid       	"39ABDC6F01AA"))
	logical_presentations 	(list unit_reference_list
	    (object ClassDiagram "Main"
		quid       	"39ADC9D803DD"
		title      	"Main"
		zoom       	100
		max_height 	28350
		max_width  	21600
		origin_x   	0
		origin_y   	0
		items      	(list diagram_item_list
		    (object CategoryView "Logical View::xsd" @1
			location   	(320, 304)
			label      	(object ItemLabel
			    Parent_View 	@1
			    location   	(176, 220)
			    fill_color 	13434879
			    nlines     	2
			    max_width  	288
			    justify    	0
			    label      	"xsd")
			icon_style 	"Icon"
			line_color 	3342489
			fill_color 	13434879
			quidu      	"39ABDC6F01AA"
			width      	300
			height     	180)
		    (object NoteView @2
			location   	(320, 688)
			label      	(object ItemLabel
			    Parent_View 	@2
			    location   	(176, 601)
			    fill_color 	13434879
			    nlines     	3
			    max_width  	252
			    label      	
|Concrete
|Classes
			    )
			line_color 	3342489
			fill_color 	13434879
			width      	312
			height     	187)
		    (object NoteView @3
			location   	(752, 688)
			label      	(object ItemLabel
			    Parent_View 	@3
			    location   	(614, 597)
			    fill_color 	13434879
			    nlines     	3
			    max_width  	240
			    label      	
|Abstract
|Classes
			    )
			line_color 	3342489
			fill_color 	16777088
			width      	300
			height     	194)
		    (object NoteView @4
			location   	(1184, 688)
			label      	(object ItemLabel
			    Parent_View 	@4
			    location   	(1037, 598)
			    fill_color 	13434879
			    nlines     	3
			    max_width  	259
			    label      	"Enumerations")
			line_color 	3342489
			fill_color 	8432127
			width      	319
			height     	193)))))
    root_subsystem 	(object SubSystem "Component View"
	quid       	"374B18190017"
	physical_models 	(list unit_reference_list)
	physical_presentations 	(list unit_reference_list
	    (object Module_Diagram "Main"
		quid       	"374B18190029"
		title      	"Main"
		zoom       	100
		max_height 	28350
		max_width  	21600
		origin_x   	0
		origin_y   	0
		items      	(list diagram_item_list))))
    process_structure 	(object Processes
	quid       	"374B18190018"
	ProcsNDevs 	(list
	    (object Process_Diagram "Deployment View"
		quid       	"374B1819001A"
		title      	"Deployment View"
		zoom       	100
		max_height 	28350
		max_width  	21600
		origin_x   	0
		origin_y   	0
		items      	(list diagram_item_list))))
    properties 	(object Properties
	attributes 	(list Attribute_Set
	    (object Attribute
		tool       	"Ecore"
		name       	"default__Category"
		value      	(list Attribute_Set
		    (object Attribute
			tool       	"Ecore"
			name       	"packageName"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"nsPrefix"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"nsURI"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"basePackage"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"prefix"
			value      	"")))
	    (object Attribute
		tool       	"Ecore"
		name       	"default__Class"
		value      	(list Attribute_Set
		    (object Attribute
			tool       	"Ecore"
			name       	"classifierName"
			value      	"")))
	    (object Attribute
		tool       	"Ecore"
		name       	"default__Operation"
		value      	(list Attribute_Set
		    (object Attribute
			tool       	"Ecore"
			name       	"operationName"
			value      	"")))
	    (object Attribute
		tool       	"Ecore"
		name       	"default__Attribute"
		value      	(list Attribute_Set
		    (object Attribute
			tool       	"Ecore"
			name       	"attributeName"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"isTransient"
			value      	FALSE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isVolatile"
			value      	FALSE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isChangeable"
			value      	TRUE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isUnsettable"
			value      	FALSE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isUnique"
			value      	TRUE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isID"
			value      	FALSE)))
	    (object Attribute
		tool       	"Ecore"
		name       	"default__Role"
		value      	(list Attribute_Set
		    (object Attribute
			tool       	"Ecore"
			name       	"referenceName"
			value      	"")
		    (object Attribute
			tool       	"Ecore"
			name       	"isTransient"
			value      	FALSE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isVolatile"
			value      	FALSE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isChangeable"
			value      	TRUE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isUnsettable"
			value      	FALSE)
		    (object Attribute
			tool       	"Ecore"
			name       	"isResolveProxies"
			value      	TRUE))))
	quid       	"374B18190019"))
