#--------------------------------------------------------------------
# Copyright (c) 1999-2001, International Business Machines
# Corporation and others.  All Rights Reserved.
#--------------------------------------------------------------------
# THIS IS A MACHINE-GENERATED FILE
# Tool: dumpICUrules.bat
# Source: \u005cicu4j\u005csrc\u005ccom\u005cibm\u005ctext\u005cresources/Transliterator_InterIndic_Devanagari.utf8.txt
# Date: Thu Mar  1 20:03:55 2001
#--------------------------------------------------------------------
# InterIndic_Devanagari
#--------------------------------------------------------------------
# Copyright (c) 1999-2001, International Business Machines
# Corporation and others.  All Rights Reserved.
#--------------------------------------------------------------------
# Date: Tue Jan 23 12:41:59 2001
#--------------------------------------------------------------------
# InterIndic-Devanagari
#:: NFD (NFC) ; 
#Rules for Decomposed characters
 \ue028\ue03c > \u0929;  #\ue029
 \ue030\ue03c > \u0931;  #\ue031
 \ue033\ue03c > \u0934;  #\ue034
 \ue015\ue03c > \u0958;  #\ue058 LETTER QA   (For Urdu)
 \ue016\ue03c > \u0959;  #\ue059 LETTER KHHA (For Urdu)
 \ue017\ue03c > \u095a;  #\ue05a LETTER GHHA (For Urdu)
 \ue01c\ue03c > \u095b;  #\ue05b LETTER ZA   (For Urdu)
 \ue021\ue03c > \u095c;  #\ue05c LETTER DDDHA (pronounced RRA)
 \ue022\ue03c > \u095d;  #\ue05d LETTER RHA   (pronounced RRHA)
 \ue02b\ue03c > \u095e;  #\ue05e LETTER FA
 \ue02f\ue03c > \u095f;  #\ue05f LETTER YYA
 
 #Decomposed compatibility transliterations
 \ue012\ue057>\u0914;   # FALLBACK FOR TAMIL AU
 0 > \u0966;       # FALLBACK FOR TAMIL
 1 > \u0967;

 \ue055>; # FALLBACK BLOW AWAY KANNADA AND TELUGU LENGTH MARK
 \ue056>; # FALLBACK BLOW AWAY KANNADA AND TELUGU AI LENGTH MARK
 \ue057>; # FALLBACK BLOW AWAY TAMIL AU LENGTH MARK
 \ue070>; # FALLBACK BLOW AWAY GURMUKHI 
 \ue071>; # FALLBACK BLOW AWAY GURMUKHI
 \ue072>; # FALLBACK BLOW AWAY GURMUKHI
 \ue073>; # FALLBACK BLOW AWAY GURMUKHI
 \ue074>; # FALLBACK BLOW AWAY GURMUKHI


 \ue001 >  \u0901;  # SIGN CANDRABINDU
 \ue002 >  \u0902;  # SIGN ANUSVARA
 \ue003 >  \u0903;  # SIGN VISARGA
 \ue005 >  \u0905;  # LETTER A
 \ue006 >  \u0906;  # LETTER AA
 \ue007 >  \u0907;  # LETTER I
 \ue008 >  \u0908;  # LETTER II
 \ue009 >  \u0909;  # LETTER U
 \ue00a >  \u090a;  # LETTER UU
 \ue00b >  \u090b;  # LETTER VOCALIC R
 \ue00c >  \u090c;  # LETTER VOCALIC L
 \ue00d >  \u090d;  # LETTER CANDRA E (For representing English sounds)
 \ue00e >  \u090e; # UNMAPPED LETTER SHORT E(For Southern Scripts)
 #\ue00e >  \u090f;
 \ue00f >  \u090f;  # LETTER E
 \ue010 >  \u0910;  # LETTER AI
 \ue011 >  \u0911;  # LETTER CANDRA O (For representing English sounds)
 \ue012 >  \u0912; # UNMAPPED LETTER SHORT O (For Southern Scripts)
 #\ue012 >  \u0913; 
 \ue013 >  \u0913;  # LETTER O
 \ue014 >  \u0914;  # LETTER AU
 \ue015 >  \u0915;  # LETTER KA
 \ue016 >  \u0916;  # LETTER KHA
 \ue017 >  \u0917;  # LETTER GA
 \ue018 >  \u0918;  # LETTER GHA
 \ue019 >  \u0919;  # LETTER NGA
 \ue01a >  \u091a;  # LETTER CA
 \ue01b >  \u091b;  # LETTER CHA
 \ue01c >  \u091c;  # LETTER JA
 \ue01d >  \u091d;  # LETTER JHA
 \ue01e >  \u091e;  # LETTER NYA
 \ue01f >  \u091f;  # LETTER TTA
 \ue020 >  \u0920;  # LETTER TTHA
 \ue021 >  \u0921;  # LETTER DDA
 \ue022 >  \u0922;  # LETTER DDHA
 \ue023 >  \u0923;  # LETTER NNA
 \ue024 >  \u0924;  # LETTER TA
 \ue025 >  \u0925;  # LETTER THA
 \ue026 >  \u0926;  # LETTER DA
 \ue027 >  \u0927;  # LETTER DHA
 \ue028 >  \u0928;  # LETTER NA
 \ue029 >  \u0929;  # LETTER NNNA
 \ue02a >  \u092a;  # LETTER PA
 \ue02b >  \u092b;  # LETTER PHA
 \ue02c >  \u092c;  # LETTER BA
 \ue02d >  \u092d;  # LETTER BHA
 \ue02e >  \u092e;  # LETTER MA
 \ue02f >  \u092f;  # LETTER YA
 \ue030 >  \u0930;  # LETTER RA
 \ue031 >  \u0931;  # LETTER RRA (Eyelash RA for Southern scripts)
 #\ue031 >  \u0930;  
 \ue032 >  \u0932;  # LETTER LA
 \ue033 >  \u0933;  # LETTER LLA
 \ue034 >  \u0934;  # LETTER LLLA (LLLA for Southern scripts)
 #\ue034 >  \u0933;  
 \ue035 >  \u0935;  # LETTER VA
 \ue036 >  \u0936;  # LETTER SHA
 \ue037 >  \u0937;  # LETTER SSA
 \ue038 >  \u0938;  # LETTER SA
 \ue039 >  \u0939;  # LETTER HA
 \ue03c >  \u093c;  # SIGN NUKTA
 \ue03d >  \u093d;  # SIGN AVAGRAHA
 \ue03e >  \u093e;  # VOWEL SIGN AA
 \ue03f >  \u093f;  # VOWEL SIGN I
 \ue040 >  \u0940;  # VOWEL SIGN II
 \ue041 >  \u0941;  # VOWEL SIGN U
 \ue042 >  \u0942;  # VOWEL SIGN UU
 \ue043 >  \u0943;  # VOWEL SIGN VOCALIC R
 \ue044 >  \u0944;  # VOWEL SIGN VOCALIC RR
 \ue045 >  \u0945;  # VOWEL SIGN CANDRA E
 \ue046 >  \u0946; # UNMAPPED VOWEL SIGN SHORT E
 #\ue046 >  \u0947; 
 \ue047 >  \u0947;  # VOWEL SIGN E
 \ue048 >  \u0948;  # VOWEL SIGN AI
 \ue049 >  \u0949;  # VOWEL SIGN CANDRA O
 \ue04a >  \u094a; # UNMAPPED VOWEL SIGN SHORT O
 #\ue04a >  \u094b; 
 \ue04b >  \u094b;  # VOWEL SIGN O
 \ue04c >  \u094c;  # VOWEL SIGN AU
 \ue04d >  \u094d;  # SIGN VIRAMA
 \ue050 >  \u0950;  # OM
 \ue051 >  \u0951;  # UNMAPPED STRESS SIGN UDATTA
 \ue052 >  \u0952;  # UNMAPPED STRESS SIGN ANUDATTA
 \ue053 >  \u0953;  # UNMAPPED GRAVE ACCENT
 \ue054 >  \u0954;  # UNMAPPED ACUTE ACCENT
 \ue058 >  \u0958;  # LETTER QA   (For Urdu)
 \ue059 >  \u0959;  # LETTER KHHA (For Urdu)
 \ue05a >  \u095a;  # LETTER GHHA (For Urdu)
 \ue05b >  \u095b;  # LETTER ZA   (For Urdu)
 \ue05c >  \u095c;  # LETTER DDDHA (pronounced RRA)
 \ue05d >  \u095d;  # LETTER RHA   (pronounced RRHA)
 \ue05e >  \u095e;  # LETTER FA
 \ue05f >  \u095f;  # LETTER YYA
 \ue060 >  \u0960;  # LETTER VOCALIC RR
 \ue061 >  \u0961;  # LETTER VOCALIC LL
 \ue062 >  \u0962;  # VOWEL SIGN VOCALIC L
 \ue063 >  \u0963;  # VOWEL SIGN VOCALIC LL
 \ue064 >  \u0964;  # UNMAPPED Devanagari-InterIndic: DANDA
 \ue065 >  \u0965;  # UNMAPPED Devanagari-InterIndic: DOUBLE DANDA
 \ue066 >  \u0966;  # DIGIT ZERO
 \ue067 >  \u0967;  # DIGIT ONE
 \ue068 >  \u0968;  # DIGIT TWO
 \ue069 >  \u0969;  # DIGIT THREE
 \ue06a >  \u096a;  # DIGIT FOUR
 \ue06b >  \u096b;  # DIGIT FIVE
 \ue06c >  \u096c;  # DIGIT SIX
 \ue06d >  \u096d;  # DIGIT SEVEN
 \ue06e >  \u096e;  # DIGIT EIGHT
 \ue06f >  \u096f;  # DIGIT NINE
 \ue0f0 >  \u0930;  # FALLBACK RA 
 \ue0f1 >  \u0930;  # FALLBACK RA

 
#         \u0970  # UNMAPPED Devanagari-InterIndic: ABBREVIATION SIGN
#    :: NFC;
# eof
