#
# Copyright 2008 Google Inc.
# 
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
#

	
firstName = <b>Prénom:</b>
lastName = <b>Nom:</b>
favoriteColor = <b>Couleur Préférée:</b>

red = Rouge
green = Vert
yellow = Jaune
blue = Bleu
black = Noir
white = Blanc
grey = Gris
lightGrey = Lumière Gris

colorMap = red, white, yellow, black, blue, green, grey, lightGrey
