ENGINE CODE FOR RULES


TABLE: substitution

PASS: 0

PASS CONSTRAINTS: none

NO RULES

PASS: 1

PASS CONSTRAINTS: none

RULE 1.0, SchMain.gdl(119):  cUnencodedChar  >  cUnencodedGlyph  ;

ACTIONS:
PutSubs 0 59 32
Next
RetZero

CONSTRAINTS: none

RULE 1.1, SchMain.gdl(122):  cUnencodedChar2Parts  _  >  cUnencodedGlyphPart1  cUnencodedGlyphPart2$1:1  ;

ACTIONS:
PutSubs 0 60 33
Next
Insert
PutSubs 0 60 34
Assoc 1 0
Next
RetZero

CONSTRAINTS: none

RULE 1.2, SchMain.gdl(126):  _  cAlefPlusMark  >  absAlef:2  cAlefMark  ;

ACTIONS:
Insert
PutGlyph 3
Assoc 1 1
Next
PutSubs 0 46 8
Next
RetZero

CONSTRAINTS: none

RULE 1.3, SchMain.gdl(128):  *GC1*  >  *GC0*  ;

ACTIONS:
PutSubs 0 42 0
Next
RetZero

CONSTRAINTS: none

PASS: 2

PASS CONSTRAINTS: none

RULE 2.0, SchMain.gdl(143):  _  cMark234  cMark1  >  @5:5  @2  _   /  _  _  ^  cMark234  cMark234  _  ;

ACTIONS:
Insert
PutCopy 4
Assoc 1 4
Next
PutCopy 0
Next
CopyNext
CopyNext
Delete
Next
PushByte -2
PopRet

CONSTRAINTS: none

RULE 2.1, SchMain.gdl(143):  _  cMark234  cMark1  >  @4:4  @2  _   /  _  _  ^  cMark234  _  ;

ACTIONS:
Insert
PutCopy 3
Assoc 1 3
Next
PutCopy 0
Next
CopyNext
Delete
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 2.2, SchMain.gdl(143):  _  cMark234  cMark1  >  @3:3  @2  _   /  _  _  ^  _  ;

ACTIONS:
Insert
PutCopy 2
Assoc 1 2
Next
PutCopy 0
Next
Delete
Next
PushByte 0
PopRet

CONSTRAINTS: none

RULE 2.3, SchMain.gdl(144):  _  cMark34  cMark2  >  @5:5  @2  _   /  _  _  ^  cMark34  cMark34  _  ;

ACTIONS:
Insert
PutCopy 4
Assoc 1 4
Next
PutCopy 0
Next
CopyNext
CopyNext
Delete
Next
PushByte -2
PopRet

CONSTRAINTS: none

RULE 2.4, SchMain.gdl(144):  _  cMark34  cMark2  >  @4:4  @2  _   /  _  _  ^  cMark34  _  ;

ACTIONS:
Insert
PutCopy 3
Assoc 1 3
Next
PutCopy 0
Next
CopyNext
Delete
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 2.5, SchMain.gdl(144):  _  cMark34  cMark2  >  @3:3  @2  _   /  _  _  ^  _  ;

ACTIONS:
Insert
PutCopy 2
Assoc 1 2
Next
PutCopy 0
Next
Delete
Next
PushByte 0
PopRet

CONSTRAINTS: none

RULE 2.6, SchMain.gdl(145):  _  cMark4  cMark3  >  @5:5  @2  _   /  _  _  ^  cMark4  cMark4  _  ;

ACTIONS:
Insert
PutCopy 4
Assoc 1 4
Next
PutCopy 0
Next
CopyNext
CopyNext
Delete
Next
PushByte -2
PopRet

CONSTRAINTS: none

RULE 2.7, SchMain.gdl(145):  _  cMark4  cMark3  >  @4:4  @2  _   /  _  _  ^  cMark4  _  ;

ACTIONS:
Insert
PutCopy 3
Assoc 1 3
Next
PutCopy 0
Next
CopyNext
Delete
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 2.8, SchMain.gdl(145):  _  cMark4  cMark3  >  @3:3  @2  _   /  _  _  ^  _  ;

ACTIONS:
Insert
PutCopy 2
Assoc 1 2
Next
PutCopy 0
Next
Delete
Next
PushByte 0
PopRet

CONSTRAINTS: none

PASS: 3

PASS CONSTRAINTS: none

RULE 3.0, SchMain.gdl(157):  if (shaddaKasra == 0) if (selectDiac) absShadda  cShaddaKasraMarks  >  _  cShaddaKasraLigatures:(1 2) { comp.shadda.ref = @1; comp.kasra.ref = @2;  }  ; endif;  endif; 

ACTIONS:
Delete
Next
PutSubs 0 54 23
Assoc 2 -1 0
PushByte -1
IAttrSetSlot comp_ref 9
PushByte 0
IAttrSetSlot comp_ref 8
Next
RetZero

CONSTRAINTS:
PushFeat 0 0
PushByte 0
Equal
PushFeat 10 0
And
PopRet

RULE 3.1, SchMain.gdl(160):  if (shaddaKasra == 0) if (!(selectDiac)) absShadda  cShaddaKasraMarks  >  _  cShaddaKasraLigatures:(1 2)  ; endif;  endif; 

ACTIONS:
Delete
Next
PutSubs 0 54 23
Assoc 2 -1 0
Next
RetZero

CONSTRAINTS:
PushFeat 0 0
PushByte 0
Equal
PushFeat 10 0
Not
And
PopRet

PASS: 4

PASS CONSTRAINTS: none

RULE 4.0, SchMain.gdl(193):  cLamIso  cAlefIso  >  cLamIniPreAlef { user1 = 0;  }  cAlefFinPostLamIni   /  _  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  ^  _  ;

ACTIONS:
PutSubs 0 52 19
PushByte 0
IAttrSet user 0
Next
CopyNext
CopyNext
CopyNext
CopyNext
PutSubs 0 45 6
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.1, SchMain.gdl(193):  cLamIso  cAlefIso  >  cLamIniPreAlef { user1 = 0;  }  cAlefFinPostLamIni   /  _  cAnyMarks  cAnyMarks  cAnyMarks  ^  _  ;

ACTIONS:
PutSubs 0 52 19
PushByte 0
IAttrSet user 0
Next
CopyNext
CopyNext
CopyNext
PutSubs 0 45 6
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.2, SchMain.gdl(193):  cLamIso  cAlefIso  >  cLamIniPreAlef { user1 = 0;  }  cAlefFinPostLamIni   /  _  cAnyMarks  cAnyMarks  ^  _  ;

ACTIONS:
PutSubs 0 52 19
PushByte 0
IAttrSet user 0
Next
CopyNext
CopyNext
PutSubs 0 45 6
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.3, SchMain.gdl(193):  cLamIso  cAlefIso  >  cLamIniPreAlef { user1 = 0;  }  cAlefFinPostLamIni   /  _  cAnyMarks  ^  _  ;

ACTIONS:
PutSubs 0 52 19
PushByte 0
IAttrSet user 0
Next
CopyNext
PutSubs 0 45 6
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.4, SchMain.gdl(193):  cLamIso  cAlefIso  >  cLamIniPreAlef { user1 = 0;  }  cAlefFinPostLamIni   /  _  ^  _  ;

ACTIONS:
PutSubs 0 52 19
PushByte 0
IAttrSet user 0
Next
PutSubs 0 45 6
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.5, SchMain.gdl(194):  cLamFin  cAlefIso  >  cLamMedPreAlef { user1 = 0;  }  cAlefFinPostLamMed   /  _  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  ^  _  ;

ACTIONS:
PutSubs 0 51 20
PushByte 0
IAttrSet user 0
Next
CopyNext
CopyNext
CopyNext
CopyNext
PutSubs 0 45 7
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.6, SchMain.gdl(194):  cLamFin  cAlefIso  >  cLamMedPreAlef { user1 = 0;  }  cAlefFinPostLamMed   /  _  cAnyMarks  cAnyMarks  cAnyMarks  ^  _  ;

ACTIONS:
PutSubs 0 51 20
PushByte 0
IAttrSet user 0
Next
CopyNext
CopyNext
CopyNext
PutSubs 0 45 7
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.7, SchMain.gdl(194):  cLamFin  cAlefIso  >  cLamMedPreAlef { user1 = 0;  }  cAlefFinPostLamMed   /  _  cAnyMarks  cAnyMarks  ^  _  ;

ACTIONS:
PutSubs 0 51 20
PushByte 0
IAttrSet user 0
Next
CopyNext
CopyNext
PutSubs 0 45 7
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.8, SchMain.gdl(194):  cLamFin  cAlefIso  >  cLamMedPreAlef { user1 = 0;  }  cAlefFinPostLamMed   /  _  cAnyMarks  ^  _  ;

ACTIONS:
PutSubs 0 51 20
PushByte 0
IAttrSet user 0
Next
CopyNext
PutSubs 0 45 7
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.9, SchMain.gdl(194):  cLamFin  cAlefIso  >  cLamMedPreAlef { user1 = 0;  }  cAlefFinPostLamMed   /  _  ^  _  ;

ACTIONS:
PutSubs 0 51 20
PushByte 0
IAttrSet user 0
Next
PutSubs 0 45 7
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.10, SchMain.gdl(199):  *GC12*  *GC13*  >  *GC10*  *GC11*   /  _  cDiaDigit  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  ^  _  ;

ACTIONS:
PutSubs 0 43 1
Next
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutSubs 0 44 2
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.11, SchMain.gdl(199):  *GC12*  *GC13*  >  *GC10*  *GC11*   /  _  cDiaDigit  cAnyMarks  cAnyMarks  cAnyMarks  ^  _  ;

ACTIONS:
PutSubs 0 43 1
Next
CopyNext
CopyNext
CopyNext
CopyNext
PutSubs 0 44 2
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.12, SchMain.gdl(199):  *GC12*  *GC13*  >  *GC10*  *GC11*   /  _  cDiaDigit  cAnyMarks  cAnyMarks  ^  _  ;

ACTIONS:
PutSubs 0 43 1
Next
CopyNext
CopyNext
CopyNext
PutSubs 0 44 2
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.13, SchMain.gdl(199):  *GC12*  *GC13*  >  *GC10*  *GC11*   /  _  cDiaDigit  cAnyMarks  ^  _  ;

ACTIONS:
PutSubs 0 43 1
Next
CopyNext
CopyNext
PutSubs 0 44 2
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.14, SchMain.gdl(199):  *GC12*  *GC13*  >  *GC10*  *GC11*   /  _  cDiaDigit  ^  _  ;

ACTIONS:
PutSubs 0 43 1
Next
CopyNext
PutSubs 0 44 2
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.15, SchMain.gdl(199):  *GC12*  *GC13*  >  *GC10*  *GC11*   /  _  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  ^  _  ;

ACTIONS:
PutSubs 0 43 1
Next
CopyNext
CopyNext
CopyNext
CopyNext
PutSubs 0 44 2
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.16, SchMain.gdl(199):  *GC12*  *GC13*  >  *GC10*  *GC11*   /  _  cAnyMarks  cAnyMarks  cAnyMarks  ^  _  ;

ACTIONS:
PutSubs 0 43 1
Next
CopyNext
CopyNext
CopyNext
PutSubs 0 44 2
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.17, SchMain.gdl(199):  *GC12*  *GC13*  >  *GC10*  *GC11*   /  _  cAnyMarks  cAnyMarks  ^  _  ;

ACTIONS:
PutSubs 0 43 1
Next
CopyNext
CopyNext
PutSubs 0 44 2
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.18, SchMain.gdl(199):  *GC12*  *GC13*  >  *GC10*  *GC11*   /  _  cAnyMarks  ^  _  ;

ACTIONS:
PutSubs 0 43 1
Next
CopyNext
PutSubs 0 44 2
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.19, SchMain.gdl(199):  *GC12*  *GC13*  >  *GC10*  *GC11*   /  _  ^  _  ;

ACTIONS:
PutSubs 0 43 1
Next
PutSubs 0 44 2
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 4.20, SchMain.gdl(206):  cSignTakes4  cDigitNormal  cDigitNormal  cDigitNormal  cDigitNormal  >  cSign4  cDigitMedium  cDigitMedium  cDigitMedium  cDigitMedium  ;

ACTIONS:
PutGlyph 28
Next
PutSubs 0 47 9
Next
PutSubs 0 47 9
Next
PutSubs 0 47 9
Next
PutSubs 0 47 9
Next
RetZero

CONSTRAINTS: none

RULE 4.21, SchMain.gdl(209):  cSignTakes3Medium  cDigitNormal  cDigitNormal  cDigitNormal  >  cSign3Medium  cDigitMedium  cDigitMedium  cDigitMedium  ;

ACTIONS:
PutSubs 0 57 26
Next
PutSubs 0 47 9
Next
PutSubs 0 47 9
Next
PutSubs 0 47 9
Next
RetZero

CONSTRAINTS: none

RULE 4.22, SchMain.gdl(212):  cSignTakes3Small  cDigitNormal  cDigitNormal  cDigitNormal  >  cSign3Small  cDigitSmall  cDigitSmall  cDigitSmall  ;

ACTIONS:
PutSubs 0 58 27
Next
PutSubs 0 47 10
Next
PutSubs 0 47 10
Next
PutSubs 0 47 10
Next
RetZero

CONSTRAINTS: none

RULE 4.23, SchMain.gdl(215):  cSignTakes2  cDigitNormal  cDigitNormal  >  cSign2  cDigitMedium  cDigitMedium  ;

ACTIONS:
PutSubs 0 56 25
Next
PutSubs 0 47 9
Next
PutSubs 0 47 9
Next
RetZero

CONSTRAINTS: none

RULE 4.24, SchMain.gdl(218):  cSignTakes1  cDigitNormal  >  cSign1  cDigitMedium  ;

ACTIONS:
PutSubs 0 55 24
Next
PutSubs 0 47 9
Next
RetZero

CONSTRAINTS: none

PASS: 5

PASS CONSTRAINTS: none

RULE 5.0, SchMain.gdl(225):  absSuperscriptAlef  >  absSuperscriptAlef__large   /  cNeedsLargeDaggerAlef  _  ;

ACTIONS:
PutGlyph 5
Next
RetZero

CONSTRAINTS: none

RULE 5.1, SchMain.gdl(228):  if (selectDiac) cNeedsLoweredHamza  absHamzaAbove  >  cWithLoweredHamza:(2 3) { comp.base.ref = @2; comp.hamza.ref = @3;  }  _   /  ANY  _  _  ; endif; 

ACTIONS:
PutSubs 0 53 35
Assoc 2 0 1
PushByte 0
IAttrSetSlot comp_ref 6
PushByte 1
IAttrSetSlot comp_ref 7
Next
Delete
Next
RetZero

CONSTRAINTS:
PushFeat 10 0
PopRet

RULE 5.2, SchMain.gdl(231):  if (!(selectDiac)) cNeedsLoweredHamza  absHamzaAbove  >  cWithLoweredHamza:(2 3)  _   /  ANY  _  _  ; endif; 

ACTIONS:
PutSubs 0 53 35
Assoc 2 0 1
Next
Delete
Next
RetZero

CONSTRAINTS:
PushFeat 10 0
Not
PopRet

RULE 5.3, SchMain.gdl(237):  if (meemAlt == 1) cno_Meem  >  cMeemSindhi   /  ANY  _  ; endif; 

ACTIONS:
PutSubs 0 63 21
Next
RetZero

CONSTRAINTS:
PushFeat 1 0
PushByte 1
Equal
PopRet

RULE 5.4, SchMain.gdl(241):  if (hehAlt == 1) cno_Heh  >  cHehKurdish   /  ANY  _  ; endif; 

ACTIONS:
PutSubs 0 62 16
Next
RetZero

CONSTRAINTS:
PushFeat 2 0
PushByte 1
Equal
PopRet

RULE 5.5, SchMain.gdl(244):  if (hehAlt == 2) cno_Heh  >  cHehSindhi   /  ANY  _  ; endif; 

ACTIONS:
PutSubs 0 62 17
Next
RetZero

CONSTRAINTS:
PushFeat 2 0
PushByte 2
Equal
PopRet

RULE 5.6, SchMain.gdl(247):  if (hehAlt == 3) cno_Heh  >  cHehUrdu   /  ANY  _  ; endif; 

ACTIONS:
PutSubs 0 62 18
Next
RetZero

CONSTRAINTS:
PushFeat 2 0
PushByte 3
Equal
PopRet

RULE 5.7, SchMain.gdl(251):  if (easternDigits == 1) cEasternDigit  >  cEasternDigitSindhi   /  ANY  _  ; endif; 

ACTIONS:
PutSubs 0 48 12
Next
RetZero

CONSTRAINTS:
PushFeat 3 0
PushByte 1
Equal
PopRet

RULE 5.8, SchMain.gdl(254):  if (easternDigits == 2) cEasternDigit  >  cEasternDigitUrdu   /  ANY  _  ; endif; 

ACTIONS:
PutSubs 0 48 13
Next
RetZero

CONSTRAINTS:
PushFeat 3 0
PushByte 2
Equal
PopRet

RULE 5.9, SchMain.gdl(258):  if (sukunAlt == 1) cno_Sukun  >  cSukunDownOpen   /  ANY  _  ; endif; 

ACTIONS:
PutGlyph 30
Next
RetZero

CONSTRAINTS:
PushFeat 4 0
PushByte 1
Equal
PopRet

RULE 5.10, SchMain.gdl(261):  if (sukunAlt == 2) cno_Sukun  >  cSukunLeftOpen   /  ANY  _  ; endif; 

ACTIONS:
PutGlyph 31
Next
RetZero

CONSTRAINTS:
PushFeat 4 0
PushByte 2
Equal
PopRet

RULE 5.11, SchMain.gdl(265):  if (headOfKhahAlt == 1) cno_OpenLeft  >  cOpenLeft   /  ANY  _  ; endif; 

ACTIONS:
PutGlyph 22
Next
RetZero

CONSTRAINTS:
PushFeat 5 0
PushByte 1
Equal
PopRet

RULE 5.12, SchMain.gdl(269):  if (commaAlt) cno_Downward  >  cDownward   /  ANY  _  ; endif; 

ACTIONS:
PutSubs 0 61 11
Next
RetZero

CONSTRAINTS:
PushFeat 6 0
PopRet

RULE 5.13, SchMain.gdl(273):  if (dammatanAlt) cno_SixNine  >  cSixNine   /  ANY  _  ; endif; 

ACTIONS:
PutGlyph 29
Next
RetZero

CONSTRAINTS:
PushFeat 7 0
PopRet

RULE 5.14, SchMain.gdl(277):  if (endOfAyah == 1) cEndOfAyah  >  cEndOfAyahCircle   /  ANY  _  ; endif; 

ACTIONS:
PutSubs 0 49 14
Next
RetZero

CONSTRAINTS:
PushFeat 8 0
PushByte 1
Equal
PopRet

RULE 5.15, SchMain.gdl(280):  if (endOfAyah == 2) cEndOfAyah  >  cEndOfAyahSquare   /  ANY  _  ; endif; 

ACTIONS:
PutSubs 0 49 15
Next
RetZero

CONSTRAINTS:
PushFeat 8 0
PushByte 2
Equal
PopRet

RULE 5.16, SchMain.gdl(286):  if (!(invis)) cInvisible  >  zeroWidthSpace { dir = @2.dir;  }   /  ANY  _  ; endif; 

ACTIONS:
PutGlyph 36
PushSlotAttr dir 0
AttrSet dir
Next
RetZero

CONSTRAINTS:
PushFeat 11 0
Not
PopRet

PASS: 6

PASS CONSTRAINTS: none

RULE 6.0, SchMain.gdl(409):  cKafLikeIniMed  _  >  @1  absAutoKashida:7   /  _  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  _  absRnoonMed  ;

ACTIONS:
PutCopy 0
Next
CopyNext
CopyNext
CopyNext
CopyNext
Insert
PutGlyph 4
Assoc 1 1
Next
RetZero

CONSTRAINTS: none

RULE 6.1, SchMain.gdl(409):  cKafLikeIniMed  _  >  @1  absAutoKashida:6   /  _  cAnyMarks  cAnyMarks  cAnyMarks  _  absRnoonMed  ;

ACTIONS:
PutCopy 0
Next
CopyNext
CopyNext
CopyNext
Insert
PutGlyph 4
Assoc 1 1
Next
RetZero

CONSTRAINTS: none

RULE 6.2, SchMain.gdl(409):  cKafLikeIniMed  _  >  @1  absAutoKashida:5   /  _  cAnyMarks  cAnyMarks  _  absRnoonMed  ;

ACTIONS:
PutCopy 0
Next
CopyNext
CopyNext
Insert
PutGlyph 4
Assoc 1 1
Next
RetZero

CONSTRAINTS: none

RULE 6.3, SchMain.gdl(409):  cKafLikeIniMed  _  >  @1  absAutoKashida:4   /  _  cAnyMarks  _  absRnoonMed  ;

ACTIONS:
PutCopy 0
Next
CopyNext
Insert
PutGlyph 4
Assoc 1 1
Next
RetZero

CONSTRAINTS: none

RULE 6.4, SchMain.gdl(409):  cKafLikeIniMed  _  >  @1  absAutoKashida:3   /  _  _  absRnoonMed  ;

ACTIONS:
PutCopy 0
Next
Insert
PutGlyph 4
Assoc 1 1
Next
RetZero

CONSTRAINTS: none

RULE 6.5, SchMain.gdl(410):  absFarsiYehIni  _  >  @1  absAutoKashida:7   /  _  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  _  *GC16*  ;

ACTIONS:
PutCopy 0
Next
CopyNext
CopyNext
CopyNext
CopyNext
Insert
PutGlyph 4
Assoc 1 1
Next
RetZero

CONSTRAINTS: none

RULE 6.6, SchMain.gdl(410):  absFarsiYehIni  _  >  @1  absAutoKashida:6   /  _  cAnyMarks  cAnyMarks  cAnyMarks  _  *GC16*  ;

ACTIONS:
PutCopy 0
Next
CopyNext
CopyNext
CopyNext
Insert
PutGlyph 4
Assoc 1 1
Next
RetZero

CONSTRAINTS: none

RULE 6.7, SchMain.gdl(410):  absFarsiYehIni  _  >  @1  absAutoKashida:5   /  _  cAnyMarks  cAnyMarks  _  *GC16*  ;

ACTIONS:
PutCopy 0
Next
CopyNext
CopyNext
Insert
PutGlyph 4
Assoc 1 1
Next
RetZero

CONSTRAINTS: none

RULE 6.8, SchMain.gdl(410):  absFarsiYehIni  _  >  @1  absAutoKashida:4   /  _  cAnyMarks  _  *GC16*  ;

ACTIONS:
PutCopy 0
Next
CopyNext
Insert
PutGlyph 4
Assoc 1 1
Next
RetZero

CONSTRAINTS: none

RULE 6.9, SchMain.gdl(410):  absFarsiYehIni  _  >  @1  absAutoKashida:3   /  _  _  *GC16*  ;

ACTIONS:
PutCopy 0
Next
Insert
PutGlyph 4
Assoc 1 1
Next
RetZero

CONSTRAINTS: none

RULE 6.10, SchMain.gdl(411):  *GC17*  _  >  @1  absAutoKashida:7   /  _  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  _  absRrehFin  ;

ACTIONS:
PutCopy 0
Next
CopyNext
CopyNext
CopyNext
CopyNext
Insert
PutGlyph 4
Assoc 1 1
Next
RetZero

CONSTRAINTS: none

RULE 6.11, SchMain.gdl(411):  *GC17*  _  >  @1  absAutoKashida:6   /  _  cAnyMarks  cAnyMarks  cAnyMarks  _  absRrehFin  ;

ACTIONS:
PutCopy 0
Next
CopyNext
CopyNext
CopyNext
Insert
PutGlyph 4
Assoc 1 1
Next
RetZero

CONSTRAINTS: none

RULE 6.12, SchMain.gdl(411):  *GC17*  _  >  @1  absAutoKashida:5   /  _  cAnyMarks  cAnyMarks  _  absRrehFin  ;

ACTIONS:
PutCopy 0
Next
CopyNext
CopyNext
Insert
PutGlyph 4
Assoc 1 1
Next
RetZero

CONSTRAINTS: none

RULE 6.13, SchMain.gdl(411):  *GC17*  _  >  @1  absAutoKashida:4   /  _  cAnyMarks  _  absRrehFin  ;

ACTIONS:
PutCopy 0
Next
CopyNext
Insert
PutGlyph 4
Assoc 1 1
Next
RetZero

CONSTRAINTS: none

RULE 6.14, SchMain.gdl(411):  *GC17*  _  >  @1  absAutoKashida:3   /  _  _  absRrehFin  ;

ACTIONS:
PutCopy 0
Next
Insert
PutGlyph 4
Assoc 1 1
Next
RetZero

CONSTRAINTS: none

PASS 10: bidi

TABLE: positioning

PASS: 0

PASS CONSTRAINTS: none

NO RULES

PASS: 7

PASS CONSTRAINTS: none

RULE 7.0, SchMain.gdl(302):  cHasExit { user1 = 1;  }  cHasEntry {  attach {to = @1; at = exit; with = entry; } insert = 1;  }   /  ^  _{ user1 == 0 }  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  _  ;

ACTIONS:
PutCopy 0
PushByte 1
IAttrSet user 0
Next
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -5
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 82 0
AttrSet attach_at_x
PushAttToGlyphAttr 83 0
AttrSet attach_at_y
PushGlyphAttr 40 0
AttrSet attach_with_x
PushGlyphAttr 41 0
AttrSet attach_with_y
PushByte 1
AttrSet insert
Next
PushByte -6
PopRet

CONSTRAINTS:
CntxtItem 0 7
PushISlotAttr user 0 0
PushByte 0
Equal
PopRet

RULE 7.1, SchMain.gdl(302):  cHasExit { user1 = 1;  }  cHasEntry {  attach {to = @1; at = exit; with = entry; } insert = 1;  }   /  ^  _{ user1 == 0 }  cAnyMarks  cAnyMarks  cAnyMarks  _  ;

ACTIONS:
PutCopy 0
PushByte 1
IAttrSet user 0
Next
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -4
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 82 0
AttrSet attach_at_x
PushAttToGlyphAttr 83 0
AttrSet attach_at_y
PushGlyphAttr 40 0
AttrSet attach_with_x
PushGlyphAttr 41 0
AttrSet attach_with_y
PushByte 1
AttrSet insert
Next
PushByte -5
PopRet

CONSTRAINTS:
CntxtItem 0 7
PushISlotAttr user 0 0
PushByte 0
Equal
PopRet

RULE 7.2, SchMain.gdl(302):  cHasExit { user1 = 1;  }  cHasEntry {  attach {to = @1; at = exit; with = entry; } insert = 1;  }   /  ^  _{ user1 == 0 }  cAnyMarks  cAnyMarks  _  ;

ACTIONS:
PutCopy 0
PushByte 1
IAttrSet user 0
Next
CopyNext
CopyNext
PutCopy 0
PushByte -3
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 82 0
AttrSet attach_at_x
PushAttToGlyphAttr 83 0
AttrSet attach_at_y
PushGlyphAttr 40 0
AttrSet attach_with_x
PushGlyphAttr 41 0
AttrSet attach_with_y
PushByte 1
AttrSet insert
Next
PushByte -4
PopRet

CONSTRAINTS:
CntxtItem 0 7
PushISlotAttr user 0 0
PushByte 0
Equal
PopRet

RULE 7.3, SchMain.gdl(302):  cHasExit { user1 = 1;  }  cHasEntry {  attach {to = @1; at = exit; with = entry; } insert = 1;  }   /  ^  _{ user1 == 0 }  cAnyMarks  _  ;

ACTIONS:
PutCopy 0
PushByte 1
IAttrSet user 0
Next
CopyNext
PutCopy 0
PushByte -2
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 82 0
AttrSet attach_at_x
PushAttToGlyphAttr 83 0
AttrSet attach_at_y
PushGlyphAttr 40 0
AttrSet attach_with_x
PushGlyphAttr 41 0
AttrSet attach_with_y
PushByte 1
AttrSet insert
Next
PushByte -3
PopRet

CONSTRAINTS:
CntxtItem 0 7
PushISlotAttr user 0 0
PushByte 0
Equal
PopRet

RULE 7.4, SchMain.gdl(302):  cHasExit { user1 = 1;  }  cHasEntry {  attach {to = @1; at = exit; with = entry; } insert = 1;  }   /  ^  _{ user1 == 0 }  _  ;

ACTIONS:
PutCopy 0
PushByte 1
IAttrSet user 0
Next
PutCopy 0
PushByte -1
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 82 0
AttrSet attach_at_x
PushAttToGlyphAttr 83 0
AttrSet attach_at_y
PushGlyphAttr 40 0
AttrSet attach_with_x
PushGlyphAttr 41 0
AttrSet attach_with_y
PushByte 1
AttrSet insert
Next
PushByte -2
PopRet

CONSTRAINTS:
CntxtItem 0 7
PushISlotAttr user 0 0
PushByte 0
Equal
PopRet

RULE 7.5, SchMain.gdl(309):  cHasAlef  cMatchesAlef {  attach {to = @1; at = alef; with = alef_; } insert = 1;  }   /  _  ^  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte -1
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 36 0
AttrSet attach_at_x
PushAttToGlyphAttr 37 0
AttrSet attach_at_y
PushGlyphAttr 86 0
AttrSet attach_with_x
PushGlyphAttr 87 0
AttrSet attach_with_y
PushByte 1
AttrSet insert
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 7.6, SchMain.gdl(312):  absShadda  *GC14* {  attach {to = @1; at.x = diaA.x; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac;  }   /  _  ^  cAnyMarksBelow  cAnyMarksBelow  cAnyMarksBelow  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -4
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 30 0
AttrSet attach_at_x
PushAttToGlyphAttr 31 0
PushByte 80
Sub
AttrSet attach_at_y
PushByte 0
AttrSet attach_at_xoffset
PushByte 0
AttrSet attach_at_yoffset
PushGlyphAttr 46 0
AttrSet attach_with_x
PushGlyphAttr 47 0
AttrSet attach_with_y
PushFeat 10 0
AttrSet insert
Next
PushByte -4
PopRet

CONSTRAINTS: none

RULE 7.7, SchMain.gdl(312):  absShadda  *GC14* {  attach {to = @1; at.x = diaA.x; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac;  }   /  _  ^  cAnyMarksBelow  cAnyMarksBelow  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -3
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 30 0
AttrSet attach_at_x
PushAttToGlyphAttr 31 0
PushByte 80
Sub
AttrSet attach_at_y
PushByte 0
AttrSet attach_at_xoffset
PushByte 0
AttrSet attach_at_yoffset
PushGlyphAttr 46 0
AttrSet attach_with_x
PushGlyphAttr 47 0
AttrSet attach_with_y
PushFeat 10 0
AttrSet insert
Next
PushByte -3
PopRet

CONSTRAINTS: none

RULE 7.8, SchMain.gdl(312):  absShadda  *GC14* {  attach {to = @1; at.x = diaA.x; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac;  }   /  _  ^  cAnyMarksBelow  _  ;

ACTIONS:
CopyNext
CopyNext
PutCopy 0
PushByte -2
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 30 0
AttrSet attach_at_x
PushAttToGlyphAttr 31 0
PushByte 80
Sub
AttrSet attach_at_y
PushByte 0
AttrSet attach_at_xoffset
PushByte 0
AttrSet attach_at_yoffset
PushGlyphAttr 46 0
AttrSet attach_with_x
PushGlyphAttr 47 0
AttrSet attach_with_y
PushFeat 10 0
AttrSet insert
Next
PushByte -2
PopRet

CONSTRAINTS: none

RULE 7.9, SchMain.gdl(312):  absShadda  *GC14* {  attach {to = @1; at.x = diaA.x; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac;  }   /  _  ^  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte -1
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 30 0
AttrSet attach_at_x
PushAttToGlyphAttr 31 0
PushByte 80
Sub
AttrSet attach_at_y
PushByte 0
AttrSet attach_at_xoffset
PushByte 0
AttrSet attach_at_yoffset
PushGlyphAttr 46 0
AttrSet attach_with_x
PushGlyphAttr 47 0
AttrSet attach_with_y
PushFeat 10 0
AttrSet insert
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 7.10, SchMain.gdl(317):  absHamzaAbove  *GC15* {  attach {to = @1; at.x = diaA.x + 40; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac;  }   /  _  ^  cAnyMarksBelow  cAnyMarksBelow  cAnyMarksBelow  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -4
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 30 0
PushByte 40
Add
AttrSet attach_at_x
PushAttToGlyphAttr 31 0
PushByte 80
Sub
AttrSet attach_at_y
PushByte 0
AttrSet attach_at_xoffset
PushByte 0
AttrSet attach_at_yoffset
PushGlyphAttr 46 0
AttrSet attach_with_x
PushGlyphAttr 47 0
AttrSet attach_with_y
PushFeat 10 0
AttrSet insert
Next
PushByte -4
PopRet

CONSTRAINTS: none

RULE 7.11, SchMain.gdl(317):  absHamzaAbove  *GC15* {  attach {to = @1; at.x = diaA.x + 40; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac;  }   /  _  ^  cAnyMarksBelow  cAnyMarksBelow  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -3
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 30 0
PushByte 40
Add
AttrSet attach_at_x
PushAttToGlyphAttr 31 0
PushByte 80
Sub
AttrSet attach_at_y
PushByte 0
AttrSet attach_at_xoffset
PushByte 0
AttrSet attach_at_yoffset
PushGlyphAttr 46 0
AttrSet attach_with_x
PushGlyphAttr 47 0
AttrSet attach_with_y
PushFeat 10 0
AttrSet insert
Next
PushByte -3
PopRet

CONSTRAINTS: none

RULE 7.12, SchMain.gdl(317):  absHamzaAbove  *GC15* {  attach {to = @1; at.x = diaA.x + 40; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac;  }   /  _  ^  cAnyMarksBelow  _  ;

ACTIONS:
CopyNext
CopyNext
PutCopy 0
PushByte -2
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 30 0
PushByte 40
Add
AttrSet attach_at_x
PushAttToGlyphAttr 31 0
PushByte 80
Sub
AttrSet attach_at_y
PushByte 0
AttrSet attach_at_xoffset
PushByte 0
AttrSet attach_at_yoffset
PushGlyphAttr 46 0
AttrSet attach_with_x
PushGlyphAttr 47 0
AttrSet attach_with_y
PushFeat 10 0
AttrSet insert
Next
PushByte -2
PopRet

CONSTRAINTS: none

RULE 7.13, SchMain.gdl(317):  absHamzaAbove  *GC15* {  attach {to = @1; at.x = diaA.x + 40; at.y = diaA.y - 80; with = diaA_; } insert = selectDiac;  }   /  _  ^  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte -1
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 30 0
PushByte 40
Add
AttrSet attach_at_x
PushAttToGlyphAttr 31 0
PushByte 80
Sub
AttrSet attach_at_y
PushByte 0
AttrSet attach_at_xoffset
PushByte 0
AttrSet attach_at_yoffset
PushGlyphAttr 46 0
AttrSet attach_with_x
PushGlyphAttr 47 0
AttrSet attach_with_y
PushFeat 10 0
AttrSet insert
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 7.14, SchMain.gdl(325):  cTakesDiaDigitA  cDiaDigitAbove {  attach {to = @1; at = diaDigitA; with = diaDigitA_; }  }   /  _  ^  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte -1
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 34 0
AttrSet attach_at_x
PushAttToGlyphAttr 35 0
AttrSet attach_at_y
PushGlyphAttr 88 0
AttrSet attach_with_x
PushGlyphAttr 89 0
AttrSet attach_with_y
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 7.15, SchMain.gdl(330):  cHasDiaA  cMatchesDiaA {  attach {to = @1; at = diaA; with = diaA_; } insert = selectDiac;  }   /  _  ^  cAnyMarksBelow  cAnyMarksBelow  cAnyMarksBelow  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -4
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 30 0
AttrSet attach_at_x
PushAttToGlyphAttr 31 0
AttrSet attach_at_y
PushGlyphAttr 46 0
AttrSet attach_with_x
PushGlyphAttr 47 0
AttrSet attach_with_y
PushFeat 10 0
AttrSet insert
Next
PushByte -4
PopRet

CONSTRAINTS: none

RULE 7.16, SchMain.gdl(330):  cHasDiaA  cMatchesDiaA {  attach {to = @1; at = diaA; with = diaA_; } insert = selectDiac;  }   /  _  ^  cAnyMarksBelow  cAnyMarksBelow  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -3
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 30 0
AttrSet attach_at_x
PushAttToGlyphAttr 31 0
AttrSet attach_at_y
PushGlyphAttr 46 0
AttrSet attach_with_x
PushGlyphAttr 47 0
AttrSet attach_with_y
PushFeat 10 0
AttrSet insert
Next
PushByte -3
PopRet

CONSTRAINTS: none

RULE 7.17, SchMain.gdl(330):  cHasDiaA  cMatchesDiaA {  attach {to = @1; at = diaA; with = diaA_; } insert = selectDiac;  }   /  _  ^  cAnyMarksBelow  _  ;

ACTIONS:
CopyNext
CopyNext
PutCopy 0
PushByte -2
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 30 0
AttrSet attach_at_x
PushAttToGlyphAttr 31 0
AttrSet attach_at_y
PushGlyphAttr 46 0
AttrSet attach_with_x
PushGlyphAttr 47 0
AttrSet attach_with_y
PushFeat 10 0
AttrSet insert
Next
PushByte -2
PopRet

CONSTRAINTS: none

RULE 7.18, SchMain.gdl(330):  cHasDiaA  cMatchesDiaA {  attach {to = @1; at = diaA; with = diaA_; } insert = selectDiac;  }   /  _  ^  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte -1
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 30 0
AttrSet attach_at_x
PushAttToGlyphAttr 31 0
AttrSet attach_at_y
PushGlyphAttr 46 0
AttrSet attach_with_x
PushGlyphAttr 47 0
AttrSet attach_with_y
PushFeat 10 0
AttrSet insert
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 7.19, SchMain.gdl(337):  cSign4  cSignDigit {  attach {to = @3; at = digit; with = digit_; } insert = 1;  }  cSignDigit {  attach {to = @4; at = digit; with = digit_; } insert = 1;  }  cSignDigit {  attach {to = @5; at = digit; with = digit_; } insert = 1;  }  cSignDigit {  attach {to = @1; at = digit; with = digit_; } insert = 1;  }  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte 1
AttrSetSlot attach_to
PushAttToGlyphAttr 48 0
AttrSet attach_at_x
PushAttToGlyphAttr 49 0
AttrSet attach_at_y
PushGlyphAttr 50 0
AttrSet attach_with_x
PushGlyphAttr 51 0
AttrSet attach_with_y
PushByte 1
AttrSet insert
Next
PutCopy 0
PushByte 0
AttrSet insert
PushByte 1
AttrSetSlot attach_to
PushAttToGlyphAttr 48 0
AttrSet attach_at_x
PushAttToGlyphAttr 49 0
AttrSet attach_at_y
PushGlyphAttr 50 0
AttrSet attach_with_x
PushGlyphAttr 51 0
AttrSet attach_with_y
PushByte 1
AttrSet insert
Next
PutCopy 0
PushByte 0
AttrSet insert
PushByte 1
AttrSetSlot attach_to
PushAttToGlyphAttr 48 0
AttrSet attach_at_x
PushAttToGlyphAttr 49 0
AttrSet attach_at_y
PushGlyphAttr 50 0
AttrSet attach_with_x
PushGlyphAttr 51 0
AttrSet attach_with_y
PushByte 1
AttrSet insert
Next
PutCopy 0
PushByte 0
AttrSet insert
PushByte -4
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 48 0
AttrSet attach_at_x
PushAttToGlyphAttr 49 0
AttrSet attach_at_y
PushGlyphAttr 50 0
AttrSet attach_with_x
PushGlyphAttr 51 0
AttrSet attach_with_y
PushByte 1
AttrSet insert
Next
RetZero

CONSTRAINTS: none

RULE 7.20, SchMain.gdl(343):  cSign3  cSignDigit {  attach {to = @3; at = digit; with = digit_; } insert = 1;  }  cSignDigit {  attach {to = @4; at = digit; with = digit_; } insert = 1;  }  cSignDigit {  attach {to = @1; at = digit; with = digit_; } insert = 1;  }  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte 1
AttrSetSlot attach_to
PushAttToGlyphAttr 48 0
AttrSet attach_at_x
PushAttToGlyphAttr 49 0
AttrSet attach_at_y
PushGlyphAttr 50 0
AttrSet attach_with_x
PushGlyphAttr 51 0
AttrSet attach_with_y
PushByte 1
AttrSet insert
Next
PutCopy 0
PushByte 0
AttrSet insert
PushByte 1
AttrSetSlot attach_to
PushAttToGlyphAttr 48 0
AttrSet attach_at_x
PushAttToGlyphAttr 49 0
AttrSet attach_at_y
PushGlyphAttr 50 0
AttrSet attach_with_x
PushGlyphAttr 51 0
AttrSet attach_with_y
PushByte 1
AttrSet insert
Next
PutCopy 0
PushByte 0
AttrSet insert
PushByte -3
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 48 0
AttrSet attach_at_x
PushAttToGlyphAttr 49 0
AttrSet attach_at_y
PushGlyphAttr 50 0
AttrSet attach_with_x
PushGlyphAttr 51 0
AttrSet attach_with_y
PushByte 1
AttrSet insert
Next
RetZero

CONSTRAINTS: none

RULE 7.21, SchMain.gdl(348):  cSign2  cSignDigit {  attach {to = @3; at = digit; with = digit_; } insert = 1;  }  cSignDigit {  attach {to = @1; at = digit; with = digit_; } insert = 1;  }  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte 1
AttrSetSlot attach_to
PushAttToGlyphAttr 48 0
AttrSet attach_at_x
PushAttToGlyphAttr 49 0
AttrSet attach_at_y
PushGlyphAttr 50 0
AttrSet attach_with_x
PushGlyphAttr 51 0
AttrSet attach_with_y
PushByte 1
AttrSet insert
Next
PutCopy 0
PushByte 0
AttrSet insert
PushByte -2
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 48 0
AttrSet attach_at_x
PushAttToGlyphAttr 49 0
AttrSet attach_at_y
PushGlyphAttr 50 0
AttrSet attach_with_x
PushGlyphAttr 51 0
AttrSet attach_with_y
PushByte 1
AttrSet insert
Next
RetZero

CONSTRAINTS: none

RULE 7.22, SchMain.gdl(352):  cSign1  cSignDigit {  attach {to = @1; at = digit; with = digit_; } insert = 1;  }  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte -1
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 48 0
AttrSet attach_at_x
PushAttToGlyphAttr 49 0
AttrSet attach_at_y
PushGlyphAttr 50 0
AttrSet attach_with_x
PushGlyphAttr 51 0
AttrSet attach_with_y
PushByte 1
AttrSet insert
Next
RetZero

CONSTRAINTS: none

PASS: 8

PASS CONSTRAINTS: none

RULE 8.0, SchMain.gdl(361):  cHasDia2B  cMatchesDia2B {  attach {to = @1; at = dia2B; with = dia2B_; } insert = selectDiac;  }   /  _  ^  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte -1
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 38 0
AttrSet attach_at_x
PushAttToGlyphAttr 39 0
AttrSet attach_at_y
PushGlyphAttr 52 0
AttrSet attach_with_x
PushGlyphAttr 53 0
AttrSet attach_with_y
PushFeat 10 0
AttrSet insert
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 8.1, SchMain.gdl(367):  cTakesDiaDigitB  cDiaDigitBelow {  attach {to = @1; at = diaDigitB; with = diaDigitB_; }  }   /  _  ^  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte -1
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 56 0
AttrSet attach_at_x
PushAttToGlyphAttr 57 0
AttrSet attach_at_y
PushGlyphAttr 90 0
AttrSet attach_with_x
PushGlyphAttr 91 0
AttrSet attach_with_y
Next
PushByte -1
PopRet

CONSTRAINTS: none

RULE 8.2, SchMain.gdl(372):  cHasDiaB  cMatchesDiaB {  attach {to = @1; at = diaB; with = diaB_; } insert = selectDiac;  }   /  _  ^  cAnyMarksAbove  cAnyMarksAbove  cAnyMarksAbove  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -4
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 32 0
AttrSet attach_at_x
PushAttToGlyphAttr 33 0
AttrSet attach_at_y
PushGlyphAttr 54 0
AttrSet attach_with_x
PushGlyphAttr 55 0
AttrSet attach_with_y
PushFeat 10 0
AttrSet insert
Next
PushByte -4
PopRet

CONSTRAINTS: none

RULE 8.3, SchMain.gdl(372):  cHasDiaB  cMatchesDiaB {  attach {to = @1; at = diaB; with = diaB_; } insert = selectDiac;  }   /  _  ^  cAnyMarksAbove  cAnyMarksAbove  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -3
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 32 0
AttrSet attach_at_x
PushAttToGlyphAttr 33 0
AttrSet attach_at_y
PushGlyphAttr 54 0
AttrSet attach_with_x
PushGlyphAttr 55 0
AttrSet attach_with_y
PushFeat 10 0
AttrSet insert
Next
PushByte -3
PopRet

CONSTRAINTS: none

RULE 8.4, SchMain.gdl(372):  cHasDiaB  cMatchesDiaB {  attach {to = @1; at = diaB; with = diaB_; } insert = selectDiac;  }   /  _  ^  cAnyMarksAbove  _  ;

ACTIONS:
CopyNext
CopyNext
PutCopy 0
PushByte -2
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 32 0
AttrSet attach_at_x
PushAttToGlyphAttr 33 0
AttrSet attach_at_y
PushGlyphAttr 54 0
AttrSet attach_with_x
PushGlyphAttr 55 0
AttrSet attach_with_y
PushFeat 10 0
AttrSet insert
Next
PushByte -2
PopRet

CONSTRAINTS: none

RULE 8.5, SchMain.gdl(372):  cHasDiaB  cMatchesDiaB {  attach {to = @1; at = diaB; with = diaB_; } insert = selectDiac;  }   /  _  ^  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte -1
AttrSetSlot attach_to
PushByte 0
AttrSet insert
PushAttToGlyphAttr 32 0
AttrSet attach_at_x
PushAttToGlyphAttr 33 0
AttrSet attach_at_y
PushGlyphAttr 54 0
AttrSet attach_with_x
PushGlyphAttr 55 0
AttrSet attach_with_y
PushFeat 10 0
AttrSet insert
Next
PushByte -1
PopRet

CONSTRAINTS: none

PASS: 9

PASS CONSTRAINTS: none

RULE 9.0, SchMain.gdl(427):  cKafLikeIniMed  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  absAutoKashida { shift.x = -30; advance.x = aw + -30;  }  absRnoonMed { shift.x = -30; advance.x = aw + -30;  }   /  ANY  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.1, SchMain.gdl(427):  cKafLikeIniMed  cAnyMarks  cAnyMarks  cAnyMarks  absAutoKashida { shift.x = -30; advance.x = aw + -30;  }  absRnoonMed { shift.x = -30; advance.x = aw + -30;  }   /  ANY  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.2, SchMain.gdl(427):  cKafLikeIniMed  cAnyMarks  cAnyMarks  absAutoKashida { shift.x = -30; advance.x = aw + -30;  }  absRnoonMed { shift.x = -30; advance.x = aw + -30;  }   /  ANY  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.3, SchMain.gdl(427):  cKafLikeIniMed  cAnyMarks  absAutoKashida { shift.x = -30; advance.x = aw + -30;  }  absRnoonMed { shift.x = -30; advance.x = aw + -30;  }   /  ANY  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.4, SchMain.gdl(427):  cKafLikeIniMed  absAutoKashida { shift.x = -30; advance.x = aw + -30;  }  absRnoonMed { shift.x = -30; advance.x = aw + -30;  }   /  ANY  _  _  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.5, SchMain.gdl(430):  absFarsiYehIni  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  absAutoKashida { shift.x = -30; advance.x = aw + -30;  }  *GC18* { shift.x = -30; advance.x = aw + -30;  }   /  ANY  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.6, SchMain.gdl(430):  absFarsiYehIni  cAnyMarks  cAnyMarks  cAnyMarks  absAutoKashida { shift.x = -30; advance.x = aw + -30;  }  *GC18* { shift.x = -30; advance.x = aw + -30;  }   /  ANY  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.7, SchMain.gdl(430):  absFarsiYehIni  cAnyMarks  cAnyMarks  absAutoKashida { shift.x = -30; advance.x = aw + -30;  }  *GC18* { shift.x = -30; advance.x = aw + -30;  }   /  ANY  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.8, SchMain.gdl(430):  absFarsiYehIni  cAnyMarks  absAutoKashida { shift.x = -30; advance.x = aw + -30;  }  *GC18* { shift.x = -30; advance.x = aw + -30;  }   /  ANY  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.9, SchMain.gdl(430):  absFarsiYehIni  absAutoKashida { shift.x = -30; advance.x = aw + -30;  }  *GC18* { shift.x = -30; advance.x = aw + -30;  }   /  ANY  _  _  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
PutCopy 0
PushByte -30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -30
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.10, SchMain.gdl(433):  *GC19*  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  absAutoKashida { shift.x = -40; advance.x = aw + -40;  }  absRrehFin { shift.x = -40; advance.x = aw + -40;  }   /  ANY  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -40
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -40
Add
AttrSet advance_x
Next
PutCopy 0
PushByte -40
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -40
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.11, SchMain.gdl(433):  *GC19*  cAnyMarks  cAnyMarks  cAnyMarks  absAutoKashida { shift.x = -40; advance.x = aw + -40;  }  absRrehFin { shift.x = -40; advance.x = aw + -40;  }   /  ANY  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -40
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -40
Add
AttrSet advance_x
Next
PutCopy 0
PushByte -40
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -40
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.12, SchMain.gdl(433):  *GC19*  cAnyMarks  cAnyMarks  absAutoKashida { shift.x = -40; advance.x = aw + -40;  }  absRrehFin { shift.x = -40; advance.x = aw + -40;  }   /  ANY  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte -40
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -40
Add
AttrSet advance_x
Next
PutCopy 0
PushByte -40
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -40
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.13, SchMain.gdl(433):  *GC19*  cAnyMarks  absAutoKashida { shift.x = -40; advance.x = aw + -40;  }  absRrehFin { shift.x = -40; advance.x = aw + -40;  }   /  ANY  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
PutCopy 0
PushByte -40
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -40
Add
AttrSet advance_x
Next
PutCopy 0
PushByte -40
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -40
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.14, SchMain.gdl(433):  *GC19*  absAutoKashida { shift.x = -40; advance.x = aw + -40;  }  absRrehFin { shift.x = -40; advance.x = aw + -40;  }   /  ANY  _  _  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte -40
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -40
Add
AttrSet advance_x
Next
PutCopy 0
PushByte -40
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte -40
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.15, SchMain.gdl(439):  absAlef  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  absRreh { shift.x = 70; advance.x = aw + 70;  }   /  ANY  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 70
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 70
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.16, SchMain.gdl(439):  absAlef  cAnyMarks  cAnyMarks  cAnyMarks  absRreh { shift.x = 70; advance.x = aw + 70;  }   /  ANY  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 70
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 70
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.17, SchMain.gdl(439):  absAlef  cAnyMarks  cAnyMarks  absRreh { shift.x = 70; advance.x = aw + 70;  }   /  ANY  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 70
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 70
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.18, SchMain.gdl(439):  absAlef  cAnyMarks  absRreh { shift.x = 70; advance.x = aw + 70;  }   /  ANY  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
PutCopy 0
PushByte 70
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 70
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.19, SchMain.gdl(439):  absAlef  absRreh { shift.x = 70; advance.x = aw + 70;  }   /  ANY  _  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte 70
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 70
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.20, SchMain.gdl(442):  *GC20*  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  *GC21*  absNameMarker { shift.y = 220;  }   /  ANY  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushShort 220
AttrSet shift_y
Next
RetZero

CONSTRAINTS: none

RULE 9.21, SchMain.gdl(442):  *GC20*  cAnyMarks  cAnyMarks  cAnyMarks  *GC21*  absNameMarker { shift.y = 220;  }   /  ANY  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushShort 220
AttrSet shift_y
Next
RetZero

CONSTRAINTS: none

RULE 9.22, SchMain.gdl(442):  *GC20*  cAnyMarks  cAnyMarks  *GC21*  absNameMarker { shift.y = 220;  }   /  ANY  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushShort 220
AttrSet shift_y
Next
RetZero

CONSTRAINTS: none

RULE 9.23, SchMain.gdl(442):  *GC20*  cAnyMarks  *GC21*  absNameMarker { shift.y = 220;  }   /  ANY  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
PutCopy 0
PushShort 220
AttrSet shift_y
Next
RetZero

CONSTRAINTS: none

RULE 9.24, SchMain.gdl(442):  *GC20*  *GC21*  absNameMarker { shift.y = 220;  }   /  ANY  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
PutCopy 0
PushShort 220
AttrSet shift_y
Next
RetZero

CONSTRAINTS: none

RULE 9.25, SchMain.gdl(447):  *GC22*  cDiaDigitAbove  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  *GC23*  absNameMarker { shift.x = 275;  }   /  ANY  _  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushShort 275
AttrSet shift_x
Next
RetZero

CONSTRAINTS: none

RULE 9.26, SchMain.gdl(447):  *GC22*  cDiaDigitAbove  cAnyMarks  cAnyMarks  cAnyMarks  *GC23*  absNameMarker { shift.x = 275;  }   /  ANY  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushShort 275
AttrSet shift_x
Next
RetZero

CONSTRAINTS: none

RULE 9.27, SchMain.gdl(447):  *GC22*  cDiaDigitAbove  cAnyMarks  cAnyMarks  *GC23*  absNameMarker { shift.x = 275;  }   /  ANY  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushShort 275
AttrSet shift_x
Next
RetZero

CONSTRAINTS: none

RULE 9.28, SchMain.gdl(447):  *GC22*  cDiaDigitAbove  cAnyMarks  *GC23*  absNameMarker { shift.x = 275;  }   /  ANY  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushShort 275
AttrSet shift_x
Next
RetZero

CONSTRAINTS: none

RULE 9.29, SchMain.gdl(447):  *GC22*  cDiaDigitAbove  *GC23*  absNameMarker { shift.x = 275;  }   /  ANY  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
PutCopy 0
PushShort 275
AttrSet shift_x
Next
RetZero

CONSTRAINTS: none

RULE 9.30, SchMain.gdl(452):  cNoonGhunna  *GC25* { shift.y = -75;  }   /  *GC24*  _  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte -75
AttrSet shift_y
Next
RetZero

CONSTRAINTS: none

RULE 9.31, SchMain.gdl(454):  cNoonGhunna  *GC26* { shift.y = -150;  }   /  ANY  _  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushShort -150
AttrSet shift_y
Next
RetZero

CONSTRAINTS: none

RULE 9.32, SchMain.gdl(458):  if (kasraTcheh == 2) cBehLikeIniMed  absKasra { shift.x = -60; shift.y = 125;  }  cTchehLikeFin   /  ANY  _  _  _  ; endif; 

ACTIONS:
CopyNext
PutCopy 0
PushByte -60
AttrSet shift_x
PushByte 125
AttrSet shift_y
Next
CopyNext
RetZero

CONSTRAINTS:
PushFeat 9 0
PushByte 2
Equal
PopRet

RULE 9.33, SchMain.gdl(459):  if (kasraTcheh == 2) cBehLikeIniMed  absKasratan { shift.x = -100; shift.y = 30;  }  cTchehLikeFin   /  ANY  _  _  _  ; endif; 

ACTIONS:
CopyNext
PutCopy 0
PushByte -100
AttrSet shift_x
PushByte 30
AttrSet shift_y
Next
CopyNext
RetZero

CONSTRAINTS:
PushFeat 9 0
PushByte 2
Equal
PopRet

RULE 9.34, SchMain.gdl(462):  if (kasraTcheh == 1) cBehLikeIniMed  absKasra { shift.x = -40; shift.y = -200;  }  cTchehLikeFin   /  ANY  _  _  _  ; endif; 

ACTIONS:
CopyNext
PutCopy 0
PushByte -40
AttrSet shift_x
PushShort -200
AttrSet shift_y
Next
CopyNext
RetZero

CONSTRAINTS:
PushFeat 9 0
PushByte 1
Equal
PopRet

RULE 9.35, SchMain.gdl(463):  if (kasraTcheh == 1) cBehLikeIniMed  absKasratan { shift.x = -60; shift.y = -130;  }  cTchehLikeFin   /  ANY  _  _  _  ; endif; 

ACTIONS:
CopyNext
PutCopy 0
PushByte -60
AttrSet shift_x
PushShort -130
AttrSet shift_y
Next
CopyNext
RetZero

CONSTRAINTS:
PushFeat 9 0
PushByte 1
Equal
PopRet

RULE 9.36, SchMain.gdl(465):  cPehLikeIniMed  absKasra { shift.y = -50;  }  cTchehLikeFin   /  ANY  _  _  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte -50
AttrSet shift_y
Next
CopyNext
RetZero

CONSTRAINTS: none

RULE 9.37, SchMain.gdl(466):  cPehLikeIniMed  absKasratan { shift.x = -50;  }  cTchehLikeFin   /  ANY  _  _  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte -50
AttrSet shift_x
Next
CopyNext
RetZero

CONSTRAINTS: none

RULE 9.38, SchMain.gdl(467):  cTehLikeIniMed  absKasratan { shift.x = -80;  }  cTchehLikeFin   /  ANY  _  _  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte -80
AttrSet shift_x
Next
CopyNext
RetZero

CONSTRAINTS: none

RULE 9.39, SchMain.gdl(470):  absAlef  absMaddahAbove { shift.x = -130;  }  absGaf { shift.x = 30; advance.x = aw + 30;  }   /  ANY  _  _  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushShort -130
AttrSet shift_x
Next
PutCopy 0
PushByte 30
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 30
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.40, SchMain.gdl(471):  absAlef  absMaddahAbove { shift.x = -120;  }  absGafIni { shift.x = 70; advance.x = aw + 70;  }   /  ANY  _  _  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte -120
AttrSet shift_x
Next
PutCopy 0
PushByte 70
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 70
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.41, SchMain.gdl(474):  cBehLikeIniMed  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  absRehBarFin { shift.x = 50; advance.x = aw + 50;  }   /  ANY  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 50
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 50
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.42, SchMain.gdl(474):  cBehLikeIniMed  cAnyMarks  cAnyMarks  cAnyMarks  absRehBarFin { shift.x = 50; advance.x = aw + 50;  }   /  ANY  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 50
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 50
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.43, SchMain.gdl(474):  cBehLikeIniMed  cAnyMarks  cAnyMarks  absRehBarFin { shift.x = 50; advance.x = aw + 50;  }   /  ANY  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 50
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 50
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.44, SchMain.gdl(474):  cBehLikeIniMed  cAnyMarks  absRehBarFin { shift.x = 50; advance.x = aw + 50;  }   /  ANY  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
PutCopy 0
PushByte 50
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 50
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.45, SchMain.gdl(474):  cBehLikeIniMed  absRehBarFin { shift.x = 50; advance.x = aw + 50;  }   /  ANY  _  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte 50
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 50
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.46, SchMain.gdl(475):  cPehLikeIniMed  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  absRehBarFin { shift.x = 70; advance.x = aw + 70;  }   /  ANY  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 70
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 70
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.47, SchMain.gdl(475):  cPehLikeIniMed  cAnyMarks  cAnyMarks  cAnyMarks  absRehBarFin { shift.x = 70; advance.x = aw + 70;  }   /  ANY  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 70
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 70
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.48, SchMain.gdl(475):  cPehLikeIniMed  cAnyMarks  cAnyMarks  absRehBarFin { shift.x = 70; advance.x = aw + 70;  }   /  ANY  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 70
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 70
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.49, SchMain.gdl(475):  cPehLikeIniMed  cAnyMarks  absRehBarFin { shift.x = 70; advance.x = aw + 70;  }   /  ANY  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
PutCopy 0
PushByte 70
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 70
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.50, SchMain.gdl(475):  cPehLikeIniMed  absRehBarFin { shift.x = 70; advance.x = aw + 70;  }   /  ANY  _  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte 70
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 70
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.51, SchMain.gdl(478):  *GC27*  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  cMark2Above  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.52, SchMain.gdl(478):  *GC27*  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  cMark2Above  cAnyMarks  cAnyMarks  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.53, SchMain.gdl(478):  *GC27*  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  cMark2Above  cAnyMarks  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.54, SchMain.gdl(478):  *GC27*  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  cMark2Above  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.55, SchMain.gdl(478):  *GC27*  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  cMark2Above  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.56, SchMain.gdl(478):  *GC27*  cAnyMarks  cAnyMarks  cAnyMarks  cMark2Above  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.57, SchMain.gdl(478):  *GC27*  cAnyMarks  cAnyMarks  cAnyMarks  cMark2Above  cAnyMarks  cAnyMarks  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.58, SchMain.gdl(478):  *GC27*  cAnyMarks  cAnyMarks  cAnyMarks  cMark2Above  cAnyMarks  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.59, SchMain.gdl(478):  *GC27*  cAnyMarks  cAnyMarks  cAnyMarks  cMark2Above  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.60, SchMain.gdl(478):  *GC27*  cAnyMarks  cAnyMarks  cAnyMarks  cMark2Above  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.61, SchMain.gdl(478):  *GC27*  cAnyMarks  cAnyMarks  cMark2Above  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.62, SchMain.gdl(478):  *GC27*  cAnyMarks  cAnyMarks  cMark2Above  cAnyMarks  cAnyMarks  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.63, SchMain.gdl(478):  *GC27*  cAnyMarks  cAnyMarks  cMark2Above  cAnyMarks  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.64, SchMain.gdl(478):  *GC27*  cAnyMarks  cAnyMarks  cMark2Above  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.65, SchMain.gdl(478):  *GC27*  cAnyMarks  cAnyMarks  cMark2Above  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.66, SchMain.gdl(478):  *GC27*  cAnyMarks  cMark2Above  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.67, SchMain.gdl(478):  *GC27*  cAnyMarks  cMark2Above  cAnyMarks  cAnyMarks  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.68, SchMain.gdl(478):  *GC27*  cAnyMarks  cMark2Above  cAnyMarks  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.69, SchMain.gdl(478):  *GC27*  cAnyMarks  cMark2Above  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.70, SchMain.gdl(478):  *GC27*  cAnyMarks  cMark2Above  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.71, SchMain.gdl(478):  *GC27*  cMark2Above  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.72, SchMain.gdl(478):  *GC27*  cMark2Above  cAnyMarks  cAnyMarks  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.73, SchMain.gdl(478):  *GC27*  cMark2Above  cAnyMarks  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.74, SchMain.gdl(478):  *GC27*  cMark2Above  cAnyMarks  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.75, SchMain.gdl(478):  *GC27*  cMark2Above  absJehRetro1Fin { shift.x = 65; advance.x = aw + 65;  }   /  ANY  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
PutCopy 0
PushByte 65
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 65
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.76, SchMain.gdl(481):  *GC28*  cAnyMarks  cAnyMarks  cAnyMarks  cAnyMarks  cKehehLikeFin { shift.x = 70; advance.x = aw + 70;  }   /  ANY  _  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 70
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 70
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.77, SchMain.gdl(481):  *GC28*  cAnyMarks  cAnyMarks  cAnyMarks  cKehehLikeFin { shift.x = 70; advance.x = aw + 70;  }   /  ANY  _  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 70
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 70
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.78, SchMain.gdl(481):  *GC28*  cAnyMarks  cAnyMarks  cKehehLikeFin { shift.x = 70; advance.x = aw + 70;  }   /  ANY  _  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
CopyNext
PutCopy 0
PushByte 70
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 70
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.79, SchMain.gdl(481):  *GC28*  cAnyMarks  cKehehLikeFin { shift.x = 70; advance.x = aw + 70;  }   /  ANY  _  _  _  ;

ACTIONS:
CopyNext
CopyNext
PutCopy 0
PushByte 70
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 70
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none

RULE 9.80, SchMain.gdl(481):  *GC28*  cKehehLikeFin { shift.x = 70; advance.x = aw + 70;  }   /  ANY  _  _  ;

ACTIONS:
CopyNext
PutCopy 0
PushByte 70
AttrSet shift_x
PushGlyphMetric aw 0 0
PushByte 70
Add
AttrSet advance_x
Next
RetZero

CONSTRAINTS: none
