###########################################################################
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.
###########################################################################
#
##Grammars
#
rdc.core.basemodel.initialgrammar = <grammar xml:lang="en-US" version="1.0" \
		  root="{0}Initial">\n\t<rule id="{0}Initial" >\n\t\t \
		  <one-of>\n\t\t\t<item> initial <tag><![CDATA[$ = \
		  "initial\";]]></tag></item>\n\t\t\t<item> default \
		  <tag><![CDATA[$ = "initial";]]></tag></item>\n\t\t \
		  </one-of>\n\t</rule>\n\t</grammar>
rdc.alpha.voicegrammar.uri = .grammar/alpha.grxml
rdc.alphanum.voicegrammar.uri = .grammar/alphanum.grxml
rdc.color.voicegrammar.uri = .grammar/color.grxml
rdc.country.voicegrammar.uri = .grammar/countries.grxml
rdc.creditcard.expiry.voicegrammar.uri = .grammar/cardexpiry.grxml
rdc.creditcard.fullbalance.voicegrammar.uri = .grammar/cardamountextras.grxml#full
rdc.creditcard.minpayment.voicegrammar.uri = .grammar/cardamountextras.grxml#minimum
rdc.creditcard.number.dtmfgrammar.uri = .grammar/cardnumber-dtmf.grxml
rdc.creditcard.number.voicegrammar.uri = .grammar/cardnumber.grxml
rdc.creditcard.type.voicegrammar.uri = .grammar/creditcardtype.grxml
rdc.currency.voicegrammar.uri = builtin:grammar/currency
rdc.date.voicegrammar.uri = .grammar/date.grxml
rdc.digits.dtmfgrammar.uri = .grammar/digits-dtmf.grxml
rdc.digits.voicegrammar.uri = .grammar/digits.grxml
rdc.duration.voicegrammar.uri = .grammar/duration.grxml
rdc.isbn.voicegrammar.uri = .grammar/isbn.grxml
rdc.mortgagetype.voicegrammar.uri = .grammar/mortgage-type.grxml
rdc.number.voicegrammar.uri = .grammar/number.grxml
rdc.pause.voicegrammar.uri = .grammar/pause.grxml
rdc.percent.dtmfgrammar.uri = .grammar/percent-dtmf.grxml
rdc.percent.voicegrammar.uri = .grammar/percent.grxml
rdc.ssn.voicegrammar.uri = .grammar/ssn.grxml
rdc.ssn.dtmfgrammar.uri = .grammar/ssn-dtmf.grxml
rdc.time.voicegrammar.uri = .grammar/time.grxml
rdc.usmajorcity.voicegrammar.uri = .grammar/usmajorcity.grxml
rdc.usstate.voicegrammar.uri = .grammar/usstate.grxml
rdc.zipcode.voicegrammar.uri = .grammar/zipcode.grxml
#
##Default configs
#
rdc.alpha.defaultconfig.uri = META-INF/tags/rdc/config/alpha.xml
rdc.alphanum.defaultconfig.uri = META-INF/tags/rdc/config/alphanum.xml
rdc.color.defaultconfig.uri = META-INF/tags/rdc/config/color.xml
rdc.country.defaultconfig.uri = META-INF/tags/rdc/config/country.xml
rdc.creditcard.amount.defaultconfig.uri = META-INF/tags/rdc/config/cardamount.xml
rdc.creditcard.expiry.defaultconfig.uri = META-INF/tags/rdc/config/cardexpiry.xml
rdc.creditcard.number.defaultconfig.uri = META-INF/tags/rdc/config/cardnumber.xml
rdc.creditcard.securitycode.defaultconfig.uri = META-INF/tags/rdc/config/cardsecuritycode.xml
rdc.creditcard.type.defaultconfig.uri = META-INF/tags/rdc/config/creditcardtype.xml
rdc.creditcard.info.securitycode.defaultconfig.uri = META-INF/tags/rdc/config/cardsecuritycode.xml
rdc.currency.defaultconfig.uri = META-INF/tags/rdc/config/currency.xml
rdc.date.defaultconfig.uri = META-INF/tags/rdc/config/date.xml
rdc.daterange.startdate.defaultconfig.uri = META-INF/tags/rdc/config/dateRangeStartDate.xml
rdc.daterange.enddate.defaultconfig.uri = META-INF/tags/rdc/config/dateRangeEndDate.xml
rdc.digits.defaultconfig.uri = META-INF/tags/rdc/config/digits.xml
rdc.duration.defaultconfig.uri = META-INF/tags/rdc/config/duration.xml
rdc.isbn.defaultconfig.uri = META-INF/tags/rdc/config/isbn.xml
rdc.mortgagetype.defaultconfig.uri = META-INF/tags/rdc/config/mortgageType.xml
rdc.number.defaultconfig.uri = META-INF/tags/rdc/config/number.xml
rdc.pause.defaultconfig.uri = META-INF/tags/rdc/config/pause.xml
rdc.percent.defaultconfig.uri = META-INF/tags/rdc/config/percent.xml
rdc.select1.defaultconfig.uri = META-INF/tags/rdc/config/selectOne.xml
rdc.ssn.defaultconfig.uri = META-INF/tags/rdc/config/ssn.xml
rdc.time.defaultconfig.uri = META-INF/tags/rdc/config/time.xml
rdc.usmajorcity.defaultconfig.uri = META-INF/tags/rdc/config/usMajorCity.xml
rdc.usstate.defaultconfig.uri = META-INF/tags/rdc/config/usState.xml
rdc.zipcode.defaultconfig.uri = META-INF/tags/rdc/config/zipCode.xml
