DIRECTORY HandCoding, HandCodingPseudos, HandCodingSupport, HandCodingComforts, DragOpsCross, DragOpsCrossUtils, LizardHeart, LizardTweaker, IO, ViewerIO; GenDFN: CEDAR PROGRAM IMPORTS HandCoding, HandCodingPseudos, HandCodingSupport, HandCodingComforts, DragOpsCrossUtils, LizardHeart, LizardTweaker, IO, ViewerIO = { fdfnImpl: HandCodingComforts.DataLabel; oname: INT = 0; cSIZEname: INT = HandCodingComforts.SizeOfINT; ochildren: INT = oname + cSIZEname; cSIZEchildren: INT = HandCodingComforts.SizeOfLongPointer; ocyclehead: INT = ochildren + cSIZEchildren; cSIZEcyclehead: INT = HandCodingComforts.SizeOfLongPointer; ocnext: INT = ocyclehead + cSIZEcyclehead; cSIZEcnext: INT = HandCodingComforts.SizeOfLongPointer; onlnext: INT = ocnext + cSIZEcnext; cSIZEnlnext: INT = HandCodingComforts.SizeOfLongPointer; otoporder: INT = onlnext + cSIZEnlnext; cSIZEtoporder: INT = HandCodingComforts.SizeOfINT; cSIZEnlType: INT = otoporder + cSIZEtoporder; cSIZEnlTypeRef: INT = HandCodingComforts.SizeOfLongPointer; oarcChildp: INT = 0; cSIZEarcChildp: INT = HandCodingComforts.SizeOfLongPointer; oarcChildlist: INT = oarcChildp + cSIZEarcChildp; cSIZEarcChildlist: INT = HandCodingComforts.SizeOfLongPointer; cSIZEarcType: INT = oarcChildlist + cSIZEarcChildlist; cSIZEarcTypeRef: INT = HandCodingComforts.SizeOfLongPointer; cDFNNaN: INT = 0; cDFNBusy: INT = -1; onlentryp: INT = 0; cSIZEnlentryp: INT = HandCodingComforts.SizeOfLongPointer; ocycletop: INT = onlentryp + cSIZEnlentryp; cSIZEcycletop: INT = HandCodingComforts.SizeOfINT; cSIZEdfnstruct: INT = ocycletop + cSIZEcycletop; cSIZEdfntype: INT = cSIZEdfnstruct; cDFNMaxDepth: INT = 100; cnlMax: INT = 101; carcMax: INT = 600; oFirst: INT = 0; odfnCounter: INT = oFirst; cSIZEdfnCounter: INT = HandCodingComforts.SizeOfINT; odfnDepth: INT = odfnCounter + cSIZEdfnCounter; cSIZEdfnDepth: INT = HandCodingComforts.SizeOfINT; onlAvail: INT = odfnDepth + cSIZEdfnDepth; cSIZEnlAvail: INT = HandCodingComforts.SizeOfINT; oarcAvail: INT = onlAvail + cSIZEnlAvail; cSIZEarcAvail: INT = HandCodingComforts.SizeOfINT; onodeWorld: INT = oarcAvail + cSIZEarcAvail; cSIZEnodeWorld: INT = HandCodingComforts.SizeOfLongPointer; odfnStack: INT = onodeWorld + cSIZEnodeWorld; cSIZEdfnStack: INT = cDFNMaxDepth * cSIZEdfntype; onlZone: INT = odfnStack + cSIZEdfnStack; cSIZEnlZone: INT = cnlMax * cSIZEnlType; oarcZone: INT = onlZone + cSIZEnlZone; cSIZEarcZone: INT = carcMax * cSIZEarcType; oLast: INT = oarcZone + cSIZEarcZone; out: ViewerIO.STREAM _ NIL; lDepthFirstNumber: HandCodingPseudos.Label; DepthFirstNumber: HandCodingComforts.Proc = { rparentp: HandCoding.RegSpec = HandCoding.reg0; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.DepthFirstNumber", lDepthFirstNumber, 1]; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRn [rparentp]; HandCodingComforts.iLFC [ldfnNumbered]; HandCodingComforts.iJNEj [HandCodingComforts.TRUEByte, lcontinue]; HandCodingComforts.LoadConstant [HandCodingComforts.TRUEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRn [rparentp]; HandCodingComforts.iLFC [ldfnBusy]; HandCodingComforts.iJNEj [HandCodingComforts.TRUEByte, lcontinue]; HandCoding.drLRn [rparentp]; HandCodingComforts.iLFC [ldfnFindcycle]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRn [rparentp]; HandCodingComforts.iLFC [ldfnPreVisit]; HandCodingComforts.iJEQj [HandCodingComforts.TRUEByte, lcontinue]; HandCodingComforts.LoadConstant [HandCodingComforts.FALSEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; { rarcp: HandCoding.RegSpec = HandCoding.reg1; lagain: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; ltest: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rparentp, ochildren]; -- HandCoding.drMove [rarcp, HandCoding.popSrc]; HandCodingComforts.iJB [ltest]; HandCodingPseudos.SetLabel[lagain]; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rarcp, oarcChildp]; HandCodingComforts.iLFC [lDepthFirstNumber]; HandCodingComforts.iJEQj [HandCodingComforts.TRUEByte, lcontinue]; HandCodingComforts.LoadConstant [HandCodingComforts.FALSEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; HandCoding.drRRI [rarcp, rarcp, oarcChildlist]; HandCodingPseudos.SetLabel[ltest]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortNIL, rarcp, lagain]; HandCoding.drDIS []; }; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRn [rparentp]; HandCodingComforts.iLFC [ldfnPostVisit]; HandCodingComforts.iJEQj [HandCodingComforts.TRUEByte, lcontinue]; HandCodingComforts.LoadConstant [HandCodingComforts.FALSEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; HandCodingComforts.LoadConstant [HandCodingComforts.TRUEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; ldfnPreVisit: HandCodingPseudos.Label; dfnPreVisit: HandCodingComforts.Proc = { rparentp: HandCoding.RegSpec = HandCoding.reg0; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.dfnPreVisit", ldfnPreVisit, 1]; { rdfnImpl: HandCoding.RegSpec = HandCoding.reg1; HandCoding.drLIQB [fdfnImpl]; -- HandCoding.drMove [rdfnImpl, HandCoding.popSrc]; HandCoding.drLRIn [rdfnImpl, odfnDepth]; HandCoding.drADDB [1]; HandCoding.drSRIn [rdfnImpl, odfnDepth]; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLIB [cDFNMaxDepth]; HandCoding.drLRIn [rdfnImpl, odfnDepth]; HandCodingComforts.iRJLTj [HandCodingComforts.ShortpopSrc, HandCoding.belowSrcPop, lcontinue]; -- HandCoding.drLRIn [rdfnImpl, oformat1]; -- HandCodingComforts.LoadConstant [HandCodingComforts.ConstantNIL]; -- HandCodingComforts.LoadConstant [HandCodingComforts.ConstantNIL]; -- HandCodingComforts.LoadConstant [HandCodingComforts.ConstantNIL]; -- HandCodingComforts.LoadConstant [HandCodingComforts.ConstantNIL]; -- HandCodingComforts.iDFC [lCmdIOOut]; HandCodingComforts.LoadConstant [HandCodingComforts.FALSEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; HandCoding.drLRn [rdfnImpl]; HandCoding.drADDB [odfnStack]; HandCoding.drLRIn [rdfnImpl, odfnDepth]; HandCoding.drQADD [topAtop, HandCoding.topSrc]; HandCoding.drADD []; HandCoding.drLRn [rparentp]; HandCoding.drWSB [onlentryp]; HandCoding.drLRn [rdfnImpl]; HandCoding.drADDB [odfnStack]; HandCoding.drLRIn [rdfnImpl, odfnDepth]; HandCoding.drQADD [topAtop, HandCoding.topSrc]; HandCoding.drADD []; HandCoding.drLRIn [rdfnImpl, odfnDepth]; HandCoding.drWSB [ocycletop]; HandCoding.drLRn [rparentp]; HandCodingComforts.LoadConstant [cDFNBusy]; HandCoding.drWSB [otoporder]; HandCodingComforts.LoadConstant [HandCodingComforts.TRUEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; }; ldfnNumbered: HandCodingPseudos.Label; dfnNumbered: HandCodingComforts.Proc = { rchildp: HandCoding.RegSpec = HandCoding.reg0; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.dfnNumbered", ldfnNumbered, 1]; { lelse: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rchildp, otoporder]; HandCodingComforts.iJEQj [cDFNNaN, lelse]; HandCoding.drLRIn [rchildp, otoporder]; HandCodingComforts.iRJEQj [HandCodingComforts.ShortpopSrc, HandCodingComforts.ConstantMinus1, lelse]; HandCodingComforts.LoadConstant [HandCodingComforts.TRUEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lelse]; HandCodingComforts.LoadConstant [HandCodingComforts.FALSEValue]; HandCodingComforts.iJB [lreturn]; }; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; ldfnBusy: HandCodingPseudos.Label; dfnBusy: HandCodingComforts.Proc = { rchildp: HandCoding.RegSpec = HandCoding.reg0; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.dfnBusy", ldfnBusy, 1]; { lequalDFNNaN: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rchildp, otoporder]; HandCodingComforts.iJEQj [cDFNNaN, lequalDFNNaN]; HandCodingComforts.LoadConstant [HandCodingComforts.TRUEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lequalDFNNaN]; HandCodingComforts.LoadConstant [HandCodingComforts.FALSEValue]; HandCodingComforts.iJB [lreturn]; }; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; ldfnFindcycle: HandCodingPseudos.Label; dfnFindcycle: HandCodingComforts.Proc = { rchildp: HandCoding.RegSpec = HandCoding.reg0; rresult: HandCoding.RegSpec = HandCoding.reg1; rdfnImpl: HandCoding.RegSpec = HandCoding.reg2; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.dfnFindcycle", ldfnFindcycle, 1]; HandCodingComforts.LoadConstant [HandCodingComforts.FALSEValue]; -- HandCoding.drMove [rresult, HandCoding.popSrc]; HandCoding.drLIQB [fdfnImpl]; -- HandCoding.drMove [rdfnImpl, HandCoding.popSrc]; { rcycletop: HandCoding.RegSpec = HandCoding.reg3; rcycleheadp: HandCoding.RegSpec = HandCoding.reg4; rtailp: HandCoding.RegSpec = HandCoding.reg5; HandCodingComforts.LoadConstant [0]; -- HandCoding.drMove [rcycletop, HandCoding.popSrc]; HandCodingComforts.LoadConstant [HandCodingComforts.NILValue]; -- HandCoding.drMove [rcycleheadp, HandCoding.popSrc]; HandCodingComforts.LoadConstant [HandCodingComforts.NILValue]; -- HandCoding.drMove [tailp, HandCoding.popSrc]; { lafter: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lagain: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; rinitial: HandCoding.RegSpec = HandCoding.reg6; HandCoding.drLRIn [rdfnImpl, odfnDepth]; -- HandCoding.drMove [rinitial, HandCoding.popSrc]; HandCodingComforts.iRJGTj [HandCodingComforts.Short0, rinitial, lafter]; HandCoding.drROR [rcycletop, rinitial, HandCodingComforts.Constant0]; HandCodingPseudos.SetLabel[lagain]; HandCoding.drLRn [rdfnImpl]; HandCoding.drADDB [odfnStack]; HandCoding.drLRn [rcycletop]; HandCoding.drQADD [topAtop, HandCoding.topSrc]; HandCoding.drADD []; HandCoding.drRB [onlentryp]; HandCoding.drSRn [rcycleheadp]; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRn [rchildp]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortpopSrc, rcycleheadp, lcontinue]; HandCodingComforts.iJB [lafter]; HandCodingPseudos.SetLabel[lcontinue]; }; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rchildp, ocyclehead]; HandCodingComforts.iRJEQj [HandCodingComforts.ShortpopSrc, rchildp, lcontinue]; HandCoding.drLRIn [rchildp, ocyclehead]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortpopSrc, rcycleheadp, lcontinue]; HandCodingComforts.iJB [lafter]; HandCodingPseudos.SetLabel[lcontinue]; }; HandCodingComforts.iRJGEj [HandCodingComforts.Short0, rcycletop, lafter]; HandCoding.drRSUB [rcycletop, rcycletop, HandCodingComforts.Constant1]; HandCodingComforts.iJB [lagain]; HandCodingPseudos.SetLabel[lafter]; HandCoding.drDIS []; }; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.iRJLTj [HandCodingComforts.Short0, rcycletop, lcontinue]; HandCoding.drROR [rresult, HandCodingComforts.ConstantFALSE, HandCodingComforts.Constant0]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; { lelse: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rdfnImpl, odfnDepth]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortpopSrc, rcycletop, lelse]; HandCoding.drLRn [rchildp]; HandCodingComforts.iLFC [ldfnSelfCycle]; HandCoding.drSRn [rresult]; HandCodingComforts.iJB [lcontinue]; HandCodingPseudos.SetLabel[lelse]; { ltest: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lagain: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drROR [rtailp, rcycleheadp, HandCodingComforts.Constant0]; HandCodingComforts.iJB [ltest]; HandCodingPseudos.SetLabel[lagain]; HandCoding.drRRI [rtailp, rtailp, ocnext]; HandCodingPseudos.SetLabel[ltest]; HandCoding.drLRIn [rtailp, ocnext]; HandCodingComforts.iJNEj [HandCodingComforts.NILValue, lagain]; }; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rcycleheadp, ocyclehead]; HandCodingComforts.iRJEQj [HandCodingComforts.ShortpopSrc, rcycleheadp, lcontinue]; HandCoding.drRRI [rcycleheadp, rcycleheadp, ocyclehead]; HandCodingPseudos.SetLabel[lcontinue]; }; { lafter: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lagain: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; rinitial: HandCoding.RegSpec = HandCoding.reg6; ritermination: HandCoding.RegSpec = HandCoding.reg7; rindex: HandCoding.RegSpec = HandCoding.reg8; HandCoding.drLRn [rcycletop]; HandCoding.drADDB [1]; -- HandCoding.drMove [rinitial, HandCoding.popSrc]; HandCoding.drLRIn [rdfnImpl, odfnDepth]; -- HandCoding.drMove [ritermination, HandCoding.popSrc]; HandCoding.drLRn [rinitial]; HandCodingComforts.iRJGTj [HandCodingComforts.ShortpopSrc, ritermination, lafter]; HandCoding.drLRn [rinitial]; -- HandCoding.drMove [rindex, HandCoding.popSrc]; HandCodingPseudos.SetLabel[lagain]; HandCoding.drLRn [rdfnImpl]; HandCoding.drADDB [odfnStack]; HandCoding.drRADD [HandCoding.pushDst, rindex, rindex]; HandCoding.drADD []; HandCoding.drRB [onlentryp]; HandCoding.drSRn [rchildp]; { lelse: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rchildp, ocyclehead]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortpopSrc, rchildp, lelse]; HandCodingComforts.iWRI [rtailp, ocnext, rchildp]; HandCodingComforts.iWRI [rchildp, ocyclehead, rcycleheadp]; { ltest: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lagain: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drROR [rtailp, rchildp, HandCodingComforts.Constant0]; HandCodingComforts.iJB [ltest]; HandCodingPseudos.SetLabel[lagain]; HandCoding.drLRIn [rtailp, ocnext]; HandCoding.drLRn [rcycleheadp]; HandCoding.drWSB [ocyclehead]; HandCoding.drRRI [rtailp, rtailp, ocnext]; HandCodingPseudos.SetLabel[ltest]; HandCoding.drLRIn [rtailp, ocnext]; HandCodingComforts.iJNEj [HandCodingComforts.NILByte, lagain]; }; HandCodingComforts.iJB [lcontinue]; HandCodingPseudos.SetLabel[lelse]; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rchildp, ocyclehead]; HandCodingComforts.iRJEQj [HandCodingComforts.ShortpopSrc, rcycleheadp, lcontinue]; HandCodingPseudos.SetLabel[lcontinue]; }; HandCodingPseudos.SetLabel[lcontinue]; }; HandCoding.drLRn [rindex]; HandCodingComforts.iRJGEj [HandCodingComforts.ShortpopSrc, ritermination, lafter]; HandCoding.drRADD [rindex, rindex, HandCodingComforts.Constant1]; HandCodingComforts.iJB [lagain]; HandCodingPseudos.SetLabel[lafter]; }; HandCoding.drROR [rresult,HandCodingComforts.ConstantTRUE,HandCodingComforts.Constant0]; HandCodingPseudos.SetLabel[lcontinue]; }; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drROR [HandCoding.reg0, rresult, HandCodingComforts.Constant0]; HandCodingPseudos.ProcedureExit[1]; }; }; ldfnSelfCycle: HandCodingPseudos.Label; dfnSelfCycle: HandCodingComforts.Proc = { rparentp: HandCoding.RegSpec = HandCoding.reg0; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.dfnSelfCycle", ldfnSelfCycle, 1]; HandCodingComforts.LoadConstant [HandCodingComforts.TRUEByte]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; ldfnPostVisit: HandCodingPseudos.Label; dfnPostVisit: HandCodingComforts.Proc = { rparentp: HandCoding.RegSpec = HandCoding.reg0; rdfnImpl: HandCoding.RegSpec = HandCoding.reg1; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.dfnPostVisit", ldfnPostVisit, 1]; HandCoding.drLIQB [fdfnImpl]; -- HandCoding.drMove [rdfnImpl, HandCoding.popSrc]; { lelse: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rparentp, ocyclehead]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortpopSrc, rparentp, lelse]; HandCoding.drLRIn [rdfnImpl, odfnCounter]; HandCoding.drADDB [1]; HandCoding.drSRIn [rdfnImpl, odfnCounter]; { rmemberp: HandCoding.RegSpec = HandCoding.reg2; ltest: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lagain: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRn [rparentp]; -- HandCoding.drMove [rmemberp, HandCoding.popSrc]; HandCodingPseudos.SetLabel[lagain]; HandCoding.drLRIn [rdfnImpl, odfnCounter]; HandCoding.drSRIn [rmemberp, otoporder]; HandCoding.drRRI [rmemberp, rmemberp, ocnext]; HandCodingPseudos.SetLabel[ltest]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortNIL, rmemberp, lagain]; HandCoding.drDIS []; }; HandCodingComforts.iJB [lcontinue]; HandCodingPseudos.SetLabel[lelse]; HandCodingPseudos.SetLabel[lcontinue]; }; HandCoding.drLRIn [rdfnImpl, odfnDepth]; HandCoding.drSUBB [1]; HandCoding.drSRIn [rdfnImpl, odfnDepth]; HandCodingComforts.LoadConstant [HandCodingComforts.TRUEByte]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; lprintname: HandCodingPseudos.Label; printname: HandCodingComforts.Proc = { rnlentryp: HandCoding.RegSpec = HandCoding.reg0; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.printname", lprintname, 1]; HandCoding.drLRIn [rnlentryp, oname]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; lAddNode: HandCodingPseudos.Label; AddNode: HandCodingComforts.Proc = { rname: HandCoding.RegSpec = HandCoding.reg0; rdfnImpl: HandCoding.RegSpec = HandCoding.reg1; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.AddNode", lAddNode, 1]; HandCoding.drLIQB [fdfnImpl]; -- HandCoding.drMove [rdfnImpl, HandCoding.popSrc]; { rnode: HandCoding.RegSpec = HandCoding.reg2; HandCoding.drLRn [rdfnImpl]; HandCoding.drADDDB [onlZone]; HandCoding.drLRIn [rdfnImpl, onlAvail]; HandCoding.drLIB [cSIZEnlType]; HandCodingComforts.iDFC [HandCodingPseudos.GetGlobalLabel["Basics.MixedMultiply"]]; HandCoding.drADD []; -- HandCoding.drMove [rnode, HandCoding.popSrc]; HandCoding.drLRIn [rdfnImpl, onlAvail]; HandCoding.drADDB [1]; HandCoding.drSRIn [rdfnImpl, onlAvail]; HandCodingComforts.iWRI [rnode, oname, rname]; HandCodingComforts.LoadConstant [HandCodingComforts.NILValue]; HandCoding.drSRIn [rnode, ochildren]; HandCodingComforts.iWRI [rnode, ocyclehead, rnode]; HandCodingComforts.LoadConstant [HandCodingComforts.NILValue]; HandCoding.drSRIn [rnode, ocnext]; HandCoding.drLRIn [rdfnImpl, onodeWorld]; HandCoding.drSRIn [rnode, onlnext]; HandCodingComforts.LoadConstant [0]; HandCoding.drSRIn [rnode, otoporder]; HandCodingComforts.iWRI [rdfnImpl, onodeWorld, rnode]; HandCoding.drLRn [rnode]; HandCodingComforts.iJB [lreturn]; }; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; lNodeLookup: HandCodingPseudos.Label; NodeLookup: HandCodingComforts.Proc = { rname: HandCoding.RegSpec = HandCoding.reg0; rdfnImpl: HandCoding.RegSpec = HandCoding.reg1; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.NodeLookup", lNodeLookup, 1]; HandCoding.drLIQB [fdfnImpl]; -- HandCoding.drMove [rdfnImpl, HandCoding.popSrc]; { rnodep: HandCoding.RegSpec = HandCoding.reg2; lagain: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; ltest: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rdfnImpl, onodeWorld]; -- HandCoding.drMove [rnodep, HandCoding.popSrc]; HandCodingComforts.iJB [ltest]; HandCodingPseudos.SetLabel[lagain]; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rnodep, oname]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortpopSrc, rname, lcontinue]; HandCoding.drLRn [rnodep]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; HandCoding.drRRI [rnodep, rnodep, onlnext]; HandCodingPseudos.SetLabel[ltest]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortNIL, rnodep, lagain]; HandCoding.drDIS []; }; HandCodingComforts.LoadConstant [HandCodingComforts.NILValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; lAddArc: HandCodingPseudos.Label; AddArc: HandCodingComforts.Proc = { rfrom: HandCoding.RegSpec = HandCoding.reg0; rto: HandCoding.RegSpec = HandCoding.reg1; rdfnImpl: HandCoding.RegSpec = HandCoding.reg2; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.AddArc", lAddArc, 2]; HandCoding.drLIQB [fdfnImpl]; -- HandCoding.drMove [rdfnImpl, HandCoding.popSrc]; { rfromNode: HandCoding.RegSpec = HandCoding.reg3; rtoNode: HandCoding.RegSpec = HandCoding.reg4; HandCoding.drLRn [rfrom]; HandCodingComforts.iLFC [lNodeLookup]; -- HandCoding.drMove [rfromNode, HandCoding.popSrc]; HandCoding.drLRn [rto]; HandCodingComforts.iLFC [lNodeLookup]; -- HandCoding.drMove [rtoNode, HandCoding.popSrc]; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.iRJEQj [HandCodingComforts.ShortNIL, rfromNode, lcontinue]; HandCodingComforts.iRJEQj [HandCodingComforts.ShortNIL, rtoNode, lcontinue]; { rarcp: HandCoding.RegSpec = HandCoding.reg5; HandCoding.drLRn [rdfnImpl]; HandCoding.drADDDB [oarcZone]; HandCoding.drLRIn [rdfnImpl, oarcAvail]; HandCoding.drQADD [topAtop, HandCoding.topSrc]; HandCoding.drADD []; -- HandCoding.drMove [rarcp, HandCoding.popSrc]; HandCoding.drLRIn [rdfnImpl, oarcAvail]; HandCoding.drADDB [1]; HandCoding.drSRIn [rdfnImpl, oarcAvail]; HandCodingComforts.iWRI [rarcp, oarcChildp, rtoNode]; HandCoding.drLRIn [rfromNode, ochildren]; HandCoding.drSRIn [rarcp, oarcChildlist]; HandCodingComforts.iWRI [rfromNode, ochildren, rarcp]; HandCoding.drLRn [rarcp]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; }; HandCodingComforts.LoadConstant [HandCodingComforts.NILValue]; HandCodingComforts.iJB [lreturn]; }; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; lPrintNode: HandCodingPseudos.Label; PrintNode: HandCodingComforts.Proc = { rnodep: HandCoding.RegSpec = HandCoding.reg0; HandCodingComforts.Prologue["dfnImpl.PrintNode", lPrintNode, 1]; HandCoding.drLRIn [rnodep, oname]; HandCodingSupport.OQBcommon[x060B, DragOpsCrossUtils.IntToWord[1]]; HandCoding.drDIS []; HandCoding.drLRIn [rnodep, otoporder]; HandCodingSupport.OQBcommon[x060B, DragOpsCrossUtils.IntToWord[0]]; HandCoding.drDIS []; HandCodingPseudos.ProcedureExit[0]; }; lPrintArc: HandCodingPseudos.Label; PrintArc: HandCodingComforts.Proc = { rarcp: HandCoding.RegSpec = HandCoding.reg0; HandCodingComforts.Prologue["dfnImpl.PrintArc", lPrintArc, 1]; HandCoding.drLRIn [rarcp, oarcChildp]; HandCodingComforts.iLFC [lPrintNode]; HandCodingPseudos.ProcedureExit[0]; }; lPrintNodeWorld: HandCodingPseudos.Label; PrintNodeWorld: HandCodingComforts.Proc = { rdfnImpl: HandCoding.RegSpec = HandCoding.reg0; HandCodingComforts.Prologue["dfnImpl.PrintNodeWorld", lPrintNodeWorld, 0]; HandCoding.drLIQB [fdfnImpl]; -- HandCoding.drMove [rdfnImpl, HandCoding.popSrc]; { rnodep: HandCoding.RegSpec = HandCoding.reg1; lagain: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; ltest: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rdfnImpl, onodeWorld]; -- HandCoding.drMove [rnodep, HandCoding.popSrc]; HandCodingComforts.iJB [ltest]; HandCodingPseudos.SetLabel[lagain]; HandCoding.drLRn [rnodep]; HandCodingComforts.iLFC [lPrintNode]; HandCoding.drRRI [rnodep, rnodep, onlnext]; HandCodingPseudos.SetLabel[ltest]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortNIL, rnodep, lagain]; HandCoding.drDIS []; }; HandCodingPseudos.ProcedureExit[0]; }; lDoIt: HandCodingPseudos.Label; DoIt: HandCodingComforts.Proc = { rresult: HandCoding.RegSpec = HandCoding.reg0; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lStartHere: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lStopHere: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.DoIt", lDoIt, 0]; HandCoding.drLIB [ 1]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 2]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 3]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 4]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 5]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 6]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 7]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 8]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 9]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 10]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 11]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 12]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 13]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 14]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 15]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 16]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 17]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 18]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 19]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 20]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 21]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 22]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 23]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 24]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 25]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 26]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 27]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 28]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 29]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 30]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 31]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 32]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 33]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 34]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 35]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 36]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 37]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 38]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 39]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 40]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 41]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 42]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 43]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 44]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 45]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 46]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 47]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 48]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 49]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 50]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 51]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 52]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 53]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 54]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 55]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 56]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 57]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 58]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 59]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 60]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 61]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 62]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 63]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 64]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 65]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 66]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 67]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 68]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 69]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 70]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 71]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 72]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 73]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 74]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 75]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 76]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 77]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 78]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 79]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 80]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 81]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 82]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 83]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 84]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 85]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 86]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 87]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 88]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 89]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 90]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 91]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 92]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 93]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 94]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 98]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 99]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [100]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 1]; HandCoding.drLIB [ 2]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 1]; HandCoding.drLIB [ 3]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 1]; HandCoding.drLIB [ 4]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 1]; HandCoding.drLIB [ 5]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 2]; HandCoding.drLIB [ 6]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 2]; HandCoding.drLIB [ 7]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 4]; HandCoding.drLIB [ 8]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 4]; HandCoding.drLIB [ 9]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 4]; HandCoding.drLIB [ 10]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 4]; HandCoding.drLIB [ 11]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 5]; HandCoding.drLIB [ 12]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 5]; HandCoding.drLIB [ 12]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 5]; HandCoding.drLIB [ 13]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 5]; HandCoding.drLIB [ 14]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 5]; HandCoding.drLIB [ 15]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 6]; HandCoding.drLIB [ 16]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 6]; HandCoding.drLIB [ 17]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 7]; HandCoding.drLIB [ 18]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 7]; HandCoding.drLIB [ 4]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 8]; HandCoding.drLIB [ 19]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 8]; HandCoding.drLIB [ 20]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 8]; HandCoding.drLIB [ 13]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 8]; HandCoding.drLIB [ 21]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 8]; HandCoding.drLIB [ 22]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 9]; HandCoding.drLIB [ 23]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 9]; HandCoding.drLIB [ 6]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 10]; HandCoding.drLIB [ 24]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 10]; HandCoding.drLIB [ 25]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 10]; HandCoding.drLIB [ 26]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 10]; HandCoding.drLIB [ 27]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 10]; HandCoding.drLIB [ 4]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 11]; HandCoding.drLIB [ 21]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 11]; HandCoding.drLIB [ 27]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 11]; HandCoding.drLIB [ 9]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 12]; HandCoding.drLIB [ 28]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 12]; HandCoding.drLIB [ 29]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 12]; HandCoding.drLIB [ 30]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 12]; HandCoding.drLIB [ 31]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 13]; HandCoding.drLIB [ 32]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 13]; HandCoding.drLIB [ 33]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 13]; HandCoding.drLIB [ 34]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 13]; HandCoding.drLIB [ 35]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 13]; HandCoding.drLIB [ 36]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 15]; HandCoding.drLIB [ 7]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 16]; HandCoding.drLIB [ 37]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 16]; HandCoding.drLIB [ 33]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 16]; HandCoding.drLIB [ 38]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 16]; HandCoding.drLIB [ 39]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 17]; HandCoding.drLIB [ 40]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 17]; HandCoding.drLIB [ 41]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 18]; HandCoding.drLIB [ 24]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 18]; HandCoding.drLIB [ 42]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 19]; HandCoding.drLIB [ 43]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 19]; HandCoding.drLIB [ 20]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 19]; HandCoding.drLIB [ 25]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 19]; HandCoding.drLIB [ 44]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 20]; HandCoding.drLIB [ 45]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 20]; HandCoding.drLIB [ 46]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 20]; HandCoding.drLIB [ 26]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 22]; HandCoding.drLIB [ 40]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 22]; HandCoding.drLIB [ 47]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 22]; HandCoding.drLIB [ 34]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 22]; HandCoding.drLIB [ 48]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 22]; HandCoding.drLIB [ 49]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 22]; HandCoding.drLIB [ 12]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 23]; HandCoding.drLIB [ 33]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 23]; HandCoding.drLIB [ 50]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 23]; HandCoding.drLIB [ 41]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 24]; HandCoding.drLIB [ 51]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 24]; HandCoding.drLIB [ 52]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 24]; HandCoding.drLIB [ 53]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 24]; HandCoding.drLIB [ 11]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 25]; HandCoding.drLIB [ 4]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 26]; HandCoding.drLIB [ 29]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 26]; HandCoding.drLIB [ 54]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 26]; HandCoding.drLIB [ 12]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 27]; HandCoding.drLIB [ 55]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 27]; HandCoding.drLIB [ 56]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 27]; HandCoding.drLIB [ 57]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 28]; HandCoding.drLIB [ 58]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 28]; HandCoding.drLIB [ 38]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 28]; HandCoding.drLIB [ 59]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 28]; HandCoding.drLIB [ 52]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 29]; HandCoding.drLIB [ 32]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 29]; HandCoding.drLIB [ 60]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 29]; HandCoding.drLIB [ 47]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 29]; HandCoding.drLIB [ 61]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 29]; HandCoding.drLIB [ 50]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 29]; HandCoding.drLIB [ 21]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 30]; HandCoding.drLIB [ 62]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 30]; HandCoding.drLIB [ 63]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 30]; HandCoding.drLIB [ 64]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 31]; HandCoding.drLIB [ 33]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 31]; HandCoding.drLIB [ 65]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 31]; HandCoding.drLIB [ 46]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 31]; HandCoding.drLIB [ 63]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 31]; HandCoding.drLIB [ 40]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 31]; HandCoding.drLIB [ 8]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 32]; HandCoding.drLIB [ 45]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 32]; HandCoding.drLIB [ 66]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 32]; HandCoding.drLIB [ 20]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 33]; HandCoding.drLIB [ 53]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 33]; HandCoding.drLIB [ 67]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 33]; HandCoding.drLIB [ 28]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 34]; HandCoding.drLIB [ 47]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 34]; HandCoding.drLIB [ 39]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 34]; HandCoding.drLIB [ 38]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 34]; HandCoding.drLIB [ 57]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 34]; HandCoding.drLIB [ 68]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 35]; HandCoding.drLIB [ 69]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 35]; HandCoding.drLIB [ 45]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 35]; HandCoding.drLIB [ 40]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 35]; HandCoding.drLIB [ 70]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 35]; HandCoding.drLIB [ 71]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 36]; HandCoding.drLIB [ 42]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 36]; HandCoding.drLIB [ 64]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 36]; HandCoding.drLIB [ 61]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 36]; HandCoding.drLIB [ 48]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 36]; HandCoding.drLIB [ 63]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 36]; HandCoding.drLIB [ 13]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 37]; HandCoding.drLIB [ 72]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 37]; HandCoding.drLIB [ 45]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 37]; HandCoding.drLIB [ 16]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 38]; HandCoding.drLIB [ 23]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 39]; HandCoding.drLIB [ 73]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 39]; HandCoding.drLIB [ 74]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 39]; HandCoding.drLIB [ 75]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 39]; HandCoding.drLIB [ 76]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 40]; HandCoding.drLIB [ 44]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 40]; HandCoding.drLIB [ 53]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 40]; HandCoding.drLIB [ 63]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 40]; HandCoding.drLIB [ 77]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 42]; HandCoding.drLIB [ 78]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 42]; HandCoding.drLIB [ 79]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 42]; HandCoding.drLIB [ 80]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 43]; HandCoding.drLIB [ 81]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 43]; HandCoding.drLIB [ 50]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 43]; HandCoding.drLIB [ 66]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 43]; HandCoding.drLIB [ 50]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 43]; HandCoding.drLIB [ 82]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 44]; HandCoding.drLIB [ 49]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 44]; HandCoding.drLIB [ 73]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 44]; HandCoding.drLIB [ 57]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 44]; HandCoding.drLIB [ 76]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 44]; HandCoding.drLIB [ 81]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 44]; HandCoding.drLIB [ 10]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 45]; HandCoding.drLIB [ 11]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 46]; HandCoding.drLIB [ 83]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 46]; HandCoding.drLIB [ 2]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 47]; HandCoding.drLIB [ 79]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 47]; HandCoding.drLIB [ 84]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 47]; HandCoding.drLIB [ 73]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 48]; HandCoding.drLIB [ 61]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 48]; HandCoding.drLIB [ 85]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 48]; HandCoding.drLIB [ 69]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 48]; HandCoding.drLIB [ 35]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 49]; HandCoding.drLIB [ 44]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 50]; HandCoding.drLIB [ 21]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 52]; HandCoding.drLIB [ 71]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 52]; HandCoding.drLIB [ 86]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 54]; HandCoding.drLIB [ 87]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 54]; HandCoding.drLIB [ 84]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 54]; HandCoding.drLIB [ 68]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 54]; HandCoding.drLIB [ 83]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 54]; HandCoding.drLIB [ 71]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 55]; HandCoding.drLIB [ 63]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 55]; HandCoding.drLIB [ 88]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 55]; HandCoding.drLIB [ 69]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 56]; HandCoding.drLIB [ 82]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 56]; HandCoding.drLIB [ 89]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 56]; HandCoding.drLIB [ 38]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 57]; HandCoding.drLIB [ 78]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 57]; HandCoding.drLIB [ 84]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 57]; HandCoding.drLIB [ 20]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 59]; HandCoding.drLIB [ 90]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 59]; HandCoding.drLIB [ 91]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 60]; HandCoding.drLIB [ 92]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 61]; HandCoding.drLIB [ 86]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 62]; HandCoding.drLIB [ 65]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 62]; HandCoding.drLIB [ 86]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 62]; HandCoding.drLIB [ 20]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 63]; HandCoding.drLIB [ 80]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 63]; HandCoding.drLIB [ 22]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 64]; HandCoding.drLIB [ 88]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 65]; HandCoding.drLIB [ 93]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 65]; HandCoding.drLIB [ 75]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 65]; HandCoding.drLIB [ 69]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 65]; HandCoding.drLIB [ 67]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 65]; HandCoding.drLIB [ 85]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 65]; HandCoding.drLIB [ 13]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 66]; HandCoding.drLIB [ 72]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 66]; HandCoding.drLIB [ 49]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 67]; HandCoding.drLIB [ 83]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 67]; HandCoding.drLIB [ 90]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 67]; HandCoding.drLIB [ 94]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 67]; HandCoding.drLIB [ 91]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 67]; HandCoding.drLIB [ 20]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 68]; HandCoding.drLIB [ 92]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 68]; HandCoding.drLIB [ 79]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 68]; HandCoding.drLIB [ 69]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 68]; HandCoding.drLIB [ 73]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 68]; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 68]; HandCoding.drLIB [ 19]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 69]; HandCoding.drLIB [ 79]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 70]; HandCoding.drLIB [ 88]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 70]; HandCoding.drLIB [ 61]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 71]; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 71]; HandCoding.drLIB [ 2]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 72]; HandCoding.drLIB [ 61]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 73]; HandCoding.drLIB [ 75]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 73]; HandCoding.drLIB [ 67]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 74]; HandCoding.drLIB [ 93]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 74]; HandCoding.drLIB [ 88]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 74]; HandCoding.drLIB [ 90]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 75]; HandCoding.drLIB [ 85]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 75]; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 75]; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 75]; HandCoding.drLIB [ 29]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 76]; HandCoding.drLIB [ 49]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 77]; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 77]; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 77]; HandCoding.drLIB [ 94]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 77]; HandCoding.drLIB [ 83]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 77]; HandCoding.drLIB [ 76]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 78]; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 78]; HandCoding.drLIB [ 92]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 78]; HandCoding.drLIB [ 85]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 78]; HandCoding.drLIB [ 93]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 79]; HandCoding.drLIB [ 89]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 79]; HandCoding.drLIB [ 80]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 80]; HandCoding.drLIB [ 91]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 80]; HandCoding.drLIB [ 83]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 83]; HandCoding.drLIB [ 98]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 83]; HandCoding.drLIB [ 93]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 84]; HandCoding.drLIB [ 91]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 84]; HandCoding.drLIB [ 87]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 84]; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 84]; HandCoding.drLIB [ 94]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 85]; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 86]; HandCoding.drLIB [ 91]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 86]; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 86]; HandCoding.drLIB [ 88]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 86]; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 86]; HandCoding.drLIB [ 92]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 87]; HandCoding.drLIB [ 98]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 87]; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 87]; HandCoding.drLIB [ 99]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 87]; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 87]; HandCoding.drLIB [ 22]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 88]; HandCoding.drLIB [ 22]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 89]; HandCoding.drLIB [ 99]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 89]; HandCoding.drLIB [ 90]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 89]; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 89]; HandCoding.drLIB [ 92]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 89]; HandCoding.drLIB [ 93]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 90]; HandCoding.drLIB [ 92]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 91]; HandCoding.drLIB [ 2]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 92]; HandCoding.drLIB [ 32]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 93]; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 93]; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 93]; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 93]; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 93]; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 94]; HandCoding.drLIB [ 99]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 94]; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 94]; HandCoding.drLIB [100]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 94]; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 94]; HandCoding.drLIB [ 98]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 95]; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 95]; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 95]; HandCoding.drLIB [ 98]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 95]; HandCoding.drLIB [ 8]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 96]; HandCoding.drLIB [ 99]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 96]; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 96]; HandCoding.drLIB [ 33]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 97]; HandCoding.drLIB [ 99]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 97]; HandCoding.drLIB [ 53]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 98]; HandCoding.drLIB [ 99]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 99]; HandCoding.drLIB [ 86]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [100]; HandCoding.drLIB [ 37]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCodingPseudos.SetLabel[lStartHere]; HandCodingPseudos.MakeLabelGlobal["dfnImpl.StartHere", lStartHere]; HandCodingComforts.LoadConstant [1]; HandCodingComforts.iLFC [lNodeLookup]; HandCodingComforts.iLFC [lDepthFirstNumber]; HandCoding.drSRn [rresult]; HandCodingPseudos.SetLabel[lStopHere]; HandCodingPseudos.MakeLabelGlobal["dfnImpl.StopHere", lStopHere]; HandCodingComforts.iLFC [lPrintNodeWorld]; HandCodingPseudos.SetLabel[lreturn]; -- HandCoding.drROR [HandCoding.reg0, rresult, HandCodingComforts.Constant0]; HandCodingPseudos.ProcedureExit[0]; }; lInitializeDfnImplGlobalFrame: HandCodingPseudos.Label; InitializeDfnImplGlobalFrame: HandCodingComforts.Proc = { rdfnImpl: HandCoding.RegSpec = HandCoding.reg0; HandCodingComforts.Prologue["dfnImpl.InitializeDfnImplGlobalFrame", lInitializeDfnImplGlobalFrame, 0]; HandCoding.drLIQB [fdfnImpl]; -- HandCoding.drMove [rdfnImpl, HandCoding.popSrc]; HandCodingComforts.LoadConstant [0]; HandCoding.drSRIn [rdfnImpl, odfnDepth]; HandCodingComforts.LoadConstant [0]; HandCoding.drSRIn [rdfnImpl, odfnCounter]; HandCodingComforts.LoadConstant [0]; HandCoding.drSRIn [rdfnImpl, onlAvail]; HandCodingComforts.LoadConstant [0]; HandCoding.drSRIn [rdfnImpl, oarcAvail]; HandCodingComforts.LoadConstant [HandCodingComforts.NILValue]; HandCoding.drSRIn [rdfnImpl, onodeWorld]; HandCodingPseudos.ProcedureExit[0]; }; PrintINT: LizardTweaker.OpcodeHandler = { operand: INT = DragOpsCrossUtils.WordToInt[rest]; SELECT operand FROM 0 => { regS: DragOpsCross.ProcessorRegister = LizardHeart.WordToReg[processor.regs[ifuS]]; StackS: DragOpsCross.Word _ processor.regs[regS]; IF out # NIL THEN IO.PutF[out, " %5g\n", [integer[DragOpsCrossUtils.WordToInt[StackS]]] ]; }; 1 => { regS: DragOpsCross.ProcessorRegister = LizardHeart.WordToReg[processor.regs[ifuS]]; StackS: DragOpsCross.Word _ processor.regs[regS]; IF out # NIL THEN IO.PutF[out, " %5g ", [integer[DragOpsCrossUtils.WordToInt[StackS]]] ]; }; ENDCASE; }; All: PROCEDURE = { area: HandCodingSupport.Area _ HandCodingSupport.GetCurrentArea[]; lDepthFirstNumber _ HandCodingPseudos.GenLabel[]; ldfnPreVisit _ HandCodingPseudos.GenLabel[]; ldfnNumbered _ HandCodingPseudos.GenLabel[]; ldfnBusy _ HandCodingPseudos.GenLabel[]; ldfnFindcycle _ HandCodingPseudos.GenLabel[]; ldfnSelfCycle _ HandCodingPseudos.GenLabel[]; ldfnPostVisit _ HandCodingPseudos.GenLabel[]; lprintname _ HandCodingPseudos.GenLabel[]; lAddNode _ HandCodingPseudos.GenLabel[]; lNodeLookup _ HandCodingPseudos.GenLabel[]; lAddArc _ HandCodingPseudos.GenLabel[]; lPrintNode _ HandCodingPseudos.GenLabel[]; lPrintArc _ HandCodingPseudos.GenLabel[]; lPrintNodeWorld _ HandCodingPseudos.GenLabel[]; lDoIt _ HandCodingPseudos.GenLabel[]; lInitializeDfnImplGlobalFrame _ HandCodingPseudos.GenLabel[]; fdfnImpl _ DragOpsCrossUtils.BytePCToWordAddress[ [DragOpsCrossUtils.CardToWord[ HandCodingSupport.ReserveData[oLast]]]].addr; HandCodingComforts.iLFC [lInitializeDfnImplGlobalFrame]; HandCodingComforts.iLFC [lDoIt]; HandCodingPseudos.Halt[0]; InitializeDfnImplGlobalFrame[]; DepthFirstNumber[]; dfnPreVisit[]; dfnNumbered[]; dfnBusy[]; dfnFindcycle[]; dfnSelfCycle[]; dfnPostVisit[]; printname[]; AddNode[]; NodeLookup[]; AddArc[]; PrintNode[]; PrintNodeWorld[]; DoIt[]; LizardTweaker.Register[x060B, PrintINT]; out _ ViewerIO.CreateViewerStreams[name: "GenDFN.log"].out; }; }. *XGenDFN.mesa Peter Kessler, February 20, 1986 5:39:19 pm PST static char sccsid[] = "@(#)dfn.c 5.1 (Berkeley) 6/4/85"; DIRECTORY CmdIO USING [Out], Rope USING [ROPE, Equal]; dfnImpl: -- CEDAR -- PROGRAM IMPORTS CmdIO, Rope EXPORTS dfn this is the label for the global frame (in data space). nlType: TYPE = -- a node (an entry in the namelist) RECORD[ name, -- for identification children: arcTypeRef, -- list of arcs to children cyclehead: nlTypeRef, -- pointer to the head of this cycle, or pointer to self cnext: nlTypeRef, -- pointer to next member of cycle nlnext: nlTypeRef, -- chain of all the nl entries toporder: dfnNumber -- topological ordering number ]; nlTypeRef: TYPE = LONG POINTER TO nlType; arcType: TYPE = -- an arc RECORD[ arcChildp: nlTypeRef, -- pointer to the child of this arc arcChildlist: arcTypeRef -- chain of children of this parent ]; arcTypeRef: TYPE = LONG POINTER TO arcType; dfnNumber: TYPE = INT _ DFNNaN; DFNNaN: dfnNumber = 0; -- used to mark depth first numbers that aren't set yet. DFNBusy: dfn.dfnNumber = -1; -- used to mark depth-first numbers that are being set. dfnstruct: TYPE = RECORD[ -- elements of the depth first numbering stack. nlentryp: dfn.nlTypeRef, cycletop: INT ]; dfntype: TYPE = dfnstruct; -- what is it about C that requires this separate type declaration? -- not wanting to type `struct dfnstruct' as a type. DFNMaxDepth: INT = 100; -- the maximum depth of the depth first numbering stack. nlMax: INT = 101; arcMax: INT = 600; I have sorted the entries in the global frame to put the long ones out past what can be accessed with AlphaZ offsets. This code still assumes that procedures that access things in the global frame load the address of the global frame into a register and use LRI with an AlphaZ offset to fetch the datum. That is LIQB @GlobalFrame SR rGlobalFramePointer ... LRI rGlobalFramePointer, oVariableOffset If the offset doesn't fit in an AlphaZ, the fetch becomes LR rGlobalFramePointer LIQB oVariableOffset RX An alternative is to have the loader be smart enough to fill in LIQB's with relative addresses, not just absolutes, and then one could use LIQB @GlobalFrame+oVariableOffset RB 0 As it turns out, all the offsets that don't fit in AlphaZ's are offsets of arrays, which get added to the address of the global frame (this could be avoided by the smarter loader) and so can just use ADDDB's instead of ADDB's. If frames get bigger than 65K, ADDDB won't work either, and we'll have to fall back on LIQB;ADD. The point is to track that the register with the address of the global frame is a (load time) constant, and have the loader do the add at load time. dfnCounter: dfn.dfnNumber _ dfn.DFNNaN; dfnDepth: INT _ 0; nlAvail: INT [0 .. nlMax) _ 0; arcAvail: INT [0 .. arcMax) _ 0; nodeWorld: dfn.nlTypeRef _ NIL; dfnStack: ARRAY [0 .. DFNMaxDepth) OF dfntype; nlZone: ARRAY [0 .. nlMax) OF dfn.nlType; arcZone: ARRAY [0 .. arcMax) OF dfn.arcType; DepthFirstNumber: PROCEDURE [parentp: dfn.nlTypeRef] RETURNS [BOOL] = { IF dfnNumbered[childp: parentp] THEN { -- if we're already numbered, no need to look any furthur. RETURN [TRUE]; }; previous two instructions could be RJNE Stack[S], Constants[TRUE], continue IF dfnBusy[childp: parentp] THEN { -- if we're already busy, must be a cycle RETURN [dfnFindcycle[parentp]]; }; -- visit yourself before your children IF NOT dfnPreVisit[parentp: parentp] THEN { RETURN [FALSE]; }; previous two instructions could be RJNE Stack[S], Constants[TRUE], continue -- visit children FOR arcp: dfn.arcTypeRef _ parentp^.children, arcp^.arcChildlist WHILE arcp # NIL DO IF NOT DepthFirstNumber[parentp: arcp^.arcChildp] THEN { RETURN [FALSE]; }; ENDLOOP; -- visit yourself after your children IF NOT dfnPostVisit[parentp: parentp] THEN { RETURN [FALSE]; }; RETURN [TRUE]; }; dfnPreVisit: PROCEDURE [parentp: dfn.nlTypeRef] RETURNS [BOOL] = { -- push a parent onto the stack and mark it busy dfnDepth _ dfnDepth + 1; IF dfnDepth >= DFNMaxDepth THEN { CmdIO.Out["[dfn] out of my depth [dfnStack overflow]\n"]; RETURN [FALSE]; }; dfnStack[dfnDepth].nlentryp _ parentp; replace a call to Basics.MixedMultiply HandCoding.drLIB [cSIZEdfntype]; HandCodingComforts.iDFC [HandCodingPseudos.GetGlobalLabel["Basics.MixedMultiply"]]; dfnStack[dfnDepth].cycletop _ dfnDepth; replace a call to Basics.MixedMultiply HandCoding.drLIB [cSIZEdfntype]; HandCodingComforts.iDFC [HandCodingPseudos.GetGlobalLabel["Basics.MixedMultiply"]]; parentp^.toporder _ DFNBusy; RETURN [TRUE]; }; dfnNumbered: PROCEDURE [childp: dfn.nlTypeRef] RETURNS [BOOL] = { -- are we already numbered? RETURN [childp^.toporder # dfn.DFNNaN AND childp^.toporder # DFNBusy]; }; dfnBusy: PROCEDURE [childp: dfn.nlTypeRef] RETURNS [BOOL] = { -- are we already busy? RETURN [childp^.toporder # dfn.DFNNaN]; }; dfnFindcycle: PROCEDURE [childp: dfn.nlTypeRef] RETURNS [result: BOOL] = { result is computed into rresult and at lreturn it is copied to Locals[0]. cycletop: INT; cycleheadp: dfn.nlTypeRef; tailp: dfn.nlTypeRef; FOR cycletop DECREASING IN (0 .. dfnDepth] DO cycleheadp _ dfnStack[cycletop].nlentryp; replace a call to Basics.MixedMultiply HandCoding.drLIB [cSIZEdfntype]; HandCodingComforts.iDFC [HandCodingPseudos.GetGlobalLabel["Basics.MixedMultiply"]]; IF childp = cycleheadp THEN EXIT; IF childp^.cyclehead # childp AND childp^.cyclehead = cycleheadp THEN EXIT; ENDLOOP; IF cycletop <= 0 THEN { -- CmdIO.Out["[dfnFindcycle] couldn't find head of cycle\n"]; RETURN [FALSE]; this is longer, but faster than, HandCodingComforts.LoadConstant [HandCodingComforts.FALSEValue]; HandCoding.drSRn [rresult]; }; IF cycletop = dfnDepth THEN { -- this is previous function, e.g. this calls itself: sort of boring result _ dfnSelfCycle[childp]; }; ELSE { -- glom intervening functions that aren't already glommed into this cycle. -- things have been glommed when their cyclehead field points to the head of the cycle they are glommed into. FOR tailp _ cycleheadp, tailp^.cnext WHILE tailp^.cnext # NIL DO NULL; ENDLOOP; -- if what we think is the top of the cycle has a cyclehead field, then it's not really the head of the cycle, which is really what we want IF cycleheadp^.cyclehead # cycleheadp THEN { cycleheadp _ cycleheadp^.cyclehead; }; FOR index: INT IN [cycletop + 1 .. dfnDepth] DO childp _ dfnStack[index].nlentryp; replace a call to Basics.MixedMultiply HandCoding.drLRn [rindex]; HandCoding.drLIB [cSIZEdfntype]; HandCodingComforts.iDFC [HandCodingPseudos.GetGlobalLabel["Basics.MixedMultiply"]]; IF childp^.cyclehead = childp THEN { -- not yet glommed anywhere, glom it -- and fix any children it has glommed tailp^.cnext _ childp; childp^.cyclehead _ cycleheadp; FOR tailp _ childp, tailp^.cnext WHILE tailp^.cnext # NIL DO tailp^.cnext^.cyclehead _ cycleheadp; ENDLOOP; }; ELSE { IF childp^.cyclehead # cycleheadp -- firewall -- THEN { -- CmdIO.Out["[dfnBusy] glommed, but not to cyclehead\n"]; NULL; }; }; ENDLOOP; result _ TRUE; }; }; dfnSelfCycle: PROCEDURE [parentp: dfn.nlTypeRef] RETURNS [BOOL] = { -- deal with self-cycles -- since we are taking out self-cycles elsewhere no need for the special case, here. NULL; RETURN [TRUE]; }; dfnPostVisit: PROCEDURE [parentp: dfn.nlTypeRef] RETURNS [BOOL] = { -- visit a node after all its children and pop it off the stack -- number functions and things in their cycles unless the function is itself part of a cycle IF parentp^.cyclehead = parentp THEN { dfnCounter _ dfnCounter + 1; FOR memberp: dfn.nlTypeRef _ parentp, memberp^.cnext WHILE memberp # NIL DO memberp^.toporder _ dfnCounter; ENDLOOP; }; ELSE { NULL; }; dfnDepth _ dfnDepth - 1; RETURN [TRUE]; }; printname: PROCEDURE [nlentryp: dfn.nlTypeRef] RETURNS [Rope.ROPE] = { -- pretend this guy returns INTs RETURN [nlentryp^.name]; }; -- *** stuff for using the interpreter to run this *** AddNode: PROCEDURE [name: Rope.ROPE] RETURNS [dfn.nlTypeRef] = { node: dfn.nlTypeRef _ @nlZone[nlAvail]; nlAvail _ nlAvail + 1; node^.name _ name; node^.children _ NIL; node^.cyclehead _ node; node^.cnext _ NIL; node^.nlnext _ nodeWorld; node^.toporder _ DFNNaN; nodeWorld _ node; RETURN [node]; }; NodeLookup: PROCEDURE [name: Rope.ROPE] RETURNS [dfn.nlTypeRef] = { FOR nodep: dfn.nlTypeRef _ nodeWorld, nodep^.nlnext WHILE nodep # NIL DO IF name.Equal[nodep^.name] THEN RETURN [nodep]; what about the DIScard of rnodep? don't really need it. ENDLOOP; RETURN [NIL]; }; AddArc: PROCEDURE [from: Rope.ROPE, to: Rope.ROPE] RETURNS [dfn.arcTypeRef] = { fromNode: dfn.nlTypeRef _ NodeLookup[from]; toNode: dfn.nlTypeRef _ NodeLookup[to]; IF fromNode # NIL AND toNode # NIL THEN { arcp: dfn.arcTypeRef _ @arcZone[arcAvail]; replace a call to Basics.MixedMultiply HandCoding.drLIB [cSIZEarcType]; HandCodingComforts.iDFC [HandCodingPseudos.GetGlobalLabel["Basics.MixedMultiply"]]; arcAvail _ arcAvail + 1; arcp^.arcChildp _ toNode; arcp^.arcChildlist _ fromNode^.children; fromNode^.children _ arcp; RETURN [arcp]; }; RETURN [NIL]; the existence of LC[0..7] implies that constants that can be loaded with LIB, LIDB, and LIQB should be in Constants[8..11]. Except that there is the tiny operand mode, which references Constants[0] and Constants[1]. }; PrintNode: PROCEDURE [nodep: dfn.nlTypeRef] RETURNS [] = { CmdIO.Out["%g: %g\n", [rope[nodep^.name]], [integer[nodep^.toporder]]]; print an INT from the top of the stack without a \n print an INT from the top of the stack with a \n }; PrintArc: PROCEDURE [arcp: dfn.arcTypeRef] RETURNS [] = { PrintNode[arcp^.arcChildp]; }; PrintNodeWorld: PROCEDURE [] RETURNS [] = { FOR nodep: dfn.nlTypeRef _ nodeWorld, nodep^.nlnext WHILE nodep # NIL DO PrintNode[nodep]; ENDLOOP; }; DoIt: PROCEDURE [] RETURNS [result: BOOL] = { -- Build the world -- Number the nodes result _ DepthFirstNumber[NodeLookup["foo"]]; -- And check the result PrintNodeWorld; }; -- procedures for running the simulator dfnDepth: INT _ 0; dfnCounter: dfn.dfnNumber _ dfn.DFNNaN; nlAvail: INT [0 .. nlMax) _ 0; missing the bounds checks on assignments to nlAvail. arcAvail: INT [0 .. arcMax) _ 0; missing the bounds checks on assignments to arcAvail. nodeWorld: dfn.nlTypeRef _ NIL; [data: REF ANY, processor: LizardHeart.Processor, inst: DragOpsCross.Inst, rest: DragOpsCross.Word] RETURNS [normal: BOOL _ FALSE] print top of stack with a \n print top of stack without a \n This procedure must be named ``All''. During loading, this procedure is called to allocate data and instruction space. Instruction space is initialized by generating instructions, some of which are a procedure that initializes the data space during execution. Execution begins at the first instruction generated. Since this procedure controls code generation, it gets to generate those first instructions. Allocate the global frame Generate the body of the module Now generate the instructions Extras needed for debugging Κ12•StyleDefπBeginStyle (Cedar) AttachStyle (asmStandard) "indent for assembler source stuff" { docStandard 6.75 in lineLength "Helvetica" family 8 pt size 3.0 in leftIndent .75 in tabStops } ScreenRule (asmStandard) "indent for assembler source stuff" { docStandard 6.75 in lineLength "Helvetica" family 2.5 in leftIndent .75 in tabStops } PrintRule (asm) "inline instructions" { asmStandard bold face 0.5 in restIndent isComment { bold+italic face 0.5 in bigger leftIndent 0.5 in restIndent } .cvx .if } StyleRule (label) "inline instruction labels" { asmStandard bold face 0.5 in smaller leftIndent 1.5 in restIndent } StyleRule (dragop) "dragon opcodes" { standard "Helvetica" family nestingLevel 1 .eq .not {CodeIndent bigger leftIndent} .cvx .if isComment { italic face 0.5 in bigger leftIndent 0.5 in restIndent } .cvx .if } StyleRule EndStyle˜šœ ™ Jšœ/™/Jšœ9™9—˜šΟk ™ Jšœœ™Jšœœœ ™—š ˜ Jšœ‚˜‚J˜ J™——JšΠlnœΟcΠckŸœ™dragopšžœ ˜Jšœ œ™š˜Jšœt˜tJšœ ˜ —Jšœ˜J˜šœ'˜'K™7—šœœŸ$™3šœ™šœ Ÿ™"Kšœœ˜Kšœ.˜.—šœŸ™3Kšœ œ˜#Kšœ:˜:—šœŸ8™PKšœ œ˜,Kšœ;˜;—šœŸ"™7Kšœœ˜*Kšœ7˜7—šœŸ™4Kšœ œ˜#Kšœ8˜8—šœŸ™4Kšœ œ˜'Kšœ2˜2—™Kšœ œ˜-———š œ œœœœ™)Kšœ;˜;—J˜šœ œŸ ™šœ™šœŸ#™;Kšœ œ˜Kšœ;˜;—šœŸ#™=Kšœœ˜1Kšœ>˜>—šœ™Kšœœ%˜6———šœ œœ ™+Kšœ<˜<—J˜Jšœ œœ ™šœŸ8™RKšœ œ˜—J˜šœŸ7™UJšœ œ˜—J˜šœ œœŸ/™K™Kšœ œ˜Kšœ:˜:—šœ ™ Kšœ œ˜+Kšœ2˜2—šœ™Kšœœ˜0——J˜šœ œ ™JšœC™CJšœ4™4Kšœœ˜#—J˜šœ œ Ÿ8™SKšœœ˜—šœœ™Kšœœ˜—šœœ™Kšœ œ˜—J˜™ΉK™K™K™K™(—™9K™K™K™—™ŠK™!K™—K™ΪK˜J™šœ'™'Kšœ œ ˜Kšœ4˜4—šœ œ™Kšœ œ!˜/Kšœ2˜2—J™šœ œ™Kšœ œ˜*Kšœ1˜1—šœ œ™ Kšœ œ˜)Kšœ2˜2—J™šœœ™Kšœ œ˜,Kšœ;˜;—J˜šœ œœ ™.Kšœ œ˜-Kšœœ˜1—šœœœ ™)Kšœ œ˜)Kšœ œ˜(—arrayšœ œœ ™,Kšœ œ˜&Kšœœ˜+—K˜Kšœ%˜%K˜Jšœœœ˜J˜JšΟnœ œœœ™GKšœ+˜+šœ-˜-Kšœ/˜/Kšœ@˜@KšœN˜NJ˜šœœ™&Jšœ:™:Jšœœ™J™K˜KšœB˜BKšœ˜Kšœ'˜'KšœB˜Bšœ?˜?K™"K™(—Kšœ!˜!Kšœ&˜&K˜—šœœ™"Jšœ)™)Jšœ™J™K˜KšœB˜BKšœ˜Kšœ#˜#KšœB˜BKšœ˜Kšœ(˜(Kšœ!˜!Kšœ&˜&K˜—Jšœ&™&šœœœ™+Jšœœ™J™K˜KšœB˜BKšœ˜Kšœ'˜'KšœB˜Bšœ@˜@K™"K™(—Kšœ!˜!Kšœ&˜&K˜—Jšœ™šœ>œœ™Tšœœ,œ™8Jšœœ™J™—Jšœ™K˜Kšœ-˜-Kšœ?˜?Kšœ>˜>Kšœ(˜(Kšœ0˜0Kšœ˜šœ#˜#K˜KšœB˜BKšœ&˜&Kšœ,˜,šœB˜BKšœ@˜@Kšœ!˜!—Kšœ&˜&K˜—Kšœ/˜/Kšœ"˜"KšœG˜GKšœ˜K˜—Jšœ%™%šœœ œ™,Jšœœ™J™K˜KšœB˜BKšœ˜Kšœ(˜(šœB˜BKšœ@˜@Kšœ!˜!—Kšœ&˜&K˜—šœœ™Kšœ?˜?Kšœ!˜!—™Kšœ$˜$Kšœ#˜#Kšœ#˜#—K˜—J˜Jš‘ œ œœœ™BKšœ&˜&šœ(˜(Kšœ/˜/Kšœ@˜@KšœD˜DK˜Kšœ/˜/Kšœ˜Kšœ3˜3Jšœ0™0™Kšœ(˜(Kšœ˜Kšœ(˜(—šœœ™!K˜KšœB˜BKšœ ˜ Kšœ(˜(šœ^˜^™9Kšœ*˜*KšœD˜DKšœD˜DKšœD˜DKšœD˜DKšœ'˜'—Jšœœ™Kšœ@˜@Kšœ!˜!—™Kšœ&˜&—K˜—™&Kšœ˜Kšœ˜Kšœ(˜(Kšœ/˜/Kšœ&™&Kšœ ™ KšœS™SKšœ˜Kšœ˜Kšœ˜—™'Kšœ˜Kšœ˜Kšœ(˜(Kšœ/˜/Kšœ&™&Kšœ ™ KšœS™SKšœ˜Kšœ(˜(Kšœ˜—™Kšœ˜Kšœ+˜+Kšœ˜—šœœ™Kšœ?˜?Kšœ!˜!—™Kšœ$˜$Kšœ#˜#Kšœ#˜#K˜—K˜—J˜š‘ œ œœœ™AJšœ™—Kšœ&˜&šœ(˜(Kšœ.˜.Kšœ@˜@KšœD˜Dšœ œ™FK˜Kšœ>˜>Kšœ'˜'Kšœ*˜*Kšœ'˜'Kšœe˜eKšœ?˜?Kšœ!˜!Kšœ"˜"Kšœ@˜@Kšœ!˜!K˜—™Kšœ$˜$Kšœ#˜#Kšœ#˜#—K˜—J˜š‘œ œœœ™=Jšœ™—Kšœ"˜"šœ$˜$Kšœ.˜.Kšœ@˜@Kšœ<˜<šœ!™'K˜KšœE˜EKšœ'˜'Kšœ1˜1Kšœ?˜?Kšœ!˜!Kšœ)˜)Kšœ@˜@Kšœ!˜!K˜—™Kšœ$˜$Kšœ#˜#Kšœ#˜#—K˜—J˜Jš‘ œ œœ œ™JKšœ'˜'šœ)˜)Kšœ.˜.šœ.˜.K™I—Kšœ/˜/Kšœ@˜@KšœF˜FKšœ@˜@Kšœ2˜2Kšœ˜Kšœ3˜3˜šœ œ™Kšœ0˜0—™Kšœ2˜2—šœ™Kšœ-˜-Kšœ$˜$Kšœ4˜4Kšœ>˜>Kšœ6˜6Kšœ>˜>Kšœ0˜0—J˜šœ  œœ™-K˜Kšœ?˜?Kšœ?˜?Kšœ/˜/Kšœ(˜(Kšœ3˜3KšœH˜HKšœE˜EKšœ#˜#™)Kšœ˜Kšœ˜Kšœ˜Kšœ/˜/Kšœ&™&Kšœ ™ KšœS™SKšœ˜Kšœ˜Kšœ˜—šœœœ™!J˜KšœB˜BKšœ˜KšœS˜SKšœ ˜ Kšœ&˜&K˜—šœœ œœ™KJ˜KšœB˜BKšœ(˜(KšœO˜OKšœ(˜(KšœS˜SKšœ ˜ Kšœ&˜&K˜—šœ™KšœI˜IKšœG˜GKšœ ˜ Kšœ#˜#—Kšœ˜K˜—šœœ™K˜KšœB˜BKšœL˜LJ™=šœœ™šœ[˜[K™!Kšœ@™@Kšœ™—Kšœ!˜!—™Kšœ&˜&—K˜—šœ™K˜Kšœ>˜>KšœB˜BKšœ(˜(KšœM˜Mšœ™JšœD™Dšœ™Kšœ˜Kšœ(˜(Kšœ˜Kšœ#˜#—J™—šœ™Kšœ"˜"JšœJ™JJšœm™mšœ"œœ™@K˜Kšœ>˜>Kšœ?˜?KšœE˜EKšœ˜Kšœ#˜#Jšœ™Jšœ™Kšœ*˜*Kšœ"˜"Kšœ#˜#Kšœ?˜?K˜—Jšœ‹™‹šœ$œ™,K˜KšœB˜BKšœ,˜,KšœS˜S™#Kšœ8˜8—J™Kšœ&˜&K˜—šœœœ™/K˜Kšœ?˜?Kšœ?˜?Kšœ/˜/Kšœ4˜4Kšœ-˜-Kšœ˜Kšœ˜Kšœ3˜3Kšœ(˜(Kšœ8˜8Kšœ˜KšœR˜RKšœ˜Kšœ1˜1Kšœ#˜#™"Kšœ˜Kšœ˜Kšœ7˜7Kšœ&™&Kšœ™Kšœ ™ KšœS™SKšœ˜Kšœ˜Kšœ˜—šœ™J˜Kšœ>˜>KšœB˜BKšœ(˜(KšœK˜Kšœ™J™$J™&™Kšœ2˜2—™Kšœ;˜;—šœœœ™˜>Kšœ?˜?KšœA˜AKšœ˜Kšœ#˜#™%Kšœ#˜#Kšœ˜Kšœ˜—šœ™Kšœ*˜*Kšœ"˜"Kšœ#˜#Kšœ>˜>—K˜—™Kšœ#˜#——šœ™Kšœ"˜"šœŸœœ™7J˜KšœB˜BKšœ(˜(KšœS˜SJ™:Jšœ™™Kšœ&˜&—K˜—J™Kšœ&˜&—K˜—šœ™Kšœ˜KšœR˜RKšœA˜AKšœ ˜ —Kšœ#˜#K˜—šœ œ™KšœX˜X—™Kšœ&˜&——K˜—™Kšœ$˜$KšœJ˜JKšœ#˜#——K˜K˜—J˜š‘ œ œœœ™CJšœ™JšœT™T—Kšœ'˜'šœ)˜)Kšœ/˜/Kšœ@˜@KšœF˜FJšœ™šœœ™Kšœ>˜>Kšœ!˜!—™Kšœ$˜$Kšœ#˜#Kšœ#˜#—K˜—J˜š‘ œ œœœ™CJšœ?™?—Kšœ'˜'šœ)˜)Kšœ/˜/Kšœ/˜/Kšœ@˜@KšœF˜FKšœ˜Kšœ3˜3JšœY™\šœ™K˜Kšœ>˜>KšœB˜BKšœ)˜)KšœL˜Lšœ™™Kšœ*˜*Kšœ˜Kšœ*˜*—šœ2œ œ™KK˜Kšœ0˜0Kšœ>˜>Kšœ?˜?Kšœ˜Kšœ3˜3Kšœ#˜#™Kšœ*˜*Kšœ(˜(—šœ™Kšœ.˜.Kšœ"˜"KšœJ˜J—Kšœ˜J˜—™Kšœ#˜#——šœ™Kšœ"˜"Jš™J™Kšœ&˜&—K˜—™Kšœ(˜(Kšœ˜Kšœ(˜(—šœœ™Kšœ>˜>Kšœ!˜!—™Kšœ$˜$Kšœ#˜#Kšœ#˜#—K˜—J˜š‘ œ œœœ™FJ™ —Kšœ$˜$šœ&˜&Kšœ0˜0Kšœ@˜@Kšœ@˜@šœ™Kšœ%˜%Kšœ!˜!—™Kšœ$˜$Kšœ#˜#Kšœ#˜#—K˜—J˜J™6J˜Jš‘œ œ œœ™@Kšœ"˜"šœ$˜$Kšœ,˜,Kšœ/˜/Kšœ@˜@Kšœ<˜˜>Kšœ%˜%—™Kšœ3˜3—šœ™Kšœ>˜>Kšœ"˜"—™Kšœ)˜)Kšœ#˜#—šœ™Kšœ$˜$Kšœ%˜%—™Kšœ6˜6—šœ™Kšœ˜Kšœ!˜!—™J˜—Kšœ$˜$Kšœ#˜#Kšœ#˜#K˜—J˜Jš‘ œ œ œœ™CKšœ%˜%šœ'˜'Kšœ,˜,Kšœ/˜/Kšœ@˜@KšœB˜BKšœ˜Kšœ3˜3šœ1œ œ™HK˜Kšœ.˜.Kšœ?˜?Kšœ>˜>Kšœ)˜)Kšœ1˜1Kšœ˜Kšœ#˜#šœ™K˜KšœB˜BKšœ"˜"KšœM˜Mšœ ™Kšœ˜šœ!˜!K™8——Kšœ&˜&K˜—šœ™Kšœ+˜+Kšœ"˜"KšœH˜H—Kšœ˜K˜—šœœ™ Kšœ>˜>Kšœ!˜!—J™Kšœ$˜$Kšœ#˜#Kšœ#˜#K˜—J˜Jš ‘œ œ œ œœ™OKšœ!˜!šœ#˜#Kšœ,˜,Kšœ*˜*Kšœ/˜/Kšœ@˜@Kšœ:˜:Kšœ˜Kšœ3˜3˜Kšœ0˜0Kšœ.˜.—šœ+™+Kšœ˜Kšœ&˜&Kšœ4˜4—šœ'™'Kšœ˜Kšœ&˜&Kšœ2˜2—š œ œœ œœ™)K˜KšœB˜BKšœN˜NKšœL˜Lšœ*™*K˜Kšœ,˜,Kšœ˜Kšœ˜Kšœ(˜(Kšœ/˜/Kšœ&™&Kšœ ™ KšœS™SKšœ˜Kšœ0˜0—™Kšœ(˜(Kšœ˜Kšœ(˜(—™Kšœ5˜5—™(Kšœ)˜)Kšœ)˜)—™Kšœ6˜6—šœ™Kšœ˜Kšœ!˜!—™Kšœ&˜&K˜—K˜—šœœ™ šœ>˜>KšœΟdœΏ™Ψ—Kšœ!˜!—™K˜Kšœ$˜$Kšœ#˜#Kšœ#˜#K˜——J˜Jš‘ œ œœ™:Kšœ$˜$šœ&˜&Kšœ-˜-Kšœ@˜@šœG™GKšœ"˜"šœC˜CK™3—Kšœ˜Kšœ&˜&šœC˜CK™0—Kšœ˜—™Kšœ#˜#K˜——J˜Jš‘œ œœ™9Kšœ#˜#šœ%˜%Kšœ,˜,Kšœ>˜>™Kšœ&˜&Kšœ%˜%—™Kšœ#˜#K˜——J˜Jš‘œ œœ™+Kšœ)˜)šœ+˜+Kšœ/˜/KšœJ˜JKšœ˜Kšœ3˜3šœ1œ œ™HK˜Kšœ.˜.Kšœ?˜?Kšœ>˜>Kšœ)˜)Kšœ1˜1Kšœ˜Kšœ#˜#™Kšœ˜Kšœ%˜%—šœ™Kšœ+˜+Kšœ"˜"KšœH˜H—Kšœ˜K˜—™Kšœ#˜#K˜——J˜Jš‘œ œœ œ™-Kšœ˜šœ!˜!Kšœ.˜.Kšœ@˜@KšœC˜CKšœB˜BKšœ6˜6J™J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J™Kšœ'˜'KšœC˜C™-Kšœ$˜$Kšœ&˜&Kšœ,˜,Kšœ˜—Kšœ&˜&KšœA˜AJ™šœ™Kšœ*˜*—™Kšœ$˜$KšœM˜MKšœ#˜#—K˜—J™K™'Kšœ7˜7š‘œ˜9Kšœ/˜/Kšœf˜fKšœ˜Kšœ3˜3šœ œ™Kšœ$˜$Kšœ(˜(—šœ'™'Kšœ$˜$Kšœ*˜*—šœ œ™Kšœ$˜$šœ'˜'K™4——šœ œ™ Kšœ$˜$šœ(˜(Kšœ5™5——šœœ™Kšœ>˜>Kšœ)˜)—Kšœ#˜#K˜—J˜codeš‘œ!˜)Mš ‚™‚Mšœ œ%˜1šœ ˜˜J™MšœS˜SMšœ1˜1šœœ˜MšœH˜H—M˜—˜J™MšœS˜SMšœ1˜1šœœ˜MšœG˜G—M˜—Mšœ˜—M˜M˜—š‘œ œ˜J™%™PJ™Œ—J™’JšœB˜BJšœ1˜1Jšœ,˜,Jšœ,˜,Jšœ(˜(Jšœ-˜-Jšœ-˜-Jšœ-˜-Jšœ*˜*Jšœ(˜(Jšœ+˜+Jšœ'˜'Jšœ*˜*Jšœ)˜)Jšœ/˜/Jšœ%˜%Jšœ=˜=™šœ1˜1šœ˜Jšœ-˜-———™Jšœ8˜8Jšœ ˜ Jšœ˜—™Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ ˜ Jšœ˜Jšœ˜Jšœ˜Jšœ ˜ Jšœ ˜ Jšœ ˜ Jšœ ˜ J˜ J˜Jšœ˜—™Mšœ(˜(Mšœ;˜;—J˜—Jšœ˜—J˜J˜—…—ͺ\4