Commit eb4cdcdc by Alan Mishchenko

Version abc50908

parent 1260d20c
...@@ -13,7 +13,7 @@ MODULES := src/base/abc src/base/abci src/base/abcs src/base/cmd src/base/io src ...@@ -13,7 +13,7 @@ MODULES := src/base/abc src/base/abci src/base/abcs src/base/cmd src/base/io src
src/opt/cut src/opt/dec src/opt/fxu src/opt/rwr src/opt/sim \ src/opt/cut src/opt/dec src/opt/fxu src/opt/rwr src/opt/sim \
src/sat/asat src/sat/csat src/sat/msat src/sat/fraig src/sat/asat src/sat/csat src/sat/msat src/sat/fraig
default: $(PROG) #default: $(PROG)
OPTFLAGS := -DNDEBUG -O3 OPTFLAGS := -DNDEBUG -O3
#OPTFLAGS := -g -O #OPTFLAGS := -g -O
...@@ -59,6 +59,10 @@ tags: ...@@ -59,6 +59,10 @@ tags:
$(PROG): $(OBJ) $(PROG): $(OBJ)
$(LD) -o $@ $^ $(LIBS) $(LD) -o $@ $^ $(LIBS)
lib$(PROG).a: $(OBJ)
ar rv $@ $?
ranlib $@
docs: docs:
doxygen doxygen.conf doxygen doxygen.conf
# Microsoft Developer Studio Project File - Name="abc" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=abc - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "abc.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "abc.mak" CFG="abc - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "abc - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "abc - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "abc - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "src\base\abc" /I "src\base\cmd" /I "src\base\io" /I "src\base\main" /I "src\bdd\cudd" /I "src\bdd\epd" /I "src\bdd\mtr" /I "src\bdd\parse" /I "src\bdd\dsd" /I "src\bdd\reo" /I "src\sop\ft" /I "src\sat\asat" /I "src\sat\msat" /I "src\sat\fraig" /I "src\opt\cut" /I "src\opt\dec" /I "src\opt\fxu" /I "src\opt\rwr" /I "src\map\fpga" /I "src\map\mapper" /I "src\map\mio" /I "src\map\super" /I "src\misc\extra" /I "src\misc\st" /I "src\misc\mvc" /I "src\misc\util" /I "src\misc\vec" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "__STDC__" /D "HAVE_ASSERT_H" /FR /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"_TEST/abc.exe"
!ELSEIF "$(CFG)" == "abc - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "src\base\abc" /I "src\base\cmd" /I "src\base\io" /I "src\base\main" /I "src\bdd\cudd" /I "src\bdd\epd" /I "src\bdd\mtr" /I "src\bdd\parse" /I "src\bdd\dsd" /I "src\bdd\reo" /I "src\sop\ft" /I "src\sat\asat" /I "src\sat\msat" /I "src\sat\fraig" /I "src\opt\cut" /I "src\opt\dec" /I "src\opt\fxu" /I "src\opt\rwr" /I "src\map\fpga" /I "src\map\mapper" /I "src\map\mio" /I "src\map\super" /I "src\misc\extra" /I "src\misc\st" /I "src\misc\mvc" /I "src\misc\util" /I "src\misc\vec" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "__STDC__" /D "HAVE_ASSERT_H" /FR /YX /FD /GZ /c
# SUBTRACT CPP /X
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"_TEST/abc.exe" /pdbtype:sept
!ENDIF
# Begin Target
# Name "abc - Win32 Release"
# Name "abc - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Group "base"
# PROP Default_Filter ""
# Begin Group "abc"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\base\abc\abc.h
# End Source File
# Begin Source File
SOURCE=.\src\base\abc\abcAig.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abc\abcCheck.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abc\abcDfs.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abc\abcFanio.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abc\abcFunc.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abc\abcInt.h
# End Source File
# Begin Source File
SOURCE=.\src\base\abc\abcLatch.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abc\abcMinBase.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abc\abcNames.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abc\abcNetlist.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abc\abcNtk.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abc\abcObj.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abc\abcRefs.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abc\abcShow.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abc\abcSop.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abc\abcUtil.c
# End Source File
# End Group
# Begin Group "abci"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\base\abci\abc.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcAttach.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcBalance.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcCollapse.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcCut.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcDsd.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcFpga.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcFraig.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcFxu.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcMap.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcMiter.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcNtbdd.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcPrint.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcReconv.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcRefactor.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcRenode.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcRewrite.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcSat.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcStrash.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcSweep.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcSymm.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcTiming.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcUnreach.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abci\abcVerify.c
# End Source File
# End Group
# Begin Group "abcs"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\base\abcs\abcRetime.c
# End Source File
# Begin Source File
SOURCE=.\src\base\abcs\abcSeq.c
# End Source File
# End Group
# Begin Group "cmd"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\base\cmd\cmd.c
# End Source File
# Begin Source File
SOURCE=.\src\base\cmd\cmd.h
# End Source File
# Begin Source File
SOURCE=.\src\base\cmd\cmdAlias.c
# End Source File
# Begin Source File
SOURCE=.\src\base\cmd\cmdApi.c
# End Source File
# Begin Source File
SOURCE=.\src\base\cmd\cmdFlag.c
# End Source File
# Begin Source File
SOURCE=.\src\base\cmd\cmdHist.c
# End Source File
# Begin Source File
SOURCE=.\src\base\cmd\cmdInt.h
# End Source File
# Begin Source File
SOURCE=.\src\base\cmd\cmdUtils.c
# End Source File
# End Group
# Begin Group "io"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\base\io\io.c
# End Source File
# Begin Source File
SOURCE=.\src\base\io\io.h
# End Source File
# Begin Source File
SOURCE=.\src\base\io\ioInt.h
# End Source File
# Begin Source File
SOURCE=.\src\base\io\ioRead.c
# End Source File
# Begin Source File
SOURCE=.\src\base\io\ioReadBench.c
# End Source File
# Begin Source File
SOURCE=.\src\base\io\ioReadBlif.c
# End Source File
# Begin Source File
SOURCE=.\src\base\io\ioReadEdif.c
# End Source File
# Begin Source File
SOURCE=.\src\base\io\ioReadEqn.c
# End Source File
# Begin Source File
SOURCE=.\src\base\io\ioReadPla.c
# End Source File
# Begin Source File
SOURCE=.\src\base\io\ioReadVerilog.c
# End Source File
# Begin Source File
SOURCE=.\src\base\io\ioUtil.c
# End Source File
# Begin Source File
SOURCE=.\src\base\io\ioWriteBench.c
# End Source File
# Begin Source File
SOURCE=.\src\base\io\ioWriteBlif.c
# End Source File
# Begin Source File
SOURCE=.\src\base\io\ioWriteCnf.c
# End Source File
# Begin Source File
SOURCE=.\src\base\io\ioWriteDot.c
# End Source File
# Begin Source File
SOURCE=.\src\base\io\ioWriteEqn.c
# End Source File
# Begin Source File
SOURCE=.\src\base\io\ioWriteGml.c
# End Source File
# Begin Source File
SOURCE=.\src\base\io\ioWritePla.c
# End Source File
# End Group
# Begin Group "main"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\base\main\main.c
# End Source File
# Begin Source File
SOURCE=.\src\base\main\main.h
# End Source File
# Begin Source File
SOURCE=.\src\base\main\mainFrame.c
# End Source File
# Begin Source File
SOURCE=.\src\base\main\mainInit.c
# End Source File
# Begin Source File
SOURCE=.\src\base\main\mainInt.h
# End Source File
# Begin Source File
SOURCE=.\src\base\main\mainUtils.c
# End Source File
# End Group
# End Group
# Begin Group "bdd"
# PROP Default_Filter ""
# Begin Group "cudd"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\bdd\cudd\cudd.h
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddAddAbs.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddAddApply.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddAddFind.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddAddInv.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddAddIte.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddAddNeg.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddAddWalsh.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddAndAbs.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddAnneal.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddApa.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddAPI.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddApprox.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddBddAbs.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddBddCorr.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddBddIte.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddBridge.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddCache.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddCheck.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddClip.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddCof.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddCompose.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddDecomp.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddEssent.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddExact.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddExport.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddGenCof.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddGenetic.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddGroup.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddHarwell.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddInit.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddInt.h
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddInteract.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddLCache.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddLevelQ.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddLinear.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddLiteral.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddMatMult.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddPriority.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddRead.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddRef.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddReorder.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddSat.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddSign.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddSolve.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddSplit.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddSubsetHB.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddSubsetSP.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddSymmetry.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddTable.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddUtil.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddWindow.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddZddCount.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddZddFuncs.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddZddGroup.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddZddIsop.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddZddLin.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddZddMisc.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddZddPort.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddZddReord.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddZddSetop.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddZddSymm.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\cudd\cuddZddUtil.c
# End Source File
# End Group
# Begin Group "epd"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\bdd\epd\epd.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\epd\epd.h
# End Source File
# End Group
# Begin Group "mtr"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\bdd\mtr\mtr.h
# End Source File
# Begin Source File
SOURCE=.\src\bdd\mtr\mtrBasic.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\mtr\mtrGroup.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\mtr\mtrInt.h
# End Source File
# End Group
# Begin Group "parse"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\bdd\parse\parse.h
# End Source File
# Begin Source File
SOURCE=.\src\bdd\parse\parseCore.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\parse\parseInt.h
# End Source File
# Begin Source File
SOURCE=.\src\bdd\parse\parseStack.c
# End Source File
# End Group
# Begin Group "dsd"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\bdd\dsd\dsd.h
# End Source File
# Begin Source File
SOURCE=.\src\bdd\dsd\dsdApi.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\dsd\dsdCheck.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\dsd\dsdInt.h
# End Source File
# Begin Source File
SOURCE=.\src\bdd\dsd\dsdLocal.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\dsd\dsdMan.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\dsd\dsdProc.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\dsd\dsdTree.c
# End Source File
# End Group
# Begin Group "reo"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\bdd\reo\reo.h
# End Source File
# Begin Source File
SOURCE=.\src\bdd\reo\reoApi.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\reo\reoCore.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\reo\reoProfile.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\reo\reoSift.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\reo\reoSwap.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\reo\reoTest.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\reo\reoTransfer.c
# End Source File
# Begin Source File
SOURCE=.\src\bdd\reo\reoUnits.c
# End Source File
# End Group
# End Group
# Begin Group "sat"
# PROP Default_Filter ""
# Begin Group "asat"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\sat\asat\added.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\asat\solver.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\asat\solver.h
# End Source File
# Begin Source File
SOURCE=.\src\sat\asat\solver_vec.h
# End Source File
# End Group
# Begin Group "msat"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\sat\msat\msat.h
# End Source File
# Begin Source File
SOURCE=.\src\sat\msat\msatActivity.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\msat\msatClause.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\msat\msatClauseVec.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\msat\msatInt.h
# End Source File
# Begin Source File
SOURCE=.\src\sat\msat\msatMem.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\msat\msatOrderJ.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\msat\msatQueue.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\msat\msatRead.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\msat\msatSolverApi.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\msat\msatSolverCore.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\msat\msatSolverIo.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\msat\msatSolverSearch.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\msat\msatSort.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\msat\msatVec.c
# End Source File
# End Group
# Begin Group "fraig"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\sat\fraig\fraig.h
# End Source File
# Begin Source File
SOURCE=.\src\sat\fraig\fraigApi.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\fraig\fraigCanon.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\fraig\fraigFanout.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\fraig\fraigFeed.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\fraig\fraigInt.h
# End Source File
# Begin Source File
SOURCE=.\src\sat\fraig\fraigMan.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\fraig\fraigMem.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\fraig\fraigNode.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\fraig\fraigPrime.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\fraig\fraigSat.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\fraig\fraigTable.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\fraig\fraigUtil.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\fraig\fraigVec.c
# End Source File
# End Group
# Begin Group "csat"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\sat\csat\csat_apis.c
# End Source File
# Begin Source File
SOURCE=.\src\sat\csat\csat_apis.h
# End Source File
# End Group
# End Group
# Begin Group "opt"
# PROP Default_Filter ""
# Begin Group "fxu"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\opt\fxu\fxu.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\fxu\fxu.h
# End Source File
# Begin Source File
SOURCE=.\src\opt\fxu\fxuCreate.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\fxu\fxuHeapD.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\fxu\fxuHeapS.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\fxu\fxuInt.h
# End Source File
# Begin Source File
SOURCE=.\src\opt\fxu\fxuList.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\fxu\fxuMatrix.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\fxu\fxuPair.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\fxu\fxuPrint.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\fxu\fxuReduce.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\fxu\fxuSelect.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\fxu\fxuSingle.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\fxu\fxuUpdate.c
# End Source File
# End Group
# Begin Group "rwr"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\opt\rwr\rwr.h
# End Source File
# Begin Source File
SOURCE=.\src\opt\rwr\rwrDec.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\rwr\rwrEva.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\rwr\rwrExp.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\rwr\rwrLib.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\rwr\rwrMan.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\rwr\rwrPrint.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\rwr\rwrUtil.c
# End Source File
# End Group
# Begin Group "cut"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\opt\cut\cut.h
# End Source File
# Begin Source File
SOURCE=.\src\opt\cut\cutInt.h
# End Source File
# Begin Source File
SOURCE=.\src\opt\cut\cutList.h
# End Source File
# Begin Source File
SOURCE=.\src\opt\cut\cutMan.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\cut\cutMerge.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\cut\cutNode.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\cut\cutSeq.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\cut\cutTable.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\cut\cutTruth.c
# End Source File
# End Group
# Begin Group "dec"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\opt\dec\dec.h
# End Source File
# Begin Source File
SOURCE=.\src\opt\dec\decAbc.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\dec\decFactor.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\dec\decMan.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\dec\decPrint.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\dec\decUtil.c
# End Source File
# End Group
# Begin Group "sim"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\opt\sim\sim.h
# End Source File
# Begin Source File
SOURCE=.\src\opt\sim\simMan.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\sim\simSat.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\sim\simSupp.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\sim\simSwitch.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\sim\simSym.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\sim\simSymSat.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\sim\simSymSim.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\sim\simSymStr.c
# End Source File
# Begin Source File
SOURCE=.\src\opt\sim\simUtils.c
# End Source File
# End Group
# End Group
# Begin Group "map"
# PROP Default_Filter ""
# Begin Group "fpga"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\map\fpga\fpga.c
# End Source File
# Begin Source File
SOURCE=.\src\map\fpga\fpga.h
# End Source File
# Begin Source File
SOURCE=.\src\map\fpga\fpgaCore.c
# End Source File
# Begin Source File
SOURCE=.\src\map\fpga\fpgaCreate.c
# End Source File
# Begin Source File
SOURCE=.\src\map\fpga\fpgaCut.c
# End Source File
# Begin Source File
SOURCE=.\src\map\fpga\fpgaCutUtils.c
# End Source File
# Begin Source File
SOURCE=.\src\map\fpga\fpgaFanout.c
# End Source File
# Begin Source File
SOURCE=.\src\map\fpga\fpgaInt.h
# End Source File
# Begin Source File
SOURCE=.\src\map\fpga\fpgaLib.c
# End Source File
# Begin Source File
SOURCE=.\src\map\fpga\fpgaMatch.c
# End Source File
# Begin Source File
SOURCE=.\src\map\fpga\fpgaSwitch.c
# End Source File
# Begin Source File
SOURCE=.\src\map\fpga\fpgaTime.c
# End Source File
# Begin Source File
SOURCE=.\src\map\fpga\fpgaTruth.c
# End Source File
# Begin Source File
SOURCE=.\src\map\fpga\fpgaUtils.c
# End Source File
# Begin Source File
SOURCE=.\src\map\fpga\fpgaVec.c
# End Source File
# End Group
# Begin Group "mapper"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\map\mapper\mapper.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapper.h
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperCanon.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperCore.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperCreate.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperCut.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperCutUtils.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperFanout.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperInt.h
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperLib.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperMatch.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperRefs.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperSuper.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperSwitch.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperTable.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperTime.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperTree.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperTruth.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperUtils.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mapper\mapperVec.c
# End Source File
# End Group
# Begin Group "mio"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\map\mio\mio.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mio\mio.h
# End Source File
# Begin Source File
SOURCE=.\src\map\mio\mioApi.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mio\mioFunc.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mio\mioInt.h
# End Source File
# Begin Source File
SOURCE=.\src\map\mio\mioRead.c
# End Source File
# Begin Source File
SOURCE=.\src\map\mio\mioUtils.c
# End Source File
# End Group
# Begin Group "super"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\map\super\super.c
# End Source File
# Begin Source File
SOURCE=.\src\map\super\super.h
# End Source File
# Begin Source File
SOURCE=.\src\map\super\superAnd.c
# End Source File
# Begin Source File
SOURCE=.\src\map\super\superGate.c
# End Source File
# Begin Source File
SOURCE=.\src\map\super\superInt.h
# End Source File
# Begin Source File
SOURCE=.\src\map\super\superWrite.c
# End Source File
# End Group
# End Group
# Begin Group "misc"
# PROP Default_Filter ""
# Begin Group "extra"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\misc\extra\extra.h
# End Source File
# Begin Source File
SOURCE=.\src\misc\extra\extraBddMisc.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\extra\extraBddSymm.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\extra\extraUtilBitMatrix.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\extra\extraUtilCanon.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\extra\extraUtilFile.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\extra\extraUtilMemory.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\extra\extraUtilMisc.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\extra\extraUtilProgress.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\extra\extraUtilReader.c
# End Source File
# End Group
# Begin Group "st"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\misc\st\st.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\st\st.h
# End Source File
# Begin Source File
SOURCE=.\src\misc\st\stmm.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\st\stmm.h
# End Source File
# End Group
# Begin Group "util"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\misc\util\cpu_stats.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\util\cpu_time.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\util\datalimit.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\util\getopt.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\util\leaks.h
# End Source File
# Begin Source File
SOURCE=.\src\misc\util\pathsearch.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\util\safe_mem.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\util\stdlib_hack.h
# End Source File
# Begin Source File
SOURCE=.\src\misc\util\strsav.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\util\texpand.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\util\util.h
# End Source File
# End Group
# Begin Group "mvc"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\misc\mvc\mvc.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\mvc\mvc.h
# End Source File
# Begin Source File
SOURCE=.\src\misc\mvc\mvcApi.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\mvc\mvcCompare.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\mvc\mvcContain.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\mvc\mvcCover.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\mvc\mvcCube.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\mvc\mvcDivide.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\mvc\mvcDivisor.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\mvc\mvcList.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\mvc\mvcLits.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\mvc\mvcMan.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\mvc\mvcOpAlg.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\mvc\mvcOpBool.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\mvc\mvcPrint.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\mvc\mvcSort.c
# End Source File
# Begin Source File
SOURCE=.\src\misc\mvc\mvcUtils.c
# End Source File
# End Group
# Begin Group "vec"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\misc\vec\vec.h
# End Source File
# Begin Source File
SOURCE=.\src\misc\vec\vecFan.h
# End Source File
# Begin Source File
SOURCE=.\src\misc\vec\vecInt.h
# End Source File
# Begin Source File
SOURCE=.\src\misc\vec\vecPtr.h
# End Source File
# Begin Source File
SOURCE=.\src\misc\vec\vecStr.h
# End Source File
# Begin Source File
SOURCE=.\src\misc\vec\vecVec.h
# End Source File
# End Group
# End Group
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "abc"=.\abc.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
File deleted
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: abc - Win32 Release--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSPAA2.tmp" with contents
[
/nologo /ML /W3 /GX /O2 /I "src\base\abc" /I "src\base\cmd" /I "src\base\io" /I "src\base\main" /I "src\bdd\cudd" /I "src\bdd\epd" /I "src\bdd\mtr" /I "src\bdd\parse" /I "src\bdd\dsd" /I "src\bdd\reo" /I "src\sop\ft" /I "src\sat\asat" /I "src\sat\msat" /I "src\sat\fraig" /I "src\opt\cut" /I "src\opt\dec" /I "src\opt\fxu" /I "src\opt\rwr" /I "src\map\fpga" /I "src\map\mapper" /I "src\map\mio" /I "src\map\super" /I "src\misc\extra" /I "src\misc\st" /I "src\misc\mvc" /I "src\misc\util" /I "src\misc\vec" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "__STDC__" /D "HAVE_ASSERT_H" /FR"Release/" /Fp"Release/abc.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c
"C:\_projects\abc\src\base\abci\abcMap.c"
]
Creating command line "cl.exe @C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSPAA2.tmp"
Creating temporary file "C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSPAA3.tmp" with contents
[
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"Release/abc.pdb" /machine:I386 /out:"_TEST/abc.exe"
.\Release\abcAig.obj
.\Release\abcCheck.obj
.\Release\abcDfs.obj
.\Release\abcFanio.obj
.\Release\abcFunc.obj
.\Release\abcLatch.obj
.\Release\abcMinBase.obj
.\Release\abcNames.obj
.\Release\abcNetlist.obj
.\Release\abcNtk.obj
.\Release\abcObj.obj
.\Release\abcRefs.obj
.\Release\abcShow.obj
.\Release\abcSop.obj
.\Release\abcUtil.obj
.\Release\abc.obj
.\Release\abcAttach.obj
.\Release\abcBalance.obj
.\Release\abcCollapse.obj
.\Release\abcCut.obj
.\Release\abcDsd.obj
.\Release\abcFpga.obj
.\Release\abcFraig.obj
.\Release\abcFxu.obj
.\Release\abcMap.obj
.\Release\abcMiter.obj
.\Release\abcNtbdd.obj
.\Release\abcPrint.obj
.\Release\abcReconv.obj
.\Release\abcRefactor.obj
.\Release\abcRenode.obj
.\Release\abcRewrite.obj
.\Release\abcSat.obj
.\Release\abcStrash.obj
.\Release\abcSweep.obj
.\Release\abcSymm.obj
.\Release\abcTiming.obj
.\Release\abcUnreach.obj
.\Release\abcVerify.obj
.\Release\abcRetime.obj
.\Release\abcSeq.obj
.\Release\cmd.obj
.\Release\cmdAlias.obj
.\Release\cmdApi.obj
.\Release\cmdFlag.obj
.\Release\cmdHist.obj
.\Release\cmdUtils.obj
.\Release\io.obj
.\Release\ioRead.obj
.\Release\ioReadBench.obj
.\Release\ioReadBlif.obj
.\Release\ioReadEdif.obj
.\Release\ioReadEqn.obj
.\Release\ioReadPla.obj
.\Release\ioReadVerilog.obj
.\Release\ioUtil.obj
.\Release\ioWriteBench.obj
.\Release\ioWriteBlif.obj
.\Release\ioWriteCnf.obj
.\Release\ioWriteDot.obj
.\Release\ioWriteEqn.obj
.\Release\ioWriteGml.obj
.\Release\ioWritePla.obj
.\Release\main.obj
.\Release\mainFrame.obj
.\Release\mainInit.obj
.\Release\mainUtils.obj
.\Release\cuddAddAbs.obj
.\Release\cuddAddApply.obj
.\Release\cuddAddFind.obj
.\Release\cuddAddInv.obj
.\Release\cuddAddIte.obj
.\Release\cuddAddNeg.obj
.\Release\cuddAddWalsh.obj
.\Release\cuddAndAbs.obj
.\Release\cuddAnneal.obj
.\Release\cuddApa.obj
.\Release\cuddAPI.obj
.\Release\cuddApprox.obj
.\Release\cuddBddAbs.obj
.\Release\cuddBddCorr.obj
.\Release\cuddBddIte.obj
.\Release\cuddBridge.obj
.\Release\cuddCache.obj
.\Release\cuddCheck.obj
.\Release\cuddClip.obj
.\Release\cuddCof.obj
.\Release\cuddCompose.obj
.\Release\cuddDecomp.obj
.\Release\cuddEssent.obj
.\Release\cuddExact.obj
.\Release\cuddExport.obj
.\Release\cuddGenCof.obj
.\Release\cuddGenetic.obj
.\Release\cuddGroup.obj
.\Release\cuddHarwell.obj
.\Release\cuddInit.obj
.\Release\cuddInteract.obj
.\Release\cuddLCache.obj
.\Release\cuddLevelQ.obj
.\Release\cuddLinear.obj
.\Release\cuddLiteral.obj
.\Release\cuddMatMult.obj
.\Release\cuddPriority.obj
.\Release\cuddRead.obj
.\Release\cuddRef.obj
.\Release\cuddReorder.obj
.\Release\cuddSat.obj
.\Release\cuddSign.obj
.\Release\cuddSolve.obj
.\Release\cuddSplit.obj
.\Release\cuddSubsetHB.obj
.\Release\cuddSubsetSP.obj
.\Release\cuddSymmetry.obj
.\Release\cuddTable.obj
.\Release\cuddUtil.obj
.\Release\cuddWindow.obj
.\Release\cuddZddCount.obj
.\Release\cuddZddFuncs.obj
.\Release\cuddZddGroup.obj
.\Release\cuddZddIsop.obj
.\Release\cuddZddLin.obj
.\Release\cuddZddMisc.obj
.\Release\cuddZddPort.obj
.\Release\cuddZddReord.obj
.\Release\cuddZddSetop.obj
.\Release\cuddZddSymm.obj
.\Release\cuddZddUtil.obj
.\Release\epd.obj
.\Release\mtrBasic.obj
.\Release\mtrGroup.obj
.\Release\parseCore.obj
.\Release\parseStack.obj
.\Release\dsdApi.obj
.\Release\dsdCheck.obj
.\Release\dsdLocal.obj
.\Release\dsdMan.obj
.\Release\dsdProc.obj
.\Release\dsdTree.obj
.\Release\reoApi.obj
.\Release\reoCore.obj
.\Release\reoProfile.obj
.\Release\reoSift.obj
.\Release\reoSwap.obj
.\Release\reoTest.obj
.\Release\reoTransfer.obj
.\Release\reoUnits.obj
.\Release\added.obj
.\Release\solver.obj
.\Release\msatActivity.obj
.\Release\msatClause.obj
.\Release\msatClauseVec.obj
.\Release\msatMem.obj
.\Release\msatOrderJ.obj
.\Release\msatQueue.obj
.\Release\msatRead.obj
.\Release\msatSolverApi.obj
.\Release\msatSolverCore.obj
.\Release\msatSolverIo.obj
.\Release\msatSolverSearch.obj
.\Release\msatSort.obj
.\Release\msatVec.obj
.\Release\fraigApi.obj
.\Release\fraigCanon.obj
.\Release\fraigFanout.obj
.\Release\fraigFeed.obj
.\Release\fraigMan.obj
.\Release\fraigMem.obj
.\Release\fraigNode.obj
.\Release\fraigPrime.obj
.\Release\fraigSat.obj
.\Release\fraigTable.obj
.\Release\fraigUtil.obj
.\Release\fraigVec.obj
.\Release\csat_apis.obj
.\Release\fxu.obj
.\Release\fxuCreate.obj
.\Release\fxuHeapD.obj
.\Release\fxuHeapS.obj
.\Release\fxuList.obj
.\Release\fxuMatrix.obj
.\Release\fxuPair.obj
.\Release\fxuPrint.obj
.\Release\fxuReduce.obj
.\Release\fxuSelect.obj
.\Release\fxuSingle.obj
.\Release\fxuUpdate.obj
.\Release\rwrDec.obj
.\Release\rwrEva.obj
.\Release\rwrExp.obj
.\Release\rwrLib.obj
.\Release\rwrMan.obj
.\Release\rwrPrint.obj
.\Release\rwrUtil.obj
.\Release\cutMan.obj
.\Release\cutMerge.obj
.\Release\cutNode.obj
.\Release\cutSeq.obj
.\Release\cutTable.obj
.\Release\cutTruth.obj
.\Release\decAbc.obj
.\Release\decFactor.obj
.\Release\decMan.obj
.\Release\decPrint.obj
.\Release\decUtil.obj
.\Release\simMan.obj
.\Release\simSat.obj
.\Release\simSupp.obj
.\Release\simSwitch.obj
.\Release\simSym.obj
.\Release\simSymSat.obj
.\Release\simSymSim.obj
.\Release\simSymStr.obj
.\Release\simUtils.obj
.\Release\fpga.obj
.\Release\fpgaCore.obj
.\Release\fpgaCreate.obj
.\Release\fpgaCut.obj
.\Release\fpgaCutUtils.obj
.\Release\fpgaFanout.obj
.\Release\fpgaLib.obj
.\Release\fpgaMatch.obj
.\Release\fpgaSwitch.obj
.\Release\fpgaTime.obj
.\Release\fpgaTruth.obj
.\Release\fpgaUtils.obj
.\Release\fpgaVec.obj
.\Release\mapper.obj
.\Release\mapperCanon.obj
.\Release\mapperCore.obj
.\Release\mapperCreate.obj
.\Release\mapperCut.obj
.\Release\mapperCutUtils.obj
.\Release\mapperFanout.obj
.\Release\mapperLib.obj
.\Release\mapperMatch.obj
.\Release\mapperRefs.obj
.\Release\mapperSuper.obj
.\Release\mapperSwitch.obj
.\Release\mapperTable.obj
.\Release\mapperTime.obj
.\Release\mapperTree.obj
.\Release\mapperTruth.obj
.\Release\mapperUtils.obj
.\Release\mapperVec.obj
.\Release\mio.obj
.\Release\mioApi.obj
.\Release\mioFunc.obj
.\Release\mioRead.obj
.\Release\mioUtils.obj
.\Release\super.obj
.\Release\superAnd.obj
.\Release\superGate.obj
.\Release\superWrite.obj
.\Release\extraBddMisc.obj
.\Release\extraBddSymm.obj
.\Release\extraUtilBitMatrix.obj
.\Release\extraUtilCanon.obj
.\Release\extraUtilFile.obj
.\Release\extraUtilMemory.obj
.\Release\extraUtilMisc.obj
.\Release\extraUtilProgress.obj
.\Release\extraUtilReader.obj
.\Release\st.obj
.\Release\stmm.obj
.\Release\cpu_stats.obj
.\Release\cpu_time.obj
.\Release\datalimit.obj
.\Release\getopt.obj
.\Release\pathsearch.obj
.\Release\safe_mem.obj
.\Release\strsav.obj
.\Release\texpand.obj
.\Release\mvc.obj
.\Release\mvcApi.obj
.\Release\mvcCompare.obj
.\Release\mvcContain.obj
.\Release\mvcCover.obj
.\Release\mvcCube.obj
.\Release\mvcDivide.obj
.\Release\mvcDivisor.obj
.\Release\mvcList.obj
.\Release\mvcLits.obj
.\Release\mvcMan.obj
.\Release\mvcOpAlg.obj
.\Release\mvcOpBool.obj
.\Release\mvcPrint.obj
.\Release\mvcSort.obj
.\Release\mvcUtils.obj
]
Creating command line "link.exe @C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSPAA3.tmp"
<h3>Output Window</h3>
Compiling...
abcMap.c
Linking...
Creating temporary file "C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSPAA5.tmp" with contents
[
/nologo /o"Release/abc.bsc"
.\Release\abcAig.sbr
.\Release\abcCheck.sbr
.\Release\abcDfs.sbr
.\Release\abcFanio.sbr
.\Release\abcFunc.sbr
.\Release\abcLatch.sbr
.\Release\abcMinBase.sbr
.\Release\abcNames.sbr
.\Release\abcNetlist.sbr
.\Release\abcNtk.sbr
.\Release\abcObj.sbr
.\Release\abcRefs.sbr
.\Release\abcShow.sbr
.\Release\abcSop.sbr
.\Release\abcUtil.sbr
.\Release\abc.sbr
.\Release\abcAttach.sbr
.\Release\abcBalance.sbr
.\Release\abcCollapse.sbr
.\Release\abcCut.sbr
.\Release\abcDsd.sbr
.\Release\abcFpga.sbr
.\Release\abcFraig.sbr
.\Release\abcFxu.sbr
.\Release\abcMap.sbr
.\Release\abcMiter.sbr
.\Release\abcNtbdd.sbr
.\Release\abcPrint.sbr
.\Release\abcReconv.sbr
.\Release\abcRefactor.sbr
.\Release\abcRenode.sbr
.\Release\abcRewrite.sbr
.\Release\abcSat.sbr
.\Release\abcStrash.sbr
.\Release\abcSweep.sbr
.\Release\abcSymm.sbr
.\Release\abcTiming.sbr
.\Release\abcUnreach.sbr
.\Release\abcVerify.sbr
.\Release\abcRetime.sbr
.\Release\abcSeq.sbr
.\Release\cmd.sbr
.\Release\cmdAlias.sbr
.\Release\cmdApi.sbr
.\Release\cmdFlag.sbr
.\Release\cmdHist.sbr
.\Release\cmdUtils.sbr
.\Release\io.sbr
.\Release\ioRead.sbr
.\Release\ioReadBench.sbr
.\Release\ioReadBlif.sbr
.\Release\ioReadEdif.sbr
.\Release\ioReadEqn.sbr
.\Release\ioReadPla.sbr
.\Release\ioReadVerilog.sbr
.\Release\ioUtil.sbr
.\Release\ioWriteBench.sbr
.\Release\ioWriteBlif.sbr
.\Release\ioWriteCnf.sbr
.\Release\ioWriteDot.sbr
.\Release\ioWriteEqn.sbr
.\Release\ioWriteGml.sbr
.\Release\ioWritePla.sbr
.\Release\main.sbr
.\Release\mainFrame.sbr
.\Release\mainInit.sbr
.\Release\mainUtils.sbr
.\Release\cuddAddAbs.sbr
.\Release\cuddAddApply.sbr
.\Release\cuddAddFind.sbr
.\Release\cuddAddInv.sbr
.\Release\cuddAddIte.sbr
.\Release\cuddAddNeg.sbr
.\Release\cuddAddWalsh.sbr
.\Release\cuddAndAbs.sbr
.\Release\cuddAnneal.sbr
.\Release\cuddApa.sbr
.\Release\cuddAPI.sbr
.\Release\cuddApprox.sbr
.\Release\cuddBddAbs.sbr
.\Release\cuddBddCorr.sbr
.\Release\cuddBddIte.sbr
.\Release\cuddBridge.sbr
.\Release\cuddCache.sbr
.\Release\cuddCheck.sbr
.\Release\cuddClip.sbr
.\Release\cuddCof.sbr
.\Release\cuddCompose.sbr
.\Release\cuddDecomp.sbr
.\Release\cuddEssent.sbr
.\Release\cuddExact.sbr
.\Release\cuddExport.sbr
.\Release\cuddGenCof.sbr
.\Release\cuddGenetic.sbr
.\Release\cuddGroup.sbr
.\Release\cuddHarwell.sbr
.\Release\cuddInit.sbr
.\Release\cuddInteract.sbr
.\Release\cuddLCache.sbr
.\Release\cuddLevelQ.sbr
.\Release\cuddLinear.sbr
.\Release\cuddLiteral.sbr
.\Release\cuddMatMult.sbr
.\Release\cuddPriority.sbr
.\Release\cuddRead.sbr
.\Release\cuddRef.sbr
.\Release\cuddReorder.sbr
.\Release\cuddSat.sbr
.\Release\cuddSign.sbr
.\Release\cuddSolve.sbr
.\Release\cuddSplit.sbr
.\Release\cuddSubsetHB.sbr
.\Release\cuddSubsetSP.sbr
.\Release\cuddSymmetry.sbr
.\Release\cuddTable.sbr
.\Release\cuddUtil.sbr
.\Release\cuddWindow.sbr
.\Release\cuddZddCount.sbr
.\Release\cuddZddFuncs.sbr
.\Release\cuddZddGroup.sbr
.\Release\cuddZddIsop.sbr
.\Release\cuddZddLin.sbr
.\Release\cuddZddMisc.sbr
.\Release\cuddZddPort.sbr
.\Release\cuddZddReord.sbr
.\Release\cuddZddSetop.sbr
.\Release\cuddZddSymm.sbr
.\Release\cuddZddUtil.sbr
.\Release\epd.sbr
.\Release\mtrBasic.sbr
.\Release\mtrGroup.sbr
.\Release\parseCore.sbr
.\Release\parseStack.sbr
.\Release\dsdApi.sbr
.\Release\dsdCheck.sbr
.\Release\dsdLocal.sbr
.\Release\dsdMan.sbr
.\Release\dsdProc.sbr
.\Release\dsdTree.sbr
.\Release\reoApi.sbr
.\Release\reoCore.sbr
.\Release\reoProfile.sbr
.\Release\reoSift.sbr
.\Release\reoSwap.sbr
.\Release\reoTest.sbr
.\Release\reoTransfer.sbr
.\Release\reoUnits.sbr
.\Release\added.sbr
.\Release\solver.sbr
.\Release\msatActivity.sbr
.\Release\msatClause.sbr
.\Release\msatClauseVec.sbr
.\Release\msatMem.sbr
.\Release\msatOrderJ.sbr
.\Release\msatQueue.sbr
.\Release\msatRead.sbr
.\Release\msatSolverApi.sbr
.\Release\msatSolverCore.sbr
.\Release\msatSolverIo.sbr
.\Release\msatSolverSearch.sbr
.\Release\msatSort.sbr
.\Release\msatVec.sbr
.\Release\fraigApi.sbr
.\Release\fraigCanon.sbr
.\Release\fraigFanout.sbr
.\Release\fraigFeed.sbr
.\Release\fraigMan.sbr
.\Release\fraigMem.sbr
.\Release\fraigNode.sbr
.\Release\fraigPrime.sbr
.\Release\fraigSat.sbr
.\Release\fraigTable.sbr
.\Release\fraigUtil.sbr
.\Release\fraigVec.sbr
.\Release\csat_apis.sbr
.\Release\fxu.sbr
.\Release\fxuCreate.sbr
.\Release\fxuHeapD.sbr
.\Release\fxuHeapS.sbr
.\Release\fxuList.sbr
.\Release\fxuMatrix.sbr
.\Release\fxuPair.sbr
.\Release\fxuPrint.sbr
.\Release\fxuReduce.sbr
.\Release\fxuSelect.sbr
.\Release\fxuSingle.sbr
.\Release\fxuUpdate.sbr
.\Release\rwrDec.sbr
.\Release\rwrEva.sbr
.\Release\rwrExp.sbr
.\Release\rwrLib.sbr
.\Release\rwrMan.sbr
.\Release\rwrPrint.sbr
.\Release\rwrUtil.sbr
.\Release\cutMan.sbr
.\Release\cutMerge.sbr
.\Release\cutNode.sbr
.\Release\cutSeq.sbr
.\Release\cutTable.sbr
.\Release\cutTruth.sbr
.\Release\decAbc.sbr
.\Release\decFactor.sbr
.\Release\decMan.sbr
.\Release\decPrint.sbr
.\Release\decUtil.sbr
.\Release\simMan.sbr
.\Release\simSat.sbr
.\Release\simSupp.sbr
.\Release\simSwitch.sbr
.\Release\simSym.sbr
.\Release\simSymSat.sbr
.\Release\simSymSim.sbr
.\Release\simSymStr.sbr
.\Release\simUtils.sbr
.\Release\fpga.sbr
.\Release\fpgaCore.sbr
.\Release\fpgaCreate.sbr
.\Release\fpgaCut.sbr
.\Release\fpgaCutUtils.sbr
.\Release\fpgaFanout.sbr
.\Release\fpgaLib.sbr
.\Release\fpgaMatch.sbr
.\Release\fpgaSwitch.sbr
.\Release\fpgaTime.sbr
.\Release\fpgaTruth.sbr
.\Release\fpgaUtils.sbr
.\Release\fpgaVec.sbr
.\Release\mapper.sbr
.\Release\mapperCanon.sbr
.\Release\mapperCore.sbr
.\Release\mapperCreate.sbr
.\Release\mapperCut.sbr
.\Release\mapperCutUtils.sbr
.\Release\mapperFanout.sbr
.\Release\mapperLib.sbr
.\Release\mapperMatch.sbr
.\Release\mapperRefs.sbr
.\Release\mapperSuper.sbr
.\Release\mapperSwitch.sbr
.\Release\mapperTable.sbr
.\Release\mapperTime.sbr
.\Release\mapperTree.sbr
.\Release\mapperTruth.sbr
.\Release\mapperUtils.sbr
.\Release\mapperVec.sbr
.\Release\mio.sbr
.\Release\mioApi.sbr
.\Release\mioFunc.sbr
.\Release\mioRead.sbr
.\Release\mioUtils.sbr
.\Release\super.sbr
.\Release\superAnd.sbr
.\Release\superGate.sbr
.\Release\superWrite.sbr
.\Release\extraBddMisc.sbr
.\Release\extraBddSymm.sbr
.\Release\extraUtilBitMatrix.sbr
.\Release\extraUtilCanon.sbr
.\Release\extraUtilFile.sbr
.\Release\extraUtilMemory.sbr
.\Release\extraUtilMisc.sbr
.\Release\extraUtilProgress.sbr
.\Release\extraUtilReader.sbr
.\Release\st.sbr
.\Release\stmm.sbr
.\Release\cpu_stats.sbr
.\Release\cpu_time.sbr
.\Release\datalimit.sbr
.\Release\getopt.sbr
.\Release\pathsearch.sbr
.\Release\safe_mem.sbr
.\Release\strsav.sbr
.\Release\texpand.sbr
.\Release\mvc.sbr
.\Release\mvcApi.sbr
.\Release\mvcCompare.sbr
.\Release\mvcContain.sbr
.\Release\mvcCover.sbr
.\Release\mvcCube.sbr
.\Release\mvcDivide.sbr
.\Release\mvcDivisor.sbr
.\Release\mvcList.sbr
.\Release\mvcLits.sbr
.\Release\mvcMan.sbr
.\Release\mvcOpAlg.sbr
.\Release\mvcOpBool.sbr
.\Release\mvcPrint.sbr
.\Release\mvcSort.sbr
.\Release\mvcUtils.sbr]
Creating command line "bscmake.exe @C:\DOCUME~1\alanmi\LOCALS~1\Temp\RSPAA5.tmp"
Creating browse info file...
<h3>Output Window</h3>
<h3>Results</h3>
abc.exe - 0 error(s), 0 warning(s)
</pre>
</body>
</html>
...@@ -62,4 +62,5 @@ alias sharem "b; ren -m; fx; b" ...@@ -62,4 +62,5 @@ alias sharem "b; ren -m; fx; b"
alias sharedsd "b; ren; dsd -g; sw; fx; b" alias sharedsd "b; ren; dsd -g; sw; fx; b"
alias resyn "b; rw; rwz; b; rwz; b" alias resyn "b; rw; rwz; b; rwz; b"
alias resyn2 "b; rw; rf; b; rw; rwz; b; rfz; rwz; b" alias resyn2 "b; rw; rf; b; rw; rwz; b; rfz; rwz; b"
alias thin "rwz; rfz; b; ps"
// Demo program for the static library project of ABC
#include <stdio.h>
#include "src/sat/csat/csat_apis.h"
// procedures to start and stop the ABC framework
extern void Abc_Start();
extern void Abc_Stop();
// simple test prog
int main( int argc, char * argv[] )
{
CSAT_Manager_t * mng;
CSAT_Target_ResultT * pResult;
char * Names[2];
int Values[2];
int i;
// start ABC
// (calling Abc_Start() for each problem is timeconsuming
// because it allocates some internal data structures used by decomposition packages
// so Abc_Start should be called once before creating many solution managers)
Abc_Start();
// start the solution manager
// (the manager can be reused for several targets if the targets
// use the same network and only differ in the asserted values;
// however, only one target can be loaded into the manager at any time)
mng = CSAT_InitManager();
// create a simple circuit
// PIs: A, B, C
// POs: F = ((AB)C) <+> (A(BC))
// Internal nodes:
// X = AB U = XC
// Y = BC W = AY
// G = U <+> W
// F = G
// PIs should be added first
CSAT_AddGate( mng, CSAT_BPI, "A", 0, NULL, 0 );
CSAT_AddGate( mng, CSAT_BPI, "B", 0, NULL, 0 );
CSAT_AddGate( mng, CSAT_BPI, "C", 0, NULL, 0 );
// internal nodes should be added next
Names[0] = "A";
Names[1] = "B";
CSAT_AddGate( mng, CSAT_BAND, "X", 2, Names, 0 );
// CSAT_AddGate( mng, CSAT_BOR, "X", 2, Names, 0 ); // use this line to make the problem SATISFIABLE
Names[0] = "X";
Names[1] = "C";
CSAT_AddGate( mng, CSAT_BAND, "U", 2, Names, 0 );
Names[0] = "B";
Names[1] = "C";
CSAT_AddGate( mng, CSAT_BAND, "Y", 2, Names, 0 );
Names[0] = "A";
Names[1] = "Y";
CSAT_AddGate( mng, CSAT_BAND, "W", 2, Names, 0 );
Names[0] = "U";
Names[1] = "W";
CSAT_AddGate( mng, CSAT_BXOR, "G", 2, Names, 0 );
// POs should be added last
Names[0] = "G";
CSAT_AddGate( mng, CSAT_BPO, "F", 1, Names, 0 );
// check integrity of the manager (and finalize ABC network in the manager!)
if ( CSAT_Check_Integrity( mng ) )
printf( "Integrity is okey.\n" );
else
printf( "Integrity is NOT okey.\n" );
// dump the problem into a BENCH file
// currently BENCH file can only be written for an AIG
// so we will transform the network into AIG before dumping it
CSAT_EnableDump( mng, "simple.bench" );
CSAT_Dump_Bench_File( mng );
// set the solving target (only one target at a time!)
// the target can be expressed sing PI/PO or internal nodes
Names[0] = "F";
Values[0] = 1;
CSAT_AddTarget( mng, 1, Names, Values );
// initialize the sover
CSAT_SolveInit( mng );
// set the solving option (0 = brute-force SAT; 1 = resource-aware FRAIG)
CSAT_SetSolveOption( mng, 1 );
// solves the last added target
CSAT_Solve( mng );
// get the result of solving
pResult = CSAT_Get_Target_Result( mng, 0 );
// print the report
if ( pResult->status == UNDETERMINED )
printf( "The problem is UNDETERMINED.\n" );
else if ( pResult->status == UNSATISFIABLE )
printf( "The problem is UNSATISFIABLE.\n" );
else if ( pResult->status == SATISFIABLE )
{
printf( "The problem is SATISFIABLE.\n" );
printf( "Satisfying assignment is: " );
for ( i = 0; i < pResult->no_sig; i++ )
printf( "%s=%d ", pResult->names[i], pResult->values[i] );
printf( "\n" );
}
// free everything to prevent memory leaks
CSAT_TargetResFree( pResult );
CSAT_QuitManager( mng );
Abc_Stop();
return 0;
}
# ATPG -- Automatic Test Pattern Generation for
# Combinational Circuits
# ATPG, Version 1.0, 4/29/86, Author: Ruey-sing Wei and Tony Ma
.model C2670.iscas
.inputs 1(0) 2(1) 3(2) 4(3) 5(4) 6(5) 7(6) 8(7) 11(8) 14(9) 15(10) 16(11) 19(12) 20(13) 21(14) 22(15) 23(16) 24(17) 25(18) 26(19) 27(20) 28(21) 29(22) 32(23) 33(24) 34(25) 35(26) 36(27) 37(28) 40(29) 43(30) 44(31) 47(32) 48(33) 49(34) 50(35) 51(36) 52(37) 53(38) 54(39) 55(40) 56(41) 57(42) 60(43) 61(44) 62(45) 63(46) 64(47) 65(48) 66(49) 67(50) 68(51) 69(52) 72(53) 73(54) 74(55) 75(56) 76(57) 77(58) 78(59) 79(60) 80(61) 81(62) 82(63) 85(64) 86(65) 87(66) 88(67) 89(68) 90(69) 91(70) 92(71) 93(72) 94(73) 95(74) 96(75) 99(76) 100(77) 101(78) 102(79) 103(80) 104(81) 105(82) 106(83) 107(84) 108(85) 111(86) 112(87) 113(88) 114(89) 115(90) 116(91) 117(92) 118(93) 119(94) 120(95) 123(96) 124(97) 125(98) 126(99) 127(100) 128(101) 129(102) 130(103) 131(104) 132(105) 135(106) 136(107) 137(108) 138(109) 139(110) 140(111) 141(112) 142(113) 169(114) 174(115) 177(116) 178(117) 179(118) 180(119) 181(120) 182(121) 183(122) 184(123) 185(124) 186(125) 189(126) 190(127) 191(128) 192(129) 193(130) 194(131) 195(132) 196(133) 197(134) 198(135) 199(136) 200(137) 201(138) 202(139) 203(140) 204(141) 205(142) 206(143) 207(144) 208(145) 209(146) 210(147) 211(148) 212(149) 213(150) 214(151) 215(152) 239(153) 240(154) 241(155) 242(156) 243(157) 244(158) 245(159) 246(160) 247(161) 248(162) 249(163) 250(164) 251(165) 252(166) 253(167) 254(168) 255(169) 256(170) 257(171) 262(172) 263(173) 264(174) 265(175) 266(176) 267(177) 268(178) 269(179) 270(180) 271(181) 272(182) 273(183) 274(184) 275(185) 276(186) 277(187) 278(188) 279(189) 452(190) 483(191) 543(192) 559(193) 567(194) 651(195) 661(196) 860(197) 868(198) 1083(199) 1341(200) 1348(201) 1384(202) 1956(203) 1961(204) 1966(205) 1971(206) 1976(207) 1981(208) 1986(209) 1991(210) 1996(211) 2066(212) 2067(213) 2072(214) 2078(215) 2084(216) 2090(217) 2096(218) 2100(219) 2104(220) 2105(221) 2106(222) 2427(223) 2430(224) 2435(225) 2438(226) 2443(227) 2446(228) 2451(229) 2454(230) 2474(231) 2678(232)
.outputs 169(114) 174(115) 177(116) 178(117) 179(118) 180(119) 181(120) 182(121) 183(122) 184(123) 185(124) 186(125) 189(126) 190(127) 191(128) 192(129) 193(130) 194(131) 195(132) 196(133) 197(134) 198(135) 199(136) 200(137) 201(138) 202(139) 203(140) 204(141) 205(142) 206(143) 207(144) 208(145) 209(146) 210(147) 211(148) 212(149) 213(150) 214(151) 215(152) 239(153) 240(154) 241(155) 242(156) 243(157) 244(158) 245(159) 246(160) 247(161) 248(162) 249(163) 250(164) 251(165) 252(166) 253(167) 254(168) 255(169) 256(170) 257(171) 262(172) 263(173) 264(174) 265(175) 266(176) 267(177) 268(178) 269(179) 270(180) 271(181) 272(182) 273(183) 274(184) 275(185) 276(186) 277(187) 278(188) 279(189) 350(301) 335(299) 409(298) 369(289) 367(288) 411(264) 337(263) 384(262) 218(311) 219(302) 220(306) 221(305) 235(307) 236(303) 237(309) 238(304) 158(349) 259(414) 391(379) 173(389) 223(413) 234(376) 217(423) 325(507) 261(506) 319(656) 160(609) 162(612) 164(607) 166(625) 168(623) 171(621) 153(671) 176(803) 188(761) 299(692) 301(694) 286(696) 303(698) 288(700) 305(702) 290(704) 284(847) 321(848) 297(849) 280(850) 148(851) 282(922) 323(923) 156(1046) 401(1276) 227(1179) 229(1180) 311(1278) 150(1277) 145(1358) 395(1392) 295(1400) 331(1401) 397(1406) 329(1414) 231(1422) 308(1425) 225(1424)
.names 2678(232) 2682(233)
1 0
.names 2474(231) 2478(234)
1 0
.names 2454(230) 2458(235)
1 0
.names 2451(229) 2457(236)
1 0
.names 2446(228) 2450(237)
1 0
.names 2443(227) 2449(238)
1 0
.names 2438(226) 2442(239)
1 0
.names 2435(225) 2441(240)
1 0
.names 2430(224) 2434(241)
1 0
.names 2427(223) 2433(242)
1 0
.names 2105(221) 1655(243)
1 1
.names 2105(221) 1418(244)
1 1
.names 2104(220) 1631(245)
1 1
.names 2104(220) 1394(246)
1 1
.names 2100(219) 2103(247)
1 0
.names 2100(219) 2699(248)
1 1
.names 2096(218) 2099(249)
1 0
.names 2096(218) 2702(250)
1 1
.names 2090(217) 2094(251)
1 0
.names 2090(217) 2691(252)
1 1
.names 2084(216) 2088(253)
1 0
.names 2084(216) 2694(254)
1 1
.names 2078(215) 2082(255)
1 0
.names 2078(215) 2683(256)
1 1
.names 2072(214) 2076(257)
1 0
.names 2072(214) 2686(258)
1 1
.names 2090(217) 2084(216) 2078(215) 2072(214) 157(259)
1111 1
.names 2067(213) 2070(260)
1 0
.names 2067(213) 2675(261)
1 1
.names 2066(212) 384(262)
1 1
.names 2066(212) 337(263)
1 1
.names 2066(212) 411(264)
1 1
.names 1996(211) 1999(265)
1 0
.names 1996(211) 2505(266)
1 1
.names 1991(210) 1994(267)
1 0
.names 1991(210) 2508(268)
1 1
.names 1986(209) 1989(269)
1 0
.names 1986(209) 2495(270)
1 1
.names 1981(208) 1984(271)
1 0
.names 1981(208) 2498(272)
1 1
.names 1976(207) 1979(273)
1 0
.names 1976(207) 2487(274)
1 1
.names 1971(206) 1974(275)
1 0
.names 1971(206) 2490(276)
1 1
.names 1966(205) 1969(277)
1 0
.names 1966(205) 2479(278)
1 1
.names 1961(204) 1964(279)
1 0
.names 1961(204) 2482(280)
1 1
.names 1956(203) 1959(281)
1 0
.names 1956(203) 2471(282)
1 1
.names 1384(202) 1385(283)
1 0
.names 1348(201) 1351(284)
1 0
.names 1348(201) 2461(285)
1 1
.names 1341(200) 1344(286)
1 0
.names 1341(200) 2464(287)
1 1
.names 1083(199) 367(288)
1 1
.names 1083(199) 369(289)
1 1
.names 868(198) 875(290)
1 0
.names 860(197) 865(291)
1 0
.names 661(196) 480(292)
1 1
.names 651(195) 1284(293)
1 1
.names 651(195) 795(294)
1 1
.names 559(193) 560(295)
1 0
.names 543(192) 1261(296)
1 1
.names 543(192) 772(297)
1 1
.names 452(190) 409(298)
1 1
.names 452(190) 335(299)
1 1
.names 452(190) 654(300)
1 1
.names 452(190) 350(301)
1 1
.names 132(105) 219(302)
1 0
.names 120(95) 236(303)
1 0
.names 108(85) 238(304)
1 0
.names 96(75) 221(305)
1 0
.names 82(63) 220(306)
1 0
.names 69(52) 235(307)
1 0
.names 120(95) 57(42) 108(85) 69(52) 1254(308)
1111 1
.names 57(42) 237(309)
1 0
.names 132(105) 82(63) 96(75) 44(31) 1251(310)
1111 1
.names 44(31) 218(311)
1 0
.names 37(28) 37(28) 486(312)
11 1
.names 29(22) 2012(313)
1 1
.names 29(22) 2001(314)
1 1
.names 16(11) 1721(315)
1 1
.names 16(11) 1710(316)
1 1
.names 11(8) 868(198) 882(317)
11 1
.names 8(7) 658(318)
1 1
.names 8(7) 655(319)
1 1
.names 7(6) 661(196) 1955(320)
11 1
.names 2(1) 15(10) 661(196) 258(321)
111 1
.names 1(0) 3(2) 546(322)
11 1
.names 2675(261) 2682(233) 1776(323)
11 0
.names 2471(282) 2478(234) 1499(324)
11 0
.names 2454(230) 2457(236) 2459(325)
11 0
.names 2451(229) 2458(235) 2460(326)
11 0
.names 2446(228) 2449(238) 1493(327)
11 0
.names 2443(227) 2450(237) 1494(328)
11 0
.names 2438(226) 2441(240) 1484(329)
11 0
.names 2435(225) 2442(239) 1485(330)
11 0
.names 2430(224) 2433(242) 1475(331)
11 0
.names 2427(223) 2434(241) 1476(332)
11 0
.names 2106(222) 1955(320) 216(333)
11 1
.names 1655(243) 1667(334)
1 0
.names 1394(246) 1418(244) 1460(335)
11 1
.names 1418(244) 1430(336)
1 0
.names 1631(245) 1643(337)
1 0
.names 1394(246) 1406(338)
1 0
.names 2699(248) 2705(339)
1 0
.names 2702(250) 2706(340)
1 0
.names 2094(251) 2775(341)
1 1
.names 2691(252) 2697(342)
1 0
.names 2088(253) 2767(343)
1 1
.names 2694(254) 2698(344)
1 0
.names 2082(255) 2759(345)
1 1
.names 2683(256) 2689(346)
1 0
.names 2076(257) 2751(347)
1 1
.names 2686(258) 2690(348)
1 0
.names 157(259) 158(349)
1 0
.names 2070(260) 2743(350)
1 1
.names 2675(261) 2681(351)
1 0
.names 1999(265) 2735(352)
1 1
.names 2505(266) 2511(353)
1 0
.names 1994(267) 2623(354)
1 1
.names 2508(268) 2512(355)
1 0
.names 1989(269) 2615(356)
1 1
.names 2495(270) 2501(357)
1 0
.names 1984(271) 2607(358)
1 1
.names 2498(272) 2502(359)
1 0
.names 1979(273) 2599(360)
1 1
.names 2487(274) 2493(361)
1 0
.names 1974(275) 2591(362)
1 1
.names 2490(276) 2494(363)
1 0
.names 1969(277) 2583(364)
1 1
.names 2479(278) 2485(365)
1 0
.names 1964(279) 2575(366)
1 1
.names 2482(280) 2486(367)
1 0
.names 1959(281) 2567(368)
1 1
.names 2471(282) 2477(369)
1 0
.names 1351(284) 2559(370)
1 1
.names 2461(285) 2467(371)
1 0
.names 1344(286) 2551(372)
1 1
.names 2464(287) 2468(373)
1 0
.names 1284(293) 1296(374)
1 0
.names 795(294) 807(375)
1 0
.names 567(194) 1955(320) 234(376)
11 0
.names 1261(296) 1273(377)
1 0
.names 772(297) 784(378)
1 0
.names 654(300) 391(379)
1 1
.names 118(93) 1631(245) 1655(243) 1681(380)
111 1
.names 117(92) 1631(245) 1655(243) 1689(381)
111 1
.names 116(91) 1631(245) 1655(243) 1693(382)
111 1
.names 115(90) 1631(245) 1655(243) 1697(383)
111 1
.names 114(89) 1394(246) 1418(244) 1444(384)
111 1
.names 113(88) 1394(246) 1418(244) 1448(385)
111 1
.names 112(87) 1394(246) 1418(244) 1452(386)
111 1
.names 111(86) 1394(246) 1418(244) 1456(387)
111 1
.names 107(84) 1631(245) 1655(243) 1685(388)
111 1
.names 94(73) 654(300) 173(389)
11 1
.names 80(61) 772(297) 795(294) 821(390)
111 1
.names 79(60) 772(297) 795(294) 829(391)
111 1
.names 78(59) 772(297) 795(294) 833(392)
111 1
.names 77(58) 772(297) 795(294) 837(393)
111 1
.names 76(57) 1261(296) 1284(293) 1310(394)
111 1
.names 75(56) 1261(296) 1284(293) 1314(395)
111 1
.names 74(55) 1261(296) 1284(293) 1318(396)
111 1
.names 73(54) 1261(296) 1284(293) 1322(397)
111 1
.names 72(53) 1261(296) 1284(293) 1326(398)
111 1
.names 68(51) 772(297) 795(294) 825(399)
111 1
.names 1254(308) 1251(310) 558(400)
11 1
.names 1254(308) 1256(401)
1 0
.names 1251(310) 1253(402)
1 0
.names 486(312) 487(403)
1 0
.names 2012(313) 2018(404)
1 0
.names 2001(314) 2007(405)
1 0
.names 1721(315) 1728(406)
1 0
.names 1710(316) 1716(407)
1 0
.names 11(8) 875(290) 881(408)
11 1
.names 658(318) 1831(409)
1 1
.names 658(318) 1893(410)
1 1
.names 655(319) 748(411)
1 1
.names 655(319) 994(412)
1 1
.names 1955(320) 223(413)
1 0
.names 258(321) 259(414)
1 0
.names 546(322) 547(415)
1 0
.names 2678(232) 2681(351) 1775(416)
11 0
.names 2474(231) 2477(369) 1498(417)
11 0
.names 2459(325) 2460(326) 2518(418)
11 0
.names 1493(327) 1494(328) 1495(419)
11 0
.names 1484(329) 1485(330) 1486(420)
11 0
.names 1475(331) 1476(332) 1477(421)
11 0
.names 2106(222) 1253(402) 550(422)
11 1
.names 216(333) 217(423)
1 0
.names 1406(338) 1418(244) 1459(424)
11 1
.names 1406(338) 1430(336) 1457(425)
11 1
.names 1394(246) 1430(336) 1458(426)
11 1
.names 2699(248) 2706(340) 2708(427)
11 0
.names 2702(250) 2705(339) 2707(428)
11 0
.names 2775(341) 2781(429)
1 0
.names 2691(252) 2698(344) 1794(430)
11 0
.names 2767(343) 2773(431)
1 0
.names 2694(254) 2697(342) 1793(432)
11 0
.names 2759(345) 2765(433)
1 0
.names 2683(256) 2690(348) 1785(434)
11 0
.names 2751(347) 2757(435)
1 0
.names 2686(258) 2689(346) 1784(436)
11 0
.names 2743(350) 2749(437)
1 0
.names 2735(352) 2741(438)
1 0
.names 2505(266) 2512(355) 2514(439)
11 0
.names 2623(354) 2629(440)
1 0
.names 2508(268) 2511(353) 2513(441)
11 0
.names 2615(356) 2621(442)
1 0
.names 2495(270) 2502(359) 2504(443)
11 0
.names 2607(358) 2613(444)
1 0
.names 2498(272) 2501(357) 2503(445)
11 0
.names 2599(360) 2605(446)
1 0
.names 2487(274) 2494(363) 1517(447)
11 0
.names 2591(362) 2597(448)
1 0
.names 2490(276) 2493(361) 1516(449)
11 0
.names 2583(364) 2589(450)
1 0
.names 2479(278) 2486(367) 1508(451)
11 0
.names 2575(366) 2581(452)
1 0
.names 2482(280) 2485(365) 1507(453)
11 0
.names 2567(368) 2573(454)
1 0
.names 2559(370) 2565(455)
1 0
.names 2461(285) 2468(373) 2470(456)
11 0
.names 2551(372) 2557(457)
1 0
.names 2464(287) 2467(371) 2469(458)
11 0
.names 1273(377) 1284(293) 1317(459)
11 1
.names 567(194) 1256(401) 552(460)
11 1
.names 142(113) 1643(337) 1667(334) 1678(461)
111 1
.names 141(112) 1643(337) 1667(334) 1686(462)
111 1
.names 140(111) 1643(337) 1667(334) 1690(463)
111 1
.names 139(110) 1643(337) 1667(334) 1694(464)
111 1
.names 138(109) 1406(338) 1430(336) 1441(465)
111 1
.names 137(108) 1406(338) 1430(336) 1445(466)
111 1
.names 136(107) 1406(338) 1430(336) 1449(467)
111 1
.names 135(106) 1406(338) 1430(336) 1453(468)
111 1
.names 131(104) 1643(337) 1667(334) 1682(469)
111 1
.names 130(103) 1643(337) 1655(243) 1680(470)
111 1
.names 129(102) 1643(337) 1655(243) 1688(471)
111 1
.names 128(101) 1643(337) 1655(243) 1692(472)
111 1
.names 127(100) 1643(337) 1655(243) 1696(473)
111 1
.names 126(99) 1406(338) 1418(244) 1443(474)
111 1
.names 125(98) 1406(338) 1418(244) 1447(475)
111 1
.names 124(97) 1406(338) 1418(244) 1451(476)
111 1
.names 123(96) 1406(338) 1418(244) 1455(477)
111 1
.names 119(94) 1643(337) 1655(243) 1684(478)
111 1
.names 106(83) 1631(245) 1667(334) 1679(479)
111 1
.names 105(82) 1631(245) 1667(334) 1687(480)
111 1
.names 104(81) 1631(245) 1667(334) 1691(481)
111 1
.names 103(80) 1631(245) 1667(334) 1695(482)
111 1
.names 102(79) 1394(246) 1430(336) 1442(483)
111 1
.names 101(78) 1394(246) 1430(336) 1446(484)
111 1
.names 100(77) 1394(246) 1430(336) 1450(485)
111 1
.names 99(76) 1394(246) 1430(336) 1454(486)
111 1
.names 95(74) 1631(245) 1667(334) 1683(487)
111 1
.names 93(72) 784(378) 807(375) 818(488)
111 1
.names 92(71) 784(378) 807(375) 826(489)
111 1
.names 91(70) 784(378) 807(375) 830(490)
111 1
.names 90(69) 784(378) 807(375) 834(491)
111 1
.names 89(68) 1273(377) 1296(374) 1307(492)
111 1
.names 88(67) 1273(377) 1296(374) 1311(493)
111 1
.names 87(66) 1273(377) 1296(374) 1315(494)
111 1
.names 86(65) 1273(377) 1296(374) 1319(495)
111 1
.names 85(64) 1273(377) 1296(374) 1323(496)
111 1
.names 81(62) 784(378) 807(375) 822(497)
111 1
.names 67(50) 784(378) 795(294) 820(498)
111 1
.names 66(49) 784(378) 795(294) 828(499)
111 1
.names 65(48) 784(378) 795(294) 832(500)
111 1
.names 64(47) 784(378) 795(294) 836(501)
111 1
.names 63(46) 1273(377) 1284(293) 1309(502)
111 1
.names 62(45) 1273(377) 1284(293) 1313(503)
111 1
.names 61(44) 1273(377) 1284(293) 1321(504)
111 1
.names 60(43) 1273(377) 1284(293) 1325(505)
111 1
.names 558(400) 261(506)
1 0
.names 558(400) 325(507)
1 1
.names 56(41) 784(378) 795(294) 824(508)
111 1
.names 55(40) 772(297) 807(375) 819(509)
111 1
.names 54(39) 772(297) 807(375) 827(510)
111 1
.names 53(38) 772(297) 807(375) 831(511)
111 1
.names 52(37) 772(297) 807(375) 835(512)
111 1
.names 51(36) 1261(296) 1296(374) 1308(513)
111 1
.names 50(35) 1261(296) 1296(374) 1312(514)
111 1
.names 49(34) 1261(296) 1296(374) 1316(515)
111 1
.names 48(33) 1261(296) 1296(374) 1320(516)
111 1
.names 47(32) 1261(296) 1296(374) 1324(517)
111 1
.names 43(30) 772(297) 807(375) 823(518)
111 1
.names 35(26) 2018(404) 2035(519)
11 1
.names 34(25) 2018(404) 2033(520)
11 1
.names 33(24) 2007(405) 2029(521)
11 1
.names 32(23) 2007(405) 2025(522)
11 1
.names 28(21) 2018(404) 2037(523)
11 1
.names 27(20) 2018(404) 2031(524)
11 1
.names 26(19) 2007(405) 2027(525)
11 1
.names 25(18) 2007(405) 2023(526)
11 1
.names 24(17) 1728(406) 1750(527)
11 1
.names 23(16) 1728(406) 1746(528)
11 1
.names 22(15) 1728(406) 1744(529)
11 1
.names 21(14) 1728(406) 1742(530)
11 1
.names 20(13) 1716(407) 1738(531)
11 1
.names 19(12) 1716(407) 1734(532)
11 1
.names 881(408) 882(317) 894(533)
00 0
.names 6(5) 1728(406) 1748(534)
11 1
.names 5(4) 1716(407) 1740(535)
11 1
.names 4(3) 1716(407) 1736(536)
11 1
.names 1775(416) 1776(323) 1777(537)
11 0
.names 1498(417) 1499(324) 1500(538)
11 0
.names 2518(418) 2522(539)
1 0
.names 1495(419) 1525(540)
1 1
.names 1495(419) 1521(541)
1 1
.names 1486(420) 1490(542)
1 0
.names 1477(421) 1481(543)
1 0
.names 550(422) 551(544)
1 0
.names 1457(425) 1458(426) 1459(424) 1460(335) 1473(545)
0000 0
.names 2707(428) 2708(427) 2730(546)
11 0
.names 1793(432) 1794(430) 1795(547)
11 0
.names 1784(436) 1785(434) 1786(548)
11 0
.names 2513(441) 2514(439) 2525(549)
11 0
.names 2503(445) 2504(443) 2528(550)
11 0
.names 1516(449) 1517(447) 1518(551)
11 0
.names 1507(453) 1508(451) 1509(552)
11 0
.names 2469(458) 2470(456) 2515(553)
11 0
.names 552(460) 553(554)
1 0
.names 1678(461) 1679(479) 1680(470) 1681(380) 2634(555)
0000 0
.names 1686(462) 1687(480) 1688(471) 1689(381) 1701(556)
0000 0
.names 1690(463) 1691(481) 1692(472) 1693(382) 1704(557)
0000 0
.names 1694(464) 1695(482) 1696(473) 1697(383) 1707(558)
0000 0
.names 1441(465) 1442(483) 1443(474) 1444(384) 1461(559)
0000 0
.names 1445(466) 1446(484) 1447(475) 1448(385) 1464(560)
0000 0
.names 1449(467) 1450(485) 1451(476) 1452(386) 1467(561)
0000 0
.names 1453(468) 1454(486) 1455(477) 1456(387) 1470(562)
0000 0
.names 1682(469) 1683(487) 1684(478) 1685(388) 1698(563)
0000 0
.names 818(488) 819(509) 820(498) 821(390) 838(564)
0000 0
.names 826(489) 827(510) 828(499) 829(391) 846(565)
0000 0
.names 830(490) 831(511) 832(500) 833(392) 854(566)
0000 0
.names 834(491) 835(512) 836(501) 837(393) 857(567)
0000 0
.names 1307(492) 1308(513) 1309(502) 1310(394) 1327(568)
0000 0
.names 1311(493) 1312(514) 1313(503) 1314(395) 1329(569)
0000 0
.names 1315(494) 1316(515) 1317(459) 1318(396) 1331(570)
0000 0
.names 1319(495) 1320(516) 1321(504) 1322(397) 1333(571)
0000 0
.names 1323(496) 1324(517) 1325(505) 1326(398) 1335(572)
0000 0
.names 822(497) 823(518) 824(508) 825(399) 841(573)
0000 0
.names 1777(537) 1781(574)
1 0
.names 1500(538) 1504(575)
1 0
.names 2515(553) 2522(539) 2524(576)
11 0
.names 1490(542) 1481(543) 1525(540) 1541(577)
111 1
.names 1525(540) 1528(578)
1 0
.names 1521(541) 1524(579)
1 0
.names 1486(420) 1477(421) 1521(541) 1538(580)
111 1
.names 551(544) 553(554) 554(581)
11 1
.names 1473(545) 2665(582)
1 1
.names 2103(247) 1473(545) 1218(583)
11 0
.names 2730(546) 2734(584)
1 0
.names 2099(249) 1470(562) 1213(585)
11 0
.names 1795(547) 1810(586)
1 1
.names 1795(547) 1806(587)
1 1
.names 1786(548) 1790(588)
1 0
.names 2525(549) 2531(589)
1 0
.names 2528(550) 2532(590)
1 0
.names 1518(551) 1533(591)
1 1
.names 1518(551) 1529(592)
1 1
.names 1509(552) 1513(593)
1 0
.names 1461(559) 1385(283) 1387(594)
11 1
.names 2515(553) 2521(595)
1 0
.names 841(573) 875(290) 885(596)
11 1
.names 846(565) 875(290) 887(597)
11 1
.names 1327(568) 868(198) 893(598)
11 1
.names 841(573) 860(197) 152(599)
11 1
.names 846(565) 860(197) 147(600)
11 1
.names 838(564) 860(197) 144(601)
11 1
.names 2634(555) 2638(602)
1 0
.names 1701(556) 2642(603)
1 1
.names 1704(557) 1250(604)
1 1
.names 1704(557) 2639(605)
1 1
.names 1707(558) 2650(606)
1 1
.names 1461(559) 164(607)
1 0
.names 1461(559) 2647(608)
1 1
.names 1464(560) 160(609)
1 0
.names 1464(560) 1389(610)
1 0
.names 1464(560) 2658(611)
1 1
.names 1467(561) 162(612)
1 0
.names 1467(561) 2655(613)
1 1
.names 1470(562) 2668(614)
1 1
.names 1698(563) 2631(615)
1 1
.names 838(564) 516(616)
1 1
.names 838(564) 1028(617)
1 0
.names 846(565) 1035(618)
1 0
.names 846(565) 852(619)
1 0
.names 854(566) 1041(620)
1 1
.names 857(567) 171(621)
1 0
.names 857(567) 1049(622)
1 1
.names 1327(568) 168(623)
1 0
.names 1327(568) 1057(624)
1 1
.names 1329(569) 166(625)
1 0
.names 1329(569) 1060(626)
1 1
.names 1331(570) 1066(627)
1 1
.names 1333(571) 1072(628)
1 1
.names 1335(572) 1078(629)
1 1
.names 841(573) 1031(630)
1 0
.names 841(573) 2154(631)
1 1
.names 1467(561) 2012(313) 2036(632)
11 1
.names 1464(560) 2012(313) 2034(633)
11 1
.names 1461(559) 2012(313) 2032(634)
11 1
.names 1470(562) 2012(313) 2038(635)
11 1
.names 1698(563) 2001(314) 2024(636)
11 1
.names 1707(558) 2001(314) 2030(637)
11 1
.names 1704(557) 2001(314) 2028(638)
11 1
.names 1701(556) 2001(314) 2026(639)
11 1
.names 1331(570) 1721(315) 1747(640)
11 1
.names 1329(569) 1721(315) 1745(641)
11 1
.names 1327(568) 1721(315) 1743(642)
11 1
.names 1335(572) 1721(315) 1751(643)
11 1
.names 1333(571) 1721(315) 1749(644)
11 1
.names 841(573) 1710(316) 1735(645)
11 1
.names 857(567) 1710(316) 1741(646)
11 1
.names 854(566) 1710(316) 1739(647)
11 1
.names 846(565) 1710(316) 1737(648)
11 1
.names 1786(548) 1777(537) 1806(587) 1821(649)
111 1
.names 1790(588) 1781(574) 1810(586) 1824(650)
111 1
.names 1509(552) 1500(538) 1529(592) 1544(651)
111 1
.names 1513(593) 1504(575) 1533(591) 1547(652)
111 1
.names 2518(418) 2521(595) 2523(653)
11 0
.names 1481(543) 1486(420) 1524(579) 1537(654)
111 1
.names 1477(421) 1490(542) 1528(578) 1540(655)
111 1
.names 554(581) 319(656)
1 1
.names 1218(583) 1473(545) 1234(657)
11 1
.names 2665(582) 2671(658)
1 0
.names 2103(247) 1218(583) 1232(659)
11 1
.names 2099(249) 1213(585) 1225(660)
11 1
.names 1810(586) 1813(661)
1 0
.names 1806(587) 1809(662)
1 0
.names 2525(549) 2532(590) 2534(663)
11 0
.names 2528(550) 2531(589) 2533(664)
11 0
.names 1533(591) 1536(665)
1 0
.names 1529(592) 1532(666)
1 0
.names 1387(594) 466(667)
1 0
.names 516(616) 875(290) 883(668)
11 1
.names 1041(620) 875(290) 891(669)
11 1
.names 1049(622) 868(198) 889(670)
11 1
.names 865(291) 152(599) 153(671)
00 0
.names 560(295) 852(619) 562(672)
11 0
.names 480(292) 483(191) 554(581) 547(415) 187(673)
1111 1
.names 2631(615) 2638(602) 1753(674)
11 0
.names 2642(603) 2646(675)
1 0
.names 2639(605) 2645(676)
1 0
.names 2650(606) 2654(677)
1 0
.names 2647(608) 2653(678)
1 0
.names 2658(611) 2662(679)
1 0
.names 2655(613) 2661(680)
1 0
.names 1213(585) 1470(562) 1227(681)
11 1
.names 2668(614) 2672(682)
1 0
.names 2631(615) 2637(683)
1 0
.names 516(616) 2235(684)
1 1
.names 1028(617) 2110(685)
1 1
.names 1028(617) 2164(686)
1 1
.names 1035(618) 2350(687)
1 1
.names 1035(618) 2118(688)
1 1
.names 1035(618) 2262(689)
1 1
.names 1035(618) 2172(690)
1 1
.names 852(619) 2151(691)
1 0
.names 1041(620) 299(692)
1 1
.names 1041(620) 1043(693)
1 0
.names 1049(622) 301(694)
1 1
.names 1049(622) 1051(695)
1 0
.names 1057(624) 286(696)
1 1
.names 1057(624) 2123(697)
1 0
.names 1060(626) 303(698)
1 1
.names 1060(626) 1062(699)
1 0
.names 1066(627) 288(700)
1 1
.names 1066(627) 1068(701)
1 0
.names 1072(628) 305(702)
1 1
.names 1072(628) 1074(703)
1 0
.names 1078(629) 290(704)
1 1
.names 1078(629) 1080(705)
1 0
.names 1031(630) 2107(706)
1 1
.names 1031(630) 2161(707)
1 1
.names 2154(631) 2158(708)
1 0
.names 1389(610) 1387(594) 40(29) 456(709)
111 1
.names 480(292) 483(191) 36(27) 554(581) 175(710)
1111 1
.names 2035(519) 2036(632) 2778(711)
00 0
.names 2033(520) 2034(633) 2770(712)
00 0
.names 2029(521) 2030(637) 2754(713)
00 0
.names 2025(522) 2026(639) 2738(714)
00 0
.names 2037(523) 2038(635) 2065(715)
00 0
.names 2031(524) 2032(634) 2762(716)
00 0
.names 2027(525) 2028(638) 2746(717)
00 0
.names 2023(526) 2024(636) 2626(718)
00 0
.names 1750(527) 1751(643) 2618(719)
00 0
.names 1746(528) 1747(640) 2602(720)
00 0
.names 1744(529) 1745(641) 2594(721)
00 0
.names 1742(530) 1743(642) 2586(722)
00 0
.names 1738(531) 1739(647) 2570(723)
00 0
.names 1734(532) 1735(645) 2554(724)
00 0
.names 1748(534) 1749(644) 2610(725)
00 0
.names 1740(535) 1741(646) 2578(726)
00 0
.names 1736(536) 1737(648) 2562(727)
00 0
.names 1777(537) 1790(588) 1813(661) 1823(728)
111 1
.names 1500(538) 1513(593) 1536(665) 1546(729)
111 1
.names 2523(653) 2524(576) 2538(730)
11 0
.names 1540(655) 1541(577) 1542(731)
00 1
.names 1537(654) 1538(580) 1539(732)
00 1
.names 1232(659) 1234(657) 1235(733)
00 0
.names 2665(582) 2672(682) 2674(734)
11 0
.names 1225(660) 1227(681) 1228(735)
00 0
.names 2778(711) 2781(429) 2059(736)
11 0
.names 2770(712) 2773(431) 2055(737)
11 0
.names 2762(716) 2765(433) 2051(738)
11 0
.names 1781(574) 1786(548) 1809(662) 1820(739)
111 1
.names 2754(713) 2757(435) 2047(740)
11 0
.names 2746(717) 2749(437) 2043(741)
11 0
.names 2738(714) 2741(438) 2039(742)
11 0
.names 2533(664) 2534(663) 2546(743)
11 0
.names 2626(718) 2629(440) 1597(744)
11 0
.names 2618(719) 2621(442) 1593(745)
11 0
.names 2610(725) 2613(444) 1589(746)
11 0
.names 2602(720) 2605(446) 1585(747)
11 0
.names 2594(721) 2597(448) 1581(748)
11 0
.names 2586(722) 2589(450) 1577(749)
11 0
.names 1504(575) 1509(552) 1532(666) 1543(750)
111 1
.names 2578(726) 2581(452) 1573(751)
11 0
.names 2570(723) 2573(454) 1569(752)
11 0
.names 2562(727) 2565(455) 1565(753)
11 0
.names 2554(724) 2557(457) 1561(754)
11 0
.names 887(597) 889(670) 897(755)
00 0
.names 891(669) 893(598) 898(756)
00 0
.names 562(672) 868(198) 886(757)
11 1
.names 562(672) 865(291) 146(758)
11 1
.names 562(672) 2207(759)
1 0
.names 562(672) 592(760)
1 1
.names 187(673) 188(761)
1 0
.names 2634(555) 2637(683) 1752(762)
11 0
.names 2642(603) 2645(676) 1761(763)
11 0
.names 2639(605) 2646(675) 1762(764)
11 0
.names 2650(606) 2653(678) 1770(765)
11 0
.names 2647(608) 2654(677) 1771(766)
11 0
.names 2658(611) 2661(680) 2663(767)
11 0
.names 2655(613) 2662(679) 2664(768)
11 0
.names 2668(614) 2671(658) 2673(769)
11 0
.names 2235(684) 2241(770)
1 0
.names 2110(685) 2114(771)
1 0
.names 2164(686) 2168(772)
1 0
.names 2350(687) 2354(773)
1 0
.names 2118(688) 2122(774)
1 0
.names 2262(689) 2266(775)
1 0
.names 2172(690) 2176(776)
1 0
.names 2151(691) 2157(777)
1 0
.names 2151(691) 2158(708) 2160(778)
11 0
.names 1043(693) 2342(779)
1 1
.names 1043(693) 2115(780)
1 1
.names 1043(693) 2254(781)
1 1
.names 1043(693) 2169(782)
1 1
.names 1051(695) 2422(783)
1 1
.names 1051(695) 2334(784)
1 1
.names 1051(695) 2126(785)
1 1
.names 2123(697) 2129(786)
1 0
.names 1062(699) 2134(787)
1 1
.names 1062(699) 2180(788)
1 1
.names 1068(701) 2131(789)
1 1
.names 1068(701) 2177(790)
1 1
.names 1074(703) 2144(791)
1 1
.names 1074(703) 2190(792)
1 1
.names 1080(705) 2141(793)
1 1
.names 1080(705) 2187(794)
1 1
.names 2107(706) 2113(795)
1 0
.names 2161(707) 2167(796)
1 0
.names 40(29) 1389(610) 466(667) 468(797)
111 1
.names 456(709) 995(798)
1 1
.names 456(709) 1006(799)
1 0
.names 456(709) 743(800)
1 0
.names 456(709) 749(801)
1 1
.names 456(709) 462(802)
1 0
.names 175(710) 176(803)
1 0
.names 2778(711) 2782(804)
1 0
.names 2770(712) 2774(805)
1 0
.names 2754(713) 2758(806)
1 0
.names 2738(714) 2742(807)
1 0
.names 2762(716) 2766(808)
1 0
.names 2746(717) 2750(809)
1 0
.names 2626(718) 2630(810)
1 0
.names 2618(719) 2622(811)
1 0
.names 2602(720) 2606(812)
1 0
.names 2594(721) 2598(813)
1 0
.names 2586(722) 2590(814)
1 0
.names 2570(723) 2574(815)
1 0
.names 2554(724) 2558(816)
1 0
.names 2610(725) 2614(817)
1 0
.names 2578(726) 2582(818)
1 0
.names 2562(727) 2566(819)
1 0
.names 1820(739) 1821(649) 1822(820)
00 1
.names 1823(728) 1824(650) 1825(821)
00 1
.names 1543(750) 1544(651) 1545(822)
00 1
.names 1546(729) 1547(652) 1548(823)
00 1
.names 2538(730) 2542(824)
1 0
.names 1542(731) 1539(732) 2535(825)
11 0
.names 1235(733) 1245(826)
1 0
.names 2673(769) 2674(734) 2709(827)
11 0
.names 1228(735) 1243(828)
1 0
.names 2775(341) 2782(804) 2060(829)
11 0
.names 2767(343) 2774(805) 2056(830)
11 0
.names 2759(345) 2766(808) 2052(831)
11 0
.names 2751(347) 2758(806) 2048(832)
11 0
.names 2743(350) 2750(809) 2044(833)
11 0
.names 2735(352) 2742(807) 2040(834)
11 0
.names 2546(743) 2550(835)
1 0
.names 2623(354) 2630(810) 1598(836)
11 0
.names 2615(356) 2622(811) 1594(837)
11 0
.names 2607(358) 2614(817) 1590(838)
11 0
.names 2599(360) 2606(812) 1586(839)
11 0
.names 2591(362) 2598(813) 1582(840)
11 0
.names 2583(364) 2590(814) 1578(841)
11 0
.names 2575(366) 2582(818) 1574(842)
11 0
.names 2567(368) 2574(815) 1570(843)
11 0
.names 2559(370) 2566(819) 1566(844)
11 0
.names 2551(372) 2558(816) 1562(845)
11 0
.names 885(596) 886(757) 896(846)
00 0
.names 897(755) 284(847)
1 1
.names 897(755) 321(848)
1 1
.names 898(756) 297(849)
1 1
.names 898(756) 280(850)
1 1
.names 146(758) 147(600) 148(851)
00 0
.names 2207(759) 2213(852)
1 0
.names 592(760) 596(853)
1 0
.names 1752(762) 1753(674) 1754(854)
11 0
.names 1701(556) 743(800) 502(855)
11 1
.names 1701(556) 1006(799) 729(856)
11 1
.names 1761(763) 1762(764) 1763(857)
11 0
.names 1250(604) 743(800) 508(858)
11 1
.names 1250(604) 1006(799) 735(859)
11 1
.names 1770(765) 1771(766) 1772(860)
11 0
.names 2663(767) 2664(768) 2712(861)
11 0
.names 1698(563) 743(800) 496(862)
11 1
.names 1698(563) 1006(799) 723(863)
11 1
.names 2110(685) 2113(795) 569(864)
11 0
.names 2164(686) 2167(796) 599(865)
11 0
.names 2115(780) 2122(774) 579(866)
11 0
.names 2169(782) 2176(776) 609(867)
11 0
.names 2342(779) 2346(868)
1 0
.names 2115(780) 2121(869)
1 0
.names 2254(781) 2258(870)
1 0
.names 2169(782) 2175(871)
1 0
.names 2422(783) 2426(872)
1 0
.names 2334(784) 2338(873)
1 0
.names 2126(785) 2129(786) 587(874)
11 0
.names 2126(785) 2130(875)
1 0
.names 1057(624) 749(801) 765(876)
11 1
.names 1057(624) 995(798) 1014(877)
11 1
.names 1060(626) 749(801) 769(878)
11 1
.names 1060(626) 995(798) 1018(879)
11 1
.names 2134(787) 2138(880)
1 0
.names 2180(788) 2184(881)
1 0
.names 2131(789) 2137(882)
1 0
.names 2177(790) 2183(883)
1 0
.names 2144(791) 2148(884)
1 0
.names 2190(792) 2194(885)
1 0
.names 1078(629) 743(800) 490(886)
11 1
.names 1078(629) 1006(799) 717(887)
11 1
.names 2141(793) 2147(888)
1 0
.names 2187(794) 2193(889)
1 0
.names 2107(706) 2114(771) 570(890)
11 0
.names 2161(707) 2168(772) 600(891)
11 0
.names 2154(631) 2157(777) 2159(892)
11 0
.names 468(797) 1257(893)
1 1
.names 468(797) 1258(894)
1 1
.names 995(798) 999(895)
1 0
.names 749(801) 753(896)
1 0
.names 462(802) 475(897)
1 1
.names 462(802) 1337(898)
1 1
.names 1825(821) 1822(820) 2727(899)
11 0
.names 1548(823) 1545(822) 2543(900)
11 0
.names 2535(825) 2542(824) 1550(901)
11 0
.names 2535(825) 2541(902)
1 0
.names 1235(733) 1245(826) 1094(903)
11 1
.names 2709(827) 2715(904)
1 0
.names 1228(735) 1243(828) 1096(905)
11 1
.names 2059(736) 2060(829) 2061(906)
11 0
.names 2055(737) 2056(830) 2057(907)
11 0
.names 2051(738) 2052(831) 2053(908)
11 0
.names 2047(740) 2048(832) 2049(909)
11 0
.names 2043(741) 2044(833) 2045(910)
11 0
.names 2039(742) 2040(834) 2041(911)
11 0
.names 1597(744) 1598(836) 1599(912)
11 0
.names 1593(745) 1594(837) 1595(913)
11 0
.names 1589(746) 1590(838) 1591(914)
11 0
.names 1585(747) 1586(839) 1587(915)
11 0
.names 1581(748) 1582(840) 1583(916)
11 0
.names 1577(749) 1578(841) 1579(917)
11 0
.names 1573(751) 1574(842) 1575(918)
11 0
.names 1569(752) 1570(843) 1571(919)
11 0
.names 1565(753) 1566(844) 1567(920)
11 0
.names 1561(754) 1562(845) 1563(921)
11 0
.names 896(846) 282(922)
1 1
.names 896(846) 323(923)
1 1
.names 1754(854) 1758(924)
1 0
.names 1763(857) 1767(925)
1 0
.names 1772(860) 1802(926)
1 1
.names 1772(860) 1798(927)
1 1
.names 2712(861) 2716(928)
1 0
.names 569(864) 570(890) 571(929)
11 0
.names 599(865) 600(891) 601(930)
11 0
.names 2118(688) 2121(869) 578(931)
11 0
.names 2172(690) 2175(871) 608(932)
11 0
.names 2159(892) 2160(778) 2210(933)
11 0
.names 1057(624) 753(896) 763(934)
11 1
.names 1057(624) 999(895) 1012(935)
11 1
.names 2123(697) 2130(875) 588(936)
11 0
.names 1060(626) 753(896) 767(937)
11 1
.names 1060(626) 999(895) 1016(938)
11 1
.names 2134(787) 2137(882) 2139(939)
11 0
.names 2180(788) 2183(883) 2185(940)
11 0
.names 1066(627) 753(896) 531(941)
11 1
.names 1066(627) 999(895) 705(942)
11 1
.names 2131(789) 2138(880) 2140(943)
11 0
.names 2177(790) 2184(881) 2186(944)
11 0
.names 1072(628) 753(896) 537(945)
11 1
.names 1072(628) 999(895) 711(946)
11 1
.names 2144(791) 2147(888) 2149(947)
11 0
.names 2190(792) 2193(889) 2195(948)
11 0
.names 2141(793) 2148(884) 2150(949)
11 0
.names 2187(794) 2194(885) 2196(950)
11 0
.names 1257(893) 742(951)
1 1
.names 1257(893) 1005(952)
1 1
.names 1258(894) 1845(953)
1 1
.names 1258(894) 1907(954)
1 1
.names 475(897) 1836(955)
1 1
.names 475(897) 1850(956)
1 1
.names 475(897) 1355(957)
1 1
.names 1337(898) 1898(958)
1 1
.names 1337(898) 1912(959)
1 1
.names 1337(898) 1601(960)
1 1
.names 2727(899) 2733(961)
1 0
.names 2543(900) 2549(962)
1 0
.names 2538(730) 2541(902) 1549(963)
11 0
.names 1094(903) 1245(826) 154(964)
00 0
.names 2709(827) 2716(928) 2718(965)
11 0
.names 2727(899) 2734(584) 1829(966)
11 0
.names 1096(905) 1243(828) 155(967)
00 0
.names 2061(906) 2062(968)
1 0
.names 2057(907) 2058(969)
1 0
.names 2053(908) 2054(970)
1 0
.names 2049(909) 2050(971)
1 0
.names 2070(260) 1850(956) 1876(972)
11 1
.names 2070(260) 1912(959) 1938(973)
11 1
.names 2045(910) 2046(974)
1 0
.names 1999(265) 1850(956) 1874(975)
11 1
.names 1999(265) 1912(959) 1936(976)
11 1
.names 2041(911) 2042(977)
1 0
.names 2543(900) 2550(835) 1552(978)
11 0
.names 1994(267) 1850(956) 1872(979)
11 1
.names 1994(267) 1912(959) 1934(980)
11 1
.names 1599(912) 1600(981)
1 0
.names 1989(269) 1850(956) 1870(982)
11 1
.names 1989(269) 1912(959) 1932(983)
11 1
.names 1595(913) 1596(984)
1 0
.names 1984(271) 1836(955) 1868(985)
11 1
.names 1984(271) 1898(958) 1930(986)
11 1
.names 1591(914) 1592(987)
1 0
.names 1979(273) 1836(955) 1866(988)
11 1
.names 1979(273) 1898(958) 1928(989)
11 1
.names 1587(915) 1588(990)
1 0
.names 1974(275) 1836(955) 1863(991)
11 1
.names 1974(275) 1898(958) 1925(992)
11 1
.names 1583(916) 1584(993)
1 0
.names 1969(277) 1836(955) 1858(994)
11 1
.names 1969(277) 1898(958) 1920(995)
11 1
.names 1579(917) 1580(996)
1 0
.names 1964(279) 1355(957) 1377(997)
11 1
.names 1964(279) 1601(960) 1623(998)
11 1
.names 1575(918) 1576(999)
1 0
.names 1959(281) 1355(957) 1373(1000)
11 1
.names 1959(281) 1601(960) 1619(1001)
11 1
.names 1571(919) 1572(1002)
1 0
.names 1351(284) 1601(960) 1615(1003)
11 1
.names 1351(284) 1355(957) 1369(1004)
11 1
.names 1567(920) 1568(1005)
1 0
.names 1344(286) 1355(957) 676(1006)
11 1
.names 1344(286) 1601(960) 1108(1007)
11 1
.names 1563(921) 1564(1008)
1 0
.names 2210(933) 2213(852) 2215(1009)
11 0
.names 1763(857) 1754(854) 1798(927) 1815(1010)
111 1
.names 1767(925) 1758(924) 1802(926) 1818(1011)
111 1
.names 502(855) 742(951) 504(1012)
11 1
.names 729(856) 1005(952) 731(1013)
11 1
.names 508(858) 742(951) 510(1014)
11 1
.names 735(859) 1005(952) 737(1015)
11 1
.names 1802(926) 1805(1016)
1 0
.names 1798(927) 1801(1017)
1 0
.names 2712(861) 2715(904) 2717(1018)
11 0
.names 496(862) 742(951) 498(1019)
11 1
.names 723(863) 1005(952) 725(1020)
11 1
.names 571(929) 575(1021)
1 0
.names 601(930) 605(1022)
1 0
.names 578(931) 579(866) 580(1023)
11 0
.names 608(932) 609(867) 610(1024)
11 0
.names 2210(933) 2214(1025)
1 0
.names 587(874) 588(936) 589(1026)
11 0
.names 763(934) 765(876) 519(1027)
00 0
.names 1012(935) 1014(877) 693(1028)
00 0
.names 767(937) 769(878) 525(1029)
00 0
.names 1016(938) 1018(879) 699(1030)
00 0
.names 2139(939) 2140(943) 2200(1031)
11 0
.names 2185(940) 2186(944) 2220(1032)
11 0
.names 2149(947) 2150(949) 2197(1033)
11 0
.names 2195(948) 2196(950) 2217(1034)
11 0
.names 490(886) 742(951) 492(1035)
11 1
.names 717(887) 1005(952) 719(1036)
11 1
.names 1836(955) 1842(1037)
1 0
.names 1355(957) 1361(1038)
1 0
.names 1898(958) 1904(1039)
1 0
.names 1601(960) 1607(1040)
1 0
.names 531(941) 748(411) 533(1041)
11 1
.names 537(945) 748(411) 539(1042)
11 1
.names 705(942) 994(412) 707(1043)
11 1
.names 711(946) 994(412) 713(1044)
11 1
.names 1549(963) 1550(901) 1091(1045)
11 0
.names 154(964) 155(967) 156(1046)
11 0
.names 2717(1018) 2718(965) 2722(1047)
11 0
.names 2730(546) 2733(961) 1828(1048)
11 0
.names 2094(251) 1842(1037) 1861(1049)
11 1
.names 2094(251) 1904(1039) 1923(1050)
11 1
.names 2088(253) 1842(1037) 1856(1051)
11 1
.names 2088(253) 1904(1039) 1918(1052)
11 1
.names 2058(969) 2054(970) 2050(971) 2046(974) 2042(977) 1558(1053)
11111 1
.names 2082(255) 1361(1038) 1375(1054)
11 1
.names 2082(255) 1607(1040) 1621(1055)
11 1
.names 2076(257) 1361(1038) 1371(1056)
11 1
.names 2076(257) 1607(1040) 1617(1057)
11 1
.names 2070(260) 1361(1038) 1368(1058)
11 1
.names 2070(260) 1607(1040) 1614(1059)
11 1
.names 1999(265) 1361(1038) 675(1060)
11 1
.names 1999(265) 1607(1040) 1107(1061)
11 1
.names 2546(743) 2549(962) 1551(1062)
11 0
.names 1600(981) 1596(984) 1592(987) 1588(990) 1584(993) 1554(1063)
11111 1
.names 1580(996) 1576(999) 1572(1002) 1568(1005) 1564(1008) 1555(1064)
11111 1
.names 2207(759) 2214(1025) 2216(1065)
11 0
.names 1754(854) 1767(925) 1805(1016) 1817(1066)
111 1
.names 504(1012) 505(1067)
1 0
.names 731(1013) 732(1068)
1 0
.names 1758(924) 1763(857) 1801(1017) 1814(1069)
111 1
.names 510(1014) 511(1070)
1 0
.names 737(1015) 738(1071)
1 0
.names 498(1019) 499(1072)
1 0
.names 725(1020) 726(1073)
1 0
.names 580(1023) 584(1074)
1 0
.names 610(1024) 621(1075)
1 1
.names 610(1024) 625(1076)
1 1
.names 589(1026) 617(1077)
1 1
.names 589(1026) 613(1078)
1 1
.names 2200(1031) 2204(1079)
1 0
.names 2220(1032) 2224(1080)
1 0
.names 2197(1033) 2203(1081)
1 0
.names 2217(1034) 2223(1082)
1 0
.names 492(1035) 493(1083)
1 0
.names 719(1036) 720(1084)
1 0
.names 1874(975) 1845(953) 1889(1085)
11 1
.names 1872(979) 1845(953) 1887(1086)
11 1
.names 1870(982) 1845(953) 1885(1087)
11 1
.names 1876(972) 1845(953) 1891(1088)
11 1
.names 1936(976) 1907(954) 1951(1089)
11 1
.names 1934(980) 1907(954) 1949(1090)
11 1
.names 1932(983) 1907(954) 1947(1091)
11 1
.names 1938(973) 1907(954) 1953(1092)
11 1
.names 2065(715) 2062(968) 1557(1093)
11 1
.names 1868(985) 1831(409) 1883(1094)
11 1
.names 1866(988) 1831(409) 1881(1095)
11 1
.names 1930(986) 1893(410) 1945(1096)
11 1
.names 1928(989) 1893(410) 1943(1097)
11 1
.names 519(1027) 748(411) 521(1098)
11 1
.names 525(1029) 748(411) 527(1099)
11 1
.names 533(1041) 534(1100)
1 0
.names 539(1042) 540(1101)
1 0
.names 693(1028) 994(412) 695(1102)
11 1
.names 699(1030) 994(412) 701(1103)
11 1
.names 707(1043) 708(1104)
1 0
.names 713(1044) 714(1105)
1 0
.names 1091(1045) 1092(1106)
1 0
.names 2722(1047) 2726(1107)
1 0
.names 1828(1048) 1829(966) 1830(1108)
11 0
.names 1557(1093) 1558(1053) 1559(1109)
11 1
.names 1551(1062) 1552(978) 1553(1110)
11 0
.names 1554(1063) 1555(1064) 1556(1111)
11 1
.names 1861(1049) 1863(991) 1864(1112)
00 0
.names 1923(1050) 1925(992) 1926(1113)
00 0
.names 1856(1051) 1858(994) 1859(1114)
00 0
.names 1918(1052) 1920(995) 1921(1115)
00 0
.names 1375(1054) 1377(997) 1382(1116)
00 0
.names 1621(1055) 1623(998) 1628(1117)
00 0
.names 1371(1056) 1373(1000) 1380(1118)
00 0
.names 1617(1057) 1619(1001) 1626(1119)
00 0
.names 1614(1059) 1615(1003) 1624(1120)
00 0
.names 1368(1058) 1369(1004) 1378(1121)
00 0
.names 675(1060) 676(1006) 677(1122)
00 0
.names 1107(1061) 1108(1007) 1109(1123)
00 0
.names 2215(1009) 2216(1065) 2238(1124)
11 0
.names 601(930) 592(760) 621(1075) 636(1125)
111 1
.names 605(1022) 596(853) 625(1076) 639(1126)
111 1
.names 1814(1069) 1815(1010) 1816(1127)
00 1
.names 1817(1066) 1818(1011) 1819(1128)
00 1
.names 1889(1085) 505(1067) 915(1129)
11 1
.names 505(1067) 2278(1130)
1 1
.names 1951(1089) 732(1068) 1133(1131)
11 1
.names 732(1068) 2366(1132)
1 1
.names 1891(1088) 511(1070) 907(1133)
11 1
.names 511(1070) 2270(1134)
1 1
.names 1953(1092) 738(1071) 1125(1135)
11 1
.names 738(1071) 2358(1136)
1 1
.names 1887(1086) 499(1072) 922(1137)
11 1
.names 499(1072) 2286(1138)
1 1
.names 1949(1090) 726(1073) 1140(1139)
11 1
.names 726(1073) 2374(1140)
1 1
.names 580(1023) 571(929) 613(1078) 630(1141)
111 1
.names 584(1074) 575(1021) 617(1077) 633(1142)
111 1
.names 621(1075) 624(1143)
1 0
.names 625(1076) 628(1144)
1 0
.names 617(1077) 620(1145)
1 0
.names 613(1078) 616(1146)
1 0
.names 2200(1031) 2203(1081) 2205(1147)
11 0
.names 2220(1032) 2223(1082) 2225(1148)
11 0
.names 2197(1033) 2204(1079) 2206(1149)
11 0
.names 2217(1034) 2224(1080) 2226(1150)
11 0
.names 493(1083) 1885(1087) 924(1151)
11 1
.names 493(1083) 2294(1152)
1 1
.names 720(1084) 1947(1091) 1142(1153)
11 1
.names 720(1084) 2382(1154)
1 1
.names 1889(1085) 2275(1155)
1 1
.names 1887(1086) 2283(1156)
1 1
.names 1885(1087) 2291(1157)
1 1
.names 1891(1088) 2267(1158)
1 1
.names 1951(1089) 2363(1159)
1 1
.names 1949(1090) 2371(1160)
1 1
.names 1947(1091) 2379(1161)
1 1
.names 1953(1092) 2355(1162)
1 1
.names 1883(1094) 540(1101) 937(1163)
11 1
.names 1883(1094) 2299(1164)
1 1
.names 1881(1095) 534(1100) 946(1165)
11 1
.names 1881(1095) 2307(1166)
1 1
.names 1945(1096) 714(1105) 1155(1167)
11 1
.names 1945(1096) 2387(1168)
1 1
.names 1943(1097) 708(1104) 1164(1169)
11 1
.names 1943(1097) 2395(1170)
1 1
.names 521(1098) 522(1171)
1 0
.names 527(1099) 528(1172)
1 0
.names 534(1100) 2310(1173)
1 1
.names 540(1101) 2302(1174)
1 1
.names 695(1102) 696(1175)
1 0
.names 701(1103) 702(1176)
1 0
.names 708(1104) 2398(1177)
1 1
.names 714(1105) 2390(1178)
1 1
.names 1830(1108) 227(1179)
1 0
.names 1553(1110) 229(1180)
1 0
.names 1382(1116) 2331(1181)
1 1
.names 1628(1117) 2419(1182)
1 1
.names 1380(1118) 2251(1183)
1 1
.names 1626(1119) 2339(1184)
1 1
.names 1624(1120) 2347(1185)
1 1
.names 1378(1121) 2259(1186)
1 1
.names 2238(1124) 2242(1187)
1 0
.names 592(760) 605(1022) 628(1144) 638(1188)
111 1
.names 596(853) 601(930) 624(1143) 635(1189)
111 1
.names 1819(1128) 1816(1127) 2719(1190)
11 0
.names 2278(1130) 2282(1191)
1 0
.names 2366(1132) 2370(1192)
1 0
.names 2270(1134) 2274(1193)
1 0
.names 2358(1136) 2362(1194)
1 0
.names 2286(1138) 2290(1195)
1 0
.names 2374(1140) 2378(1196)
1 0
.names 2238(1124) 2241(770) 645(1197)
11 0
.names 571(929) 584(1074) 620(1145) 632(1198)
111 1
.names 575(1021) 580(1023) 616(1146) 629(1199)
111 1
.names 1378(1121) 1035(618) 674(1200)
11 1
.names 1624(1120) 1035(618) 1106(1201)
11 1
.names 1380(1118) 1043(693) 671(1202)
11 1
.names 1626(1119) 1043(693) 1104(1203)
11 1
.names 1382(1116) 1051(695) 967(1204)
11 1
.names 1628(1117) 1051(695) 1184(1205)
11 1
.names 2205(1147) 2206(1149) 2230(1206)
11 0
.names 2225(1148) 2226(1150) 2246(1207)
11 0
.names 2294(1152) 2298(1208)
1 0
.names 2382(1154) 2386(1209)
1 0
.names 677(1122) 1031(630) 679(1210)
11 1
.names 1109(1123) 1031(630) 1110(1211)
11 1
.names 2275(1155) 2281(1212)
1 0
.names 2283(1156) 2289(1213)
1 0
.names 2291(1157) 2297(1214)
1 0
.names 2267(1158) 2273(1215)
1 0
.names 2363(1159) 2369(1216)
1 0
.names 2371(1160) 2377(1217)
1 0
.names 2379(1161) 2385(1218)
1 0
.names 2355(1162) 2361(1219)
1 0
.names 1092(1106) 14(9) 1093(1220)
11 1
.names 1556(1111) 1559(1109) 894(533) 1560(1221)
111 1
.names 2299(1164) 2305(1222)
1 0
.names 2307(1166) 2313(1223)
1 0
.names 1864(1112) 1831(409) 1879(1224)
11 1
.names 1859(1114) 1831(409) 1877(1225)
11 1
.names 2387(1168) 2393(1226)
1 0
.names 2395(1170) 2401(1227)
1 0
.names 1926(1113) 1893(410) 1941(1228)
11 1
.names 1921(1115) 1893(410) 1939(1229)
11 1
.names 522(1171) 2326(1230)
1 1
.names 528(1172) 2318(1231)
1 1
.names 2310(1173) 2314(1232)
1 0
.names 2302(1174) 2306(1233)
1 0
.names 696(1175) 2414(1234)
1 1
.names 702(1176) 2406(1235)
1 1
.names 2398(1177) 2402(1236)
1 0
.names 2390(1178) 2394(1237)
1 0
.names 2719(1190) 2726(1107) 1827(1238)
11 0
.names 2331(1181) 2337(1239)
1 0
.names 2419(1182) 2425(1240)
1 0
.names 2251(1183) 2257(1241)
1 0
.names 2339(1184) 2345(1242)
1 0
.names 2347(1185) 2353(1243)
1 0
.names 2259(1186) 2265(1244)
1 0
.names 635(1189) 636(1125) 637(1245)
00 1
.names 638(1188) 639(1126) 640(1246)
00 1
.names 2719(1190) 2725(1247)
1 0
.names 2278(1130) 2281(1212) 908(1248)
11 0
.names 2366(1132) 2369(1216) 1126(1249)
11 0
.names 2270(1134) 2273(1215) 899(1250)
11 0
.names 2358(1136) 2361(1219) 1117(1251)
11 0
.names 2286(1138) 2289(1213) 916(1252)
11 0
.names 2374(1140) 2377(1217) 1134(1253)
11 0
.names 2235(684) 2242(1187) 646(1254)
11 0
.names 629(1199) 630(1141) 631(1255)
00 1
.names 632(1198) 633(1142) 634(1256)
00 1
.names 2347(1185) 2354(773) 1115(1257)
11 0
.names 2259(1186) 2266(775) 684(1258)
11 0
.names 2339(1184) 2346(868) 1099(1259)
11 0
.names 2251(1183) 2258(870) 665(1260)
11 0
.names 2419(1182) 2426(872) 1181(1261)
11 0
.names 2331(1181) 2338(873) 963(1262)
11 0
.names 2230(1206) 2234(1263)
1 0
.names 2246(1207) 2250(1264)
1 0
.names 2294(1152) 2297(1214) 925(1265)
11 0
.names 2382(1154) 2385(1218) 1143(1266)
11 0
.names 2275(1155) 2282(1191) 909(1267)
11 0
.names 2283(1156) 2290(1195) 917(1268)
11 0
.names 2291(1157) 2298(1208) 926(1269)
11 0
.names 2267(1158) 2274(1193) 900(1270)
11 0
.names 2363(1159) 2370(1192) 1127(1271)
11 0
.names 2371(1160) 2378(1196) 1135(1272)
11 0
.names 2379(1161) 2386(1209) 1144(1273)
11 0
.names 2355(1162) 2362(1194) 1118(1274)
11 0
.names 1093(1220) 1087(1275)
1 0
.names 1093(1220) 401(1276)
1 1
.names 1560(1221) 150(1277)
1 0
.names 1560(1221) 311(1278)
1 1
.names 2299(1164) 2306(1233) 929(1279)
11 0
.names 2307(1166) 2314(1232) 939(1280)
11 0
.names 1879(1224) 2315(1281)
1 1
.names 1877(1225) 2323(1282)
1 1
.names 2387(1168) 2394(1237) 1147(1283)
11 0
.names 2395(1170) 2402(1236) 1157(1284)
11 0
.names 1941(1228) 2403(1285)
1 1
.names 1939(1229) 2411(1286)
1 1
.names 2326(1230) 2330(1287)
1 0
.names 1877(1225) 522(1171) 961(1288)
11 1
.names 1879(1224) 528(1172) 954(1289)
11 1
.names 2318(1231) 2322(1290)
1 0
.names 2310(1173) 2313(1223) 938(1291)
11 0
.names 2302(1174) 2305(1222) 928(1292)
11 0
.names 2414(1234) 2418(1293)
1 0
.names 1939(1229) 696(1175) 1179(1294)
11 1
.names 1941(1228) 702(1176) 1172(1295)
11 1
.names 2406(1235) 2410(1296)
1 0
.names 2398(1177) 2401(1227) 1156(1297)
11 0
.names 2390(1178) 2393(1226) 1146(1298)
11 0
.names 2722(1047) 2725(1247) 1826(1299)
11 0
.names 640(1246) 637(1245) 2243(1300)
11 0
.names 908(1248) 909(1267) 910(1301)
11 0
.names 1126(1249) 1127(1271) 1128(1302)
11 0
.names 899(1250) 900(1270) 901(1303)
11 0
.names 1117(1251) 1118(1274) 1119(1304)
11 0
.names 916(1252) 917(1268) 918(1305)
11 0
.names 1134(1253) 1135(1272) 1136(1306)
11 0
.names 645(1197) 646(1254) 647(1307)
11 0
.names 634(1256) 631(1255) 2227(1308)
11 0
.names 2350(687) 2353(1243) 1114(1309)
11 0
.names 2262(689) 2265(1244) 683(1310)
11 0
.names 2342(779) 2345(1242) 1098(1311)
11 0
.names 2254(781) 2257(1241) 664(1312)
11 0
.names 2422(783) 2425(1240) 1180(1313)
11 0
.names 2334(784) 2337(1239) 962(1314)
11 0
.names 925(1265) 926(1269) 927(1315)
11 0
.names 1143(1266) 1144(1273) 1145(1316)
11 0
.names 928(1292) 929(1279) 930(1317)
11 0
.names 938(1291) 939(1280) 940(1318)
11 0
.names 2315(1281) 2322(1290) 948(1319)
11 0
.names 2315(1281) 2321(1320)
1 0
.names 2323(1282) 2330(1287) 956(1321)
11 0
.names 2323(1282) 2329(1322)
1 0
.names 1146(1298) 1147(1283) 1148(1323)
11 0
.names 1156(1297) 1157(1284) 1158(1324)
11 0
.names 2403(1285) 2410(1296) 1166(1325)
11 0
.names 2403(1285) 2409(1326)
1 0
.names 2411(1286) 2418(1293) 1174(1327)
11 0
.names 2411(1286) 2417(1328)
1 0
.names 1826(1299) 1827(1238) 686(1329)
11 0
.names 647(1307) 865(291) 143(1330)
11 1
.names 2243(1300) 2249(1331)
1 0
.names 901(1303) 915(1129) 970(1332)
11 1
.names 910(1301) 927(1315) 918(1305) 901(1303) 968(1333)
1111 1
.names 1119(1304) 1133(1131) 1187(1334)
11 1
.names 1128(1302) 1145(1316) 1136(1306) 1119(1304) 1185(1335)
1111 1
.names 910(1301) 901(1303) 922(1137) 971(1336)
111 1
.names 1128(1302) 1119(1304) 1140(1139) 1188(1337)
111 1
.names 2227(1308) 2233(1338)
1 0
.names 1114(1309) 1115(1257) 1112(1339)
11 0
.names 683(1310) 684(1258) 681(1340)
11 0
.names 1098(1311) 1099(1259) 1100(1341)
11 0
.names 664(1312) 665(1260) 666(1342)
11 0
.names 1180(1313) 1181(1261) 1182(1343)
11 0
.names 962(1314) 963(1262) 964(1344)
11 0
.names 2227(1308) 2234(1263) 642(1345)
11 0
.names 2243(1300) 2250(1264) 649(1346)
11 0
.names 918(1305) 901(1303) 924(1151) 910(1301) 972(1347)
1111 1
.names 1136(1306) 1119(1304) 1142(1153) 1128(1302) 1189(1348)
1111 1
.names 930(1317) 946(1165) 978(1349)
11 1
.names 1148(1323) 1164(1169) 1195(1350)
11 1
.names 2326(1230) 2329(1322) 955(1351)
11 0
.names 940(1318) 930(1317) 954(1289) 979(1352)
111 1
.names 2318(1231) 2321(1320) 947(1353)
11 0
.names 2414(1234) 2417(1328) 1173(1354)
11 0
.names 1158(1324) 1148(1323) 1172(1295) 1196(1355)
111 1
.names 2406(1235) 2409(1326) 1165(1356)
11 0
.names 686(1329) 687(1357)
1 0
.names 143(1330) 144(601) 145(1358)
00 0
.names 968(1333) 969(1359)
1 0
.names 1185(1335) 1186(1360)
1 0
.names 907(1133) 970(1332) 971(1336) 972(1347) 973(1361)
0000 0
.names 1125(1135) 1187(1334) 1188(1337) 1189(1348) 1190(1362)
0000 0
.names 666(1342) 674(1200) 680(1363)
11 1
.names 1100(1341) 1106(1201) 1111(1364)
11 1
.names 2230(1206) 2233(1338) 641(1365)
11 0
.names 2246(1207) 2249(1331) 648(1366)
11 0
.names 681(1340) 666(1342) 679(1210) 682(1367)
111 1
.names 1112(1339) 1100(1341) 1110(1211) 1113(1368)
111 1
.names 947(1353) 948(1319) 949(1369)
11 0
.names 955(1351) 956(1321) 957(1370)
11 0
.names 1165(1356) 1166(1325) 1167(1371)
11 0
.names 1173(1354) 1174(1327) 1175(1372)
11 0
.names 973(1361) 976(1373)
1 0
.names 1190(1362) 1193(1374)
1 0
.names 671(1202) 680(1363) 682(1367) 685(1375)
000 0
.names 1104(1203) 1111(1364) 1113(1368) 1116(1376)
000 0
.names 957(1370) 949(1369) 930(1317) 967(1204) 940(1318) 981(1377)
11111 1
.names 1175(1372) 1167(1371) 1148(1323) 1184(1205) 1158(1324) 1198(1378)
11111 1
.names 641(1365) 642(1345) 643(1379)
11 0
.names 648(1366) 649(1346) 650(1380)
11 0
.names 687(1357) 487(403) 688(1381)
11 1
.names 940(1318) 964(1344) 949(1369) 930(1317) 957(1370) 977(1382)
11111 1
.names 1158(1324) 1182(1343) 1167(1371) 1148(1323) 1175(1372) 1194(1383)
11111 1
.names 949(1369) 930(1317) 961(1288) 940(1318) 980(1384)
1111 1
.names 1167(1371) 1148(1323) 1179(1294) 1158(1324) 1197(1385)
1111 1
.names 650(1380) 868(198) 884(1386)
11 1
.names 976(1373) 969(1359) 988(1387)
11 0
.names 1193(1374) 1186(1360) 1205(1388)
11 0
.names 977(1382) 685(1375) 983(1389)
11 1
.names 1194(1383) 1116(1376) 1200(1390)
11 1
.names 643(1379) 644(1391)
1 0
.names 688(1381) 395(1392)
1 1
.names 688(1381) 690(1393)
1 0
.names 937(1163) 978(1349) 979(1352) 980(1384) 981(1377) 982(1394)
00000 0
.names 1155(1167) 1195(1350) 1196(1355) 1197(1385) 1198(1378) 1199(1395)
00000 0
.names 883(668) 884(1386) 895(1396)
00 0
.names 982(1394) 983(1389) 984(1397)
00 0
.names 1199(1395) 1200(1390) 1201(1398)
00 0
.names 644(1391) 487(403) 1025(1399)
11 1
.names 895(1396) 295(1400)
1 1
.names 895(1396) 331(1401)
1 1
.names 988(1387) 984(1397) 990(1402)
11 1
.names 1205(1388) 1201(1398) 1207(1403)
11 1
.names 984(1397) 987(1404)
1 0
.names 1201(1398) 1204(1405)
1 0
.names 1025(1399) 397(1406)
1 1
.names 1025(1399) 1027(1407)
1 0
.names 690(1393) 1027(1407) 1830(1108) 1085(1408)
111 1
.names 973(1361) 987(1404) 989(1409)
11 1
.names 1190(1362) 1204(1405) 1206(1410)
11 1
.names 989(1409) 990(1402) 991(1411)
00 0
.names 1206(1410) 1207(1403) 1208(1412)
00 0
.names 1208(1412) 991(1411) 1221(1413)
11 0
.names 1208(1412) 329(1414)
1 1
.names 1221(1413) 991(1411) 1239(1415)
11 1
.names 1208(1412) 1221(1413) 1238(1416)
11 1
.names 1238(1416) 1239(1415) 1240(1417)
00 0
.names 1240(1417) 1247(1418)
1 0
.names 1240(1417) 1247(1418) 471(1419)
11 1
.names 471(1419) 1247(1418) 473(1420)
00 0
.names 1553(1110) 1087(1275) 473(1420) 1088(1421)
111 1
.names 473(1420) 231(1422)
1 0
.names 1085(1408) 1088(1421) 554(581) 1089(1423)
111 1
.names 1089(1423) 225(1424)
1 0
.names 1089(1423) 308(1425)
1 1
.end
This source diff could not be displayed because it is too large. You can view the blob instead.
.i 9
.o 19
.p 438
010110011 0100000000000000011
100100001 0110000000000000000
100010100 0100010000000000000
100101001 0100001000000000000
001101010 0000001000000001001
00-0-0001 0000000000001011100
110101010 0000000000010100000
010111100 0100000001000000110
011010111 0100000001000000000
010111010 0000110000000000000
110000001 0100000000001010000
0110-0011 0001100000000000000
10011-010 0100000000000000000
101000110 0011000000000000000
100110110 0000101000000000000
101110100 0001100000000000000
111000101 0100000000100000000
100100100 0000000001100000000
111001110 0100000000100000000
111111001 0000000000001100000
001100100 0000000000100110000
001101101 0010000000010100000
-01111101 0100000000000000000
010001110 0100000010100000000
001011111 0000010100000000110
100101110 0100100100000000000
001011011 0000000010010010000
011111000 0010100000000000000
100110100 0000001000001100000
001101110 0000000100010010000
010011100 0000000001000110000
101111101 0000100100000000000
111010000 0100000000000110000
101011010 0000010100000000000
011000001 0000100000000110000
101101101 0000100001000000000
011011011 0001000000010010000
010011111 0000010001000001010
10111111- 0100000000000000000
010101010 0010000001000001001
011101010 0010000000001100000
11011111- 0100000000000000000
111111011 0001100000000000000
001010101 0000010000010101100
001110111 0010000000000111001
1001100-1 0010000000000000000
100100111 0100000000110010000
011101011 0101000001000000000
011011101 0000100000010010000
101110101 0101000001000000000
001110100 0010000000010011001
001110010 0001000110000000000
110011100 0000000000110010000
110101111 0000001000001100000
100111111 0001000110000000000
10-110000 0100000000000010000
101101100 0100001010000000000
010000011 0001000010000110000
-11000011 0001000000000000000
100001101 0000101100000000000
010000010 0000100000110100000
1-0001001 0100100000000000000
001001110 0001010010000001100
001110001 0000100011000000000
00101001- 0000000100000001100
100100010 0010000001100000000
011011110 0001110000000000000
110110000 0000100100001000000
101000101 0000011000001000000
100101111 0101010010000000000
101110110 0100000000110010000
001110000 0000010001100000000
011001110 0100000001000110000
010010100 0000010001100000000
100010010 0001000001001010000
100011000 0000100010000110000
-01001100 0000000000010010000
001001111 0010100010000001100
110111110 0001110000000000000
100110001 0000001110000000000
001100000 0000101000100000101
100110101 0000010011000000000
010010010 0010000000110010000
111100110 0000010000010010000
100-10001 0001100000000000000
100111101 0010010000000110000
011010100 0001000011000000000
101011101 0001100000011000000
010101011 0001001100000001001
110101100 0001100000000110000
110101000 0001010001000000000
001001101 0000101010000001110
110010100 0000110100000000000
011000101 0100000001001101100
111000111 0100001001000000000
001010000 0010000010001101100
100011101 0100011010000000000
1-0110000 0000000000100100000
10000-011 0001000001000000000
001011100 0000000011010010000
101111001 0000000110100000000
0010100-1 0000000010100000000
010001-01 0010000000100000000
110-11011 0000000000010010000
1110-1011 0000010000000000000
1001-1011 0000100000100000000
00110001- 0010000000100000000
100100110 0101000001010010000
101010101 0010000000100110000
-01101011 0001010000000000000
001001000 0000000011100100000
110000100 0000010011000000000
101000-00 0000000010001000000
010011110 0000000111000001100
110111100 0000110001000000000
001101001 0000010100001011010
10011-001 0010000000100000000
0100-0001 0000010010000000000
100111-10 0000100100000000000
110101101 0010001100000000000
001101000 0000001010001101100
-01111011 0001000100000000000
001000-11 0000000011000000000
110000101 0000101000010100000
011100100 0000011001000000000
011100110 0000100001000110000
1011-0000 0010000000010000000
100011011 0010000101001000000
101-00000 0000001000000100000
0011-1111 0000001000100000000
011011100 0010000010010010000
001010111 0001010001100000000
110000010 0010000001011000000
00-000-00 0000000000000010001
0-1100110 0000000010100000000
1001010-0 0000000011000000000
11-001011 0010000000001000000
011111-01 0011000000000000000
01-110100 0010000000100000000
101011001 0000001001001100000
011101110 0000011000011000000
101100001 0000000101000110000
011111011 0010000001011000000
011101100 0100000011100000000
1-1001011 0000000010000010000
-01011010 0000000001100000000
0-1001011 0000001100000000000
0110-0000 0000100010000000000
111001101 0101010010000000000
111000110 0010000011000000000
011-00111 0000100010000000000
01100-011 0000010000100000000
1101-1011 0000001000000010000
-11001010 0001010000000000000
01110011- 0001001000000000000
100011110 0010110001000000000
110001-01 0000100100000000000
011010110 0100000100111000000
100010110 0001000110010100000
100001011 0010110000000110000
110-10010 0000110000000000000
101-01101 0010010000000000000
0-1100111 0000000101000000000
110100-00 0010000000100000000
01001100- 0000000010010010000
110101-10 0010000000100000000
111010100 0000101000001100000
110-11001 0010000000100000000
1100-1100 0010010000000000000
1010101-0 0000010100000000000
100001111 0010010010001100000
11000011- 0001000000000110000
111100011 0000010101000000000
01010111- 0000010000100001001
010111111 0010010110000000000
011110000 0011000010100000000
111110001 0010000000111000000
100100011 0000000111100000000
011100000 0011100001000000000
011111110 0100001101000000000
010110101 0010011010000000000
010100011 0000110010001010000
111111000 0000010101000000000
111111101 0010000000111000000
11101100- 0100000000011000000
011111100 0001110100000000000
001111011 0000101010001100000
-11100001 0010000000100000000
0111-1000 0000001000100000000
100100000 0101110000011000000
010100111 0000100110010100000
101000010 0001011100000000000
11001-010 0000001010000000000
010001000 0010010001001100000
-11110011 0010000000100000000
010100101 0000001011100000000
100--1000 0010000000000000000
010101000 0001001001000110000
010010101 0000100101100000110
111101001 0000001010000110000
111000100 0101000001000110000
011001101 0001100100000110000
001111111 0010010100011000000
1010-1000 0000001001000000000
100101100 0001000101010010000
001110101 0001001110000001001
0100-101- 0000000010000000000
011100101 0000110100100000000
110010001 0001011100000000000
0-110-010 0000100000000000000
111001100 0100100100011000000
101100101 0001000110001100000
10-001-01 0000000000100000000
111111010 0000001001001100000
101111110 0001010010001100000
1-0001-00 0010000000000000000
011001000 0001000110001010000
001--0101 0000000001000000000
010000101 0100101011000000000
011011010 0010011000100000000
110011110 0000111000100000000
001110011 0010001100010010000
111010110 0011110000000000000
11101-111 0010000000100000000
111011-00 0000100100000000000
-01-11111 0000000000100000000
111100111 0001110000100000000
-10011000 0001110000000000000
110001110 0001000110011000000
01011-010 0001000110000000000
-01100001 0001010000100000000
010100100 0000000111011000000
01--00010 0000000100000000000
011011001 0010101001000000000
1101110-1 0000000010010010000
10-10-100 0000010000000000000
--1011000 0000100000000000000
-010-0110 0000000001000000000
10--01011 0000001000000000000
110110100 0001000110011000000
100010011 0100010110011000000
101110010 0000000111100000000
001001100 0000010110001101110
110100001 0010000111000000000
110100011 0010010100001100000
010100-10 0000010100100000000
010100000 0000100101001101001
11101-110 0000001010000000000
1-01010-1 0000000001000000000
001111000 0000001101100001001
00101100- 0010000001100000000
0100010-0 0000001100100000000
010000110 0001110011000000000
001-11110 0000001010100000000
101101111 0101110000010010000
-1-011101 0000000010000000000
00101-101 0000000101100000000
0101-0010 0010011000000000000
10100010- 0000100001010000000
-1011001- 0000000001000000000
10111100- 0100001001000000000
1111-1100 0000001100000000000
10000000- 0000100000110010000
110100101 0000011101000000000
010-01111 0000001110000000000
001010110 0000101000110011111
001111100 0011011100000000000
101100-11 0010100010000000000
11101111- 0000000000110010000
010111011 0011101001000000000
11001-1-1 0000000001000000000
101110111 0010000011010010000
111001001 0000101001100000000
0-1001010 0000000111000000000
100011010 0010101110000000000
01110100- 0011000001000000000
11-111-00 0010000000000000000
11-1-1111 0010000000000000000
110110-10 0010100010000000000
011101101 0000001011001010000
1-110110- 0000010000000000000
0-1001001 0000000100111000000
100100101 0011101000010010000
1-0111011 0100011000010000000
111110010 0010011100000000000
11-010-10 0000001000000000000
111101101 0000101000101100000
010111001 0000111100100000000
011001-01 0010001010000000000
010110001 0001110001011000000
10100000- 0010000000101100000
01110-111 0000110001000000000
111010001 0010000001100110000
1-1101011 0010010000100000000
100-11011 0000010010100100000
100111100 0010100110000110000
111000000 0010000001110010000
100010101 0010011101000000000
01011011- 0000010001010010000
10100101- 0010000000110010000
010010110 0001001101100000101
01111001- 0010000000100110000
-11000010 0000010001100000000
101-10001 0010000000110010000
010000100 0010010101000110000
10-00-100 0010000000100000000
110000111 0010111010000000000
1-00100-0 0010000000100000000
-100-0000 0010000000100000000
011000000 0001011101000000000
011-10011 0000001101000000000
1111011-0 0000100010100000000
-11010011 0000010011000000000
101000111 0010001110100000000
011010001 0001000101101100000
1-1100100 0010000101000000000
010010011 0000000111110010000
001111010 0000110111000001001
111-11010 0000100110000000000
010001011 0000011101011000000
01110001- 0010000001010010000
1010--011 0010000000100000000
010010001 0010001101010010000
110-01011 0000100110000100000
10-011001 0001010110000000000
10-1100-1 0000000001100000000
010001111 0011110001100000000
001111001 0000011011100001001
001110110 0010011101000001001
0101000-1 0001001101000000000
01100-01- 0000101000000000000
110110101 0010101101000000000
010101100 0010011010001101001
11001-01- 0010000000100000000
110001111 0010001010111000000
010110000 0000111010011001001
1-1-00011 0010100000000000000
0101101-0 0000111100000000000
011010101 0010000011111000000
110010110 0010000110110010000
11-01-101 0001000100000000000
101--0100 0010001000000000000
001010100 0000001011111001100
10-000101 0010100101000000000
101111010 0000101001100110000
101-01000 0001010110000000000
111011001 0000111010100000000
1010--110 0000001100000000000
01-000110 0010001100100000000
101010010 0010000111010010000
11-10-010 0010000000100000000
1011--011 0000010001000000000
110110011 0010011100011000000
110001010 0100111010001100000
01011-110 0001001010010010000
110-10111 0001010110000000000
100011111 0001111000111000000
10100111- 0000111000100000000
11111111- 0010001000011000000
00-0000-- 0000000000000110001
100111000 0001111010011000000
011000100 0011101110000000000
-1100101- 0000000101000000000
0110-1111 0010001100100000000
111100000 0001011100010010000
011111111 0011111000100000000
1111-100- 0010000000100000000
100-01010 0100001101100000000
010010111 0010011101100000000
1101-1000 0000101110000000000
111010101 0010001001101100000
110010-11 0000101011000000000
1-1100001 0000111010000000000
111000001 0000000111110010000
1100--0-0 0000000000100000000
011001100 0001111000110100000
001111110 0010110101001010000
1010-100- 0001110000000000000
111110000 0010000111001010000
100010111 0010101101000110000
011110101 0001111101000000000
01111110- 0000001011100000000
-1--00011 0000001000000000000
011111010 0011010110011000000
101010111 0000111011100000000
010111101 0010011100110010000
-11-01-11 0000000000100000000
111110100 0000011101010100000
010101001 0010001111000110000
1-1011-1- 0010000000000000000
011110001 0011011100010100000
100000111 0000011111010010000
101111100 0010010111100000000
110100111 0001111001011000000
101100010 0001011011000110000
111100-10 0000101011000000000
101101001 0010101110011000000
10-000011 0000111010100000000
11001010- 0010001001010010000
101100110 0010101101001100000
101-01110 0001111000100000000
011010010 0010001101101100000
10-001110 0001011011000000000
10000-000 0001011100010010000
110-11101 0001111000100000000
101011100 0000101111001010000
1-0000110 0010001101100000000
100011100 0011011001101100000
111110110 0001111001000110000
0110111-1 0001011101000000000
010000111 0001001111101100000
11011000- 0001011011000000000
101010000 0001101111100000000
100110111 0011001101101010000
1101-1001 0010010101100000000
111100101 0010001110110010000
110011111 0001101110100110000
100101101 0010010111110010000
111001000 0100001111101100000
0010001-- 0000000011011101110
010111000 0000011111110010000
1-0000000 0001101111000000000
110111010 0011011001110010000
101101010 0010010111111000000
011110111 0010101111001100000
110100110 0000111011101010000
111110111 0001111111000000000
01-011000 0001011111000000000
00-00-0-- 0000000000011001110
11110-1-0 0001001101000000000
111110101 0000111011100110000
001101100 0010011111111000000
010101101 0001111111001101001
010001100 0000111111111000011
111001111 0011101111010100000
1000000-0 0000111111010010000
011110110 0001111111101100000
000------ 0000000000011111111
.e
.model frg2
.inputs a b c d e f g h i j k l m n o p q r s t u v w x y z a0 b0 c0 d0 e0 f0 \
g0 h0 i0 j0 k0 l0 m0 n0 o0 p0 q0 s0 t0 u0 v0 w0 x0 y0 z0 a1 b1 c1 d1 e1 f1 \
g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 \
g2 h2 i2 j2 k2 l2 m2 n2 o2 p2 q2 r2 s2 t2 u2 v2 w2 x2 y2 z2 a3 b3 c3 d3 e3 f3 \
g3 h3 i3 j3 k3 l3 m3 n3 o3 p3 q3 r3 s3 t3 u3 v3 w3 x3 y3 z3 a4 b4 c4 d4 e4 f4 \
g4 h4 i4 j4 k4 l4 m4 n4
.outputs o4 p4 q4 r4 s4 t4 u4 v4 w4 x4 y4 z4 a5 b5 c5 d5 e5 f5 g5 h5 i5 j5 k5 \
l5 m5 n5 o5 p5 q5 r5 s5 t5 u5 v5 w5 x5 y5 z5 a6 b6 c6 d6 e6 f6 g6 h6 i6 j6 k6 \
l6 m6 n6 o6 p6 q6 r6 s6 t6 u6 v6 w6 x6 y6 z6 a7 b7 c7 d7 e7 f7 g7 h7 i7 j7 k7 \
l7 m7 n7 o7 p7 q7 r7 s7 t7 u7 v7 w7 x7 y7 z7 a8 b8 c8 d8 e8 f8 g8 h8 i8 j8 k8 \
l8 m8 n8 o8 p8 q8 r8 s8 t8 u8 v8 w8 x8 y8 z8 a9 b9 c9 d9 e9 f9 g9 h9 i9 j9 k9 \
l9 m9 n9 o9 p9 q9 r9 s9 t9 u9 v9 w9
.names g1 o4
0 1
.names k0 m0 h33 i33 j33 p4
-0--0 1
0-0-0 1
1--00 1
--000 1
.names k0 m0 k33 l33 m33 q4
-0--0 1
0-0-0 1
1--00 1
--000 1
.names k0 m0 n33 o33 p33 r4
-0--0 1
0-0-0 1
1--00 1
--000 1
.names k0 m0 q33 r33 s33 s4
-0--0 1
0-0-0 1
1--00 1
--000 1
.names k0 l0 m3 t33 v4
--10 1
11-0 1
00-0 1
.names k0 l0 n3 u33 w4
--10 1
11-0 1
00-0 1
.names k0 l0 o3 v33 x4
--10 1
11-0 1
00-0 1
.names k0 l0 p3 w33 y4
--10 1
11-0 1
00-0 1
.names k0 l0 q3 x33 z4
--10 1
11-0 1
00-0 1
.names k0 l0 r3 y33 a5
--10 1
11-0 1
00-0 1
.names k0 l0 s3 z33 b5
--10 1
11-0 1
00-0 1
.names k0 l0 t3 a34 c5
--10 1
11-0 1
00-0 1
.names m3 m0 d5
11 1
.names n3 m0 e5
11 1
.names o3 m0 f5
11 1
.names p3 m0 g5
11 1
.names q3 m0 h5
11 1
.names r3 m0 i5
11 1
.names s3 m0 j5
11 1
.names t3 m0 k5
11 1
.names j4 g1 l5
01 1
.names b34 n5
0 1
.names c34 o5
0 1
.names d34 p5
0 1
.names e34 q5
0 1
.names f34 r5
0 1
.names g30 g34 h34 n1 i34 s5
0--1- 1
-0-1- 1
--01- 1
0---0 1
-0--0 1
--0-0 1
.names g30 g34 h34 n1 i34 t5
0--1- 1
-0-1- 1
--01- 1
0---0 1
-0--0 1
--0-0 1
.names g30 g34 h34 n1 i34 u5
0--1- 1
-0-1- 1
--01- 1
0---0 1
-0--0 1
--0-0 1
.names g30 g34 h34 n1 i34 v5
0--1- 1
-0-1- 1
--01- 1
0---0 1
-0--0 1
--0-0 1
.names g30 g34 h34 n1 i34 w5
0--1- 1
-0-1- 1
--01- 1
0---0 1
-0--0 1
--0-0 1
.names k34 x5
0 1
.names l34 y5
0 1
.names m34 z5
0 1
.names n34 a6
0 1
.names o34 b6
0 1
.names p34 c6
0 1
.names q34 d6
0 1
.names r34 e6
0 1
.names s34 f6
0 1
.names t34 g6
0 1
.names h1 h6
0 1
.names i1 i6
0 1
.names j1 j6
0 1
.names k1 k6
0 1
.names l1 l6
0 1
.names f1 i4 n6
11 1
00 1
.names c4 b4 v34 o6
000 1
.names g15 q0 o0 p6
001 1
.names n0 j15 k15 o0 l15 m15 q6
000--- 1
---100 1
.names t15 n0 w15 g1 x15 y15 r6
0--0-0 1
-1-0-0 1
--00-0 1
0---00 1
-1--00 1
--0-00 1
.names t15 n0 b16 g1 x15 c16 s6
0--0-0 1
-1-0-0 1
--00-0 1
0---00 1
-1--00 1
--0-00 1
.names t15 n0 f16 g1 x15 g16 t6
0--0-0 1
-1-0-0 1
--00-0 1
0---00 1
-1--00 1
--0-00 1
.names g1 j16 l1 l16 u6
-0-0 1
0-10 1
.names n0 m1 p0 p16 v6
-1-0 1
0-10 1
.names a17 r16 s16 n1 n0 u16 v16 w6
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 b17 s16 o1 n0 u16 d17 x6
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 g17 s16 p1 n0 u16 i17 y6
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 l17 s16 q1 n0 u16 n17 z6
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 q17 s16 r1 n0 u16 s17 a7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 v17 s16 s1 n0 u16 x17 b7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 a18 s16 t1 n0 u16 c18 c7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 f18 s16 u1 n0 u16 h18 d7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 k18 s16 v1 n0 u16 m18 e7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 p18 s16 w1 n0 u16 r18 f7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 u18 s16 x1 n0 u16 w18 g7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 z18 s16 y1 n0 u16 b19 h7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 e19 s16 z1 n0 u16 g19 i7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 j19 s16 a2 n0 u16 l19 j7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 o19 s16 b2 n0 u16 q19 k7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 t19 s16 c2 n0 u16 v19 l7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 y19 s16 d2 n0 u16 a20 m7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 d20 s16 e2 n0 u16 f20 n7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 i20 s16 f2 n0 u16 k20 o7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 n20 s16 g2 n0 u16 p20 p7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 s20 s16 h2 n0 u16 u20 q7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 x20 s16 i2 n0 u16 z20 r7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names a17 c21 s16 j2 n0 u16 e21 s7
1--1--0 1
-0-1--0 1
--01--0 1
1---0-0 1
-0--0-0 1
--0-0-0 1
1----00 1
-0---00 1
--0--00 1
.names q0 o0 h21 t7
010 1
.names q0 o0 q21 u7
010 1
.names q0 o0 x21 v7
010 1
.names q0 o0 e22 w7
010 1
.names q0 o0 l22 x7
010 1
.names q0 o0 s22 y7
010 1
.names q0 o0 z22 z7
010 1
.names q0 o0 g23 a8
010 1
.names q0 o0 n23 b8
010 1
.names q0 o0 y23 c8
010 1
.names q0 o0 c24 d8
010 1
.names q0 o0 g24 e8
010 1
.names q0 o0 k24 f8
010 1
.names q0 o0 o24 g8
010 1
.names q0 o0 s24 h8
010 1
.names w24 x24 s23 o0 y24 z24 i8
000--- 1
---100 1
.names a25 b25 c25 o0 d25 e25 j8
000--- 1
---100 1
.names a25 w25 c25 o0 x25 e25 k8
000--- 1
---100 1
.names a25 z25 c25 o0 a26 e25 l8
000--- 1
---100 1
.names a25 c26 c25 o0 d26 e25 m8
000--- 1
---100 1
.names a25 f26 c25 o0 g26 e25 n8
000--- 1
---100 1
.names a25 i26 c25 o0 j26 e25 o8
000--- 1
---100 1
.names a25 l26 c25 o0 m26 e25 p8
000--- 1
---100 1
.names a25 o26 c25 o0 p26 e25 q8
000--- 1
---100 1
.names a25 r26 c25 o0 s26 e25 r8
000--- 1
---100 1
.names a25 u26 c25 o0 v26 e25 s8
000--- 1
---100 1
.names a25 x26 c25 o0 y26 e25 t8
000--- 1
---100 1
.names a25 a27 c25 o0 b27 e25 u8
000--- 1
---100 1
.names a25 d27 c25 o0 e27 e25 v8
000--- 1
---100 1
.names a25 g27 c25 o0 h27 e25 w8
000--- 1
---100 1
.names a25 j27 c25 o0 k27 e25 x8
000--- 1
---100 1
.names a25 m27 c25 o0 n27 e25 y8
000--- 1
---100 1
.names a25 p27 c25 o0 q27 e25 z8
000--- 1
---100 1
.names a25 s27 c25 o0 t27 e25 a9
000--- 1
---100 1
.names a25 v27 c25 o0 w27 e25 b9
000--- 1
---100 1
.names a25 y27 c25 o0 z27 e25 c9
000--- 1
---100 1
.names a25 b28 c25 o0 c28 e25 d9
000--- 1
---100 1
.names a25 e28 c25 o0 f28 e25 e9
000--- 1
---100 1
.names h28 i28 j28 o0 k28 l28 f9
000--- 1
---100 1
.names l4 a17 x3 a29 g9
--10 1
10-0 1
.names y3 d29 o0 e29 h9
--0- 1
---0 1
10-- 1
.names z3 i29 o0 j29 i9
--0- 1
---0 1
10-- 1
.names q0 o0 n29 j9
010 1
.names x29 y29 z29 o0 a30 b30 c30 k9
------0 1
000---- 1
---100- 1
.names j30 y29 z29 o0 k30 l30 m30 l9
------0 1
000---- 1
---100- 1
.names n0 o0 t30 u30 v30 m9
-100- 1
01--0 1
.names e4 b31 o0 c31 n9
--0- 1
---0 1
10-- 1
.names f4 h31 o0 i31 o9
--0- 1
---0 1
10-- 1
.names n31 o31 z29 o0 p31 q31 r31 p9
------0 1
000---- 1
---100- 1
.names y31 a25 z29 o0 z31 a32 c30 q9
------0 1
000---- 1
---100- 1
.names i4 n1 l4 i32 r9
1-10 1
-110 1
.names k32 l32 j28 o0 m32 n32 s9
000--- 1
---100 1
.names c4 b4 a33 t9
000 1
.names m1 c33 u9
10 1
.names g15 d33 e33 v9
0-0 1
-00 1
.names k4 a25 w9
10 1
.names x0 y0 h1 i1 g35 h35 g15
-----0 1
0-1-0- 1
-0-10- 1
.names c1 q0 o0 j15
1-- 1
-1- 1
--0 1
.names t15 e1 d1 k15
0-- 1
-1- 1
--1 1
.names h1 g1 q0 l15
0-- 1
-1- 1
--1 1
.names t15 n0 o15 m15
100 1
.names d1 e1 c1 o15
11- 1
-11 1
.names l1 k1 p35 t15
000 1
.names c1 d1 e1 w15
00- 1
0-0 1
-10 1
.names t15 e1 n0 x15
0-- 1
-1- 1
--1 1
.names q0 o0 z15 y15
1-- 1
-0- 1
--0 1
.names n0 e1 t15 i1 z15
---1 1
001- 1
.names c1 d1 e1 b16
00- 1
1-0 1
-00 1
.names q0 o0 d16 c16
1-- 1
-0- 1
--0 1
.names n0 e1 t15 j1 d16
---1 1
001- 1
.names c1 d1 e1 f16
00- 1
0-0 1
-00 1
.names q0 o0 h16 g16
1-- 1
-0- 1
--0 1
.names n0 e1 t15 k1 h16
---1 1
001- 1
.names c1 n0 m16 j16
1-- 1
-1- 1
--0 1
.names n0 e1 t15 q0 o0 l16
---1- 1
----0 1
001-- 1
.names t15 d1 m16
10 1
.names g15 m1 q0 o0 p16
--1- 1
---0 1
01-- 1
.names l4 o1 r16
10 1
.names t15 n0 s16
0- 1
-1 1
.names l4 a17 u16
0- 1
-1 1
.names n1 t15 w16 x16 v16
---0 1
000- 1
.names l4 a17 w16
10 1
.names j0 n0 t15 o0 q0 x16
1--10 1
-1-10 1
--010 1
.names c4 b4 q35 a17
000 1
.names l4 p1 b17
10 1
.names o1 t15 w16 e17 d17
---0 1
000- 1
.names i0 n0 t15 o0 q0 e17
1--10 1
-1-10 1
--010 1
.names l4 q1 g17
10 1
.names p1 t15 w16 j17 i17
---0 1
000- 1
.names h0 n0 t15 o0 q0 j17
1--10 1
-1-10 1
--010 1
.names l4 r1 l17
10 1
.names q1 t15 w16 o17 n17
---0 1
000- 1
.names g0 n0 t15 o0 q0 o17
1--10 1
-1-10 1
--010 1
.names l4 s1 q17
10 1
.names r1 t15 w16 t17 s17
---0 1
000- 1
.names f0 n0 t15 o0 q0 t17
1--10 1
-1-10 1
--010 1
.names l4 t1 v17
10 1
.names s1 t15 w16 y17 x17
---0 1
000- 1
.names e0 n0 t15 o0 q0 y17
1--10 1
-1-10 1
--010 1
.names l4 u1 a18
10 1
.names t1 t15 w16 d18 c18
---0 1
000- 1
.names d0 n0 t15 o0 q0 d18
1--10 1
-1-10 1
--010 1
.names l4 v1 f18
10 1
.names u1 t15 w16 i18 h18
---0 1
000- 1
.names m0 n0 t15 o0 q0 i18
1--10 1
-1-10 1
--010 1
.names l4 w1 k18
10 1
.names v1 t15 w16 n18 m18
---0 1
000- 1
.names k0 n0 t15 o0 q0 n18
1--10 1
-1-10 1
--010 1
.names l4 x1 p18
10 1
.names w1 t15 w16 s18 r18
---0 1
000- 1
.names l0 n0 t15 o0 q0 s18
1--10 1
-1-10 1
--010 1
.names l4 y1 u18
10 1
.names x1 t15 w16 x18 w18
---0 1
000- 1
.names q n0 t15 o0 q0 x18
1--10 1
-1-10 1
--010 1
.names l4 z1 z18
10 1
.names y1 t15 w16 c19 b19
---0 1
000- 1
.names r n0 t15 o0 q0 c19
1--10 1
-1-10 1
--010 1
.names l4 a2 e19
10 1
.names z1 t15 w16 h19 g19
---0 1
000- 1
.names s n0 t15 o0 q0 h19
1--10 1
-1-10 1
--010 1
.names l4 b2 j19
10 1
.names a2 t15 w16 m19 l19
---0 1
000- 1
.names t n0 t15 o0 q0 m19
1--10 1
-1-10 1
--010 1
.names l4 c2 o19
10 1
.names b2 t15 w16 r19 q19
---0 1
000- 1
.names u n0 t15 o0 q0 r19
1--10 1
-1-10 1
--010 1
.names l4 d2 t19
10 1
.names c2 t15 w16 w19 v19
---0 1
000- 1
.names v n0 t15 o0 q0 w19
1--10 1
-1-10 1
--010 1
.names l4 e2 y19
10 1
.names d2 t15 w16 b20 a20
---0 1
000- 1
.names w n0 t15 o0 q0 b20
1--10 1
-1-10 1
--010 1
.names l4 f2 d20
10 1
.names e2 t15 w16 g20 f20
---0 1
000- 1
.names x n0 t15 o0 q0 g20
1--10 1
-1-10 1
--010 1
.names l4 g2 i20
10 1
.names f2 t15 w16 l20 k20
---0 1
000- 1
.names y n0 t15 o0 q0 l20
1--10 1
-1-10 1
--010 1
.names l4 h2 n20
10 1
.names g2 t15 w16 q20 p20
---0 1
000- 1
.names z n0 t15 o0 q0 q20
1--10 1
-1-10 1
--010 1
.names l4 i2 s20
10 1
.names h2 t15 w16 v20 u20
---0 1
000- 1
.names a0 n0 t15 o0 q0 v20
1--10 1
-1-10 1
--010 1
.names l4 j2 x20
10 1
.names i2 t15 w16 a21 z20
---0 1
000- 1
.names b0 n0 t15 o0 q0 a21
1--10 1
-1-10 1
--010 1
.names l4 k2 c21
10 1
.names j2 t15 w16 f21 e21
---0 1
000- 1
.names c0 n0 t15 o0 q0 f21
1--10 1
-1-10 1
--010 1
.names m0 s16 i21 a17 j21 k21 l21 h21
------0 1
000---- 1
---000- 1
.names k0 l0 i a i21
0--1 1
-1-1 1
101- 1
.names l4 l2 j21
0- 1
-1 1
.names t15 n0 m0 k21
100 1
.names m0 n0 t15 a17 l4 k2 l21
-----1 1
---01- 1
001--- 1
.names m0 s16 r21 a17 s21 k21 t21 q21
------0 1
000---- 1
---000- 1
.names k0 l0 j b r21
0--1 1
-1-1 1
101- 1
.names l4 m2 s21
0- 1
-1 1
.names m0 n0 t15 a17 l4 l2 t21
-----1 1
---01- 1
001--- 1
.names m0 s16 y21 a17 z21 k21 a22 x21
------0 1
000---- 1
---000- 1
.names k0 l0 k c y21
0--1 1
-1-1 1
101- 1
.names l4 n2 z21
0- 1
-1 1
.names m0 n0 t15 a17 l4 m2 a22
-----1 1
---01- 1
001--- 1
.names m0 s16 f22 a17 g22 k21 h22 e22
------0 1
000---- 1
---000- 1
.names k0 l0 l d f22
0--1 1
-1-1 1
101- 1
.names l4 o2 g22
0- 1
-1 1
.names m0 n0 t15 a17 l4 n2 h22
-----1 1
---01- 1
001--- 1
.names m0 s16 m22 a17 n22 k21 o22 l22
------0 1
000---- 1
---000- 1
.names k0 l0 m e m22
0--1 1
-1-1 1
101- 1
.names l4 p2 n22
0- 1
-1 1
.names m0 n0 t15 a17 l4 o2 o22
-----1 1
---01- 1
001--- 1
.names m0 s16 t22 a17 u22 k21 v22 s22
------0 1
000---- 1
---000- 1
.names k0 l0 n f t22
0--1 1
-1-1 1
101- 1
.names l4 q2 u22
0- 1
-1 1
.names m0 n0 t15 a17 l4 p2 v22
-----1 1
---01- 1
001--- 1
.names m0 s16 a23 a17 b23 k21 c23 z22
------0 1
000---- 1
---000- 1
.names k0 l0 o g a23
0--1 1
-1-1 1
101- 1
.names l4 r2 b23
0- 1
-1 1
.names m0 n0 t15 a17 l4 q2 c23
-----1 1
---01- 1
001--- 1
.names m0 s16 h23 a17 i23 k21 j23 g23
------0 1
000---- 1
---000- 1
.names k0 l0 p h h23
0--1 1
-1-1 1
101- 1
.names l4 s2 i23
0- 1
-1 1
.names m0 n0 t15 a17 l4 r2 j23
-----1 1
---01- 1
001--- 1
.names s2 a17 o23 p23 q23 n23
---00 1
01--0 1
0-0-0 1
-00-0 1
.names l4 t2 o23
11 1
.names n0 m0 w23 p23
1-- 1
-1- 1
--0 1
.names i r23 s23 l4 s2 t23 q23
100--- 1
---010 1
.names t15 n0 m0 r23
0-- 1
-1- 1
--1 1
.names k0 l0 s23
01 1
10 1
.names n0 m0 u23 t23
000 1
.names k0 l0 t15 u23
--0 1
01- 1
10- 1
.names k0 l0 t15 w23
111 1
001 1
.names t2 a17 p23 z23 a24 y23
--0-0 1
01--0 1
0--00 1
-0-00 1
.names l4 u2 z23
11 1
.names j r23 s23 l4 t2 t23 a24
100--- 1
---010 1
.names u2 a17 p23 d24 e24 c24
--0-0 1
01--0 1
0--00 1
-0-00 1
.names l4 v2 d24
11 1
.names k r23 s23 l4 u2 t23 e24
100--- 1
---010 1
.names v2 a17 p23 h24 i24 g24
--0-0 1
01--0 1
0--00 1
-0-00 1
.names l4 w2 h24
11 1
.names l r23 s23 l4 v2 t23 i24
100--- 1
---010 1
.names w2 a17 p23 l24 m24 k24
--0-0 1
01--0 1
0--00 1
-0-00 1
.names l4 x2 l24
11 1
.names m r23 s23 l4 w2 t23 m24
100--- 1
---010 1
.names x2 a17 p23 p24 q24 o24
--0-0 1
01--0 1
0--00 1
-0-00 1
.names l4 y2 p24
11 1
.names n r23 s23 l4 x2 t23 q24
100--- 1
---010 1
.names y2 a17 p23 t24 u24 s24
--0-0 1
01--0 1
0--00 1
-0-00 1
.names l4 z2 t24
11 1
.names o r23 s23 l4 y2 t23 u24
100--- 1
---010 1
.names n0 m0 p w24
1-- 1
-1- 1
--0 1
.names t15 q0 o0 x24
0-- 1
-1- 1
--0 1
.names z2 q0 y24
0- 1
-1 1
.names m0 s16 s23 l4 a17 z24
---10 1
000-- 1
.names l25 q0 o0 a25
0-- 1
-1- 1
--0 1
.names k4 b3 j25 b25
0-- 1
-0- 1
--1 1
.names h1 p25 i1 q25 r25 c25
----0 1
10--- 1
--10- 1
.names a3 q0 d25
0- 1
-1 1
.names h1 f25 i1 g25 h25 e25
0-0-0 1
-00-0 1
0--00 1
-0-00 1
.names j1 i1 o25 f25
1-- 1
-1- 1
--0 1
.names l1 k1 j1 g25
1-- 1
-1- 1
--1 1
.names l1 k1 k4 i25 h25
--0- 1
---0 1
11-- 1
.names l1 j1 j25 k25 i25
0-00 1
-000 1
.names h4 r35 j25
00 1
.names k1 j1 l25 m25 k25
--0- 1
---0 1
11-- 1
.names h1 x0 i1 y0 x34 l25
----0 1
10--- 1
--10- 1
.names l1 k1 n25 m25
1-- 1
-1- 1
--0 1
.names j1 i1 h1 n25
000 1
.names l1 k1 o25
00 1
.names j1 i1 t25 p25
000 1
.names l1 k1 j1 q25
000 1
.names i1 h1 q25 s25 r25
1--0 1
-1-0 1
--00 1
.names j1 k1 l1 s25
11- 1
1-1 1
-11 1
.names l1 k1 t25
1- 1
-1 1
.names k4 c3 j25 w25
0-- 1
-0- 1
--1 1
.names b3 q0 x25
0- 1
-1 1
.names k4 d3 j25 z25
0-- 1
-0- 1
--1 1
.names c3 q0 a26
0- 1
-1 1
.names k4 e3 j25 c26
0-- 1
-0- 1
--1 1
.names d3 q0 d26
0- 1
-1 1
.names k4 f3 j25 f26
0-- 1
-0- 1
--1 1
.names e3 q0 g26
0- 1
-1 1
.names k4 g3 j25 i26
0-- 1
-0- 1
--1 1
.names f3 q0 j26
0- 1
-1 1
.names k4 h3 j25 l26
0-- 1
-0- 1
--1 1
.names g3 q0 m26
0- 1
-1 1
.names k4 i3 j25 o26
0-- 1
-0- 1
--1 1
.names h3 q0 p26
0- 1
-1 1
.names k4 j3 j25 r26
0-- 1
-0- 1
--1 1
.names i3 q0 s26
0- 1
-1 1
.names k4 k3 j25 u26
0-- 1
-0- 1
--1 1
.names j3 q0 v26
0- 1
-1 1
.names k4 l3 j25 x26
0-- 1
-0- 1
--1 1
.names k3 q0 y26
0- 1
-1 1
.names k4 m3 j25 a27
0-- 1
-0- 1
--1 1
.names l3 q0 b27
0- 1
-1 1
.names k4 n3 j25 d27
0-- 1
-0- 1
--1 1
.names m3 q0 e27
0- 1
-1 1
.names k4 o3 j25 g27
0-- 1
-0- 1
--1 1
.names n3 q0 h27
0- 1
-1 1
.names k4 p3 j25 j27
0-- 1
-0- 1
--1 1
.names o3 q0 k27
0- 1
-1 1
.names k4 q3 j25 m27
0-- 1
-0- 1
--1 1
.names p3 q0 n27
0- 1
-1 1
.names k4 r3 j25 p27
0-- 1
-0- 1
--1 1
.names q3 q0 q27
0- 1
-1 1
.names k4 s3 j25 s27
0-- 1
-0- 1
--1 1
.names r3 q0 t27
0- 1
-1 1
.names k4 t3 j25 v27
0-- 1
-0- 1
--1 1
.names s3 q0 w27
0- 1
-1 1
.names k4 u3 j25 y27
0-- 1
-0- 1
--1 1
.names t3 q0 z27
0- 1
-1 1
.names k4 v3 j25 b28
0-- 1
-0- 1
--1 1
.names u3 q0 c28
0- 1
-1 1
.names k4 w3 j25 e28
0-- 1
-0- 1
--1 1
.names v3 q0 f28
0- 1
-1 1
.names q0 o0 h28
1- 1
-0 1
.names k4 j25 l25 i28
0-- 1
-1- 1
--0 1
.names s0 r28 q25 h1 s28 j28
0--1- 1
-0-1- 1
--01- 1
0---0 1
-0--0 1
--0-0 1
.names w3 q0 k28
0- 1
-1 1
.names h1 f25 i1 g25 m28 l28
0-0-0 1
-00-0 1
0--00 1
-0-00 1
.names k4 j25 n28 m28
0-- 1
-1- 1
--0 1
.names l1 k1 l25 p28 n28
0-10 1
-010 1
.names i1 h1 g25 q28 p28
---0 1
000- 1
.names k1 l1 j1 q28
--0 1
00- 1
.names i1 h1 r28
01 1
.names i1 g25 t0 u28 s28
0--0 1
101- 1
.names u0 w0 j1 o25 v28 w28 u28
00---0 1
0-1--0 1
-00--0 1
-0-0-0 1
--10-0 1
0---00 1
--0-00 1
---000 1
.names l1 k1 v28
10 1
.names l1 x28 w28
00 1
.names k1 j1 v0 x28
0-- 1
-1- 1
--0 1
.names l4 x3 a17 b29 a29
---0 1
110- 1
.names n0 t15 o0 q0 b29
1-10 1
-010 1
.names l4 x3 a17 d29
100 1
.names t15 n0 q0 f29 e29
0-00 1
-100 1
.names l4 g29 f29
10 1
.names y3 x3 a17 g29
1-- 1
-1- 1
--1 1
.names x3 a17 m29 i29
000 1
.names t15 n0 q0 k29 j29
0-00 1
-100 1
.names l4 z3 l29 k29
100 1
.names y3 x3 a17 l29
0-- 1
-1- 1
--1 1
.names l4 y3 m29
0- 1
-0 1
.names o29 p29 s16 a4 n0 q29 r29 n29
0--0--0 1
-0-0--0 1
--00--0 1
0---0-0 1
-0--0-0 1
--0-0-0 1
0----00 1
-0---00 1
--0--00 1
.names y3 x3 a17 o29
100 1
.names l4 a4 z3 p29
101 1
.names x3 a17 w29 q29
1-- 1
-1- 1
--0 1
.names m0 a4 t15 s23 t29 r29
11--0 1
1-1-0 1
-10-0 1
-1-00 1
--100 1
.names t15 n0 u29 v29 t29
11-- 1
0-00 1
.names x3 a17 u29
1- 1
-1 1
.names l4 z3 y3 v29
0-- 1
-0- 1
--0 1
.names l4 z3 y3 w29
111 1
.names o0 g30 h30 x29
0-- 1
-0- 1
--0 1
.names x3 a17 q0 y29
1-- 1
-1- 1
--1 1
.names t15 n0 z29
10 1
.names b4 q0 a30
0- 1
-1 1
.names a17 e30 f30 t15 n0 b30
---10 1
000-- 1
.names t15 q0 d30 c30
0-- 1
-1- 1
--0 1
.names o0 n0 m0 d30
101 1
.names y3 x3 e30
0- 1
-1 1
.names l4 a4 z3 f30
0-- 1
-1- 1
--0 1
.names z3 y3 g30
11 1
.names l4 b4 a4 h30
100 1
.names o0 q30 r30 j30
0-- 1
-0- 1
--0 1
.names c4 q0 k30
0- 1
-1 1
.names a17 o30 p30 t15 n0 l30
---10 1
000-- 1
.names t15 q0 n30 m30
0-- 1
-1- 1
--0 1
.names o0 n0 m0 n30
100 1
.names z3 y3 x3 o30
0-- 1
-0- 1
--1 1
.names l4 b4 a4 p30
0-- 1
-1- 1
--1 1
.names a4 z3 y3 q30
011 1
.names l4 c4 b4 r30
100 1
.names g1 q0 t30
1- 1
-1 1
.names j25 l25 w30 d4 x30 u30
---00 1
010-- 1
.names t15 q0 v30
0- 1
-1 1
.names k4 d4 w30
0- 1
-0 1
.names k4 j25 l25 x30
101 1
.names j25 l25 f31 b31
010 1
.names q0 g1 d31 c31
000 1
.names j25 l25 e31 t15 n0 d31
---10 1
010-- 1
.names k4 e4 d4 e31
0-- 1
-1- 1
--1 1
.names k4 d4 f31
0- 1
-1 1
.names j25 l25 m31 h31
010 1
.names q0 g1 j31 i31
000 1
.names l25 k31 l31 t15 n0 j31
---10 1
100-- 1
.names d4 j25 k31
1- 1
-1 1
.names k4 f4 e4 l31
0-- 1
-1- 1
--0 1
.names k4 e4 d4 m31
0-- 1
-0- 1
--1 1
.names o0 v31 w31 n31
0-- 1
-0- 1
--0 1
.names j25 l25 q0 o31
1-- 1
-0- 1
--1 1
.names g4 g1 q0 p31
0-- 1
-1- 1
--1 1
.names l25 k31 u31 t15 n0 q31
---10 1
100-- 1
.names t15 q0 s31 r31
0-- 1
-1- 1
--0 1
.names o0 t31 s31
10 1
.names k0 l0 m0 n0 t31
---1 1
011- 1
101- 1
.names k4 f4 e4 u31
0-- 1
-0- 1
--0 1
.names e4 d4 g1 v31
100 1
.names k4 g4 f4 w31
101 1
.names d32 e32 f32 y31
0-- 1
-0- 1
--0 1
.names h4 g1 q0 z31
0-- 1
-1- 1
--1 1
.names l25 b32 c32 t15 n0 a32
---10 1
100-- 1
.names e4 d4 j25 b32
0-- 1
-1- 1
--1 1
.names k4 g4 f4 c32
0-- 1
-1- 1
--0 1
.names g1 j25 d32
00 1
.names f4 e4 d4 e32
110 1
.names k4 h4 g4 f32
100 1
.names i4 n1 j32 i32
--0 1
11- 1
.names a17 q0 o0 j32
001 1
.names q0 o0 y32 k32
1-- 1
-0- 1
--0 1
.names g1 j25 l25 l32
1-- 1
-1- 1
--0 1
.names j4 g1 q0 m32
0-- 1
-1- 1
--1 1
.names h1 o32 p32 q32 r32 n32
00--0 1
0-0-0 1
1--00 1
-0-00 1
--000 1
.names j1 i1 o32
00 1
.names v0 w0 k1 l1 p32
-00- 1
0--0 1
--00 1
.names i1 s0 q25 q32
1-- 1
-0- 1
--0 1
.names h1 u0 s32 i1 t32 u32 r32
-----0 1
---10- 1
000--- 1
.names l1 k1 i1 s32
1-- 1
-1- 1
--1 1
.names j1 t0 t25 t32
010 1
.names n4 k4 w32 u32
110 1
.names l1 k1 l25 x32 w32
--0- 1
---0 1
11-- 1
.names j1 k1 l1 j25 x32
0--0 1
-000 1
.names n4 k4 j4 y32
110 1
.names o0 b33 q30 a33
0-- 1
-0- 1
--0 1
.names m1 q0 b33
10 1
.names a17 q0 o0 c33
1-- 1
-1- 1
--0 1
.names h1 x0 n4 b35 d33
--0- 1
---0 1
10-- 1
.names l25 d33 q0 o0 e33
--1- 1
---0 1
01-- 1
.names l0 d3 l3 h33
00- 1
1-0 1
-00 1
.names l0 d3 l3 i33
10- 1
0-0 1
-00 1
.names t3 m0 j33
00 1
.names l0 c3 k3 k33
00- 1
1-0 1
-00 1
.names l0 c3 k3 l33
10- 1
0-0 1
-00 1
.names s3 m0 m33
00 1
.names l0 b3 j3 n33
00- 1
1-0 1
-00 1
.names l0 b3 j3 o33
10- 1
0-0 1
-00 1
.names r3 m0 p33
00 1
.names l0 a3 i3 q33
00- 1
1-0 1
-00 1
.names l0 a3 i3 r33
10- 1
0-0 1
-00 1
.names q3 m0 s33
00 1
.names k0 l0 m0 e3 t33
--0- 1
11-0 1
00-0 1
.names k0 l0 m0 f3 u33
--0- 1
11-0 1
00-0 1
.names k0 l0 m0 g3 v33
--0- 1
11-0 1
00-0 1
.names k0 l0 m0 h3 w33
--0- 1
11-0 1
00-0 1
.names k0 l0 m0 i3 x33
--0- 1
11-0 1
00-0 1
.names k0 l0 m0 j3 y33
--0- 1
11-0 1
00-0 1
.names k0 l0 m0 k3 z33
--0- 1
11-0 1
00-0 1
.names k0 l0 m0 l3 a34
--0- 1
11-0 1
00-0 1
.names k4 h1 n0 b34
010 1
.names k4 i1 n0 c34
010 1
.names k4 j1 n0 d34
010 1
.names k4 k1 n0 e34
010 1
.names k4 l1 n0 f34
010 1
.names c4 b4 a4 g34
000 1
.names f1 i4 h34
01 1
10 1
.names z3 y3 g34 i34
0-- 1
-0- 1
--0 1
.names k4 m1 h1 k34
011 1
.names k4 m1 i1 l34
011 1
.names k4 m1 j1 m34
011 1
.names k4 m1 k1 n34
011 1
.names k4 m1 l1 o34
011 1
.names l4 h1 p34
11 1
.names l4 i1 q34
11 1
.names l4 j1 r34
11 1
.names l4 k1 s34
11 1
.names l4 l1 t34
11 1
.names y3 x3 w34 v34
0-- 1
-0- 1
--0 1
.names a4 z3 w34
01 1
.names z0 j1 a1 k1 b1 l1 x34
1-1-1- 1
-01-1- 1
1--01- 1
-0-01- 1
1-1--0 1
-01--0 1
1--0-0 1
-0-0-0 1
.names i1 y0 j1 z0 d35 b35
0-0-0 1
-10-0 1
0--10 1
-1-10 1
.names k1 a1 l1 b1 e35 d35
----0 1
10--- 1
--10- 1
.names h4 f35 e35
1- 1
-0 1
.names g4 f4 e4 f35
011 1
.names f4 e4 o35 g35
110 1
.names j1 k1 z0 a1 i35 j35 h35
----00 1
00---0 1
-01--0 1
0--1-0 1
--11-0 1
.names f4 e4 n35 i35
0-- 1
-0- 1
--0 1
.names b1 n4 l1 i35 k35 j35
-0--0 1
---00 1
0-1-0 1
.names h4 g4 l35 k35
000 1
.names d4 g1 m35 l35
0-- 1
-1- 1
--0 1
.names f4 e4 m35
11 1
.names h4 g4 n35
00 1
.names h4 g4 o35
1- 1
-1 1
.names j1 i1 h1 p35
1-- 1
-1- 1
--1 1
.names y3 x3 w34 q35
0-- 1
-1- 1
--0 1
.names g4 f4 e4 r35
1-- 1
-0- 1
--0 1
.names u3 t4
1 1
.names v3 u4
1 1
.names m4 m5
1 1
.names k4 m6
1 1
.end
.model i10
.inputs V32(0) V32(1) V32(2) V32(3) V56(0) V289(0) V10(0) V13(0) \
V35(0) V203(0) V288(6) V288(7) V248(0) V249(0) V62(0) V59(0) \
V174(0) V215(0) V66(0) V70(0) V43(0) V214(0) V37(0) V271(0) V40(0) \
V45(0) V149(7) V149(6) V149(5) V149(4) V1(0) V7(0) V34(0) V243(0) \
V244(0) V245(0) V246(0) V247(0) V293(0) V302(0) V270(0) V269(0) \
V274(0) V202(0) V275(0) V257(7) V257(5) V257(3) V257(1) V257(2) \
V257(4) V257(6) V9(0) V149(0) V149(1) V149(2) V149(3) V169(1) \
V165(0) V165(2) V165(4) V165(5) V165(6) V165(7) V165(1) V88(2) \
V88(3) V55(0) V169(0) V52(0) V5(0) V6(0) V12(0) V11(0) V4(0) \
V165(3) V51(0) V65(0) V290(0) V279(0) V280(0) V288(4) V288(2) \
V288(0) V258(0) V229(5) V229(4) V229(3) V229(2) V229(1) V229(0) \
V223(5) V223(4) V223(3) V223(2) V223(1) V223(0) V189(5) V189(4) \
V189(3) V189(2) V189(1) V189(0) V183(5) V183(4) V183(3) V183(2) \
V183(1) V183(0) V239(4) V239(3) V239(2) V239(1) V239(0) V234(4) \
V234(3) V234(2) V234(1) V234(0) V199(4) V199(3) V199(2) V199(1) \
V199(0) V194(4) V194(3) V194(2) V194(1) V194(0) V257(0) V32(8) \
V32(7) V32(6) V32(5) V32(4) V32(11) V32(10) V32(9) V88(1) V88(0) \
V84(5) V84(4) V84(3) V84(2) V84(1) V84(0) V78(5) V78(4) V2(0) V3(0) \
V14(0) V213(0) V213(5) V213(4) V213(3) V213(2) V213(1) V268(5) \
V268(3) V268(1) V268(2) V268(4) V8(0) V60(0) V53(0) V57(0) V109(0) \
V277(0) V278(0) V259(0) V260(0) V67(0) V68(0) V69(0) V216(0) \
V175(0) V177(0) V172(0) V171(0) V50(0) V63(0) V71(0) V292(0) \
V291(0) V91(0) V91(1) V294(0) V207(0) V295(0) V204(0) V205(0) \
V261(0) V262(0) V100(0) V100(5) V100(4) V100(3) V100(2) V100(1) \
V240(0) V242(0) V241(0) V33(0) V16(0) V15(0) V101(0) V268(0) \
V288(1) V288(3) V288(5) V301(0) V108(0) V108(1) V108(2) V108(3) \
V108(4) V108(5) V124(5) V124(4) V124(3) V124(2) V124(1) V124(0) \
V132(7) V132(6) V132(5) V132(4) V132(3) V132(2) V132(1) V132(0) \
V118(5) V118(4) V118(3) V118(2) V118(1) V118(0) V118(7) V118(6) \
V46(0) V48(0) V102(0) V110(0) V134(1) V134(0) V272(0) V78(2) V78(3) \
V39(0) V38(0) V42(0) V44(0) V41(0) V78(1) V78(0) V94(0) V94(1)
.outputs V321(2) V356 V357 V373 V375(0) V377 V393(0) V398(0) V410(0) \
V423(0) V432 V435(0) V500(0) V508(0) V511(0) V512 V527 V537 V538 \
V539 V540 V541 V542 V543 V544 V545 V546 V547 V548 V572(9) V572(8) \
V572(7) V572(6) V572(5) V572(4) V572(3) V572(2) V572(1) V572(0) \
V585(0) V587 V591(0) V597(0) V603(0) V609(0) V620 V621 V630 V634(0) \
V640(0) V657 V707 V763 V775 V778 V779 V780 V781 V782 V783 V784 V787 \
V789 V798(0) V801 V802(0) V821(0) V826(0) V966 V986 V1213(11) \
V1213(10) V1213(9) V1213(8) V1213(7) V1213(6) V1213(5) V1213(4) \
V1213(3) V1213(2) V1213(1) V1213(0) V1243(9) V1243(8) V1243(7) \
V1243(6) V1243(5) V1243(4) V1243(3) V1243(2) V1243(1) V1243(0) \
V1256 V1257 V1258 V1259 V1260 V1261 V1262 V1263 V1264 V1265 V1266 \
V1267 V1274(0) V1281(0) V1297(4) V1297(3) V1297(2) V1297(1) \
V1297(0) V1365 V1375 V1378 V1380 V1382 V1384 V1386 V1387 V1392(0) \
V1423 V1426 V1428 V1429 V1431 V1432 V1439(0) V1440(0) V1451(0) \
V1459(0) V1467(0) V1470 V1480(0) V1481(0) V1492(0) V1495(0) \
V1512(3) V1512(2) V1512(1) V1536(0) V1537 V1539 V1552(1) V1552(0) \
V1613(0) V1613(1) V1620(0) V1629(0) V1645(0) V1652(0) V1669 \
V1671(0) V1679(0) V1693(0) V1709(4) V1709(3) V1709(2) V1709(1) \
V1709(0) V1717(0) V1719 V1726(0) V1736 V1741(0) V1745(0) V1757(0) \
V1758(0) V1759(0) V1760(0) V1771(1) V1771(0) V1781(1) V1781(0) \
V1829(9) V1829(8) V1829(7) V1829(6) V1829(5) V1829(4) V1829(3) \
V1829(2) V1829(1) V1829(0) V1832 V1833(0) V1863(0) V1864(0) \
V1896(0) V1897(0) V1898(0) V1899(0) V1900(0) V1901(0) V1921(5) \
V1921(4) V1921(3) V1921(2) V1921(1) V1921(0) V1953(1) V1953(7) \
V1953(6) V1953(5) V1953(4) V1953(3) V1953(2) V1953(0) V1960(1) \
V1960(0) V1968(0) V1992(1) V1992(0) V650 V651 V652 V653 V654 V655 \
V656 V1370 V1371 V1372 V1373 V1374
.names V1243(0) V321(2)
0 1
.names V451 V322
0 1
.names V322 V32(0) V323
11 1
.names V446 V327
0 1
.names V324 V328
0 1
.names V328 V32(1) V327 V329
111 1
.names V441 V330
0 1
.names V325 V331
0 1
.names V331 V330 V32(2) V328 V332
1111 1
.names V437 V333
0 1
.names V326 V334
0 1
.names V334 V328 V32(3) V333 V331 V335
11111 1
.names V335 V329 V323 V332 V336(0)
---1 1
--1- 1
-1-- 1
1--- 1
.names V1476 V337
0 1
.names V695 V338
0 1
.names V338 V56(0) V744 V337 V339
1111 1
.names V802(0) V721 V340
11 1
.names V2011(0) V802(0) V341
11 1
.names V339 V342(0)
0 1
.names V802(0) V343
0 1
.names V289(0) V344
0 1
.names V56(0) V759(0) V345
11 1
.names V345 V346(0)
0 1
.names V434(0) V1685(0) V347
11 1
.names V1685(0) V937(0) V947(0) V348
111 1
.names V1685(0) V917(0) V927(0) V349
111 1
.names V1685(0) V897(0) V907(0) V350
111 1
.names V1685(0) V877(0) V887(0) V351
111 1
.names V1685(0) V857(0) V867(0) V352
111 1
.names V1685(0) V837(0) V847(0) V353
111 1
.names V1685(0) V958(0) V959(0) V354
111 1
.names V1685(0) V956(0) V957(0) V355
111 1
.names V347 V917(0) V877(0) V837(0) V956(0) V958(0) V857(0) V897(0) \
V937(0) V356
111111111 1
.names V1685(0) V927(0) V887(0) V847(0) V957(0) V959(0) V867(0) \
V907(0) V947(0) V357
111111111 1
.names V947(0) V927(0) V907(0) V887(0) V877(0) V897(0) V917(0) \
V937(0) V358
11111111 1
.names V947(0) V927(0) V867(0) V847(0) V837(0) V857(0) V917(0) \
V937(0) V359
11111111 1
.names V947(0) V907(0) V867(0) V959(0) V958(0) V857(0) V897(0) \
V937(0) V360
11111111 1
.names V348 V361(0)
0 1
.names V349 V362(0)
0 1
.names V350 V363(0)
0 1
.names V351 V364(0)
0 1
.names V352 V365(0)
0 1
.names V353 V366(0)
0 1
.names V354 V367(0)
0 1
.names V355 V368(0)
0 1
.names V358 V369(0)
0 1
.names V359 V370(0)
0 1
.names V360 V371(0)
0 1
.names V658(0) V10(0) V372
11 1
.names V13(0) V10(0) V373
11 1
.names V372 V374(0)
0 1
.names V789 V1263 V1259 V1387 V780 V778 V787 V1431 V1258 V1425 V1423 \
V375(0)
----------1 1
---------1- 1
--------1-- 1
-------1--- 1
------1---- 1
-----1----- 1
----1------ 1
---1------- 1
--1-------- 1
-1--------- 1
1---------- 1
.names V35(0) V697 V376(0)
-1 1
1- 1
.names V203(0) V376(0) V377
11 1
.names V701 V766 V378(0)
-1 1
1- 1
.names V802(0) V378(0) V379
11 1
.names V721 V379 V380(0)
-1 1
1- 1
.names V380(0) V381(0)
0 1
.names V741 V740 V382(0)
-1 1
1- 1
.names V362(0) V361(0) V383(0)
-1 1
1- 1
.names V364(0) V363(0) V384(0)
-1 1
1- 1
.names V366(0) V365(0) V385(0)
-1 1
1- 1
.names V368(0) V367(0) V386(0)
-1 1
1- 1
.names V383(0) V1838 V387
11 1
.names V384(0) V1839 V388
11 1
.names V385(0) V1840 V389
11 1
.names V386(0) V288(6) V288(7) V390
111 1
.names V390 V388 V387 V389 V391(0)
---1 1
--1- 1
-1-- 1
1--- 1
.names V394(0) V391(0) V1243(8) V1243(7) V1243(9) V1719 V392
111111 1
.names V1572 V392 V1571 V393(0)
--1 1
-1- 1
1-- 1
.names V248(0) V394(0)
0 1
.names V1719 V248(0) V395
11 1
.names V423(0) V395 V396(0)
-1 1
1- 1
.names V431 V426 V396(0) V430 V1577 V1575 V1573 V1574 V1576 V1578 \
V397
1111111111 1
.names V397 V398(0)
0 1
.names V249(0) V399(0)
0 1
.names V733(0) V730(0) V400
11 1
.names V687 V729(0) V401
11 1
.names V62(0) V401 V402
11 1
.names V1757(0) V403
0 1
.names V728 V400 V404(0)
-1 1
1- 1
.names V731(0) V515 V734 V405(0)
--1 1
-1- 1
1-- 1
.names V56(0) V404(0) V406
11 1
.names V59(0) V405(0) V407
11 1
.names V402 V406 V407 V408(0)
--1 1
-1- 1
1-- 1
.names V408(0) V338 V403 V409
111 1
.names V409 V410(0)
0 1
.names V729(0) V687 V411
11 1
.names V731(0) V1681(0) V710 V729(0) V721 V412(0)
----1 1
---1- 1
--1-- 1
-1--- 1
1---- 1
.names V404(0) V411 V502 V174(0) V413(0)
---1 1
--1- 1
-1-- 1
1--- 1
.names V405(0) V1681(0) V414(0)
-1 1
1- 1
.names V802(0) V412(0) V415
11 1
.names V56(0) V413(0) V416
11 1
.names V59(0) V414(0) V417
11 1
.names V215(0) V418
0 1
.names V338 V66(0) V763 V418 V419
1111 1
.names V70(0) V1681(0) V420
11 1
.names V1446(0) V2011(0) V421
11 1
.names V802(0) V421 V422
11 1
.names V422 V1719 V419 V416 V415 V417 V402 V420 V423(0)
-------1 1
------1- 1
-----1-- 1
----1--- 1
---1---- 1
--1----- 1
-1------ 1
1------- 1
.names V687 V763 V424(0)
-1 1
1- 1
.names V802(0) V424(0) V425
11 1
.names V425 V426
0 1
.names V1643 V427
0 1
.names V1646 V428
0 1
.names V1491 V429
0 1
.names V43(0) V430
0 1
.names V214(0) V431
0 1
.names V431 V430 V1685(0) V429 V427 V403 V426 V337 V428 V423(0) \
V1577 V1575 V1573 V1574 V1576 V1578 V432
1111111111111111 1
.names V803(0) V749 V433
11 1
.names V433 V434(0)
0 1
.names V630 V432 V435(0)
-1 1
1- 1
.names V37(0) V436(0)
0 1
.names V1850 V1298 V438
11 1
.names V1852 V438 V442
11 1
.names V1302 V438 V443
11 1
.names V1302 V1852 V444
11 1
.names V444 V442 V443 V445(0)
--1 1
-1- 1
1-- 1
.names V1838 V445(0) V447
11 1
.names V1307 V445(0) V448
11 1
.names V1307 V1838 V449
11 1
.names V449 V447 V448 V450(0)
--1 1
-1- 1
1-- 1
.names V330 V333 V453
11 1
.names V327 V453 V455
11 1
.names V333 V457
0 1
.names V452 V458
0 1
.names V454 V459
0 1
.names V458 V457 V461
11 1
.names V459 V461 V463
11 1
.names V451 V1852 V2088 V465
111 1
.names V464 V2089 V1862(0) V466
111 1
.names V465 V466 V467(0)
-1 1
1- 1
.names V446 V1852 V2090 V468
111 1
.names V462 V2091 V1862(0) V469
111 1
.names V468 V469 V470(0)
-1 1
1- 1
.names V441 V1852 V2092 V471
111 1
.names V460 V2093 V1862(0) V472
111 1
.names V471 V472 V473(0)
-1 1
1- 1
.names V437 V1852 V2094 V474
111 1
.names V457 V2095 V1862(0) V475
111 1
.names V474 V475 V476(0)
-1 1
1- 1
.names V476(0) V477
0 1
.names V473(0) V478
0 1
.names V470(0) V479
0 1
.names V478 V477 V481
11 1
.names V479 V481 V483
11 1
.names V451 V1850 V2096 V485
111 1
.names V484 V2097 V1861(0) V486
111 1
.names V485 V486 V487(0)
-1 1
1- 1
.names V446 V1850 V2098 V488
111 1
.names V482 V2099 V1861(0) V489
111 1
.names V488 V489 V490(0)
-1 1
1- 1
.names V441 V1850 V2100 V491
111 1
.names V480 V2101 V1861(0) V492
111 1
.names V491 V492 V493(0)
-1 1
1- 1
.names V437 V1850 V2102 V494
111 1
.names V477 V2103 V1861(0) V495
111 1
.names V494 V495 V496(0)
-1 1
1- 1
.names V271(0) V497
0 1
.names V1630(0) V498
0 1
.names V498 V497 V499
11 1
.names V499 V500(0)
0 1
.names V733(0) V710 V501
11 1
.names V687 V710 V502
11 1
.names V611 V769 V501 V721 V727 V503(0)
----1 1
---1- 1
--1-- 1
-1--- 1
1---- 1
.names V741 V740 V504(0)
-1 1
1- 1
.names V56(0) V503(0) V505
11 1
.names V56(0) V504(0) V506
11 1
.names V502 V59(0) V507
11 1
.names V507 V505 V613 V506 V508(0)
---1 1
--1- 1
-1-- 1
1--- 1
.names V509 V510(0)
0 1
.names V529 V40(0) V511(0)
-1 1
1- 1
.names V532(0) V510(0) V512
11 1
.names V56(0) V400 V513
11 1
.names V728 V56(0) V514
11 1
.names V687 V730(0) V515
11 1
.names V59(0) V515 V516
11 1
.names V733(0) V59(0) V729(0) V517
111 1
.names V731(0) V59(0) V518
11 1
.names V513 V519
0 1
.names V514 V520
0 1
.names V516 V521
0 1
.names V517 V522
0 1
.names V518 V523
0 1
.names V402 V524
0 1
.names V524 V522 V520 V519 V521 V523 V525
111111 1
.names V525 V526
0 1
.names V428 V431 V526 V338 V430 V527
11111 1
.names V43(0) V528(0)
0 1
.names V45(0) V528(0) V529
11 1
.names V530 V532(0)
0 1
.names V531 V533(0)
0 1
.names V56(0) V701 V149(7) V534
111 1
.names V1646 V701 V535
11 1
.names V535 V534 V536(0)
-1 1
1- 1
.names V1213(0) V769 V537
11 1
.names V1213(1) V769 V538
11 1
.names V1213(2) V769 V539
11 1
.names V1213(3) V769 V540
11 1
.names V1213(4) V769 V541
11 1
.names V1213(5) V769 V542
11 1
.names V1213(6) V769 V543
11 1
.names V1213(7) V769 V544
11 1
.names V1213(8) V769 V545
11 1
.names V1213(9) V769 V546
11 1
.names V1213(10) V769 V547
11 1
.names V1213(11) V769 V548
11 1
.names V149(7) V802(0) V727 V2105 V2104 V549
11111 1
.names V149(6) V802(0) V727 V2105 V2104 V550
11111 1
.names V149(5) V802(0) V727 V2105 V2104 V551
11111 1
.names V149(4) V802(0) V727 V2105 V2104 V552
11111 1
.names V1884 V2107 V2019(0) V2106 V553
1111 1
.names V573 V553 V572(9)
-1 1
1- 1
.names V1883 V2107 V2019(0) V2106 V555
1111 1
.names V574 V555 V572(8)
-1 1
1- 1
.names V1882 V2107 V2019(0) V2106 V557
1111 1
.names V575 V557 V572(7)
-1 1
1- 1
.names V1881 V2107 V2019(0) V2106 V559
1111 1
.names V576 V559 V572(6)
-1 1
1- 1
.names V1880 V2107 V2019(0) V2106 V561
1111 1
.names V577 V561 V572(5)
-1 1
1- 1
.names V1879 V2107 V2019(0) V2106 V563
1111 1
.names V578 V563 V572(4)
-1 1
1- 1
.names V1878 V2107 V2019(0) V2106 V565
1111 1
.names V549 V565 V579 V572(3)
--1 1
-1- 1
1-- 1
.names V1877 V2107 V2019(0) V2106 V567
1111 1
.names V550 V567 V580 V572(2)
--1 1
-1- 1
1-- 1
.names V1876 V2107 V2019(0) V2106 V569
1111 1
.names V551 V569 V581 V572(1)
--1 1
-1- 1
1-- 1
.names V1875 V2107 V2019(0) V2106 V571
1111 1
.names V552 V571 V582 V572(0)
--1 1
-1- 1
1-- 1
.names V1243(9) V802(0) V769 V2108 V2109 V573
11111 1
.names V1243(8) V802(0) V769 V2108 V2109 V574
11111 1
.names V1243(7) V802(0) V769 V2108 V2109 V575
11111 1
.names V1243(6) V802(0) V769 V2108 V2109 V576
11111 1
.names V1243(5) V802(0) V769 V2108 V2109 V577
11111 1
.names V1243(4) V802(0) V769 V2108 V2109 V578
11111 1
.names V1243(3) V802(0) V769 V2108 V2109 V579
11111 1
.names V1243(2) V802(0) V769 V2108 V2109 V580
11111 1
.names V1243(1) V802(0) V769 V2108 V2109 V581
11111 1
.names V1243(0) V802(0) V769 V2108 V2109 V582
11111 1
.names V1(0) V583(0)
0 1
.names V7(0) V584(0)
0 1
.names V34(0) V585(0)
0 1
.names V341 V586
0 1
.names V588(0) V586 V587
11 1
.names V243(0) V588(0)
0 1
.names V592(0) V243(0) V586 V589
111 1
.names V244(0) V588(0) V586 V590
111 1
.names V590 V589 V591(0)
-1 1
1- 1
.names V244(0) V592(0)
0 1
.names V243(0) V244(0) V593
11 1
.names V598(0) V593 V586 V594
111 1
.names V593 V595
0 1
.names V245(0) V595 V586 V596
111 1
.names V596 V594 V597(0)
-1 1
1- 1
.names V245(0) V598(0)
0 1
.names V593 V245(0) V599
11 1
.names V604(0) V599 V586 V600
111 1
.names V599 V601
0 1
.names V246(0) V601 V586 V602
111 1
.names V602 V600 V603(0)
-1 1
1- 1
.names V246(0) V604(0)
0 1
.names V599 V246(0) V605
11 1
.names V610(0) V605 V586 V606
111 1
.names V605 V607
0 1
.names V247(0) V607 V586 V608
111 1
.names V608 V606 V609(0)
-1 1
1- 1
.names V247(0) V610(0)
0 1
.names V337 V739 V611
11 1
.names V502 V611 V612(0)
-1 1
1- 1
.names V741 V62(0) V613
11 1
.names V428 V338 V505 V1481(0) V614
1111 1
.names V1481(0) V59(0) V612(0) V338 V615
1111 1
.names V1481(0) V62(0) V741 V338 V616
1111 1
.names V614 V617
0 1
.names V615 V618
0 1
.names V616 V619
0 1
.names V619 V617 V618 V620
111 1
.names V533(0) V293(0) V621
11 1
.names V533(0) V622(0)
0 1
.names V745 V62(0) V623
11 1
.names V302(0) V624
0 1
.names V623 V625
0 1
.names V1445 V1647(0) V802(0) V626
111 1
.names V59(0) V1445 V1737 V627
111 1
.names V745 V56(0) V628
11 1
.names V628 V627 V626 V270(0) V629(0)
---1 1
--1- 1
-1-- 1
1--- 1
.names V629(0) V624 V625 V630
111 1
.names V271(0) V639(0) V269(0) V631
111 1
.names V641(0) V639(0) V274(0) V632
111 1
.names V632 V631 V633(0)
-1 1
1- 1
.names V633(0) V634(0)
0 1
.names V202(0) V635
0 1
.names V642(0) V636
0 1
.names V636 V635 V497 V637
111 1
.names V639(0) V641(0) V638
11 1
.names V637 V639(0)
0 1
.names V638 V640(0)
0 1
.names V271(0) V641(0)
0 1
.names V274(0) V642(0)
0 1
.names V275(0) V643
0 1
.names V257(7) V257(5) V257(3) V257(1) V257(2) V257(4) V257(6) V644
1111111 1
.names V257(7) V257(5) V257(3) V257(2) V257(4) V257(6) V645
111111 1
.names V257(7) V257(5) V257(3) V257(4) V257(6) V646
11111 1
.names V257(7) V257(5) V257(4) V257(6) V647
1111 1
.names V257(7) V257(5) V257(6) V648
111 1
.names V257(7) V257(6) V649
11 1
.names V257(7) V657
0 1
.names V13(0) V658(0)
0 1
.names V9(0) V659(0)
0 1
.names V149(0) V667(0)
0 1
.names V149(1) V667(1)
0 1
.names V149(2) V667(2)
0 1
.names V149(3) V667(3)
0 1
.names V149(4) V667(4)
0 1
.names V149(5) V667(5)
0 1
.names V149(6) V667(6)
0 1
.names V149(7) V667(7)
0 1
.names V149(3) V672(3)
0 1
.names V149(4) V672(4)
0 1
.names V149(5) V672(5)
0 1
.names V149(6) V672(6)
0 1
.names V149(7) V672(7)
0 1
.names V667(4) V676(4)
0 1
.names V667(5) V676(5)
0 1
.names V667(6) V676(6)
0 1
.names V667(7) V676(7)
0 1
.names V149(3) V681(3)
0 1
.names V149(4) V681(4)
0 1
.names V149(5) V681(5)
0 1
.names V149(6) V681(6)
0 1
.names V149(7) V681(7)
0 1
.names V667(3) V686(3)
0 1
.names V667(4) V686(4)
0 1
.names V667(5) V686(5)
0 1
.names V667(6) V686(6)
0 1
.names V667(7) V686(7)
0 1
.names V1395(0) V169(1) V687
11 1
.names V687 V688
0 1
.names V165(0) V694(0)
0 1
.names V165(2) V694(2)
0 1
.names V165(4) V694(4)
0 1
.names V165(5) V694(5)
0 1
.names V165(6) V694(6)
0 1
.names V165(7) V694(7)
0 1
.names V694(2) V165(0) V165(1) V695
111 1
.names V1747(0) V695 V165(7) V696
111 1
.names V203(0) V165(1) V694(0) V165(2) V697
1111 1
.names V694(7) V695 V698
11 1
.names V698 V699(0)
0 1
.names V667(2) V667(0) V667(1) V700
111 1
.names V667(1) V149(2) V667(0) V701
111 1
.names V667(2) V149(1) V667(0) V702
111 1
.names V667(1) V149(0) V149(2) V703
111 1
.names V149(2) V149(0) V149(1) V704
111 1
.names V149(2) V705
0 1
.names V705 V149(0) V149(1) V706
111 1
.names V667(3) V766 V707
11 1
.names V88(2) V709(0)
0 1
.names V88(3) V709(1)
0 1
.names V149(3) V766 V710
11 1
.names V667(5) V707 V149(4) V711
111 1
.names V149(5) V707 V149(4) V712
111 1
.names V667(5) V667(4) V707 V709(0) V88(3) V713
11111 1
.names V667(5) V667(4) V707 V88(2) V709(1) V714
11111 1
.names V667(5) V667(4) V707 V88(2) V88(3) V715
11111 1
.names V667(4) V667(3) V766 V149(5) V709(0) V709(1) V716
111111 1
.names V667(4) V667(3) V766 V149(5) V709(0) V88(3) V717
111111 1
.names V667(4) V667(3) V766 V149(5) V88(2) V709(1) V718
111111 1
.names V667(5) V667(4) V707 V709(0) V709(1) V719
11111 1
.names V667(4) V667(3) V766 V149(5) V88(2) V88(3) V720
111111 1
.names V149(3) V701 V721
11 1
.names V667(5) V667(3) V701 V667(4) V722
1111 1
.names V149(5) V667(3) V701 V667(4) V723
1111 1
.names V667(5) V667(3) V701 V149(4) V724
1111 1
.names V149(4) V667(0) V149(1) V149(2) V667(3) V725
11111 1
.names V667(4) V667(0) V149(1) V149(2) V667(3) V726
11111 1
.names V149(3) V149(2) V149(1) V667(0) V727
1111 1
.names V149(5) V667(3) V701 V149(4) V728
1111 1
.names V718 V716 V714 V712 V711 V713 V715 V717 V729(0)
-------1 1
------1- 1
-----1-- 1
----1--- 1
---1---- 1
--1----- 1
-1------ 1
1------- 1
.names V720 V719 V730(0)
-1 1
1- 1
.names V724 V722 V723 V731(0)
--1 1
-1- 1
1-- 1
.names V687 V732
0 1
.names V688 V732 V733(0)
-1 1
1- 1
.names V729(0) V733(0) V734
11 1
.names V676(7) V672(5) V672(3) V702 V672(4) V672(6) V735
111111 1
.names V672(7) V672(5) V672(3) V702 V672(4) V676(6) V736
111111 1
.names V676(7) V672(5) V672(3) V702 V672(4) V676(6) V737
111111 1
.names V672(7) V676(5) V672(3) V702 V672(4) V672(6) V738
111111 1
.names V676(7) V676(5) V672(3) V702 V672(4) V672(6) V739
111111 1
.names V672(7) V676(5) V672(3) V702 V672(4) V676(6) V740
111111 1
.names V676(7) V676(5) V672(3) V702 V672(4) V676(6) V741
111111 1
.names V672(7) V672(5) V672(3) V702 V676(4) V672(6) V742
111111 1
.names V686(7) V681(5) V681(3) V702 V686(4) V681(6) V743
111111 1
.names V681(7) V681(5) V681(3) V702 V686(4) V686(6) V744
111111 1
.names V686(7) V681(5) V681(3) V702 V686(4) V686(6) V745
111111 1
.names V686(7) V686(5) V681(3) V702 V686(4) V681(6) V746
111111 1
.names V681(7) V686(5) V681(3) V702 V686(4) V686(6) V747
111111 1
.names V686(7) V686(5) V681(3) V702 V686(4) V686(6) V748
111111 1
.names V681(7) V681(5) V686(3) V702 V681(4) V681(6) V749
111111 1
.names V686(7) V681(5) V686(3) V702 V681(4) V681(6) V750
111111 1
.names V681(7) V681(5) V686(3) V702 V681(4) V686(6) V751
111111 1
.names V750 V752
0 1
.names V751 V753
0 1
.names V749 V754
0 1
.names V754 V752 V702 V686(3) V753 V755
11111 1
.names V681(7) V681(5) V681(3) V702 V681(4) V681(6) V756
111111 1
.names V681(7) V681(3) V686(4) V702 V686(5) V681(6) V757
111111 1
.names V757 V755 V756 V758(0)
--1 1
-1- 1
1-- 1
.names V748 V747 V759(0)
-1 1
1- 1
.names V55(0) V760
0 1
.names V760 V759(0) V343 V761
111 1
.names V725 V700 V761 V762(0)
--1 1
-1- 1
1-- 1
.names V169(0) V762(0) V1618 V1617 V1619 V763
11111 1
.names V763 V764(0)
0 1
.names V174(0) V765(0)
0 1
.names V700 V765(0) V766
11 1
.names V747 V765(0) V767
11 1
.names V748 V765(0) V768
11 1
.names V725 V765(0) V769
11 1
.names V758(0) V770
0 1
.names V703 V771
0 1
.names V706 V772
0 1
.names V704 V773
0 1
.names V773 V771 V770 V772 V774
1111 1
.names V70(0) V1674(0) V763 V964 V498 V775
11111 1
.names V765(0) V345 V776
11 1
.names V776 V52(0) V777(0)
-1 1
1- 1
.names V5(0) V9(0) V778
11 1
.names V372 V6(0) V779
11 1
.names V9(0) V6(0) V780
11 1
.names V777(0) V12(0) V6(0) V781
111 1
.names V372 V7(0) V782
11 1
.names V5(0) V11(0) V783
11 1
.names V7(0) V11(0) V784
11 1
.names V584(0) V785
0 1
.names V659(0) V786
0 1
.names V786 V785 V787
11 1
.names V13(0) V1565(0) V788(0)
-1 1
1- 1
.names V9(0) V788(0) V4(0) V789
111 1
.names V1864(0) V758(0) V790
11 1
.names V790 V791
0 1
.names V774 V792
0 1
.names V1681(0) V793
0 1
.names V793 V791 V792 V794
111 1
.names V794 V795
0 1
.names V817(0) V796
0 1
.names V498 V795 V796 V797
111 1
.names V797 V798(0)
0 1
.names V70(0) V694(5) V165(3) V694(4) V694(6) V799
11111 1
.names V759(0) V800(0)
0 1
.names V800(0) V799 V801
11 1
.names V52(0) V51(0) V802(0)
-1 1
1- 1
.names V802(0) V803(0)
0 1
.names V740 V804
0 1
.names V739 V805
0 1
.names V805 V804 V806
11 1
.names V696 V302(0) V698 V2002(0) V807(0)
---1 1
--1- 1
-1-- 1
1--- 1
.names V65(0) V741 V808
11 1
.names V806 V809
0 1
.names V1275(0) V810
0 1
.names V810 V809 V811
11 1
.names V981 V808 V811 V812(0)
--1 1
-1- 1
1-- 1
.names V697 V807(0) V813(0)
-1 1
1- 1
.names V699(0) V812(0) V1746(0) V814
111 1
.names V1737 V813(0) V815
11 1
.names V338 V290(0) V816
11 1
.names V816 V302(0) V289(0) V814 V815 V214(0) V696 V817(0)
------1 1
-----1- 1
----1-- 1
---1--- 1
--1---- 1
-1----- 1
1------ 1
.names V149(5) V340 V818
11 1
.names V340 V819
0 1
.names V822(0) V819 V820
11 1
.names V820 V818 V821(0)
-1 1
1- 1
.names V279(0) V822(0)
0 1
.names V149(4) V340 V823
11 1
.names V827(0) V820 V824
11 1
.names V280(0) V819 V279(0) V825
111 1
.names V825 V823 V824 V826(0)
--1 1
-1- 1
1-- 1
.names V280(0) V827(0)
0 1
.names V828 V832(0)
0 1
.names V829 V833(0)
0 1
.names V830 V834(0)
0 1
.names V831 V835(0)
0 1
.names V434(0) V835(0) V833(0) V832(0) V834(0) V1855(0) V836
111111 1
.names V836 V837(0)
0 1
.names V838 V842(0)
0 1
.names V839 V843(0)
0 1
.names V840 V844(0)
0 1
.names V841 V845(0)
0 1
.names V434(0) V845(0) V843(0) V842(0) V844(0) V288(4) V846
111111 1
.names V846 V847(0)
0 1
.names V848 V852(0)
0 1
.names V849 V853(0)
0 1
.names V850 V854(0)
0 1
.names V851 V855(0)
0 1
.names V434(0) V855(0) V853(0) V852(0) V854(0) V1840 V856
111111 1
.names V856 V857(0)
0 1
.names V858 V862(0)
0 1
.names V859 V863(0)
0 1
.names V860 V864(0)
0 1
.names V861 V865(0)
0 1
.names V434(0) V865(0) V863(0) V862(0) V864(0) V1840 V866
111111 1
.names V866 V867(0)
0 1
.names V868 V872(0)
0 1
.names V869 V873(0)
0 1
.names V870 V874(0)
0 1
.names V871 V875(0)
0 1
.names V434(0) V875(0) V873(0) V872(0) V874(0) V1854(0) V876
111111 1
.names V876 V877(0)
0 1
.names V878 V882(0)
0 1
.names V879 V883(0)
0 1
.names V880 V884(0)
0 1
.names V881 V885(0)
0 1
.names V434(0) V885(0) V883(0) V882(0) V884(0) V288(2) V886
111111 1
.names V886 V887(0)
0 1
.names V888 V892(0)
0 1
.names V889 V893(0)
0 1
.names V890 V894(0)
0 1
.names V891 V895(0)
0 1
.names V434(0) V895(0) V893(0) V892(0) V894(0) V1839 V896
111111 1
.names V896 V897(0)
0 1
.names V898 V902(0)
0 1
.names V899 V903(0)
0 1
.names V900 V904(0)
0 1
.names V901 V905(0)
0 1
.names V434(0) V905(0) V903(0) V902(0) V904(0) V1839 V906
111111 1
.names V906 V907(0)
0 1
.names V908 V912(0)
0 1
.names V909 V913(0)
0 1
.names V910 V914(0)
0 1
.names V911 V915(0)
0 1
.names V434(0) V915(0) V913(0) V912(0) V914(0) V1853(0) V916
111111 1
.names V916 V917(0)
0 1
.names V918 V922(0)
0 1
.names V919 V923(0)
0 1
.names V920 V924(0)
0 1
.names V921 V925(0)
0 1
.names V434(0) V925(0) V923(0) V922(0) V924(0) V288(0) V926
111111 1
.names V926 V927(0)
0 1
.names V928 V932(0)
0 1
.names V929 V933(0)
0 1
.names V930 V934(0)
0 1
.names V931 V935(0)
0 1
.names V434(0) V935(0) V933(0) V932(0) V934(0) V1838 V936
111111 1
.names V936 V937(0)
0 1
.names V938 V942(0)
0 1
.names V939 V943(0)
0 1
.names V940 V944(0)
0 1
.names V941 V945(0)
0 1
.names V434(0) V945(0) V943(0) V942(0) V944(0) V1838 V946
111111 1
.names V946 V947(0)
0 1
.names V1255(0) V948
0 1
.names V1255(1) V949
0 1
.names V1255(2) V950
0 1
.names V1255(3) V951
0 1
.names V434(0) V951 V949 V948 V950 V1856(0) V952
111111 1
.names V434(0) V1255(3) V949 V948 V950 V288(6) V953
111111 1
.names V434(0) V1255(2) V949 V948 V951 V288(6) V288(7) V954
1111111 1
.names V434(0) V949 V948 V1255(2) V1255(3) V288(6) V288(7) V955
1111111 1
.names V952 V956(0)
0 1
.names V953 V957(0)
0 1
.names V954 V958(0)
0 1
.names V955 V959(0)
0 1
.names V802(0) V795 V960
11 1
.names V56(0) V763 V759(0) V777(0) V961
1111 1
.names V56(0) V758(0) V962
11 1
.names V799 V759(0) V963
11 1
.names V807(0) V964
0 1
.names V963 V961 V960 V962 V965(0)
---1 1
--1- 1
-1-- 1
1--- 1
.names V965(0) V964 V498 V966
111 1
.names V56(0) V967(0)
0 1
.names V987(0) V1681(0) V1460(0) V1468(0) V258(0) V968
11111 1
.names V968 V969
0 1
.names V736 V970
0 1
.names V742 V971
0 1
.names V743 V972
0 1
.names V744 V973
0 1
.names V735 V974
0 1
.names V746 V975
0 1
.names V975 V973 V971 V969 V970 V972 V974 V976
1111111 1
.names V961 V977
0 1
.names V56(0) V770 V976 V977 V978
1111 1
.names V976 V979
0 1
.names V967(0) V980
0 1
.names V980 V979 V981
11 1
.names V721 V2011(0) V501 V982(0)
--1 1
-1- 1
1-- 1
.names V59(0) V982(0) V983
11 1
.names V62(0) V1681(0) V984
11 1
.names V984 V978 V983 V985(0)
--1 1
-1- 1
1-- 1
.names V985(0) V964 V498 V986
111 1
.names V59(0) V987(0)
0 1
.names V229(5) V1395(0) V2110 V988
111 1
.names V229(4) V1395(0) V2110 V989
111 1
.names V229(3) V1395(0) V2110 V990
111 1
.names V229(2) V1395(0) V2110 V991
111 1
.names V229(1) V1395(0) V2110 V992
111 1
.names V229(0) V1395(0) V2110 V993
111 1
.names V223(5) V1395(0) V2110 V994
111 1
.names V223(4) V1395(0) V2110 V995
111 1
.names V223(3) V1395(0) V2110 V996
111 1
.names V223(2) V1395(0) V2110 V997
111 1
.names V223(1) V1395(0) V2110 V998
111 1
.names V223(0) V1395(0) V2110 V999
111 1
.names V189(5) V2111 V2011(0) V1000
111 1
.names V988 V1000 V1023(11)
-1 1
1- 1
.names V189(4) V2111 V2011(0) V1002
111 1
.names V989 V1002 V1023(10)
-1 1
1- 1
.names V189(3) V2111 V2011(0) V1004
111 1
.names V990 V1004 V1023(9)
-1 1
1- 1
.names V189(2) V2111 V2011(0) V1006
111 1
.names V991 V1006 V1023(8)
-1 1
1- 1
.names V189(1) V2111 V2011(0) V1008
111 1
.names V992 V1008 V1023(7)
-1 1
1- 1
.names V189(0) V2111 V2011(0) V1010
111 1
.names V993 V1010 V1023(6)
-1 1
1- 1
.names V183(5) V2111 V2011(0) V1012
111 1
.names V994 V1012 V1023(5)
-1 1
1- 1
.names V183(4) V2111 V2011(0) V1014
111 1
.names V995 V1014 V1023(4)
-1 1
1- 1
.names V183(3) V2111 V2011(0) V1016
111 1
.names V996 V1016 V1023(3)
-1 1
1- 1
.names V183(2) V2111 V2011(0) V1018
111 1
.names V997 V1018 V1023(2)
-1 1
1- 1
.names V183(1) V2111 V2011(0) V1020
111 1
.names V998 V1020 V1023(1)
-1 1
1- 1
.names V183(0) V2111 V2011(0) V1022
111 1
.names V999 V1022 V1023(0)
-1 1
1- 1
.names V239(4) V1395(0) V2112 V1024
111 1
.names V239(3) V1395(0) V2112 V1025
111 1
.names V239(2) V1395(0) V2112 V1026
111 1
.names V239(1) V1395(0) V2112 V1027
111 1
.names V239(0) V1395(0) V2112 V1028
111 1
.names V234(4) V1395(0) V2112 V1029
111 1
.names V234(3) V1395(0) V2112 V1030
111 1
.names V234(2) V1395(0) V2112 V1031
111 1
.names V234(1) V1395(0) V2112 V1032
111 1
.names V234(0) V1395(0) V2112 V1033
111 1
.names V199(4) V2113 V2011(0) V1034
111 1
.names V1024 V1034 V1053(9)
-1 1
1- 1
.names V199(3) V2113 V2011(0) V1036
111 1
.names V1025 V1036 V1053(8)
-1 1
1- 1
.names V199(2) V2113 V2011(0) V1038
111 1
.names V1026 V1038 V1053(7)
-1 1
1- 1
.names V199(1) V2113 V2011(0) V1040
111 1
.names V1027 V1040 V1053(6)
-1 1
1- 1
.names V199(0) V2113 V2011(0) V1042
111 1
.names V1028 V1042 V1053(5)
-1 1
1- 1
.names V194(4) V2113 V2011(0) V1044
111 1
.names V1029 V1044 V1053(4)
-1 1
1- 1
.names V194(3) V2113 V2011(0) V1046
111 1
.names V1030 V1046 V1053(3)
-1 1
1- 1
.names V194(2) V2113 V2011(0) V1048
111 1
.names V1031 V1048 V1053(2)
-1 1
1- 1
.names V194(1) V2113 V2011(0) V1050
111 1
.names V1032 V1050 V1053(1)
-1 1
1- 1
.names V194(0) V2113 V2011(0) V1052
111 1
.names V1033 V1052 V1053(0)
-1 1
1- 1
.names V257(6) V1681(0) V2115 V2114 V1054
1111 1
.names V257(5) V1681(0) V2115 V2114 V1055
1111 1
.names V257(4) V1681(0) V2115 V2114 V1056
1111 1
.names V257(3) V1681(0) V2115 V2114 V1057
1111 1
.names V257(2) V1681(0) V2115 V2114 V1058
1111 1
.names V257(1) V1681(0) V2115 V2114 V1059
1111 1
.names V257(0) V1681(0) V2115 V2114 V1060
1111 1
.names V257(6) V1681(0) V2115 V2114 V1061
1111 1
.names V1054 V1070 V1069(11)
-1 1
1- 1
.names V1055 V1071 V1069(10)
-1 1
1- 1
.names V1056 V1072 V1069(9)
-1 1
1- 1
.names V1057 V1073 V1069(8)
-1 1
1- 1
.names V1058 V1074 V1069(7)
-1 1
1- 1
.names V1059 V1075 V1069(6)
-1 1
1- 1
.names V1060 V1076 V1069(5)
-1 1
1- 1
.names V1061 V1077 V1069(4)
-1 1
1- 1
.names V1023(11) V2117 V2116 V1421(0) V1070
1111 1
.names V1023(10) V2117 V2116 V1421(0) V1071
1111 1
.names V1023(9) V2117 V2116 V1421(0) V1072
1111 1
.names V1023(8) V2117 V2116 V1421(0) V1073
1111 1
.names V1023(7) V2117 V2116 V1421(0) V1074
1111 1
.names V1023(6) V2117 V2116 V1421(0) V1075
1111 1
.names V1023(5) V2117 V2116 V1421(0) V1076
1111 1
.names V1023(4) V2117 V2116 V1421(0) V1077
1111 1
.names V257(7) V1681(0) V2119 V2118 V1078
1111 1
.names V149(7) V987(0) V1446(0) V727 V2121 V2120 V1079
111111 1
.names V1087 V1079 V1086(3)
-1 1
1- 1
.names V149(6) V987(0) V1446(0) V727 V2121 V2120 V1081
111111 1
.names V1088 V1081 V1086(2)
-1 1
1- 1
.names V149(5) V987(0) V1446(0) V727 V2121 V2120 V1083
111111 1
.names V1089 V1083 V1086(1)
-1 1
1- 1
.names V149(4) V987(0) V1446(0) V727 V2121 V2120 V1085
111111 1
.names V1078 V1085 V1090 V1086(0)
--1 1
-1- 1
1-- 1
.names V1053(3) V2123 V2122 V1421(0) V1087
1111 1
.names V1053(2) V2123 V2122 V1421(0) V1088
1111 1
.names V1053(1) V2123 V2122 V1421(0) V1089
1111 1
.names V1053(0) V2123 V2122 V1421(0) V1090
1111 1
.names V1124(1) V32(8) V1092
11 1
.names V1124(1) V32(7) V1093
11 1
.names V1124(1) V32(6) V1094
11 1
.names V1124(1) V32(5) V1095
11 1
.names V1124(1) V32(4) V1096
11 1
.names V1124(1) V32(3) V1097
11 1
.names V1124(1) V32(2) V1098
11 1
.names V1124(1) V32(1) V1099
11 1
.names V1124(1) V32(0) V1100
11 1
.names V32(11) V2125 V1408(0) V1101
111 1
.names V1092 V1101 V1124(13)
-1 1
1- 1
.names V32(10) V2125 V1408(0) V1103
111 1
.names V1093 V1103 V1124(12)
-1 1
1- 1
.names V32(9) V2125 V1408(0) V1105
111 1
.names V1094 V1105 V1124(11)
-1 1
1- 1
.names V32(8) V2125 V1408(0) V1107
111 1
.names V1095 V1107 V1124(10)
-1 1
1- 1
.names V32(7) V2125 V1408(0) V1109
111 1
.names V1096 V1109 V1124(9)
-1 1
1- 1
.names V32(6) V2125 V1408(0) V1111
111 1
.names V1097 V1111 V1124(8)
-1 1
1- 1
.names V32(5) V2125 V1408(0) V1113
111 1
.names V1098 V1113 V1124(7)
-1 1
1- 1
.names V32(4) V2125 V1408(0) V1115
111 1
.names V1099 V1115 V1124(6)
-1 1
1- 1
.names V32(3) V2125 V1408(0) V1117
111 1
.names V1100 V1117 V1124(5)
-1 1
1- 1
.names V32(2) V2125 V1408(0) V1119
111 1
.names V1124(1) V1119 V1124(4)
-1 1
1- 1
.names V32(1) V2125 V1408(0) V1121
111 1
.names V1124(1) V1121 V1124(3)
-1 1
1- 1
.names V32(0) V2125 V1408(0) V1123
111 1
.names V1124(1) V1123 V1124(2)
-1 1
1- 1
.names V1685(0) V763 V1125
11 1
.names V1125 V1126(1)
0 1
.names V1069(11) V1126(1) V2126 V1127
111 1
.names V1069(10) V1126(1) V2126 V1128
111 1
.names V1069(9) V1126(1) V2126 V1129
111 1
.names V1069(8) V1126(1) V2126 V1130
111 1
.names V1069(7) V1126(1) V2126 V1131
111 1
.names V1069(6) V1126(1) V2126 V1132
111 1
.names V1069(5) V1126(1) V2126 V1133
111 1
.names V1124(6) V2127 V1125 V1134
111 1
.names V1127 V1134 V1147(11)
-1 1
1- 1
.names V1124(5) V2127 V1125 V1136
111 1
.names V1128 V1136 V1147(10)
-1 1
1- 1
.names V1124(4) V2127 V1125 V1138
111 1
.names V1129 V1138 V1147(9)
-1 1
1- 1
.names V1124(3) V2127 V1125 V1140
111 1
.names V1130 V1140 V1147(8)
-1 1
1- 1
.names V1124(2) V2127 V1125 V1142
111 1
.names V1131 V1142 V1147(7)
-1 1
1- 1
.names V1124(1) V2127 V1125 V1144
111 1
.names V1132 V1144 V1147(6)
-1 1
1- 1
.names V1408(0) V2125 V2127 V1125 V1146
1111 1
.names V1133 V1146 V1147(5)
-1 1
1- 1
.names V1421(0) V1053(9) V2123 V2122 V1126(1) V2128 V1148
111111 1
.names V1421(0) V1053(8) V2123 V2122 V1126(1) V2128 V1149
111111 1
.names V1421(0) V1053(7) V2123 V2122 V1126(1) V2128 V1150
111111 1
.names V1421(0) V1053(6) V2123 V2122 V1126(1) V2128 V1151
111111 1
.names V1421(0) V1053(5) V2123 V2122 V1126(1) V2128 V1152
111111 1
.names V1421(0) V1053(4) V2123 V2122 V1126(1) V2128 V1153
111111 1
.names V1086(3) V1126(1) V2128 V1154
111 1
.names V1086(2) V1126(1) V2128 V1155
111 1
.names V1086(1) V1126(1) V2128 V1156
111 1
.names V1086(0) V1126(1) V2128 V1157
111 1
.names V1124(1) V32(11) V2129 V1125 V1158
1111 1
.names V1148 V1158 V1177(9)
-1 1
1- 1
.names V1124(1) V32(10) V2129 V1125 V1160
1111 1
.names V1149 V1160 V1177(8)
-1 1
1- 1
.names V1124(1) V32(9) V2129 V1125 V1162
1111 1
.names V1150 V1162 V1177(7)
-1 1
1- 1
.names V1124(13) V2129 V1125 V1164
111 1
.names V1151 V1164 V1177(6)
-1 1
1- 1
.names V1124(12) V2129 V1125 V1166
111 1
.names V1152 V1166 V1177(5)
-1 1
1- 1
.names V1124(11) V2129 V1125 V1168
111 1
.names V1153 V1168 V1177(4)
-1 1
1- 1
.names V1124(10) V2129 V1125 V1170
111 1
.names V1154 V1170 V1177(3)
-1 1
1- 1
.names V1124(9) V2129 V1125 V1172
111 1
.names V1155 V1172 V1177(2)
-1 1
1- 1
.names V1124(8) V2129 V1125 V1174
111 1
.names V1156 V1174 V1177(1)
-1 1
1- 1
.names V1124(7) V2129 V1125 V1176
111 1
.names V1157 V1176 V1177(0)
-1 1
1- 1
.names V1147(11) V1422(0) V2130 V1178
111 1
.names V1147(10) V1422(0) V2130 V1179
111 1
.names V1147(9) V1422(0) V2130 V1180
111 1
.names V1147(8) V1422(0) V2130 V1181
111 1
.names V1147(7) V1422(0) V2130 V1182
111 1
.names V1147(6) V1422(0) V2130 V1183
111 1
.names V1147(5) V1422(0) V2130 V1184
111 1
.names V2126 V1069(4) V1126(1) V1422(0) V2130 V1185
11111 1
.names V2126 V1421(0) V1023(3) V2117 V2116 V1126(1) V1422(0) V2130 \
V1186
11111111 1
.names V2126 V1421(0) V1023(2) V2117 V2116 V1126(1) V1422(0) V2130 \
V1187
11111111 1
.names V2126 V1421(0) V1023(1) V2117 V2116 V1126(1) V1422(0) V2130 \
V1188
11111111 1
.names V2126 V1421(0) V1023(0) V2117 V2116 V1126(1) V1422(0) V2130 \
V1189
11111111 1
.names V32(11) V2131 V1417(0) V1190
111 1
.names V1178 V1190 V1213(11)
-1 1
1- 1
.names V32(10) V2131 V1417(0) V1192
111 1
.names V1179 V1192 V1213(10)
-1 1
1- 1
.names V32(9) V2131 V1417(0) V1194
111 1
.names V1180 V1194 V1213(9)
-1 1
1- 1
.names V32(8) V2131 V1417(0) V1196
111 1
.names V1181 V1196 V1213(8)
-1 1
1- 1
.names V32(7) V2131 V1417(0) V1198
111 1
.names V1182 V1198 V1213(7)
-1 1
1- 1
.names V32(6) V2131 V1417(0) V1200
111 1
.names V1183 V1200 V1213(6)
-1 1
1- 1
.names V32(5) V2131 V1417(0) V1202
111 1
.names V1184 V1202 V1213(5)
-1 1
1- 1
.names V32(4) V2131 V1417(0) V1204
111 1
.names V1185 V1204 V1213(4)
-1 1
1- 1
.names V32(3) V2131 V1417(0) V1206
111 1
.names V1186 V1206 V1213(3)
-1 1
1- 1
.names V32(2) V2131 V1417(0) V1208
111 1
.names V1187 V1208 V1213(2)
-1 1
1- 1
.names V32(1) V2131 V1417(0) V1210
111 1
.names V1188 V1210 V1213(1)
-1 1
1- 1
.names V32(0) V2131 V1417(0) V1212
111 1
.names V1189 V1212 V1213(0)
-1 1
1- 1
.names V1177(9) V1422(0) V2132 V1214
111 1
.names V1177(8) V1422(0) V2132 V1215
111 1
.names V1177(7) V1422(0) V2132 V1216
111 1
.names V1177(6) V1422(0) V2132 V1217
111 1
.names V1177(5) V1422(0) V2132 V1218
111 1
.names V1177(4) V1422(0) V2132 V1219
111 1
.names V1177(3) V1422(0) V2132 V1220
111 1
.names V1177(2) V1422(0) V2132 V1221
111 1
.names V1177(1) V1422(0) V2132 V1222
111 1
.names V1177(0) V1422(0) V2132 V1223
111 1
.names V88(1) V2133 V1417(0) V1224
111 1
.names V1214 V1224 V1243(9)
-1 1
1- 1
.names V88(0) V2133 V1417(0) V1226
111 1
.names V1215 V1226 V1243(8)
-1 1
1- 1
.names V84(5) V2133 V1417(0) V1228
111 1
.names V1216 V1228 V1243(7)
-1 1
1- 1
.names V84(4) V2133 V1417(0) V1230
111 1
.names V1217 V1230 V1243(6)
-1 1
1- 1
.names V84(3) V2133 V1417(0) V1232
111 1
.names V1218 V1232 V1243(5)
-1 1
1- 1
.names V84(2) V2133 V1417(0) V1234
111 1
.names V1219 V1234 V1243(4)
-1 1
1- 1
.names V84(1) V2133 V1417(0) V1236
111 1
.names V1220 V1236 V1243(3)
-1 1
1- 1
.names V84(0) V2133 V1417(0) V1238
111 1
.names V1221 V1238 V1243(2)
-1 1
1- 1
.names V78(5) V2133 V1417(0) V1240
111 1
.names V1222 V1240 V1243(1)
-1 1
1- 1
.names V78(4) V2133 V1417(0) V1242
111 1
.names V1223 V1242 V1243(0)
-1 1
1- 1
.names V2126 V1421(0) V1023(3) V2117 V2116 V1126(1) V1422(0) V2134 \
V1244
11111111 1
.names V2126 V1421(0) V1023(2) V2117 V2116 V1126(1) V1422(0) V2134 \
V1245
11111111 1
.names V2126 V1421(0) V1023(1) V2117 V2116 V1126(1) V1422(0) V2134 \
V1246
11111111 1
.names V2126 V1421(0) V1023(0) V2117 V2116 V1126(1) V1422(0) V2134 \
V1247
11111111 1
.names V32(3) V2135 V1417(0) V1248
111 1
.names V1244 V1248 V1255(3)
-1 1
1- 1
.names V32(2) V2135 V1417(0) V1250
111 1
.names V1245 V1250 V1255(2)
-1 1
1- 1
.names V32(1) V2135 V1417(0) V1252
111 1
.names V1246 V1252 V1255(1)
-1 1
1- 1
.names V32(0) V2135 V1417(0) V1254
111 1
.names V1247 V1254 V1255(0)
-1 1
1- 1
.names V2(0) V372 V1256
11 1
.names V2(0) V12(0) V1562 V1560 V1559 V1561 V1563 V1257
1111111 1
.names V2(0) V9(0) V1258
11 1
.names V3(0) V9(0) V1259
11 1
.names V3(0) V11(0) V1260
11 1
.names V1275(0) V1260 V1261
11 1
.names V4(0) V372 V1262
11 1
.names V4(0) V9(0) V1263
11 1
.names V4(0) V12(0) V1264
11 1
.names V52(0) V1264 V1265
11 1
.names V4(0) V11(0) V1266
11 1
.names V2(0) V11(0) V1267
11 1
.names V728 V727 V769 V501 V400 V726 V721 V1268(0)
------1 1
-----1- 1
----1-- 1
---1--- 1
--1---- 1
-1----- 1
1------ 1
.names V1268(0) V1269
0 1
.names V767 V1270
0 1
.names V768 V1271
0 1
.names V498 V964 V502 V62(0) V1272
1111 1
.names V1720(0) V59(0) V1271 V1269 V1270 V754 V964 V498 V1273
11111111 1
.names V1272 V1273 V1274(0)
-1 1
1- 1
.names V62(0) V1275(0)
0 1
.names V735 V56(0) V1276
11 1
.names V1276 V1277(0)
0 1
.names V1984(0) V1278(1)
0 1
.names V1277(0) V14(0) V213(0) V1278(1) V2136 V1279
11111 1
.names V1546(0) V2137 V1984(0) V1280
111 1
.names V1279 V1280 V1281(0)
-1 1
1- 1
.names V1979 V1282(1)
0 1
.names V1277(0) V14(0) V213(5) V1282(1) V2138 V1283
11111 1
.names V1277(0) V14(0) V213(4) V1282(1) V2138 V1284
11111 1
.names V1277(0) V14(0) V213(3) V1282(1) V2138 V1285
11111 1
.names V1277(0) V14(0) V213(2) V1282(1) V2138 V1286
11111 1
.names V1277(0) V14(0) V213(1) V1282(1) V2138 V1287
11111 1
.names V165(7) V2139 V1979 V1288
111 1
.names V1283 V1288 V1297(4)
-1 1
1- 1
.names V165(6) V2139 V1979 V1290
111 1
.names V1284 V1290 V1297(3)
-1 1
1- 1
.names V165(5) V2139 V1979 V1292
111 1
.names V1285 V1292 V1297(2)
-1 1
1- 1
.names V165(4) V2139 V1979 V1294
111 1
.names V1286 V1294 V1297(1)
-1 1
1- 1
.names V165(3) V2139 V1979 V1296
111 1
.names V1287 V1296 V1297(0)
-1 1
1- 1
.names V1846 V2025 V1299
11 1
.names V1848 V1299 V1303
11 1
.names V2029 V1299 V1304
11 1
.names V2029 V1848 V1305
11 1
.names V1305 V1303 V1304 V1306(0)
--1 1
-1- 1
1-- 1
.names V1839 V1306(0) V1308
11 1
.names V2034 V1306(0) V1309
11 1
.names V2034 V1839 V1310
11 1
.names V1310 V1308 V1309 V1311(0)
--1 1
-1- 1
1-- 1
.names V1298 V1313
0 1
.names V1302 V1314
0 1
.names V1307 V1315
0 1
.names V1314 V1313 V1317
11 1
.names V1315 V1317 V1319
11 1
.names V1313 V1321
0 1
.names V1316 V1322
0 1
.names V1318 V1323
0 1
.names V1322 V1321 V1325
11 1
.names V1323 V1325 V1327
11 1
.names V1312 V1848 V2140 V1329
111 1
.names V1328 V2141 V1860(0) V1330
111 1
.names V1329 V1330 V1331(0)
-1 1
1- 1
.names V1307 V1848 V2142 V1332
111 1
.names V1326 V2143 V1860(0) V1333
111 1
.names V1332 V1333 V1334(0)
-1 1
1- 1
.names V1302 V1848 V2144 V1335
111 1
.names V1324 V2145 V1860(0) V1336
111 1
.names V1335 V1336 V1337(0)
-1 1
1- 1
.names V1298 V1848 V2146 V1338
111 1
.names V1321 V2147 V1860(0) V1339
111 1
.names V1338 V1339 V1340(0)
-1 1
1- 1
.names V1340(0) V1341
0 1
.names V1337(0) V1342
0 1
.names V1334(0) V1343
0 1
.names V1342 V1341 V1345
11 1
.names V1343 V1345 V1347
11 1
.names V1312 V1846 V2148 V1349
111 1
.names V1348 V2149 V1859(0) V1350
111 1
.names V1349 V1350 V1351(0)
-1 1
1- 1
.names V1307 V1846 V2150 V1352
111 1
.names V1346 V2151 V1859(0) V1353
111 1
.names V1352 V1353 V1354(0)
-1 1
1- 1
.names V1302 V1846 V2152 V1355
111 1
.names V1344 V2153 V1859(0) V1356
111 1
.names V1355 V1356 V1357(0)
-1 1
1- 1
.names V1298 V1846 V2154 V1358
111 1
.names V1341 V2155 V1859(0) V1359
111 1
.names V1358 V1359 V1360(0)
-1 1
1- 1
.names V734 V1361
0 1
.names V515 V1362
0 1
.names V731(0) V1363
0 1
.names V738 V1364
0 1
.names V498 V964 V805 V1364 V1362 V793 V1361 V1363 V804 V62(0) V1365
1111111111 1
.names V268(5) V268(3) V268(1) V268(2) V268(4) V1366
11111 1
.names V268(5) V268(3) V268(2) V268(4) V1367
1111 1
.names V268(5) V268(3) V268(4) V1368
111 1
.names V268(5) V268(4) V1369
11 1
.names V268(5) V1375
0 1
.names V2010(0) V1376
0 1
.names V374(0) V1377
0 1
.names V1377 V785 V1376 V1378
111 1
.names V2020(0) V1379
0 1
.names V1377 V785 V1379 V1380
111 1
.names V381(0) V1381
0 1
.names V1381 V785 V1377 V1382
111 1
.names V342(0) V1383
0 1
.names V1383 V785 V1377 V1384
111 1
.names V1837(0) V1385
0 1
.names V1385 V785 V1377 V1386
111 1
.names V9(0) V8(0) V1387
11 1
.names V401 V1388(0)
0 1
.names V741 V1389(0)
0 1
.names V498 V964 V1389(0) V65(0) V1388(0) V1390
11111 1
.names V498 V964 V763 V694(5) V165(3) V694(4) V165(6) V70(0) V1391
11111111 1
.names V1391 V1390 V1392(0)
-1 1
1- 1
.names V769 V1446(0) V1393
11 1
.names V59(0) V56(0) V60(0) V1394(0)
--1 1
-1- 1
1-- 1
.names V701 V700 V1395(0)
-1 1
1- 1
.names V59(0) V60(0) V1396(0)
-1 1
1- 1
.names V1393 V731(0) V710 V729(0) V721 V1397(0)
----1 1
---1- 1
--1-- 1
-1--- 1
1---- 1
.names V56(0) V53(0) V57(0) V1398(0)
--1 1
-1- 1
1-- 1
.names V769 V721 V1399(0)
-1 1
1- 1
.names V727 V1400
0 1
.names V726 V1401
0 1
.names V763 V1394(0) V1402
11 1
.names V727 V1445 V1403
11 1
.names V727 V1446(0) V1396(0) V1404
111 1
.names V1415(0) V1405
0 1
.names V1405 V1397(0) V1398(0) V1406
111 1
.names V60(0) V1399(0) V1407
11 1
.names V1402 V1408(0)
0 1
.names V769 V1395(0) V726 V1409(0)
--1 1
-1- 1
1-- 1
.names V1407 V1410(0)
0 1
.names V56(0) V502 V1411
11 1
.names V60(0) V502 V1412
11 1
.names V56(0) V411 V1413
11 1
.names V60(0) V411 V1414
11 1
.names V1414 V1412 V1411 V1413 V1415(0)
---1 1
--1- 1
-1-- 1
1--- 1
.names V793 V1401 V1400 V53(0) V967(0) V1416
11111 1
.names V745 V1406 V1416 V1417(0)
--1 1
-1- 1
1-- 1
.names V765(0) V1409(0) V1418
11 1
.names V1417(0) V1419
0 1
.names V1410(0) V1420
0 1
.names V1418 V1403 V1404 V1421(0)
--1 1
-1- 1
1-- 1
.names V1420 V1419 V1422(0)
-1 1
1- 1
.names V1(0) V9(0) V1423
11 1
.names V583(0) V1424
0 1
.names V786 V1424 V1425
11 1
.names V1424 V1377 V1426
11 1
.names V658(0) V109(0) V1427
11 1
.names V11(0) V1(0) V1428
11 1
.names V12(0) V1(0) V1429
11 1
.names V1427 V1430
0 1
.names V786 V1424 V1430 V1431
111 1
.names V66(0) V964 V498 V1432
111 1
.names V769 V1433
0 1
.names V1441(0) V1434
0 1
.names V1434 V1433 V498 V1435
111 1
.names V277(0) V769 V1436
11 1
.names V1442(0) V1436 V1437(0)
-1 1
1- 1
.names V14(0) V1437(0) V1438
11 1
.names V746 V1435 V1439(0)
-1 1
1- 1
.names V1438 V1440(0)
0 1
.names V277(0) V1441(0)
0 1
.names V278(0) V1442(0)
0 1
.names V769 V277(0) V1443
11 1
.names V1443 V1444(0)
0 1
.names V278(0) V1444(0) V1445
11 1
.names V1445 V1446(0)
0 1
.names V1836 V1830 V1447(0)
-1 1
1- 1
.names V1447(0) V14(0) V1452(0) V1448
111 1
.names V1447(0) V1449
0 1
.names V1449 V14(0) V258(0) V1450
111 1
.names V1450 V1448 V1451(0)
-1 1
1- 1
.names V258(0) V1452(0)
0 1
.names V1830 V258(0) V1453
11 1
.names V1836 V1452(0) V1454
11 1
.names V1454 V1453 V1455(0)
-1 1
1- 1
.names V1460(0) V1455(0) V14(0) V1456
111 1
.names V1455(0) V1457
0 1
.names V259(0) V1457 V14(0) V1458
111 1
.names V1458 V1456 V1459(0)
-1 1
1- 1
.names V259(0) V1460(0)
0 1
.names V1453 V259(0) V1461
11 1
.names V1454 V1460(0) V1462
11 1
.names V1462 V1461 V1463(0)
-1 1
1- 1
.names V1468(0) V1463(0) V14(0) V1464
111 1
.names V1463(0) V1465
0 1
.names V260(0) V1465 V14(0) V1466
111 1
.names V1466 V1464 V1467(0)
-1 1
1- 1
.names V260(0) V1468(0)
0 1
.names V737 V1469
0 1
.names V1469 V498 V964 V67(0) V1470
1111 1
.names V701 V766 V769 V1471(0)
--1 1
-1- 1
1-- 1
.names V739 V745 V744 V1472(0)
--1 1
-1- 1
1-- 1
.names V802(0) V1471(0) V1473
11 1
.names V56(0) V1472(0) V1474
11 1
.names V1474 V1473 V1475(0)
-1 1
1- 1
.names V1597(0) V1475(0) V1476
11 1
.names V701 V1477
0 1
.names V1477 V1757(0) V1478
11 1
.names V802(0) V1757(0) V701 V1479
111 1
.names V1479 V1476 V1478 V1480(0)
--1 1
-1- 1
1-- 1
.names V214(0) V1481(0)
0 1
.names V66(0) V1482
0 1
.names V68(0) V1483
0 1
.names V69(0) V1484
0 1
.names V70(0) V1485
0 1
.names V1485 V1483 V1482 V1484 V1486
1111 1
.names V1486 V1487
0 1
.names V1999(0) V1488
0 1
.names V1493(0) V1489
0 1
.names V1489 V498 V1487 V1488 V1490
1111 1
.names V215(0) V66(0) V1491
11 1
.names V1494 V1490 V1492(0)
-1 1
1- 1
.names V215(0) V1493(0)
0 1
.names V1481(0) V216(0) V1494
11 1
.names V175(0) V1495(0)
0 1
.names V2002(0) V1496(0)
0 1
.names V346(0) V1496(0) V536(0) V1497
111 1
.names V1497 V1498(0)
0 1
.names V2002(0) V1499
0 1
.names V346(0) V1500
0 1
.names V1500 V1499 V1501
11 1
.names V1501 V1502(0)
0 1
.names V1536(0) V1496(0) V1503
11 1
.names V1536(0) V1498(0) V1504
11 1
.names V1536(0) V1502(0) V1505
11 1
.names V1536(0) V1506
0 1
.names V1506 V371(0) V1507
11 1
.names V1503 V1507 V1512(3)
-1 1
1- 1
.names V1506 V370(0) V1509
11 1
.names V1504 V1509 V1512(2)
-1 1
1- 1
.names V1506 V369(0) V1511
11 1
.names V1505 V1511 V1512(1)
-1 1
1- 1
.names V2011(0) V278(0) V1513
11 1
.names V177(0) V1514(0)
0 1
.names V274(0) V1515
0 1
.names V1515 V497 V1516
11 1
.names V56(0) V172(0) V1517
11 1
.names V56(0) V1395(0) V171(0) V1518
111 1
.names V1514(0) V1519
0 1
.names V248(0) V1520
0 1
.names V1513 V1521
0 1
.names V1517 V1522
0 1
.names V1518 V1523
0 1
.names V1523 V1521 V1519 V1520 V1522 V1524
11111 1
.names V172(0) V1525
0 1
.names V1525 V406 V1526
11 1
.names V59(0) V515 V1527
11 1
.names V1516 V1528
0 1
.names V1524 V1529
0 1
.names V1526 V1530
0 1
.names V1527 V1531
0 1
.names V1531 V1529 V1528 V1530 V1532
1111 1
.names V1532 V1533
0 1
.names V536(0) V1534
0 1
.names V1499 V1533 V1534 V1535
111 1
.names V1535 V1536(0)
0 1
.names V68(0) V964 V498 V1537
111 1
.names V50(0) V69(0) V1538(0)
-1 1
1- 1
.names V1538(0) V964 V498 V1539
111 1
.names V165(3) V1540
0 1
.names V165(4) V1541
0 1
.names V165(5) V1542
0 1
.names V165(6) V1543
0 1
.names V165(7) V1544
0 1
.names V1544 V1542 V1540 V1541 V1543 V1545
11111 1
.names V1646 V1545 V1546(0)
-1 1
1- 1
.names V1985 V803(0) V721 V2156 V1547
1111 1
.names V1986 V803(0) V721 V2156 V1548
1111 1
.names V1243(9) V2157 V379 V1549
111 1
.names V1547 V1549 V1552(1)
-1 1
1- 1
.names V1243(8) V2157 V379 V1551
111 1
.names V1548 V1551 V1552(0)
-1 1
1- 1
.names V63(0) V60(0) V1553(0)
-1 1
1- 1
.names V730(0) V721 V729(0) V710 V731(0) V769 V1554(0)
-----1 1
----1- 1
---1-- 1
--1--- 1
-1---- 1
1----- 1
.names V57(0) V1554(0) V1555
11 1
.names V57(0) V1556
0 1
.names V1556 V739 V1557
11 1
.names V1553(0) V745 V1558
11 1
.names V1555 V1559
0 1
.names V1557 V1560
0 1
.names V1558 V1561
0 1
.names V174(0) V1562
0 1
.names V35(0) V1563
0 1
.names V202(0) V71(0) V1564
11 1
.names V1564 V1565(0)
0 1
.names V1864(0) V1566
0 1
.names V1720(0) V1567
0 1
.names V1567 V1566 V1568
11 1
.names V1719 V697 V1569
11 1
.names V698 V1719 V1570
11 1
.names V394(0) V1867 V1719 V1571
111 1
.names V394(0) V605 V1719 V247(0) V1572
1111 1
.names V1571 V1573
0 1
.names V392 V1574
0 1
.names V1568 V1575
0 1
.names V1569 V1576
0 1
.names V1570 V1577
0 1
.names V1572 V1578
0 1
.names V1593 V1596(0)
0 1
.names V1594 V1596(1)
0 1
.names V1596(1) V1596(0) V1597(0)
-1 1
1- 1
.names V1610 V1613(0)
0 1
.names V1611 V1613(1)
0 1
.names V292(0) V1864(0) V1614
11 1
.names V695 V174(0) V1615
11 1
.names V2002(0) V174(0) V1616
11 1
.names V799 V1617
0 1
.names V291(0) V1618
0 1
.names V292(0) V1619
0 1
.names V799 V1615 V1614 V1616 V1620(0)
---1 1
--1- 1
-1-- 1
1--- 1
.names V59(0) V91(0) V1621
11 1
.names V62(0) V91(1) V1622
11 1
.names V1622 V1621 V1623(0)
-1 1
1- 1
.names V739 V1623(0) V1624
11 1
.names V294(0) V1625
0 1
.names V611 V1626
0 1
.names V741 V1627
0 1
.names V1627 V1625 V1626 V1628
111 1
.names V622(0) V1624 V1628 V1629(0)
--1 1
-1- 1
1-- 1
.names V14(0) V1630(0)
0 1
.names V769 V766 V1631(0)
-1 1
1- 1
.names V768 V740 V741 V739 V1632(0)
---1 1
--1- 1
-1-- 1
1--- 1
.names V802(0) V1631(0) V764(0) V1633
111 1
.names V701 V802(0) V1634
11 1
.names V66(0) V737 V1635
11 1
.names V56(0) V1632(0) V1636
11 1
.names V763 V66(0) V1637
11 1
.names V802(0) V701 V149(7) V1638
111 1
.names V687 V766 V1639
11 1
.names V1864(0) V701 V1640
11 1
.names V1637 V1635 V1633 V1634 V1636 V1641(0)
----1 1
---1- 1
--1-- 1
-1--- 1
1---- 1
.names V1640 V768 V1639 V738 V1642(0)
---1 1
--1- 1
-1-- 1
1--- 1
.names V336(0) V1641(0) V1643
11 1
.names V14(0) V344 V1642(0) V1646 V338 V1644
11111 1
.names V1638 V1644 V1643 V1645(0)
--1 1
-1- 1
1-- 1
.names V207(0) V1522 V1646
11 1
.names V726 V769 V727 V1647(0)
--1 1
-1- 1
1-- 1
.names V1445 V1647(0) V1648
11 1
.names V1648 V1649(0)
0 1
.names V290(0) V1650
0 1
.names V344 V1685(0) V399(0) V1649(0) V295(0) V1650 V1651
111111 1
.names V1651 V1652(0)
0 1
.names V1687(0) V744 V742 V735 V736 V743 V746 V1653(0)
------1 1
-----1- 1
----1-- 1
---1--- 1
--1---- 1
-1----- 1
1------ 1
.names V1653(0) V1654
0 1
.names V1687(0) V1655
0 1
.names V805 V804 V1654 V1655 V1627 V1656
11111 1
.names V1656 V1657
0 1
.names V812(0) V1658
0 1
.names V696 V1659
0 1
.names V344 V1658 V1499 V1657 V1659 V1660
11111 1
.names V1746(0) V1661
0 1
.names V344 V1654 V1661 V1662
111 1
.names V344 V698 V803(0) V1663
111 1
.names V737 V66(0) V1664
11 1
.names V1660 V1665
0 1
.names V1662 V1666
0 1
.names V1663 V1667
0 1
.names V1664 V1668
0 1
.names V1668 V1666 V1665 V1667 V1669
1111 1
.names V204(0) V1670(0)
0 1
.names V205(0) V1671(0)
0 1
.names V165(7) V165(6) V165(5) V165(3) V165(4) V261(0) V1670(0) \
V165(0) V165(1) V165(2) V1672
1111111111 1
.names V70(0) V165(7) V261(0) V165(5) V165(3) V165(4) V165(6) \
V165(0) V165(1) V165(2) V763 V1673
11111111111 1
.names V1673 V1672 V1674(0)
-1 1
1- 1
.names V987(0) V1460(0) V1468(0) V258(0) V1675
1111 1
.names V1680(0) V1676
0 1
.names V1675 V1677
0 1
.names V498 V1676 V1677 V1678
111 1
.names V1678 V1674(0) V1679(0)
-1 1
1- 1
.names V262(0) V1680(0)
0 1
.names V1674(0) V262(0) V1681(0)
-1 1
1- 1
.names V1678 V1682
0 1
.names V1676 V1682 V1835(0) V1683
111 1
.names V1683 V1684(0)
0 1
.names V1681(0) V1685(0)
0 1
.names V1678 V262(0) V1686
11 1
.names V1674(0) V1686 V1687(0)
-1 1
1- 1
.names V736 V56(0) V1688
11 1
.names V1688 V1689(0)
0 1
.names V1983(0) V1690(1)
0 1
.names V1689(0) V14(0) V100(0) V1690(1) V2158 V1691
11111 1
.names V1546(0) V2159 V1983(0) V1692
111 1
.names V1691 V1692 V1693(0)
-1 1
1- 1
.names V1978 V1694(1)
0 1
.names V1689(0) V14(0) V100(5) V1694(1) V2160 V1695
11111 1
.names V1689(0) V14(0) V100(4) V1694(1) V2160 V1696
11111 1
.names V1689(0) V14(0) V100(3) V1694(1) V2160 V1697
11111 1
.names V1689(0) V14(0) V100(2) V1694(1) V2160 V1698
11111 1
.names V1689(0) V14(0) V100(1) V1694(1) V2160 V1699
11111 1
.names V165(7) V2161 V1978 V1700
111 1
.names V1695 V1700 V1709(4)
-1 1
1- 1
.names V165(6) V2161 V1978 V1702
111 1
.names V1696 V1702 V1709(3)
-1 1
1- 1
.names V165(5) V2161 V1978 V1704
111 1
.names V1697 V1704 V1709(2)
-1 1
1- 1
.names V165(4) V2161 V1978 V1706
111 1
.names V1698 V1706 V1709(1)
-1 1
1- 1
.names V165(3) V2161 V1978 V1708
111 1
.names V1699 V1708 V1709(0)
-1 1
1- 1
.names V827(0) V721 V1710
11 1
.names V721 V421 V1711(0)
-1 1
1- 1
.names V802(0) V1711(0) V1712
11 1
.names V1710 V1713
0 1
.names V1718(0) V1714
0 1
.names V697 V1715
0 1
.names V338 V1715 V964 V1713 V1714 V1525 V1716
111111 1
.names V1716 V1712 V1717(0)
-1 1
1- 1
.names V240(0) V1718(0)
0 1
.names V338 V240(0) V1525 V1719
111 1
.names V1719 V1720(0)
0 1
.names V194(0) V1867 V1721
11 1
.names V1536(0) V1722
0 1
.names V2011(0) V1721 V1722 V1723
111 1
.names V2007(0) V1724
0 1
.names V498 V242(0) V1724 V1725
111 1
.names V1725 V1723 V1726(0)
-1 1
1- 1
.names V1721 V1727(0)
0 1
.names V727 V769 V1728(0)
-1 1
1- 1
.names V241(0) V1728(0) V1729
11 1
.names V1477 V1646 V1271 V1364 V733(0) V1730
11111 1
.names V1477 V687 V1646 V59(0) V1731
1111 1
.names V1477 V59(0) V1646 V768 V1732
1111 1
.names V1477 V738 V1646 V62(0) V1733
1111 1
.names V1729 V1734
0 1
.names V1401 V1734 V1735
11 1
.names V344 V698 V1735 V803(0) V1747(0) V1736
11111 1
.names V1735 V1737
0 1
.names V338 V1730 V1738
11 1
.names V338 V1731 V1739
11 1
.names V1732 V338 V1740
11 1
.names V1733 V1739 V1748 V1738 V1740 V1741(0)
----1 1
---1- 1
--1-- 1
-1--- 1
1---- 1
.names V725 V1742
0 1
.names V747 V1743
0 1
.names V1743 V33(0) V289(0) V1742 V1744
1111 1
.names V1744 V1745(0)
0 1
.names V1741(0) V1746(0)
0 1
.names V290(0) V1747(0)
0 1
.names V695 V290(0) V1748
11 1
.names V56(0) V751 V1749
11 1
.names V16(0) V15(0) V1750
11 1
.names V1866(0) V15(0) V1751
11 1
.names V16(0) V1865(0) V1752
11 1
.names V1749 V1753(0)
0 1
.names V700 V1752 V1754
11 1
.names V101(0) V1753(0) V14(0) V1755
111 1
.names V725 V1752 V1756
11 1
.names V1751 V1750 V1757(0)
-1 1
1- 1
.names V1752 V1751 V1758(0)
-1 1
1- 1
.names V1756 V1754 V1755 V1759(0)
--1 1
-1- 1
1-- 1
.names V101(0) V1760(0)
0 1
.names V745 V1761(0)
0 1
.names V1763(1) V745 V2162 V1764
111 1
.names V1763(0) V745 V2162 V1765
111 1
.names V1767(1) V2163 V1761(0) V1768
111 1
.names V1764 V1768 V1771(1)
-1 1
1- 1
.names V1767(0) V2163 V1761(0) V1770
111 1
.names V1765 V1770 V1771(0)
-1 1
1- 1
.names V1773(1) V1761(0) V2164 V1774
111 1
.names V1773(0) V1761(0) V2164 V1775
111 1
.names V1777(1) V2165 V745 V1778
111 1
.names V1774 V1778 V1781(1)
-1 1
1- 1
.names V1777(0) V2165 V745 V1780
111 1
.names V1775 V1780 V1781(0)
-1 1
1- 1
.names V1213(2) V1782
0 1
.names V1791(8) V37(0) V2166 V1792
111 1
.names V1791(7) V37(0) V2166 V1793
111 1
.names V1791(6) V37(0) V2166 V1794
111 1
.names V1791(5) V37(0) V2166 V1795
111 1
.names V1791(4) V37(0) V2166 V1796
111 1
.names V1791(3) V37(0) V2166 V1797
111 1
.names V1791(2) V37(0) V2166 V1798
111 1
.names V1791(1) V37(0) V2166 V1799
111 1
.names V1791(0) V37(0) V2166 V1800
111 1
.names V1782 V37(0) V2166 V1801
111 1
.names V321(2) V2167 V436(0) V1810
111 1
.names V1792 V1810 V1829(9)
-1 1
1- 1
.names V1809(7) V2167 V436(0) V1812
111 1
.names V1793 V1812 V1829(8)
-1 1
1- 1
.names V1809(6) V2167 V436(0) V1814
111 1
.names V1794 V1814 V1829(7)
-1 1
1- 1
.names V1809(5) V2167 V436(0) V1816
111 1
.names V1795 V1816 V1829(6)
-1 1
1- 1
.names V1809(4) V2167 V436(0) V1818
111 1
.names V1796 V1818 V1829(5)
-1 1
1- 1
.names V1809(3) V2167 V436(0) V1820
111 1
.names V1797 V1820 V1829(4)
-1 1
1- 1
.names V1809(2) V2167 V436(0) V1822
111 1
.names V1798 V1822 V1829(3)
-1 1
1- 1
.names V1809(1) V2167 V436(0) V1824
111 1
.names V1799 V1824 V1829(2)
-1 1
1- 1
.names V1809(0) V2167 V436(0) V1826
111 1
.names V1800 V1826 V1829(1)
-1 1
1- 1
.names V321(2) V2167 V436(0) V1828
111 1
.names V1801 V1828 V1829(0)
-1 1
1- 1
.names V268(0) V1366 V1830
11 1
.names V1834 V1830 V1831(0)
-1 1
1- 1
.names V14(0) V1831(0) V1832
11 1
.names V261(0) V1833(0)
0 1
.names V1684(0) V261(0) V1834
11 1
.names V50(0) V56(0) V62(0) V1835(0)
--1 1
-1- 1
1-- 1
.names V1681(0) V1835(0) V1836
11 1
.names V1836 V1837(0)
0 1
.names V288(1) V288(0) V1838
11 1
.names V288(3) V288(2) V1839
11 1
.names V288(5) V288(4) V1840
11 1
.names V288(4) V1841
0 1
.names V288(5) V1841 V1842
11 1
.names V288(5) V1843
0 1
.names V1843 V288(4) V1844
11 1
.names V288(2) V1845
0 1
.names V288(3) V1845 V1846
11 1
.names V288(3) V1847
0 1
.names V1847 V288(2) V1848
11 1
.names V288(0) V1849
0 1
.names V288(1) V1849 V1850
11 1
.names V288(1) V1851
0 1
.names V1851 V288(0) V1852
11 1
.names V288(1) V288(0) V1853(0)
-1 1
1- 1
.names V288(3) V288(2) V1854(0)
-1 1
1- 1
.names V288(5) V288(4) V1855(0)
-1 1
1- 1
.names V288(7) V288(6) V1856(0)
-1 1
1- 1
.names V1842 V1857(0)
0 1
.names V1844 V1858(0)
0 1
.names V1846 V1859(0)
0 1
.names V1848 V1860(0)
0 1
.names V1850 V1861(0)
0 1
.names V1852 V1862(0)
0 1
.names V301(0) V1863(0)
0 1
.names V302(0) V1864(0)
0 1
.names V15(0) V1865(0)
0 1
.names V16(0) V1866(0)
0 1
.names V199(4) V199(2) V199(0) V194(3) V194(1) V194(2) V194(4) \
V199(1) V199(3) V1867
111111111 1
.names V199(4) V199(2) V199(0) V194(3) V194(2) V194(4) V199(1) \
V199(3) V1868
11111111 1
.names V199(4) V199(2) V199(0) V194(3) V194(4) V199(1) V199(3) V1869
1111111 1
.names V199(4) V199(2) V199(0) V194(4) V199(1) V199(3) V1870
111111 1
.names V199(4) V199(2) V199(0) V199(1) V199(3) V1871
11111 1
.names V199(4) V199(2) V199(1) V199(3) V1872
1111 1
.names V199(4) V199(2) V199(3) V1873
111 1
.names V199(4) V199(3) V1874
11 1
.names V199(4) V1884
0 1
.names V769 V1476 V1885
11 1
.names V725 V1995 V1886
11 1
.names V700 V1995 V1887
11 1
.names V1902 V1888
0 1
.names V108(0) V1888 V1889
11 1
.names V108(1) V1888 V1890
11 1
.names V108(2) V1888 V1891
11 1
.names V108(3) V1888 V1892
11 1
.names V108(4) V1888 V1893
11 1
.names V1749 V1894
0 1
.names V108(5) V1894 V1895
11 1
.names V1889 V1476 V1750 V1896(0)
--1 1
-1- 1
1-- 1
.names V1885 V1890 V1897(0)
-1 1
1- 1
.names V1886 V1891 V1898(0)
-1 1
1- 1
.names V1887 V1892 V1899(0)
-1 1
1- 1
.names V1751 V1893 V1900(0)
-1 1
1- 1
.names V1752 V1895 V1901(0)
-1 1
1- 1
.names V56(0) V750 V1902
11 1
.names V100(5) V736 V2170 V2169 V2168 V1904
11111 1
.names V100(4) V736 V2170 V2169 V2168 V1905
11111 1
.names V100(3) V736 V2170 V2169 V2168 V1906
11111 1
.names V100(2) V736 V2170 V2169 V2168 V1907
11111 1
.names V100(1) V736 V2170 V2169 V2168 V1908
11111 1
.names V100(0) V736 V2170 V2169 V2168 V1909
11111 1
.names V213(5) V2173 V735 V2172 V2171 V1910
11111 1
.names V1904 V1910 V1922 V1921(5)
--1 1
-1- 1
1-- 1
.names V213(4) V2173 V735 V2172 V2171 V1912
11111 1
.names V1905 V1912 V1923 V1928 V1921(4)
---1 1
--1- 1
-1-- 1
1--- 1
.names V213(3) V2173 V735 V2172 V2171 V1914
11111 1
.names V1906 V1914 V1924 V1929 V1921(3)
---1 1
--1- 1
-1-- 1
1--- 1
.names V213(2) V2173 V735 V2172 V2171 V1916
11111 1
.names V1907 V1916 V1925 V1930 V1921(2)
---1 1
--1- 1
-1-- 1
1--- 1
.names V213(1) V2173 V735 V2172 V2171 V1918
11111 1
.names V1908 V1918 V1926 V1931 V1921(1)
---1 1
--1- 1
-1-- 1
1--- 1
.names V213(0) V2173 V735 V2172 V2171 V1920
11111 1
.names V1909 V1920 V1927 V1932 V1921(0)
---1 1
--1- 1
-1-- 1
1--- 1
.names V124(5) V2176 V2175 V742 V2174 V1922
11111 1
.names V124(4) V2176 V2175 V742 V2174 V1923
11111 1
.names V124(3) V2176 V2175 V742 V2174 V1924
11111 1
.names V124(2) V2176 V2175 V742 V2174 V1925
11111 1
.names V124(1) V2176 V2175 V742 V2174 V1926
11111 1
.names V124(0) V2176 V2175 V742 V2174 V1927
11111 1
.names V108(4) V2179 V2178 V2177 V750 V1928
11111 1
.names V108(3) V2179 V2178 V2177 V750 V1929
11111 1
.names V108(2) V2179 V2178 V2177 V750 V1930
11111 1
.names V108(1) V2179 V2178 V2177 V750 V1931
11111 1
.names V108(0) V2179 V2178 V2177 V750 V1932
11111 1
.names V132(7) V742 V2181 V2180 V1933
1111 1
.names V132(6) V742 V2181 V2180 V1934
1111 1
.names V132(5) V742 V2181 V2180 V1935
1111 1
.names V132(4) V742 V2181 V2180 V1936
1111 1
.names V132(3) V742 V2181 V2180 V1937
1111 1
.names V132(2) V742 V2181 V2180 V1938
1111 1
.names V132(1) V742 V2181 V2180 V1953(1)
1111 1
.names V132(0) V742 V2181 V2180 V1940
1111 1
.names V118(5) V2183 V743 V2182 V1941
1111 1
.names V1933 V1941 V1953(7)
-1 1
1- 1
.names V118(4) V2183 V743 V2182 V1943
1111 1
.names V1934 V1943 V1953(6)
-1 1
1- 1
.names V118(3) V2183 V743 V2182 V1945
1111 1
.names V1935 V1945 V1953(5)
-1 1
1- 1
.names V118(2) V2183 V743 V2182 V1947
1111 1
.names V1936 V1947 V1953(4)
-1 1
1- 1
.names V118(1) V2183 V743 V2182 V1949
1111 1
.names V1937 V1949 V1953(3)
-1 1
1- 1
.names V118(0) V2183 V743 V2182 V1951
1111 1
.names V1938 V1951 V1953(2)
-1 1
1- 1
.names V1940 V1954 V1953(0)
-1 1
1- 1
.names V108(5) V2185 V2184 V751 V1954
1111 1
.names V118(7) V743 V2186 V1955
111 1
.names V118(6) V743 V2186 V1956
111 1
.names V46(0) V2187 V382(0) V1957
111 1
.names V1955 V1957 V1960(1)
-1 1
1- 1
.names V48(0) V2187 V382(0) V1959
111 1
.names V1956 V1959 V1960(0)
-1 1
1- 1
.names V56(0) V743 V1961
11 1
.names V1903(4) V1751 V101(0) V1962
111 1
.names V102(0) V1758(0) V1963(0)
-1 1
1- 1
.names V1961 V1964(0)
0 1
.names V1962 V1965(0)
0 1
.names V1969 V1963(0) V700 V1966
111 1
.names V110(0) V1965(0) V1964(0) V14(0) V1967
1111 1
.names V1967 V1966 V1968(0)
-1 1
1- 1
.names V110(0) V1969
0 1
.names V288(6) V1970
0 1
.names V288(7) V1971
0 1
.names V1971 V1970 V1972
11 1
.names V288(7) V1970 V1974
11 1
.names V1973 V1975(0)
0 1
.names V1974 V1976(0)
0 1
.names V702 V700 V1977(0)
-1 1
1- 1
.names V695 V1977(0) V290(0) V1978
111 1
.names V695 V290(0) V725 V1979
111 1
.names V1644 V1980
0 1
.names V1977(0) V338 V1646 V1980 V1743 V1981
11111 1
.names V725 V338 V1646 V1980 V1743 V1982
11111 1
.names V1978 V1981 V1983(0)
-1 1
1- 1
.names V1982 V1979 V1984(0)
-1 1
1- 1
.names V239(4) V1985
0 1
.names V1993 V2010(0) V2006 V2188 V1987
1111 1
.names V1994 V2010(0) V2006 V2188 V1988
1111 1
.names V134(1) V2017 V2016 V2189 V1989
1111 1
.names V1987 V1989 V1992(1)
-1 1
1- 1
.names V134(0) V2017 V2016 V2189 V1991
1111 1
.names V1988 V1991 V1992(0)
-1 1
1- 1
.names V134(1) V1993
0 1
.names V67(0) V172(0) V215(0) V1995
111 1
.names V1446(0) V261(0) V1737 V803(0) V1996
1111 1
.names V261(0) V1737 V803(0) V272(0) V643 V1445 V1997
111111 1
.names V1996 V1998(0)
0 1
.names V1733 V1731 V214(0) V1995 V1730 V1732 V1999(0)
-----1 1
----1- 1
---1-- 1
--1--- 1
-1---- 1
1----- 1
.names V2004(0) V1446(0) V242(0) V803(0) V2011(0) V2000
11111 1
.names V134(1) V134(0) V242(0) V803(0) V272(0) V643 V1445 V2001
1111111 1
.names V1997 V1999(0) V2000 V1996 V2001 V2002(0)
----1 1
---1- 1
--1-- 1
-1--- 1
1---- 1
.names V2007(0) V56(0) V2003
11 1
.names V2003 V2004(0)
0 1
.names V803(0) V1445 V2005
11 1
.names V1761(0) V271(0) V642(0) V2006
111 1
.names V727 V769 V2007(0)
-1 1
1- 1
.names V2005 V2008(0)
0 1
.names V802(0) V2007(0) V2009
11 1
.names V2009 V2010(0)
0 1
.names V726 V2007(0) V2011(0)
-1 1
1- 1
.names V1998(0) V2022(0) V2007(0) V2008(0) V2024(0) V2012
11111 1
.names V1998(0) V2024(0) V1446(0) V803(0) V726 V1727(0) V2013
111111 1
.names V1727(0) V2006 V1445 V134(0) V134(1) V2014
11111 1
.names V803(0) V1446(0) V2011(0) V2015
111 1
.names V2009 V2016
0 1
.names V2006 V2017
0 1
.names V2014 V2012 V2013 V2018(0)
--1 1
-1- 1
1-- 1
.names V2015 V2014 V2019(0)
-1 1
1- 1
.names V2018(0) V2020(0)
0 1
.names V803(0) V1721 V2021
11 1
.names V2021 V2022(0)
0 1
.names V803(0) V248(0) V2023
11 1
.names V2023 V2024(0)
0 1
.names V1842 V1976(0) V2026
11 1
.names V1844 V2026 V2030
11 1
.names V1975(0) V2026 V2031
11 1
.names V1975(0) V1844 V2032
11 1
.names V2032 V2030 V2031 V2033(0)
--1 1
-1- 1
1-- 1
.names V1840 V2033(0) V2035
11 1
.names V1972 V2033(0) V2036
11 1
.names V1972 V1840 V2037
11 1
.names V2037 V2035 V2036 V2038(0)
--1 1
-1- 1
1-- 1
.names V2025 V2040
0 1
.names V2029 V2041
0 1
.names V2034 V2042
0 1
.names V2041 V2040 V2044
11 1
.names V2042 V2044 V2046
11 1
.names V2040 V2048
0 1
.names V2043 V2049
0 1
.names V2045 V2050
0 1
.names V2049 V2048 V2052
11 1
.names V2050 V2052 V2054
11 1
.names V2039 V1844 V2190 V2056
111 1
.names V2055 V2191 V1858(0) V2057
111 1
.names V2056 V2057 V2058(0)
-1 1
1- 1
.names V2034 V1844 V2192 V2059
111 1
.names V2053 V2193 V1858(0) V2060
111 1
.names V2059 V2060 V2061(0)
-1 1
1- 1
.names V2029 V1844 V2194 V2062
111 1
.names V2051 V2195 V1858(0) V2063
111 1
.names V2062 V2063 V2064(0)
-1 1
1- 1
.names V2025 V1844 V2196 V2065
111 1
.names V2048 V2197 V1858(0) V2066
111 1
.names V2065 V2066 V2067(0)
-1 1
1- 1
.names V2067(0) V2068
0 1
.names V2064(0) V2069
0 1
.names V2061(0) V2070
0 1
.names V2069 V2068 V2072
11 1
.names V2070 V2072 V2074
11 1
.names V2039 V1842 V2198 V2076
111 1
.names V2075 V2199 V1857(0) V2077
111 1
.names V2076 V2077 V2078(0)
-1 1
1- 1
.names V2034 V1842 V2200 V2079
111 1
.names V2073 V2201 V1857(0) V2080
111 1
.names V2079 V2080 V2081(0)
-1 1
1- 1
.names V2029 V1842 V2202 V2082
111 1
.names V2071 V2203 V1857(0) V2083
111 1
.names V2082 V2083 V2084(0)
-1 1
1- 1
.names V2025 V1842 V2204 V2085
111 1
.names V2068 V2205 V1857(0) V2086
111 1
.names V2085 V2086 V2087(0)
-1 1
1- 1
.names V1862(0) V2088
0 1
.names V1852 V2089
0 1
.names V1862(0) V2090
0 1
.names V1852 V2091
0 1
.names V1862(0) V2092
0 1
.names V1852 V2093
0 1
.names V1862(0) V2094
0 1
.names V1852 V2095
0 1
.names V1861(0) V2096
0 1
.names V1850 V2097
0 1
.names V1861(0) V2098
0 1
.names V1850 V2099
0 1
.names V1861(0) V2100
0 1
.names V1850 V2101
0 1
.names V1861(0) V2102
0 1
.names V1850 V2103
0 1
.names V769 V802(0) V2104
-0 1
0- 1
.names V2019(0) V2105
0 1
.names V769 V802(0) V2106
-0 1
0- 1
.names V727 V802(0) V2107
-0 1
0- 1
.names V2019(0) V2108
0 1
.names V727 V802(0) V2109
-0 1
0- 1
.names V2011(0) V2110
0 1
.names V1395(0) V2111
0 1
.names V2011(0) V2112
0 1
.names V1395(0) V2113
0 1
.names V1421(0) V2114
0 1
.names V727 V1446(0) V987(0) V2115
--0 1
-0- 1
0-- 1
.names V727 V1446(0) V987(0) V2116
--0 1
-0- 1
0-- 1
.names V1681(0) V2117
0 1
.names V1421(0) V2118
0 1
.names V727 V1446(0) V987(0) V2119
--0 1
-0- 1
0-- 1
.names V1421(0) V2120
0 1
.names V1681(0) V2121
0 1
.names V727 V1446(0) V987(0) V2122
--0 1
-0- 1
0-- 1
.names V1681(0) V2123
0 1
.names V1408(0) V2124
0 1
.names V2124 V1402 V1124(1)
11 1
.names V1402 V2125
0 1
.names V1125 V2126
0 1
.names V1126(1) V2127
0 1
.names V1125 V2128
0 1
.names V1126(1) V2129
0 1
.names V1417(0) V2130
0 1
.names V1422(0) V2131
0 1
.names V1417(0) V2132
0 1
.names V1422(0) V2133
0 1
.names V1417(0) V2134
0 1
.names V1422(0) V2135
0 1
.names V1984(0) V2136
0 1
.names V1278(1) V2137
0 1
.names V1979 V2138
0 1
.names V1282(1) V2139
0 1
.names V1860(0) V2140
0 1
.names V1848 V2141
0 1
.names V1860(0) V2142
0 1
.names V1848 V2143
0 1
.names V1860(0) V2144
0 1
.names V1848 V2145
0 1
.names V1860(0) V2146
0 1
.names V1848 V2147
0 1
.names V1859(0) V2148
0 1
.names V1846 V2149
0 1
.names V1859(0) V2150
0 1
.names V1846 V2151
0 1
.names V1859(0) V2152
0 1
.names V1846 V2153
0 1
.names V1859(0) V2154
0 1
.names V1846 V2155
0 1
.names V379 V2156
0 1
.names V721 V803(0) V2157
-0 1
0- 1
.names V1983(0) V2158
0 1
.names V1690(1) V2159
0 1
.names V1978 V2160
0 1
.names V1694(1) V2161
0 1
.names V1761(0) V2162
0 1
.names V88(2) V1763(0)
0 1
.names V88(3) V1763(1)
0 1
.names V745 V2163
0 1
.names V134(0) V1767(0)
0 1
.names V134(1) V1767(1)
0 1
.names V745 V2164
0 1
.names V1213(10) V1773(0)
0 1
.names V1213(11) V1773(1)
0 1
.names V1761(0) V2165
0 1
.names V78(2) V1777(0)
0 1
.names V78(3) V1777(1)
0 1
.names V436(0) V2166
0 1
.names V1243(1) V1791(0)
0 1
.names V1243(2) V1791(1)
0 1
.names V1243(3) V1791(2)
0 1
.names V1243(4) V1791(3)
0 1
.names V1243(5) V1791(4)
0 1
.names V1243(6) V1791(5)
0 1
.names V1243(7) V1791(6)
0 1
.names V1243(8) V1791(7)
0 1
.names V1243(9) V1791(8)
0 1
.names V37(0) V2167
0 1
.names V1213(4) V1809(0)
0 1
.names V1213(5) V1809(1)
0 1
.names V1213(6) V1809(2)
0 1
.names V1213(7) V1809(3)
0 1
.names V1213(8) V1809(4)
0 1
.names V1213(9) V1809(5)
0 1
.names V1213(10) V1809(6)
0 1
.names V1213(11) V1809(7)
0 1
.names V108(4) V1903(4)
0 1
.names V750 V2168
0 1
.names V742 V2169
0 1
.names V735 V2170
0 1
.names V750 V2171
0 1
.names V742 V2172
0 1
.names V736 V2173
0 1
.names V750 V2174
0 1
.names V735 V2175
0 1
.names V736 V2176
0 1
.names V742 V2177
0 1
.names V735 V2178
0 1
.names V736 V2179
0 1
.names V751 V2180
0 1
.names V743 V2181
0 1
.names V751 V2182
0 1
.names V742 V2183
0 1
.names V743 V2184
0 1
.names V742 V2185
0 1
.names V382(0) V2186
0 1
.names V743 V2187
0 1
.names V2016 V2017 V2188
-0 1
0- 1
.names V2006 V2010(0) V2189
-0 1
0- 1
.names V1858(0) V2190
0 1
.names V1844 V2191
0 1
.names V1858(0) V2192
0 1
.names V1844 V2193
0 1
.names V1858(0) V2194
0 1
.names V1844 V2195
0 1
.names V1858(0) V2196
0 1
.names V1844 V2197
0 1
.names V1857(0) V2198
0 1
.names V1842 V2199
0 1
.names V1857(0) V2200
0 1
.names V1842 V2201
0 1
.names V1857(0) V2202
0 1
.names V1842 V2203
0 1
.names V1857(0) V2204
0 1
.names V1842 V2205
0 1
.names V451 V2206
0 1
.names V32(0) V2207
0 1
.names V451 V2207 V2208
11 1
.names V2206 V32(0) V2209
11 1
.names V2208 V2209 V324
-1 1
1- 1
.names V446 V2210
0 1
.names V32(1) V2211
0 1
.names V446 V2211 V2212
11 1
.names V2210 V32(1) V2213
11 1
.names V2212 V2213 V325
-1 1
1- 1
.names V441 V2214
0 1
.names V32(2) V2215
0 1
.names V441 V2215 V2216
11 1
.names V2214 V32(2) V2217
11 1
.names V2216 V2217 V326
-1 1
1- 1
.names V1850 V2218
0 1
.names V1298 V2219
0 1
.names V1850 V2219 V2220
11 1
.names V2218 V1298 V2221
11 1
.names V2220 V2221 V437
-1 1
1- 1
.names V1852 V2222
0 1
.names V1302 V2223
0 1
.names V1852 V2223 V2224
11 1
.names V2222 V1302 V2225
11 1
.names V2224 V2225 V439
-1 1
1- 1
.names V1838 V2226
0 1
.names V1307 V2227
0 1
.names V1838 V2227 V2228
11 1
.names V2226 V1307 V2229
11 1
.names V2228 V2229 V440
-1 1
1- 1
.names V439 V2230
0 1
.names V438 V2231
0 1
.names V439 V2231 V2232
11 1
.names V2230 V438 V2233
11 1
.names V2232 V2233 V441
-1 1
1- 1
.names V445(0) V2234
0 1
.names V440 V2235
0 1
.names V445(0) V2235 V2236
11 1
.names V2234 V440 V2237
11 1
.names V2236 V2237 V446
-1 1
1- 1
.names V1312 V2238
0 1
.names V450(0) V2239
0 1
.names V1312 V2239 V2240
11 1
.names V2238 V450(0) V2241
11 1
.names V2240 V2241 V451
-1 1
1- 1
.names V441 V2242
0 1
.names V333 V2243
0 1
.names V441 V2243 V2244
11 1
.names V2242 V333 V2245
11 1
.names V2244 V2245 V452
-1 1
1- 1
.names V446 V2246
0 1
.names V453 V2247
0 1
.names V446 V2247 V2248
11 1
.names V2246 V453 V2249
11 1
.names V2248 V2249 V454
-1 1
1- 1
.names V451 V2250
0 1
.names V455 V2251
0 1
.names V451 V2251 V2252
11 1
.names V2250 V455 V2253
11 1
.names V2252 V2253 V456
-1 1
1- 1
.names V452 V2254
0 1
.names V457 V2255
0 1
.names V452 V2255 V2256
11 1
.names V2254 V457 V2257
11 1
.names V2256 V2257 V460
-1 1
1- 1
.names V454 V2258
0 1
.names V461 V2259
0 1
.names V454 V2259 V2260
11 1
.names V2258 V461 V2261
11 1
.names V2260 V2261 V462
-1 1
1- 1
.names V456 V2262
0 1
.names V463 V2263
0 1
.names V456 V2263 V2264
11 1
.names V2262 V463 V2265
11 1
.names V2264 V2265 V464
-1 1
1- 1
.names V473(0) V2266
0 1
.names V477 V2267
0 1
.names V473(0) V2267 V2268
11 1
.names V2266 V477 V2269
11 1
.names V2268 V2269 V480
-1 1
1- 1
.names V470(0) V2270
0 1
.names V481 V2271
0 1
.names V470(0) V2271 V2272
11 1
.names V2270 V481 V2273
11 1
.names V2272 V2273 V482
-1 1
1- 1
.names V467(0) V2274
0 1
.names V483 V2275
0 1
.names V467(0) V2275 V2276
11 1
.names V2274 V483 V2277
11 1
.names V2276 V2277 V484
-1 1
1- 1
.names V39(0) V2278
0 1
.names V38(0) V2279
0 1
.names V39(0) V2279 V2280
11 1
.names V2278 V38(0) V2281
11 1
.names V2280 V2281 V509
-1 1
1- 1
.names V42(0) V2282
0 1
.names V44(0) V2283
0 1
.names V42(0) V2283 V2284
11 1
.names V2282 V44(0) V2285
11 1
.names V2284 V2285 V530
-1 1
1- 1
.names V41(0) V2286
0 1
.names V45(0) V2287
0 1
.names V41(0) V2287 V2288
11 1
.names V2286 V45(0) V2289
11 1
.names V2288 V2289 V531
-1 1
1- 1
.names V257(0) V2290
0 1
.names V644 V2291
0 1
.names V257(0) V2291 V2292
11 1
.names V2290 V644 V2293
11 1
.names V2292 V2293 V650
-1 1
1- 1
.names V257(1) V2294
0 1
.names V645 V2295
0 1
.names V257(1) V2295 V2296
11 1
.names V2294 V645 V2297
11 1
.names V2296 V2297 V651
-1 1
1- 1
.names V257(2) V2298
0 1
.names V646 V2299
0 1
.names V257(2) V2299 V2300
11 1
.names V2298 V646 V2301
11 1
.names V2300 V2301 V652
-1 1
1- 1
.names V257(3) V2302
0 1
.names V647 V2303
0 1
.names V257(3) V2303 V2304
11 1
.names V2302 V647 V2305
11 1
.names V2304 V2305 V653
-1 1
1- 1
.names V257(4) V2306
0 1
.names V648 V2307
0 1
.names V257(4) V2307 V2308
11 1
.names V2306 V648 V2309
11 1
.names V2308 V2309 V654
-1 1
1- 1
.names V257(5) V2310
0 1
.names V649 V2311
0 1
.names V257(5) V2311 V2312
11 1
.names V2310 V649 V2313
11 1
.names V2312 V2313 V655
-1 1
1- 1
.names V257(6) V2314
0 1
.names V257(7) V2315
0 1
.names V257(6) V2315 V2316
11 1
.names V2314 V257(7) V2317
11 1
.names V2316 V2317 V656
-1 1
1- 1
.names V2078(0) V2318
0 1
.names V1255(0) V2319
0 1
.names V2078(0) V2319 V2320
11 1
.names V2318 V1255(0) V2321
11 1
.names V2320 V2321 V828
-1 1
1- 1
.names V2081(0) V2322
0 1
.names V1255(1) V2323
0 1
.names V2081(0) V2323 V2324
11 1
.names V2322 V1255(1) V2325
11 1
.names V2324 V2325 V829
-1 1
1- 1
.names V2084(0) V2326
0 1
.names V1255(2) V2327
0 1
.names V2084(0) V2327 V2328
11 1
.names V2326 V1255(2) V2329
11 1
.names V2328 V2329 V830
-1 1
1- 1
.names V2087(0) V2330
0 1
.names V1255(3) V2331
0 1
.names V2087(0) V2331 V2332
11 1
.names V2330 V1255(3) V2333
11 1
.names V2332 V2333 V831
-1 1
1- 1
.names V2058(0) V2334
0 1
.names V1255(0) V2335
0 1
.names V2058(0) V2335 V2336
11 1
.names V2334 V1255(0) V2337
11 1
.names V2336 V2337 V838
-1 1
1- 1
.names V2061(0) V2338
0 1
.names V1255(1) V2339
0 1
.names V2061(0) V2339 V2340
11 1
.names V2338 V1255(1) V2341
11 1
.names V2340 V2341 V839
-1 1
1- 1
.names V2064(0) V2342
0 1
.names V1255(2) V2343
0 1
.names V2064(0) V2343 V2344
11 1
.names V2342 V1255(2) V2345
11 1
.names V2344 V2345 V840
-1 1
1- 1
.names V2067(0) V2346
0 1
.names V1255(3) V2347
0 1
.names V2067(0) V2347 V2348
11 1
.names V2346 V1255(3) V2349
11 1
.names V2348 V2349 V841
-1 1
1- 1
.names V2047 V2350
0 1
.names V1255(0) V2351
0 1
.names V2047 V2351 V2352
11 1
.names V2350 V1255(0) V2353
11 1
.names V2352 V2353 V848
-1 1
1- 1
.names V2045 V2354
0 1
.names V1255(1) V2355
0 1
.names V2045 V2355 V2356
11 1
.names V2354 V1255(1) V2357
11 1
.names V2356 V2357 V849
-1 1
1- 1
.names V2043 V2358
0 1
.names V1255(2) V2359
0 1
.names V2043 V2359 V2360
11 1
.names V2358 V1255(2) V2361
11 1
.names V2360 V2361 V850
-1 1
1- 1
.names V2040 V2362
0 1
.names V1255(3) V2363
0 1
.names V2040 V2363 V2364
11 1
.names V2362 V1255(3) V2365
11 1
.names V2364 V2365 V851
-1 1
1- 1
.names V2039 V2366
0 1
.names V1255(0) V2367
0 1
.names V2039 V2367 V2368
11 1
.names V2366 V1255(0) V2369
11 1
.names V2368 V2369 V858
-1 1
1- 1
.names V2034 V2370
0 1
.names V1255(1) V2371
0 1
.names V2034 V2371 V2372
11 1
.names V2370 V1255(1) V2373
11 1
.names V2372 V2373 V859
-1 1
1- 1
.names V2029 V2374
0 1
.names V1255(2) V2375
0 1
.names V2029 V2375 V2376
11 1
.names V2374 V1255(2) V2377
11 1
.names V2376 V2377 V860
-1 1
1- 1
.names V2025 V2378
0 1
.names V1255(3) V2379
0 1
.names V2025 V2379 V2380
11 1
.names V2378 V1255(3) V2381
11 1
.names V2380 V2381 V861
-1 1
1- 1
.names V1351(0) V2382
0 1
.names V1255(0) V2383
0 1
.names V1351(0) V2383 V2384
11 1
.names V2382 V1255(0) V2385
11 1
.names V2384 V2385 V868
-1 1
1- 1
.names V1354(0) V2386
0 1
.names V1255(1) V2387
0 1
.names V1354(0) V2387 V2388
11 1
.names V2386 V1255(1) V2389
11 1
.names V2388 V2389 V869
-1 1
1- 1
.names V1357(0) V2390
0 1
.names V1255(2) V2391
0 1
.names V1357(0) V2391 V2392
11 1
.names V2390 V1255(2) V2393
11 1
.names V2392 V2393 V870
-1 1
1- 1
.names V1360(0) V2394
0 1
.names V1255(3) V2395
0 1
.names V1360(0) V2395 V2396
11 1
.names V2394 V1255(3) V2397
11 1
.names V2396 V2397 V871
-1 1
1- 1
.names V1331(0) V2398
0 1
.names V1255(0) V2399
0 1
.names V1331(0) V2399 V2400
11 1
.names V2398 V1255(0) V2401
11 1
.names V2400 V2401 V878
-1 1
1- 1
.names V1334(0) V2402
0 1
.names V1255(1) V2403
0 1
.names V1334(0) V2403 V2404
11 1
.names V2402 V1255(1) V2405
11 1
.names V2404 V2405 V879
-1 1
1- 1
.names V1337(0) V2406
0 1
.names V1255(2) V2407
0 1
.names V1337(0) V2407 V2408
11 1
.names V2406 V1255(2) V2409
11 1
.names V2408 V2409 V880
-1 1
1- 1
.names V1340(0) V2410
0 1
.names V1255(3) V2411
0 1
.names V1340(0) V2411 V2412
11 1
.names V2410 V1255(3) V2413
11 1
.names V2412 V2413 V881
-1 1
1- 1
.names V1320 V2414
0 1
.names V1255(0) V2415
0 1
.names V1320 V2415 V2416
11 1
.names V2414 V1255(0) V2417
11 1
.names V2416 V2417 V888
-1 1
1- 1
.names V1318 V2418
0 1
.names V1255(1) V2419
0 1
.names V1318 V2419 V2420
11 1
.names V2418 V1255(1) V2421
11 1
.names V2420 V2421 V889
-1 1
1- 1
.names V1316 V2422
0 1
.names V1255(2) V2423
0 1
.names V1316 V2423 V2424
11 1
.names V2422 V1255(2) V2425
11 1
.names V2424 V2425 V890
-1 1
1- 1
.names V1313 V2426
0 1
.names V1255(3) V2427
0 1
.names V1313 V2427 V2428
11 1
.names V2426 V1255(3) V2429
11 1
.names V2428 V2429 V891
-1 1
1- 1
.names V1312 V2430
0 1
.names V1255(0) V2431
0 1
.names V1312 V2431 V2432
11 1
.names V2430 V1255(0) V2433
11 1
.names V2432 V2433 V898
-1 1
1- 1
.names V1307 V2434
0 1
.names V1255(1) V2435
0 1
.names V1307 V2435 V2436
11 1
.names V2434 V1255(1) V2437
11 1
.names V2436 V2437 V899
-1 1
1- 1
.names V1302 V2438
0 1
.names V1255(2) V2439
0 1
.names V1302 V2439 V2440
11 1
.names V2438 V1255(2) V2441
11 1
.names V2440 V2441 V900
-1 1
1- 1
.names V1298 V2442
0 1
.names V1255(3) V2443
0 1
.names V1298 V2443 V2444
11 1
.names V2442 V1255(3) V2445
11 1
.names V2444 V2445 V901
-1 1
1- 1
.names V487(0) V2446
0 1
.names V1255(0) V2447
0 1
.names V487(0) V2447 V2448
11 1
.names V2446 V1255(0) V2449
11 1
.names V2448 V2449 V908
-1 1
1- 1
.names V490(0) V2450
0 1
.names V1255(1) V2451
0 1
.names V490(0) V2451 V2452
11 1
.names V2450 V1255(1) V2453
11 1
.names V2452 V2453 V909
-1 1
1- 1
.names V493(0) V2454
0 1
.names V1255(2) V2455
0 1
.names V493(0) V2455 V2456
11 1
.names V2454 V1255(2) V2457
11 1
.names V2456 V2457 V910
-1 1
1- 1
.names V496(0) V2458
0 1
.names V1255(3) V2459
0 1
.names V496(0) V2459 V2460
11 1
.names V2458 V1255(3) V2461
11 1
.names V2460 V2461 V911
-1 1
1- 1
.names V467(0) V2462
0 1
.names V1255(0) V2463
0 1
.names V467(0) V2463 V2464
11 1
.names V2462 V1255(0) V2465
11 1
.names V2464 V2465 V918
-1 1
1- 1
.names V470(0) V2466
0 1
.names V1255(1) V2467
0 1
.names V470(0) V2467 V2468
11 1
.names V2466 V1255(1) V2469
11 1
.names V2468 V2469 V919
-1 1
1- 1
.names V473(0) V2470
0 1
.names V1255(2) V2471
0 1
.names V473(0) V2471 V2472
11 1
.names V2470 V1255(2) V2473
11 1
.names V2472 V2473 V920
-1 1
1- 1
.names V476(0) V2474
0 1
.names V1255(3) V2475
0 1
.names V476(0) V2475 V2476
11 1
.names V2474 V1255(3) V2477
11 1
.names V2476 V2477 V921
-1 1
1- 1
.names V456 V2478
0 1
.names V1255(0) V2479
0 1
.names V456 V2479 V2480
11 1
.names V2478 V1255(0) V2481
11 1
.names V2480 V2481 V928
-1 1
1- 1
.names V454 V2482
0 1
.names V1255(1) V2483
0 1
.names V454 V2483 V2484
11 1
.names V2482 V1255(1) V2485
11 1
.names V2484 V2485 V929
-1 1
1- 1
.names V452 V2486
0 1
.names V1255(2) V2487
0 1
.names V452 V2487 V2488
11 1
.names V2486 V1255(2) V2489
11 1
.names V2488 V2489 V930
-1 1
1- 1
.names V333 V2490
0 1
.names V1255(3) V2491
0 1
.names V333 V2491 V2492
11 1
.names V2490 V1255(3) V2493
11 1
.names V2492 V2493 V931
-1 1
1- 1
.names V451 V2494
0 1
.names V1255(0) V2495
0 1
.names V451 V2495 V2496
11 1
.names V2494 V1255(0) V2497
11 1
.names V2496 V2497 V938
-1 1
1- 1
.names V446 V2498
0 1
.names V1255(1) V2499
0 1
.names V446 V2499 V2500
11 1
.names V2498 V1255(1) V2501
11 1
.names V2500 V2501 V939
-1 1
1- 1
.names V441 V2502
0 1
.names V1255(2) V2503
0 1
.names V441 V2503 V2504
11 1
.names V2502 V1255(2) V2505
11 1
.names V2504 V2505 V940
-1 1
1- 1
.names V437 V2506
0 1
.names V1255(3) V2507
0 1
.names V437 V2507 V2508
11 1
.names V2506 V1255(3) V2509
11 1
.names V2508 V2509 V941
-1 1
1- 1
.names V1846 V2510
0 1
.names V2025 V2511
0 1
.names V1846 V2511 V2512
11 1
.names V2510 V2025 V2513
11 1
.names V2512 V2513 V1298
-1 1
1- 1
.names V1848 V2514
0 1
.names V2029 V2515
0 1
.names V1848 V2515 V2516
11 1
.names V2514 V2029 V2517
11 1
.names V2516 V2517 V1300
-1 1
1- 1
.names V1839 V2518
0 1
.names V2034 V2519
0 1
.names V1839 V2519 V2520
11 1
.names V2518 V2034 V2521
11 1
.names V2520 V2521 V1301
-1 1
1- 1
.names V1300 V2522
0 1
.names V1299 V2523
0 1
.names V1300 V2523 V2524
11 1
.names V2522 V1299 V2525
11 1
.names V2524 V2525 V1302
-1 1
1- 1
.names V1306(0) V2526
0 1
.names V1301 V2527
0 1
.names V1306(0) V2527 V2528
11 1
.names V2526 V1301 V2529
11 1
.names V2528 V2529 V1307
-1 1
1- 1
.names V2039 V2530
0 1
.names V1311(0) V2531
0 1
.names V2039 V2531 V2532
11 1
.names V2530 V1311(0) V2533
11 1
.names V2532 V2533 V1312
-1 1
1- 1
.names V1302 V2534
0 1
.names V1313 V2535
0 1
.names V1302 V2535 V2536
11 1
.names V2534 V1313 V2537
11 1
.names V2536 V2537 V1316
-1 1
1- 1
.names V1307 V2538
0 1
.names V1317 V2539
0 1
.names V1307 V2539 V2540
11 1
.names V2538 V1317 V2541
11 1
.names V2540 V2541 V1318
-1 1
1- 1
.names V1312 V2542
0 1
.names V1319 V2543
0 1
.names V1312 V2543 V2544
11 1
.names V2542 V1319 V2545
11 1
.names V2544 V2545 V1320
-1 1
1- 1
.names V1316 V2546
0 1
.names V1321 V2547
0 1
.names V1316 V2547 V2548
11 1
.names V2546 V1321 V2549
11 1
.names V2548 V2549 V1324
-1 1
1- 1
.names V1318 V2550
0 1
.names V1325 V2551
0 1
.names V1318 V2551 V2552
11 1
.names V2550 V1325 V2553
11 1
.names V2552 V2553 V1326
-1 1
1- 1
.names V1320 V2554
0 1
.names V1327 V2555
0 1
.names V1320 V2555 V2556
11 1
.names V2554 V1327 V2557
11 1
.names V2556 V2557 V1328
-1 1
1- 1
.names V1337(0) V2558
0 1
.names V1341 V2559
0 1
.names V1337(0) V2559 V2560
11 1
.names V2558 V1341 V2561
11 1
.names V2560 V2561 V1344
-1 1
1- 1
.names V1334(0) V2562
0 1
.names V1345 V2563
0 1
.names V1334(0) V2563 V2564
11 1
.names V2562 V1345 V2565
11 1
.names V2564 V2565 V1346
-1 1
1- 1
.names V1331(0) V2566
0 1
.names V1347 V2567
0 1
.names V1331(0) V2567 V2568
11 1
.names V2566 V1347 V2569
11 1
.names V2568 V2569 V1348
-1 1
1- 1
.names V268(0) V2570
0 1
.names V1366 V2571
0 1
.names V268(0) V2571 V2572
11 1
.names V2570 V1366 V2573
11 1
.names V2572 V2573 V1370
-1 1
1- 1
.names V268(1) V2574
0 1
.names V1367 V2575
0 1
.names V268(1) V2575 V2576
11 1
.names V2574 V1367 V2577
11 1
.names V2576 V2577 V1371
-1 1
1- 1
.names V268(2) V2578
0 1
.names V1368 V2579
0 1
.names V268(2) V2579 V2580
11 1
.names V2578 V1368 V2581
11 1
.names V2580 V2581 V1372
-1 1
1- 1
.names V268(3) V2582
0 1
.names V1369 V2583
0 1
.names V268(3) V2583 V2584
11 1
.names V2582 V1369 V2585
11 1
.names V2584 V2585 V1373
-1 1
1- 1
.names V268(4) V2586
0 1
.names V268(5) V2587
0 1
.names V268(4) V2587 V2588
11 1
.names V2586 V268(5) V2589
11 1
.names V2588 V2589 V1374
-1 1
1- 1
.names V78(1) V2590
0 1
.names V78(0) V2591
0 1
.names V78(1) V2591 V2592
11 1
.names V2590 V78(0) V2593
11 1
.names V2592 V2593 V1579
-1 1
1- 1
.names V78(3) V2594
0 1
.names V78(2) V2595
0 1
.names V78(3) V2595 V2596
11 1
.names V2594 V78(2) V2597
11 1
.names V2596 V2597 V1580
-1 1
1- 1
.names V78(5) V2598
0 1
.names V78(4) V2599
0 1
.names V78(5) V2599 V2600
11 1
.names V2598 V78(4) V2601
11 1
.names V2600 V2601 V1581
-1 1
1- 1
.names V84(1) V2602
0 1
.names V84(0) V2603
0 1
.names V84(1) V2603 V2604
11 1
.names V2602 V84(0) V2605
11 1
.names V2604 V2605 V1582
-1 1
1- 1
.names V84(3) V2606
0 1
.names V84(2) V2607
0 1
.names V84(3) V2607 V2608
11 1
.names V2606 V84(2) V2609
11 1
.names V2608 V2609 V1583
-1 1
1- 1
.names V84(5) V2610
0 1
.names V84(4) V2611
0 1
.names V84(5) V2611 V2612
11 1
.names V2610 V84(4) V2613
11 1
.names V2612 V2613 V1584
-1 1
1- 1
.names V88(1) V2614
0 1
.names V88(0) V2615
0 1
.names V88(1) V2615 V2616
11 1
.names V2614 V88(0) V2617
11 1
.names V2616 V2617 V1585
-1 1
1- 1
.names V88(3) V2618
0 1
.names V88(2) V2619
0 1
.names V88(3) V2619 V2620
11 1
.names V2618 V88(2) V2621
11 1
.names V2620 V2621 V1586
-1 1
1- 1
.names V1580 V2622
0 1
.names V1579 V2623
0 1
.names V1580 V2623 V2624
11 1
.names V2622 V1579 V2625
11 1
.names V2624 V2625 V1587
-1 1
1- 1
.names V1582 V2626
0 1
.names V1581 V2627
0 1
.names V1582 V2627 V2628
11 1
.names V2626 V1581 V2629
11 1
.names V2628 V2629 V1588
-1 1
1- 1
.names V1584 V2630
0 1
.names V1583 V2631
0 1
.names V1584 V2631 V2632
11 1
.names V2630 V1583 V2633
11 1
.names V2632 V2633 V1589
-1 1
1- 1
.names V1586 V2634
0 1
.names V1585 V2635
0 1
.names V1586 V2635 V2636
11 1
.names V2634 V1585 V2637
11 1
.names V2636 V2637 V1590
-1 1
1- 1
.names V1588 V2638
0 1
.names V1587 V2639
0 1
.names V1588 V2639 V2640
11 1
.names V2638 V1587 V2641
11 1
.names V2640 V2641 V1591
-1 1
1- 1
.names V1590 V2642
0 1
.names V1589 V2643
0 1
.names V1590 V2643 V2644
11 1
.names V2642 V1589 V2645
11 1
.names V2644 V2645 V1592
-1 1
1- 1
.names V94(0) V2646
0 1
.names V1591 V2647
0 1
.names V94(0) V2647 V2648
11 1
.names V2646 V1591 V2649
11 1
.names V2648 V2649 V1593
-1 1
1- 1
.names V94(1) V2650
0 1
.names V1592 V2651
0 1
.names V94(1) V2651 V2652
11 1
.names V2650 V1592 V2653
11 1
.names V2652 V2653 V1594
-1 1
1- 1
.names V1921(1) V2654
0 1
.names V1921(0) V2655
0 1
.names V1921(1) V2655 V2656
11 1
.names V2654 V1921(0) V2657
11 1
.names V2656 V2657 V1598
-1 1
1- 1
.names V1921(3) V2658
0 1
.names V1921(2) V2659
0 1
.names V1921(3) V2659 V2660
11 1
.names V2658 V1921(2) V2661
11 1
.names V2660 V2661 V1599
-1 1
1- 1
.names V1921(5) V2662
0 1
.names V1921(4) V2663
0 1
.names V1921(5) V2663 V2664
11 1
.names V2662 V1921(4) V2665
11 1
.names V2664 V2665 V1600
-1 1
1- 1
.names V1953(1) V2666
0 1
.names V1953(0) V2667
0 1
.names V1953(1) V2667 V2668
11 1
.names V2666 V1953(0) V2669
11 1
.names V2668 V2669 V1601
-1 1
1- 1
.names V1953(3) V2670
0 1
.names V1953(2) V2671
0 1
.names V1953(3) V2671 V2672
11 1
.names V2670 V1953(2) V2673
11 1
.names V2672 V2673 V1602
-1 1
1- 1
.names V1953(5) V2674
0 1
.names V1953(4) V2675
0 1
.names V1953(5) V2675 V2676
11 1
.names V2674 V1953(4) V2677
11 1
.names V2676 V2677 V1603
-1 1
1- 1
.names V1953(7) V2678
0 1
.names V1953(6) V2679
0 1
.names V1953(7) V2679 V2680
11 1
.names V2678 V1953(6) V2681
11 1
.names V2680 V2681 V1604
-1 1
1- 1
.names V1960(1) V2682
0 1
.names V1960(0) V2683
0 1
.names V1960(1) V2683 V2684
11 1
.names V2682 V1960(0) V2685
11 1
.names V2684 V2685 V1605
-1 1
1- 1
.names V1599 V2686
0 1
.names V1598 V2687
0 1
.names V1599 V2687 V2688
11 1
.names V2686 V1598 V2689
11 1
.names V2688 V2689 V1606
-1 1
1- 1
.names V1601 V2690
0 1
.names V1600 V2691
0 1
.names V1601 V2691 V2692
11 1
.names V2690 V1600 V2693
11 1
.names V2692 V2693 V1607
-1 1
1- 1
.names V1603 V2694
0 1
.names V1602 V2695
0 1
.names V1603 V2695 V2696
11 1
.names V2694 V1602 V2697
11 1
.names V2696 V2697 V1608
-1 1
1- 1
.names V1605 V2698
0 1
.names V1604 V2699
0 1
.names V1605 V2699 V2700
11 1
.names V2698 V1604 V2701
11 1
.names V2700 V2701 V1609
-1 1
1- 1
.names V1607 V2702
0 1
.names V1606 V2703
0 1
.names V1607 V2703 V2704
11 1
.names V2702 V1606 V2705
11 1
.names V2704 V2705 V1610
-1 1
1- 1
.names V1609 V2706
0 1
.names V1608 V2707
0 1
.names V1609 V2707 V2708
11 1
.names V2706 V1608 V2709
11 1
.names V2708 V2709 V1611
-1 1
1- 1
.names V194(0) V2710
0 1
.names V1867 V2711
0 1
.names V194(0) V2711 V2712
11 1
.names V2710 V1867 V2713
11 1
.names V2712 V2713 V1875
-1 1
1- 1
.names V194(1) V2714
0 1
.names V1868 V2715
0 1
.names V194(1) V2715 V2716
11 1
.names V2714 V1868 V2717
11 1
.names V2716 V2717 V1876
-1 1
1- 1
.names V194(2) V2718
0 1
.names V1869 V2719
0 1
.names V194(2) V2719 V2720
11 1
.names V2718 V1869 V2721
11 1
.names V2720 V2721 V1877
-1 1
1- 1
.names V194(3) V2722
0 1
.names V1870 V2723
0 1
.names V194(3) V2723 V2724
11 1
.names V2722 V1870 V2725
11 1
.names V2724 V2725 V1878
-1 1
1- 1
.names V194(4) V2726
0 1
.names V1871 V2727
0 1
.names V194(4) V2727 V2728
11 1
.names V2726 V1871 V2729
11 1
.names V2728 V2729 V1879
-1 1
1- 1
.names V199(0) V2730
0 1
.names V1872 V2731
0 1
.names V199(0) V2731 V2732
11 1
.names V2730 V1872 V2733
11 1
.names V2732 V2733 V1880
-1 1
1- 1
.names V199(1) V2734
0 1
.names V1873 V2735
0 1
.names V199(1) V2735 V2736
11 1
.names V2734 V1873 V2737
11 1
.names V2736 V2737 V1881
-1 1
1- 1
.names V199(2) V2738
0 1
.names V1874 V2739
0 1
.names V199(2) V2739 V2740
11 1
.names V2738 V1874 V2741
11 1
.names V2740 V2741 V1882
-1 1
1- 1
.names V199(3) V2742
0 1
.names V199(4) V2743
0 1
.names V199(3) V2743 V2744
11 1
.names V2742 V199(4) V2745
11 1
.names V2744 V2745 V1883
-1 1
1- 1
.names V288(7) V2746
0 1
.names V288(6) V2747
0 1
.names V288(7) V2747 V2748
11 1
.names V2746 V288(6) V2749
11 1
.names V2748 V2749 V1973
-1 1
1- 1
.names V239(4) V2750
0 1
.names V239(3) V2751
0 1
.names V239(4) V2751 V2752
11 1
.names V2750 V239(3) V2753
11 1
.names V2752 V2753 V1986
-1 1
1- 1
.names V134(1) V2754
0 1
.names V134(0) V2755
0 1
.names V134(1) V2755 V2756
11 1
.names V2754 V134(0) V2757
11 1
.names V2756 V2757 V1994
-1 1
1- 1
.names V1842 V2758
0 1
.names V1976(0) V2759
0 1
.names V1842 V2759 V2760
11 1
.names V2758 V1976(0) V2761
11 1
.names V2760 V2761 V2025
-1 1
1- 1
.names V1844 V2762
0 1
.names V1975(0) V2763
0 1
.names V1844 V2763 V2764
11 1
.names V2762 V1975(0) V2765
11 1
.names V2764 V2765 V2027
-1 1
1- 1
.names V1840 V2766
0 1
.names V1972 V2767
0 1
.names V1840 V2767 V2768
11 1
.names V2766 V1972 V2769
11 1
.names V2768 V2769 V2028
-1 1
1- 1
.names V2027 V2770
0 1
.names V2026 V2771
0 1
.names V2027 V2771 V2772
11 1
.names V2770 V2026 V2773
11 1
.names V2772 V2773 V2029
-1 1
1- 1
.names V2033(0) V2774
0 1
.names V2028 V2775
0 1
.names V2033(0) V2775 V2776
11 1
.names V2774 V2028 V2777
11 1
.names V2776 V2777 V2034
-1 1
1- 1
.names V1972 V2778
0 1
.names V2038(0) V2779
0 1
.names V1972 V2779 V2780
11 1
.names V2778 V2038(0) V2781
11 1
.names V2780 V2781 V2039
-1 1
1- 1
.names V2029 V2782
0 1
.names V2040 V2783
0 1
.names V2029 V2783 V2784
11 1
.names V2782 V2040 V2785
11 1
.names V2784 V2785 V2043
-1 1
1- 1
.names V2034 V2786
0 1
.names V2044 V2787
0 1
.names V2034 V2787 V2788
11 1
.names V2786 V2044 V2789
11 1
.names V2788 V2789 V2045
-1 1
1- 1
.names V2039 V2790
0 1
.names V2046 V2791
0 1
.names V2039 V2791 V2792
11 1
.names V2790 V2046 V2793
11 1
.names V2792 V2793 V2047
-1 1
1- 1
.names V2043 V2794
0 1
.names V2048 V2795
0 1
.names V2043 V2795 V2796
11 1
.names V2794 V2048 V2797
11 1
.names V2796 V2797 V2051
-1 1
1- 1
.names V2045 V2798
0 1
.names V2052 V2799
0 1
.names V2045 V2799 V2800
11 1
.names V2798 V2052 V2801
11 1
.names V2800 V2801 V2053
-1 1
1- 1
.names V2047 V2802
0 1
.names V2054 V2803
0 1
.names V2047 V2803 V2804
11 1
.names V2802 V2054 V2805
11 1
.names V2804 V2805 V2055
-1 1
1- 1
.names V2064(0) V2806
0 1
.names V2068 V2807
0 1
.names V2064(0) V2807 V2808
11 1
.names V2806 V2068 V2809
11 1
.names V2808 V2809 V2071
-1 1
1- 1
.names V2061(0) V2810
0 1
.names V2072 V2811
0 1
.names V2061(0) V2811 V2812
11 1
.names V2810 V2072 V2813
11 1
.names V2812 V2813 V2073
-1 1
1- 1
.names V2058(0) V2814
0 1
.names V2074 V2815
0 1
.names V2058(0) V2815 V2816
11 1
.names V2814 V2074 V2817
11 1
.names V2816 V2817 V2075
-1 1
1- 1
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
.model iscas\s444.bench
.inputs G0 G1 G2
.outputs G118 G167 G107 G119 G168 G108
.latch G11_in G11 0
.latch G12_in G12 0
.latch G13_in G13 0
.latch G14_in G14 0
.latch G15_in G15 0
.latch G16_in G16 0
.latch G17_in G17 0
.latch G18_in G18 0
.latch G19_in G19 0
.latch G20_in G20 0
.latch G21_in G21 0
.latch G22_in G22 0
.latch G23_in G23 0
.latch G24_in G24 0
.latch G25_in G25 0
.latch G26_in G26 0
.latch G27_in G27 0
.latch G28_in G28 0
.latch G29_in G29 0
.latch G30_in G30 0
.latch G31_in G31 0
.names G12 G13 [25]
00 1
.names G11 [25] [26]
01 1
.names G14 [26] [27]
10 1
.names G0 G11 [28]
00 1
.names [27] [28] G11_in
01 1
.names G11 G12 [30]
11 1
.names G12 [30] [31]
10 1
.names G11 [30] [32]
10 1
.names [31] [32] [33]
00 1
.names G0 [33] [34]
00 1
.names [27] [34] G12_in
01 1
.names G13 [30] [36]
11 1
.names G13 [36] [37]
10 1
.names [30] [36] [38]
10 1
.names [37] [38] [39]
00 1
.names G0 [39] [40]
00 1
.names [27] [40] G13_in
01 1
.names G12 G13 [42]
11 1
.names G11 [42] [43]
11 1
.names G14 [43] [44]
11 1
.names G14 [44] [45]
10 1
.names [43] [44] [46]
10 1
.names [45] [46] [47]
00 1
.names G0 [47] [48]
00 1
.names [27] [48] G14_in
01 1
.names G31 [27] [50]
00 1
.names G16 G17 [51]
00 1
.names G15 [51] [52]
01 1
.names [50] [52] [53]
00 1
.names G18 [53] [54]
11 1
.names G15 [50] [55]
10 1
.names G15 [55] [56]
10 1
.names [50] [55] [57]
00 1
.names [56] [57] [58]
00 1
.names G0 [58] [59]
00 1
.names [54] [59] G15_in
01 1
.names G16 [55] [61]
11 1
.names G16 [61] [62]
10 1
.names [55] [61] [63]
10 1
.names [62] [63] [64]
00 1
.names G0 [64] [65]
00 1
.names [54] [65] G16_in
01 1
.names G16 [50] [67]
10 1
.names G15 [67] [68]
11 1
.names G17 [68] [69]
11 1
.names G17 [69] [70]
10 1
.names [68] [69] [71]
10 1
.names [70] [71] [72]
00 1
.names G0 [72] [73]
00 1
.names [54] [73] G17_in
01 1
.names G15 G16 [75]
11 1
.names G17 [50] [76]
10 1
.names [75] [76] [77]
11 1
.names G18 [77] [78]
11 1
.names G18 [78] [79]
10 1
.names [77] [78] [80]
10 1
.names [79] [80] [81]
00 1
.names G0 [81] [82]
00 1
.names [54] [82] G18_in
01 1
.names G20 G21 [84]
00 1
.names G19 [84] [85]
01 1
.names [54] [85] [86]
10 1
.names G22 [86] [87]
11 1
.names G19 [54] [88]
11 1
.names G19 [88] [89]
10 1
.names [54] [88] [90]
10 1
.names [89] [90] [91]
00 1
.names G0 [91] [92]
00 1
.names [87] [92] G19_in
01 1
.names G20 [88] [94]
11 1
.names G20 [94] [95]
10 1
.names [88] [94] [96]
10 1
.names [95] [96] [97]
00 1
.names G0 [97] [98]
00 1
.names [87] [98] G20_in
01 1
.names G20 [54] [100]
11 1
.names G19 [100] [101]
11 1
.names G21 [101] [102]
11 1
.names G21 [102] [103]
10 1
.names [101] [102] [104]
10 1
.names [103] [104] [105]
00 1
.names G0 [105] [106]
00 1
.names [87] [106] G21_in
01 1
.names G19 G20 [108]
11 1
.names G21 [54] [109]
11 1
.names [108] [109] [110]
11 1
.names G22 [110] [111]
11 1
.names G22 [111] [112]
10 1
.names [110] [111] [113]
10 1
.names [112] [113] [114]
00 1
.names G0 [114] [115]
00 1
.names [87] [115] G22_in
01 1
.names G2 G23 [117]
00 1
.names G2 G23 [118]
11 1
.names [117] [118] [119]
00 1
.names G0 [119] G23_in
01 1
.names G20 G21 [121]
01 1
.names G0 G23 [122]
01 1
.names [121] [122] [123]
11 1
.names G19 [123] [124]
01 1
.names G21 G22 [126]
10 1
.names G19 G20 [125]
10 1
.names G23 [125] [127]
01 1
.names [126] [127] [128]
11 1
.names G0 G24 [129]
01 1
.names [128] [129] [130]
01 1
.names [124] [130] [131]
00 1
.names G22 G23 [132]
00 1
.names [125] [132] [133]
11 1
.names G24 [133] [134]
10 1
.names G19 G20 [135]
00 1
.names G23 [135] [136]
11 1
.names G22 G23 [137]
11 1
.names [136] [137] [138]
00 1
.names G0 G21 [139]
01 1
.names [138] [139] [140]
11 1
.names [134] [140] G25_in
01 1
.names G19 G22 [142]
01 1
.names G0 [142] [143]
01 1
.names G0 [108] [144]
01 1
.names [143] [144] [145]
00 1
.names [129] [139] [146]
00 1
.names [145] [146] G26_in
11 1
.names G21 G24 [148]
00 1
.names [125] [148] [149]
11 1
.names G21 G22 [150]
00 1
.names G24 [150] [151]
01 1
.names G0 [151] [152]
00 1
.names [149] [152] [153]
01 1
.names G0 G22 [154]
01 1
.names [135] [154] [155]
11 1
.names [146] [155] [156]
10 1
.names [131] [156] [157]
00 1
.names G17 [157] [158]
01 1
.names [131] [156] [159]
10 1
.names [158] [159] G28_in
00 1
.names [122] [126] [161]
11 1
.names G21 G22 [162]
01 1
.names G0 [162] [163]
01 1
.names [161] [163] [164]
00 1
.names G20 [164] [165]
00 1
.names G19 [165] [166]
01 1
.names [130] [166] [167]
00 1
.names [131] [167] [168]
00 1
.names G17 [168] [169]
01 1
.names [131] [167] [170]
10 1
.names [169] [170] G29_in
00 1
.names G20 G21 [172]
10 1
.names G0 G24 [173]
00 1
.names [172] [173] [174]
11 1
.names G19 [174] G30_in
11 1
.names G1 G31 [176]
00 1
.names G1 G31 [177]
11 1
.names [176] [177] [178]
00 1
.names G0 [178] G31_in
01 1
.names [131] G24_in
0 1
.names [153] G27_in
0 1
.names G27 G118
1 1
.names G29 G167
0 1
.names G25 G107
1 1
.names G28 G119
0 1
.names G30 G168
1 1
.names G26 G108
1 1
.end
r examples/apex4.pla
resyn
sharem
fpga
cec
ps
clp
share
resyn
map
cec
ps
r examples/C2670.blif
resyn
fpga
cec
ps
u
map
cec
ps
r examples/frg2.blif
dsd
muxes
cec
clp
share
resyn
map
cec
ps
r examples/pj1.blif
resyn
fpga
cec
ps
u
map
cec
ps
r examples/s38584.bench
resyn
fpga
cec
ps
u
map
cec
ps
r examples/ac.v
resyn
fpga
cec
ps
u
map
cec
ps
r examples/s444.blif
b
esd -v
dsd
cec
ps
r examples/i10.blif
fpga
cec
ps
u
map
cec
ps
r examples/i10.blif
b
fraig_store
resyn
fraig_store
resyn2
fraig_store
fraig_restore
fpga
cec
ps
u
map
cec
ps
time
UC Berkeley, ABC 1.01 (compiled Sep 5 2005 23:36:08)
abc 01> so regtest.script
abc - > r examples/apex4.pla
abc - > resyn
abc - > sharem
abc - > fpga
abc - > cec
Networks are equivalent after fraiging.
abc - > ps
examples/apex4.pla: i/o = 9/ 19 lat = 0 nd = 784 cube = 1985 lev = 5
abc - >
abc - > clp
The shared BDD size is 917 nodes.
abc - > share
abc - > resyn
abc - > map
A simple supergate library is derived from gate library "mcnc_temp.genlib".
Loaded 20 unique 5-input supergates from "mcnc_temp.super". Time = 0.02 sec
abc - > cec
Networks are equivalent after fraiging.
abc - > ps
examples/apex4.pla: i/o = 9/ 19 lat = 0 nd = 1816 area = 4599.00 delay = 11.50 lev = 11
abc - >
abc - > r examples/C2670.blif
abc - > resyn
abc - > fpga
abc - > cec
Networks are equivalent after fraiging.
abc - > ps
C2670.iscas : i/o = 233/ 140 lat = 0 nd = 169 cube = 482 lev = 6
abc - >
abc - > u
abc - > map
abc - > cec
Networks are equivalent after fraiging.
abc - > ps
C2670.iscas : i/o = 233/ 140 lat = 0 nd = 465 area = 1142.00 delay = 15.50 lev = 14
abc - >
abc - > r examples/frg2.blif
abc - > dsd
abc - > muxes
abc - > cec
Networks are equivalent after fraiging.
abc - > clp
The shared BDD size is 1111 nodes.
abc - > share
abc - > resyn
abc - > map
abc - > cec
Networks are equivalent after fraiging.
abc - > ps
frg2 : i/o = 143/ 139 lat = 0 nd = 540 area = 1360.00 delay = 10.10 lev = 9
abc - >
abc - > r examples/pj1.blif
abc - > resyn
abc - > fpga
abc - > cec
Networks are equivalent after fraiging.
abc - > ps
exCombCkt : i/o = 1769/1063 lat = 0 nd = 4730 cube = 10662 lev = 12
abc - >
abc - > u
abc - > map
abc - > cec
Networks are equivalent after fraiging.
abc - > ps
exCombCkt : i/o = 1769/1063 lat = 0 nd = 10396 area = 25170.00 delay = 29.20 lev = 27
abc - >
abc - > r examples/s38584.bench
abc - > resyn
The network has 26 self-feeding latches.
abc - > fpga
abc - > cec
The network has 26 self-feeding latches.
The network has 26 self-feeding latches.
Networks are equivalent after fraiging.
abc - > ps
examples/s38584.bench: i/o = 12/ 278 lat = 1452 nd = 3239 cube = 6769 lev = 7
abc - >
abc - > u
abc - > map
The network has 26 self-feeding latches.
abc - > cec
The network has 26 self-feeding latches.
The network has 26 self-feeding latches.
Networks are equivalent after fraiging.
abc - > ps
examples/s38584.bench: i/o = 12/ 278 lat = 1452 nd = 8522 area = 19305.00 delay = 20.60 lev = 17
abc - >
abc - > r examples/ac.v
abc - > resyn
abc - > fpga
abc - > cec
Networks are equivalent after fraiging.
abc - > ps
ac97_ctrl : i/o = 84/ 48 lat = 2199 nd = 3652 cube = 9391 lev = 3
abc - >
abc - > u
abc - > map
abc - > cec
Networks are equivalent after fraiging.
abc - > ps
ac97_ctrl : i/o = 84/ 48 lat = 2199 nd = 8337 area = 19861.00 delay = 8.10 lev = 8
abc - >
abc - > r examples/s444.blif
abc - > b
abc - > esd -v
The shared BDD size is 181 nodes.
BDD nodes in the transition relation before reordering 557.
BDD nodes in the transition relation after reordering 456.
Reachability analysis completed in 151 iterations.
The number of minterms in the reachable state set = 8865.
BDD nodes in the unreachable states before reordering 124.
BDD nodes in the unreachable states after reordering 113.
abc - > dsd
abc - > cec
Networks are equivalent after fraiging.
abc - > ps
iscas\s444.bench: i/o = 3/ 6 lat = 21 nd = 81 cube = 119 lev = 7
abc - >
abc - > r examples/i10.blif
abc - > fpga
The network was strashed and balanced before FPGA mapping.
abc - > cec
Networks are equivalent after fraiging.
abc - > ps
i10 : i/o = 257/ 224 lat = 0 nd = 741 cube = 1616 lev = 11
abc - > u
abc - > map
The network was strashed and balanced before mapping.
abc - > cec
Networks are equivalent after fraiging.
abc - > ps
i10 : i/o = 257/ 224 lat = 0 nd = 1659 area = 4215.00 delay = 30.80 lev = 27
abc - >
abc - > r examples/i10.blif
abc - > b
abc - > fraig_store
The number of AIG nodes added to storage = 2425.
abc - > resyn
abc - > fraig_store
The number of AIG nodes added to storage = 1678.
abc - > resyn2
abc - > fraig_store
The number of AIG nodes added to storage = 1323.
abc - > fraig_restore
Currently stored 3 networks with 5426 nodes will be fraiged.
abc - > fpga
Performing FPGA mapping with choices.
abc - > cec
Networks are equivalent after fraiging.
abc - > ps
i10 : i/o = 257/ 224 lat = 0 nd = 674 cube = 1498 lev = 10
abc - >
abc - > u
abc - > map
Performing mapping with choices.
abc - > cec
Networks are equivalent after fraiging.
abc - > ps
i10 : i/o = 257/ 224 lat = 0 nd = 1505 area = 3561.00 delay = 25.00 lev = 22
abc - >
abc 109> time
elapse: 77.52 seconds, total: 77.52 seconds
abc 109>
\ No newline at end of file
...@@ -147,10 +147,10 @@ struct Abc_Ntk_t_ ...@@ -147,10 +147,10 @@ struct Abc_Ntk_t_
Vec_Ptr_t * vCos; // the array of combinational outputs (POs followed by latches) Vec_Ptr_t * vCos; // the array of combinational outputs (POs followed by latches)
Vec_Ptr_t * vLats; // the array of latches (or the cutset in the sequential network) Vec_Ptr_t * vLats; // the array of latches (or the cutset in the sequential network)
// the stats about the number of living objects // the stats about the number of living objects
int nObjs; // the number of living objs int nObjs; // the number of live objs
int nNets; // the number of living nets int nNets; // the number of live nets
int nNodes; // the number of living nodes int nNodes; // the number of live nodes
int nLatches; // the number of latches int nLatches; // the number of live latches
int nPis; // the number of primary inputs int nPis; // the number of primary inputs
int nPos; // the number of primary outputs int nPos; // the number of primary outputs
// the functionality manager // the functionality manager
...@@ -167,6 +167,8 @@ struct Abc_Ntk_t_ ...@@ -167,6 +167,8 @@ struct Abc_Ntk_t_
Vec_Int_t * vLevelsR; // level in the reverse topological order Vec_Int_t * vLevelsR; // level in the reverse topological order
// support information // support information
Vec_Ptr_t * vSupps; Vec_Ptr_t * vSupps;
// the satisfiable assignment of the miter
int * pModel;
// the external don't-care if given // the external don't-care if given
Abc_Ntk_t * pExdc; // the EXDC network Abc_Ntk_t * pExdc; // the EXDC network
// miscellaneous data members // miscellaneous data members
...@@ -401,7 +403,7 @@ extern Abc_Obj_t * Abc_AigAndLookup( Abc_Aig_t * pMan, Abc_Obj_t * p0, Ab ...@@ -401,7 +403,7 @@ extern Abc_Obj_t * Abc_AigAndLookup( Abc_Aig_t * pMan, Abc_Obj_t * p0, Ab
extern Abc_Obj_t * Abc_AigOr( Abc_Aig_t * pMan, Abc_Obj_t * p0, Abc_Obj_t * p1 ); extern Abc_Obj_t * Abc_AigOr( Abc_Aig_t * pMan, Abc_Obj_t * p0, Abc_Obj_t * p1 );
extern Abc_Obj_t * Abc_AigXor( Abc_Aig_t * pMan, Abc_Obj_t * p0, Abc_Obj_t * p1 ); extern Abc_Obj_t * Abc_AigXor( Abc_Aig_t * pMan, Abc_Obj_t * p0, Abc_Obj_t * p1 );
extern Abc_Obj_t * Abc_AigMiter( Abc_Aig_t * pMan, Vec_Ptr_t * vPairs ); extern Abc_Obj_t * Abc_AigMiter( Abc_Aig_t * pMan, Vec_Ptr_t * vPairs );
extern void Abc_AigReplace( Abc_Aig_t * pMan, Abc_Obj_t * pOld, Abc_Obj_t * pNew ); extern void Abc_AigReplace( Abc_Aig_t * pMan, Abc_Obj_t * pOld, Abc_Obj_t * pNew, bool fUpdateLevel );
extern void Abc_AigDeleteNode( Abc_Aig_t * pMan, Abc_Obj_t * pOld ); extern void Abc_AigDeleteNode( Abc_Aig_t * pMan, Abc_Obj_t * pOld );
extern bool Abc_AigNodeHasComplFanoutEdge( Abc_Obj_t * pNode ); extern bool Abc_AigNodeHasComplFanoutEdge( Abc_Obj_t * pNode );
extern bool Abc_AigNodeHasComplFanoutEdgeTrav( Abc_Obj_t * pNode ); extern bool Abc_AigNodeHasComplFanoutEdgeTrav( Abc_Obj_t * pNode );
...@@ -414,6 +416,7 @@ extern Abc_Ntk_t * Abc_NtkBalance( Abc_Ntk_t * pNtk, bool fDuplicate ); ...@@ -414,6 +416,7 @@ extern Abc_Ntk_t * Abc_NtkBalance( Abc_Ntk_t * pNtk, bool fDuplicate );
/*=== abcCheck.c ==========================================================*/ /*=== abcCheck.c ==========================================================*/
extern bool Abc_NtkCheck( Abc_Ntk_t * pNtk ); extern bool Abc_NtkCheck( Abc_Ntk_t * pNtk );
extern bool Abc_NtkCheckRead( Abc_Ntk_t * pNtk ); extern bool Abc_NtkCheckRead( Abc_Ntk_t * pNtk );
extern bool Abc_NtkDoCheck( Abc_Ntk_t * pNtk );
extern bool Abc_NtkCheckObj( Abc_Ntk_t * pNtk, Abc_Obj_t * pObj ); extern bool Abc_NtkCheckObj( Abc_Ntk_t * pNtk, Abc_Obj_t * pObj );
extern bool Abc_NtkCompareSignals( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fComb ); extern bool Abc_NtkCompareSignals( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fComb );
/*=== abcCollapse.c ==========================================================*/ /*=== abcCollapse.c ==========================================================*/
...@@ -427,6 +430,7 @@ extern void Abc_NodeFreeCuts( void * p, Abc_Obj_t * pObj ); ...@@ -427,6 +430,7 @@ extern void Abc_NodeFreeCuts( void * p, Abc_Obj_t * pObj );
extern Vec_Ptr_t * Abc_NtkDfs( Abc_Ntk_t * pNtk, int fCollectAll ); extern Vec_Ptr_t * Abc_NtkDfs( Abc_Ntk_t * pNtk, int fCollectAll );
extern Vec_Ptr_t * Abc_NtkDfsNodes( Abc_Ntk_t * pNtk, Abc_Obj_t ** ppNodes, int nNodes ); extern Vec_Ptr_t * Abc_NtkDfsNodes( Abc_Ntk_t * pNtk, Abc_Obj_t ** ppNodes, int nNodes );
extern Vec_Ptr_t * Abc_NtkDfsReverse( Abc_Ntk_t * pNtk ); extern Vec_Ptr_t * Abc_NtkDfsReverse( Abc_Ntk_t * pNtk );
extern Vec_Ptr_t * Abc_NtkNodeSupport( Abc_Ntk_t * pNtk, Abc_Obj_t ** ppNodes, int nNodes );
extern Vec_Ptr_t * Abc_AigDfs( Abc_Ntk_t * pNtk, int fCollectAll, int fCollectCos ); extern Vec_Ptr_t * Abc_AigDfs( Abc_Ntk_t * pNtk, int fCollectAll, int fCollectCos );
extern Vec_Vec_t * Abc_DfsLevelized( Abc_Obj_t * pNode, bool fTfi ); extern Vec_Vec_t * Abc_DfsLevelized( Abc_Obj_t * pNode, bool fTfi );
extern int Abc_NtkGetLevelNum( Abc_Ntk_t * pNtk ); extern int Abc_NtkGetLevelNum( Abc_Ntk_t * pNtk );
...@@ -440,6 +444,7 @@ extern void Abc_ObjTransferFanout( Abc_Obj_t * pObjOld, Abc_Obj_t ...@@ -440,6 +444,7 @@ extern void Abc_ObjTransferFanout( Abc_Obj_t * pObjOld, Abc_Obj_t
extern void Abc_ObjReplace( Abc_Obj_t * pObjOld, Abc_Obj_t * pObjNew ); extern void Abc_ObjReplace( Abc_Obj_t * pObjOld, Abc_Obj_t * pObjNew );
/*=== abcFraig.c ==========================================================*/ /*=== abcFraig.c ==========================================================*/
extern Abc_Ntk_t * Abc_NtkFraig( Abc_Ntk_t * pNtk, void * pParams, int fAllNodes ); extern Abc_Ntk_t * Abc_NtkFraig( Abc_Ntk_t * pNtk, void * pParams, int fAllNodes );
extern void * Abc_NtkToFraig( Abc_Ntk_t * pNtk, void * pParams, int fAllNodes );
extern Abc_Ntk_t * Abc_NtkFraigTrust( Abc_Ntk_t * pNtk ); extern Abc_Ntk_t * Abc_NtkFraigTrust( Abc_Ntk_t * pNtk );
extern int Abc_NtkFraigStore( Abc_Ntk_t * pNtk ); extern int Abc_NtkFraigStore( Abc_Ntk_t * pNtk );
extern Abc_Ntk_t * Abc_NtkFraigRestore(); extern Abc_Ntk_t * Abc_NtkFraigRestore();
...@@ -470,9 +475,6 @@ extern void Abc_NtkMiterReport( Abc_Ntk_t * pMiter ); ...@@ -470,9 +475,6 @@ extern void Abc_NtkMiterReport( Abc_Ntk_t * pMiter );
extern int Abc_NtkAppend( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2 ); extern int Abc_NtkAppend( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2 );
extern Abc_Ntk_t * Abc_NtkFrames( Abc_Ntk_t * pNtk, int nFrames, int fInitial ); extern Abc_Ntk_t * Abc_NtkFrames( Abc_Ntk_t * pNtk, int nFrames, int fInitial );
/*=== abcObj.c ==========================================================*/ /*=== abcObj.c ==========================================================*/
extern Abc_Obj_t * Abc_ObjAlloc( Abc_Ntk_t * pNtk, Abc_ObjType_t Type );
extern void Abc_ObjRecycle( Abc_Obj_t * pObj );
extern void Abc_ObjAdd( Abc_Obj_t * pObj );
extern Abc_Obj_t * Abc_NtkDupObj( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pObj ); extern Abc_Obj_t * Abc_NtkDupObj( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pObj );
extern Abc_Obj_t * Abc_NtkDupConst1( Abc_Ntk_t * pNtkAig, Abc_Ntk_t * pNtkNew ); extern Abc_Obj_t * Abc_NtkDupConst1( Abc_Ntk_t * pNtkAig, Abc_Ntk_t * pNtkNew );
extern Abc_Obj_t * Abc_NtkDupReset( Abc_Ntk_t * pNtkAig, Abc_Ntk_t * pNtkNew ); extern Abc_Obj_t * Abc_NtkDupReset( Abc_Ntk_t * pNtkAig, Abc_Ntk_t * pNtkNew );
...@@ -560,12 +562,13 @@ extern Vec_Ptr_t * Abc_NodeCollectTfoCands( Abc_ManCut_t * p, Abc_Obj_t * ...@@ -560,12 +562,13 @@ extern Vec_Ptr_t * Abc_NodeCollectTfoCands( Abc_ManCut_t * p, Abc_Obj_t *
extern int Abc_NodeMffcSize( Abc_Obj_t * pNode ); extern int Abc_NodeMffcSize( Abc_Obj_t * pNode );
extern int Abc_NodeMffcSizeStop( Abc_Obj_t * pNode ); extern int Abc_NodeMffcSizeStop( Abc_Obj_t * pNode );
extern int Abc_NodeMffcLabel( Abc_Obj_t * pNode ); extern int Abc_NodeMffcLabel( Abc_Obj_t * pNode );
extern int Abc_NodeMffcLabelFast( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes );
extern Vec_Ptr_t * Abc_NodeMffcCollect( Abc_Obj_t * pNode ); extern Vec_Ptr_t * Abc_NodeMffcCollect( Abc_Obj_t * pNode );
/*=== abcRenode.c ==========================================================*/ /*=== abcRenode.c ==========================================================*/
extern Abc_Ntk_t * Abc_NtkRenode( Abc_Ntk_t * pNtk, int nThresh, int nFaninMax, int fCnf, int fMulti, int fSimple ); extern Abc_Ntk_t * Abc_NtkRenode( Abc_Ntk_t * pNtk, int nThresh, int nFaninMax, int fCnf, int fMulti, int fSimple );
extern DdNode * Abc_NtkRenodeDeriveBdd( DdManager * dd, Abc_Obj_t * pNodeOld, Vec_Ptr_t * vFaninsOld ); extern DdNode * Abc_NtkRenodeDeriveBdd( DdManager * dd, Abc_Obj_t * pNodeOld, Vec_Ptr_t * vFaninsOld );
/*=== abcSat.c ==========================================================*/ /*=== abcSat.c ==========================================================*/
extern bool Abc_NtkMiterSat( Abc_Ntk_t * pNtk, int fVerbose ); extern int Abc_NtkMiterSat( Abc_Ntk_t * pNtk, int nSeconds, int fVerbose );
extern solver * Abc_NtkMiterSatCreate( Abc_Ntk_t * pNtk ); extern solver * Abc_NtkMiterSatCreate( Abc_Ntk_t * pNtk );
/*=== abcSeq.c ==========================================================*/ /*=== abcSeq.c ==========================================================*/
extern Abc_Ntk_t * Abc_NtkAigToSeq( Abc_Ntk_t * pNtk ); extern Abc_Ntk_t * Abc_NtkAigToSeq( Abc_Ntk_t * pNtk );
...@@ -660,6 +663,8 @@ extern int Abc_NodeCompareLevelsIncrease( Abc_Obj_t ** pp1, Abc_O ...@@ -660,6 +663,8 @@ extern int Abc_NodeCompareLevelsIncrease( Abc_Obj_t ** pp1, Abc_O
extern int Abc_NodeCompareLevelsDecrease( Abc_Obj_t ** pp1, Abc_Obj_t ** pp2 ); extern int Abc_NodeCompareLevelsDecrease( Abc_Obj_t ** pp1, Abc_Obj_t ** pp2 );
extern Vec_Int_t * Abc_NtkFanoutCounts( Abc_Ntk_t * pNtk ); extern Vec_Int_t * Abc_NtkFanoutCounts( Abc_Ntk_t * pNtk );
extern Vec_Ptr_t * Abc_NtkCollectObjects( Abc_Ntk_t * pNtk ); extern Vec_Ptr_t * Abc_NtkCollectObjects( Abc_Ntk_t * pNtk );
extern Vec_Int_t * Abc_NtkGetCiIds( Abc_Ntk_t * pNtk );
extern void Abc_NtkReassignIds( Abc_Ntk_t * pNtk );
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// END OF FILE /// /// END OF FILE ///
......
...@@ -83,7 +83,7 @@ static Abc_Obj_t * Abc_AigAndCreateFrom( Abc_Aig_t * pMan, Abc_Obj_t * p0, Abc_O ...@@ -83,7 +83,7 @@ static Abc_Obj_t * Abc_AigAndCreateFrom( Abc_Aig_t * pMan, Abc_Obj_t * p0, Abc_O
static void Abc_AigAndDelete( Abc_Aig_t * pMan, Abc_Obj_t * pThis ); static void Abc_AigAndDelete( Abc_Aig_t * pMan, Abc_Obj_t * pThis );
static void Abc_AigResize( Abc_Aig_t * pMan ); static void Abc_AigResize( Abc_Aig_t * pMan );
// incremental AIG procedures // incremental AIG procedures
static void Abc_AigReplace_int( Abc_Aig_t * pMan ); static void Abc_AigReplace_int( Abc_Aig_t * pMan, int fUpdateLevel );
static void Abc_AigDelete_int( Abc_Aig_t * pMan ); static void Abc_AigDelete_int( Abc_Aig_t * pMan );
static void Abc_AigUpdateLevel_int( Abc_Aig_t * pMan ); static void Abc_AigUpdateLevel_int( Abc_Aig_t * pMan );
static void Abc_AigUpdateLevelR_int( Abc_Aig_t * pMan ); static void Abc_AigUpdateLevelR_int( Abc_Aig_t * pMan );
...@@ -655,7 +655,7 @@ Abc_Obj_t * Abc_AigMiter( Abc_Aig_t * pMan, Vec_Ptr_t * vPairs ) ...@@ -655,7 +655,7 @@ Abc_Obj_t * Abc_AigMiter( Abc_Aig_t * pMan, Vec_Ptr_t * vPairs )
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
void Abc_AigReplace( Abc_Aig_t * pMan, Abc_Obj_t * pOld, Abc_Obj_t * pNew ) void Abc_AigReplace( Abc_Aig_t * pMan, Abc_Obj_t * pOld, Abc_Obj_t * pNew, bool fUpdateLevel )
{ {
assert( Vec_PtrSize(pMan->vStackReplaceOld) == 0 ); assert( Vec_PtrSize(pMan->vStackReplaceOld) == 0 );
assert( Vec_PtrSize(pMan->vStackReplaceNew) == 0 ); assert( Vec_PtrSize(pMan->vStackReplaceNew) == 0 );
...@@ -663,9 +663,12 @@ void Abc_AigReplace( Abc_Aig_t * pMan, Abc_Obj_t * pOld, Abc_Obj_t * pNew ) ...@@ -663,9 +663,12 @@ void Abc_AigReplace( Abc_Aig_t * pMan, Abc_Obj_t * pOld, Abc_Obj_t * pNew )
Vec_PtrPush( pMan->vStackReplaceOld, pOld ); Vec_PtrPush( pMan->vStackReplaceOld, pOld );
Vec_PtrPush( pMan->vStackReplaceNew, pNew ); Vec_PtrPush( pMan->vStackReplaceNew, pNew );
while ( Vec_PtrSize(pMan->vStackReplaceOld) ) while ( Vec_PtrSize(pMan->vStackReplaceOld) )
Abc_AigReplace_int( pMan ); Abc_AigReplace_int( pMan, fUpdateLevel );
if ( fUpdateLevel )
{
Abc_AigUpdateLevel_int( pMan ); Abc_AigUpdateLevel_int( pMan );
Abc_AigUpdateLevelR_int( pMan ); Abc_AigUpdateLevelR_int( pMan );
}
} }
/**Function************************************************************* /**Function*************************************************************
...@@ -679,7 +682,7 @@ void Abc_AigReplace( Abc_Aig_t * pMan, Abc_Obj_t * pOld, Abc_Obj_t * pNew ) ...@@ -679,7 +682,7 @@ void Abc_AigReplace( Abc_Aig_t * pMan, Abc_Obj_t * pOld, Abc_Obj_t * pNew )
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
void Abc_AigReplace_int( Abc_Aig_t * pMan ) void Abc_AigReplace_int( Abc_Aig_t * pMan, int fUpdateLevel )
{ {
Abc_Obj_t * pOld, * pNew, * pFanin1, * pFanin2, * pFanout, * pFanoutNew, * pFanoutFanout; Abc_Obj_t * pOld, * pNew, * pFanin1, * pFanin2, * pFanout, * pFanoutNew, * pFanoutFanout;
int k, v, iFanin; int k, v, iFanin;
...@@ -736,6 +739,8 @@ void Abc_AigReplace_int( Abc_Aig_t * pMan ) ...@@ -736,6 +739,8 @@ void Abc_AigReplace_int( Abc_Aig_t * pMan )
Abc_AigAndCreateFrom( pMan, pFanin1, pFanin2, pFanout ); Abc_AigAndCreateFrom( pMan, pFanin1, pFanin2, pFanout );
assert( Abc_AigNodeIsAcyclic(pFanout, pFanout) ); assert( Abc_AigNodeIsAcyclic(pFanout, pFanout) );
if ( fUpdateLevel )
{
// schedule the updated fanout for updating direct level // schedule the updated fanout for updating direct level
assert( pFanout->fMarkA == 0 ); assert( pFanout->fMarkA == 0 );
pFanout->fMarkA = 1; pFanout->fMarkA = 1;
...@@ -744,6 +749,7 @@ void Abc_AigReplace_int( Abc_Aig_t * pMan ) ...@@ -744,6 +749,7 @@ void Abc_AigReplace_int( Abc_Aig_t * pMan )
assert( pFanout->fMarkB == 0 ); assert( pFanout->fMarkB == 0 );
pFanout->fMarkB = 1; pFanout->fMarkB = 1;
Vec_VecPush( pMan->vLevelsR, Abc_NodeReadReverseLevel(pFanout), pFanout ); Vec_VecPush( pMan->vLevelsR, Abc_NodeReadReverseLevel(pFanout), pFanout );
}
// the fanout has changed, update EXOR status of its fanouts // the fanout has changed, update EXOR status of its fanouts
Abc_ObjForEachFanout( pFanout, pFanoutFanout, v ) Abc_ObjForEachFanout( pFanout, pFanoutFanout, v )
......
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
/// DECLARATIONS /// /// DECLARATIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
static bool Abc_NtkDoCheck( Abc_Ntk_t * pNtk );
static bool Abc_NtkCheckNames( Abc_Ntk_t * pNtk ); static bool Abc_NtkCheckNames( Abc_Ntk_t * pNtk );
static bool Abc_NtkCheckPis( Abc_Ntk_t * pNtk ); static bool Abc_NtkCheckPis( Abc_Ntk_t * pNtk );
static bool Abc_NtkCheckPos( Abc_Ntk_t * pNtk ); static bool Abc_NtkCheckPos( Abc_Ntk_t * pNtk );
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
static void Abc_NtkDfs_rec( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes ); static void Abc_NtkDfs_rec( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes );
static void Abc_AigDfs_rec( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes ); static void Abc_AigDfs_rec( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes );
static void Abc_NtkDfsReverse_rec( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes ); static void Abc_NtkDfsReverse_rec( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes );
static void Abc_NtkNodeSupport_rec( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes );
static void Abc_DfsLevelizedTfo_rec( Abc_Obj_t * pNode, Vec_Vec_t * vLevels ); static void Abc_DfsLevelizedTfo_rec( Abc_Obj_t * pNode, Vec_Vec_t * vLevels );
static int Abc_NtkGetLevelNum_rec( Abc_Obj_t * pNode ); static int Abc_NtkGetLevelNum_rec( Abc_Obj_t * pNode );
static bool Abc_NtkIsAcyclic_rec( Abc_Obj_t * pNode ); static bool Abc_NtkIsAcyclic_rec( Abc_Obj_t * pNode );
...@@ -208,6 +209,68 @@ void Abc_NtkDfsReverse_rec( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes ) ...@@ -208,6 +209,68 @@ void Abc_NtkDfsReverse_rec( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes )
/**Function************************************************************* /**Function*************************************************************
Synopsis [Returns the set of CI nodes in the support of the given nodes.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
Vec_Ptr_t * Abc_NtkNodeSupport( Abc_Ntk_t * pNtk, Abc_Obj_t ** ppNodes, int nNodes )
{
Vec_Ptr_t * vNodes;
int i;
// set the traversal ID
Abc_NtkIncrementTravId( pNtk );
// start the array of nodes
vNodes = Vec_PtrAlloc( 100 );
// go through the PO nodes and call for each of them
for ( i = 0; i < nNodes; i++ )
if ( Abc_ObjIsCo(ppNodes[i]) )
Abc_NtkNodeSupport_rec( Abc_ObjFanin0(ppNodes[i]), vNodes );
else
Abc_NtkNodeSupport_rec( ppNodes[i], vNodes );
return vNodes;
}
/**Function*************************************************************
Synopsis [Performs DFS for one node.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_NtkNodeSupport_rec( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes )
{
Abc_Obj_t * pFanin;
int i;
assert( !Abc_ObjIsNet(pNode) );
// if this node is already visited, skip
if ( Abc_NodeIsTravIdCurrent( pNode ) )
return;
// mark the node as visited
Abc_NodeSetTravIdCurrent( pNode );
// collect the CI
if ( Abc_ObjIsCi(pNode) )
{
Vec_PtrPush( vNodes, pNode );
return;
}
assert( Abc_ObjIsNode( pNode ) );
// visit the transitive fanin of the node
Abc_ObjForEachFanin( pNode, pFanin, i )
Abc_NtkNodeSupport_rec( Abc_ObjFanin0Ntk(pFanin), vNodes );
}
/**Function*************************************************************
Synopsis [Returns the DFS ordered array of logic nodes.] Synopsis [Returns the DFS ordered array of logic nodes.]
Description [Collects only the internal nodes, leaving out CIs/COs. Description [Collects only the internal nodes, leaving out CIs/COs.
......
...@@ -29,6 +29,8 @@ ...@@ -29,6 +29,8 @@
/// PARAMETERS /// /// PARAMETERS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
#define ABC_NUM_STEPS 10
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// STRUCTURE DEFINITIONS /// /// STRUCTURE DEFINITIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
...@@ -38,6 +40,15 @@ ...@@ -38,6 +40,15 @@
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// FUNCTION DECLARATIONS ///
////////////////////////////////////////////////////////////////////////
/*=== abcObj.c ==========================================================*/
extern Abc_Obj_t * Abc_ObjAlloc( Abc_Ntk_t * pNtk, Abc_ObjType_t Type );
extern void Abc_ObjRecycle( Abc_Obj_t * pObj );
extern void Abc_ObjAdd( Abc_Obj_t * pObj );
////////////////////////////////////////////////////////////////////////
/// END OF FILE /// /// END OF FILE ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
***********************************************************************/ ***********************************************************************/
#include "abc.h" #include "abc.h"
#include "abcInt.h"
#include "main.h" #include "main.h"
#include "mio.h" #include "mio.h"
...@@ -26,8 +27,6 @@ ...@@ -26,8 +27,6 @@
/// DECLARATIONS /// /// DECLARATIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
#define ABC_NUM_STEPS 10
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFITIONS /// /// FUNCTION DEFITIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
...@@ -400,6 +399,9 @@ Abc_Ntk_t * Abc_NtkCreateCone( Abc_Ntk_t * pNtk, Vec_Ptr_t * vRoots, Vec_Int_t * ...@@ -400,6 +399,9 @@ Abc_Ntk_t * Abc_NtkCreateCone( Abc_Ntk_t * pNtk, Vec_Ptr_t * vRoots, Vec_Int_t *
pFinal = Abc_AigConst1( pNtkNew->pManFunc ); pFinal = Abc_AigConst1( pNtkNew->pManFunc );
Vec_PtrForEachEntry( vRoots, pObj, i ) Vec_PtrForEachEntry( vRoots, pObj, i )
{ {
if ( Abc_ObjIsCo(pObj) )
pOther = Abc_ObjFanin0(pObj)->pCopy;
else
pOther = pObj->pCopy; pOther = pObj->pCopy;
if ( Vec_IntEntry(vValues, i) == 0 ) if ( Vec_IntEntry(vValues, i) == 0 )
pOther = Abc_ObjNot(pOther); pOther = Abc_ObjNot(pOther);
...@@ -477,7 +479,8 @@ void Abc_NtkDelete( Abc_Ntk_t * pNtk ) ...@@ -477,7 +479,8 @@ void Abc_NtkDelete( Abc_Ntk_t * pNtk )
// free large fanout arrays // free large fanout arrays
if ( pObj->vFanouts.nCap * 4 > LargePiece ) if ( pObj->vFanouts.nCap * 4 > LargePiece )
FREE( pObj->vFanouts.pArray ); FREE( pObj->vFanouts.pArray );
// check that the other things are okay // these flags should be always zero
// if this is not true, something is wrong somewhere
assert( pObj->fMarkA == 0 ); assert( pObj->fMarkA == 0 );
assert( pObj->fMarkB == 0 ); assert( pObj->fMarkB == 0 );
assert( pObj->fMarkC == 0 ); assert( pObj->fMarkC == 0 );
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
***********************************************************************/ ***********************************************************************/
#include "abc.h" #include "abc.h"
#include "abcInt.h"
#include "main.h" #include "main.h"
#include "mio.h" #include "mio.h"
...@@ -66,7 +67,13 @@ Abc_Obj_t * Abc_ObjAlloc( Abc_Ntk_t * pNtk, Abc_ObjType_t Type ) ...@@ -66,7 +67,13 @@ Abc_Obj_t * Abc_ObjAlloc( Abc_Ntk_t * pNtk, Abc_ObjType_t Type )
void Abc_ObjRecycle( Abc_Obj_t * pObj ) void Abc_ObjRecycle( Abc_Obj_t * pObj )
{ {
Abc_Ntk_t * pNtk = pObj->pNtk; Abc_Ntk_t * pNtk = pObj->pNtk;
int LargePiece = (4 << ABC_NUM_STEPS);
// free large fanout arrays
if ( pObj->vFanouts.nCap * 4 > LargePiece )
FREE( pObj->vFanouts.pArray );
// clean the memory to make deleted object distinct from the live one
memset( pObj, 0, sizeof(Abc_Obj_t) ); memset( pObj, 0, sizeof(Abc_Obj_t) );
// recycle the object
Extra_MmFixedEntryRecycle( pNtk->pMmObj, (char *)pObj ); Extra_MmFixedEntryRecycle( pNtk->pMmObj, (char *)pObj );
} }
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
static int Abc_NodeRefDeref( Abc_Obj_t * pNode, bool fReference, bool fLabel, Vec_Ptr_t * vNodes ); static int Abc_NodeRefDeref( Abc_Obj_t * pNode, bool fReference, bool fLabel, Vec_Ptr_t * vNodes );
static int Abc_NodeRefDerefStop( Abc_Obj_t * pNode, bool fReference ); static int Abc_NodeRefDerefStop( Abc_Obj_t * pNode, bool fReference );
static int Abc_NodeDeref( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes );
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFITIONS /// /// FUNCTION DEFITIONS ///
...@@ -108,6 +109,42 @@ int Abc_NodeMffcLabel( Abc_Obj_t * pNode ) ...@@ -108,6 +109,42 @@ int Abc_NodeMffcLabel( Abc_Obj_t * pNode )
/**Function************************************************************* /**Function*************************************************************
Synopsis [Returns the MFFC size.]
Description [Profiling shows that this procedure runs the same as
the above one, not faster.]
SideEffects []
SeeAlso []
***********************************************************************/
int Abc_NodeMffcLabelFast( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes )
{
Abc_Obj_t * pTemp;
int nConeSize, i;
assert( !Abc_ObjIsComplement( pNode ) );
assert( Abc_ObjIsNode( pNode ) );
if ( Abc_ObjFaninNum(pNode) == 0 )
return 0;
Vec_PtrClear( vNodes );
nConeSize = Abc_NodeDeref( pNode, vNodes );
// label the nodes with the current ID and ref their children
Vec_PtrForEachEntry( vNodes, pTemp, i )
{
Abc_NodeSetTravIdCurrent( pTemp );
if ( Abc_ObjIsCi(pTemp) )
continue;
Abc_ObjFanin0(pTemp)->vFanouts.nSize++;
Abc_ObjFanin1(pTemp)->vFanouts.nSize++;
}
return nConeSize;
}
/**Function*************************************************************
Synopsis [Collects the nodes in MFFC in the topological order.] Synopsis [Collects the nodes in MFFC in the topological order.]
Description [] Description []
...@@ -184,6 +221,39 @@ int Abc_NodeRefDeref( Abc_Obj_t * pNode, bool fReference, bool fLabel, Vec_Ptr_t ...@@ -184,6 +221,39 @@ int Abc_NodeRefDeref( Abc_Obj_t * pNode, bool fReference, bool fLabel, Vec_Ptr_t
Synopsis [References/references the node and returns MFFC size.] Synopsis [References/references the node and returns MFFC size.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
int Abc_NodeDeref( Abc_Obj_t * pNode, Vec_Ptr_t * vNodes )
{
Abc_Obj_t * pNode0, * pNode1;
int Counter;
// collect visited nodes
Vec_PtrPush( vNodes, pNode );
// skip the CI
if ( Abc_ObjIsCi(pNode) )
return 0;
// process the internal node
pNode0 = Abc_ObjFanin0(pNode);
pNode1 = Abc_ObjFanin1(pNode);
assert( pNode0->vFanouts.nSize > 0 );
assert( pNode1->vFanouts.nSize > 0 );
Counter = 1;
if ( --pNode0->vFanouts.nSize == 0 )
Counter += Abc_NodeDeref( pNode0, vNodes );
if ( --pNode1->vFanouts.nSize == 0 )
Counter += Abc_NodeDeref( pNode1, vNodes );
return Counter;
}
/**Function*************************************************************
Synopsis [References/references the node and returns MFFC size.]
Description [Stops at the complemented edges.] Description [Stops at the complemented edges.]
SideEffects [] SideEffects []
......
...@@ -883,6 +883,101 @@ Vec_Ptr_t * Abc_NtkCollectObjects( Abc_Ntk_t * pNtk ) ...@@ -883,6 +883,101 @@ Vec_Ptr_t * Abc_NtkCollectObjects( Abc_Ntk_t * pNtk )
return vNodes; return vNodes;
} }
/**Function*************************************************************
Synopsis [Returns the array of CI IDs.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
Vec_Int_t * Abc_NtkGetCiIds( Abc_Ntk_t * pNtk )
{
Vec_Int_t * vCiIds;
Abc_Obj_t * pObj;
int i;
vCiIds = Vec_IntAlloc( Abc_NtkCiNum(pNtk) );
Abc_NtkForEachCi( pNtk, pObj, i )
Vec_IntPush( vCiIds, pObj->Id );
return vCiIds;
}
/**Function*************************************************************
Synopsis [Puts the nodes into the DFS order and reassign their IDs.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_NtkReassignIds( Abc_Ntk_t * pNtk )
{
Vec_Ptr_t * vNodes;
Vec_Ptr_t * vObjsNew;
Abc_Obj_t * pNode, * pTemp;
Abc_Obj_t * pConst1 = NULL, * pReset = NULL;
int i, k;
// start the array of objects with new IDs
vObjsNew = Vec_PtrAlloc( pNtk->nObjs );
// put constant nodes (if present) first
if ( Abc_NtkIsStrash(pNtk) )
{
pConst1 = Abc_AigConst1(pNtk->pManFunc);
pConst1->Id = Vec_PtrSize( vObjsNew );
Vec_PtrPush( vObjsNew, pConst1 );
pReset = Abc_AigReset(pNtk->pManFunc);
pReset->Id = Vec_PtrSize( vObjsNew );
Vec_PtrPush( vObjsNew, pReset );
}
// put PI nodes next
Abc_NtkForEachPi( pNtk, pNode, i )
{
pNode->Id = Vec_PtrSize( vObjsNew );
Vec_PtrPush( vObjsNew, pNode );
}
// put PO nodes next
Abc_NtkForEachPo( pNtk, pNode, i )
{
pNode->Id = Vec_PtrSize( vObjsNew );
Vec_PtrPush( vObjsNew, pNode );
}
// put latches next
Abc_NtkForEachLatch( pNtk, pNode, i )
{
pNode->Id = Vec_PtrSize( vObjsNew );
Vec_PtrPush( vObjsNew, pNode );
}
// finally, internal nodes in the DFS order
vNodes = Abc_NtkDfs( pNtk, 1 );
Vec_PtrForEachEntry( vNodes, pNode, i )
{
if ( pNode == pReset || pNode == pConst1 )
continue;
pNode->Id = Vec_PtrSize( vObjsNew );
Vec_PtrPush( vObjsNew, pNode );
}
Vec_PtrFree( vNodes );
assert( Vec_PtrSize(vObjsNew) == pNtk->nObjs );
// update the fanin/fanout arrays
Abc_NtkForEachObj( pNtk, pNode, i )
{
Abc_ObjForEachFanin( pNode, pTemp, k )
pNode->vFanins.pArray[k].iFan = pTemp->Id;
Abc_ObjForEachFanout( pNode, pTemp, k )
pNode->vFanouts.pArray[k].iFan = pTemp->Id;
}
// replace the array of objs
Vec_PtrFree( pNtk->vObjs );
pNtk->vObjs = vObjsNew;
}
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// END OF FILE /// /// END OF FILE ///
......
...@@ -1672,26 +1672,31 @@ int Abc_CommandRewrite( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -1672,26 +1672,31 @@ int Abc_CommandRewrite( Abc_Frame_t * pAbc, int argc, char ** argv )
FILE * pOut, * pErr; FILE * pOut, * pErr;
Abc_Ntk_t * pNtk; Abc_Ntk_t * pNtk;
int c; int c;
bool fUpdateLevel;
bool fPrecompute; bool fPrecompute;
bool fUseZeros; bool fUseZeros;
bool fVerbose; bool fVerbose;
// external functions // external functions
extern void Rwr_Precompute(); extern void Rwr_Precompute();
extern int Abc_NtkRewrite( Abc_Ntk_t * pNtk, int fUseZeros, int fVerbose ); extern int Abc_NtkRewrite( Abc_Ntk_t * pNtk, int fUpdateLevel, int fUseZeros, int fVerbose );
pNtk = Abc_FrameReadNet(pAbc); pNtk = Abc_FrameReadNet(pAbc);
pOut = Abc_FrameReadOut(pAbc); pOut = Abc_FrameReadOut(pAbc);
pErr = Abc_FrameReadErr(pAbc); pErr = Abc_FrameReadErr(pAbc);
// set defaults // set defaults
fUpdateLevel = 0;
fPrecompute = 0; fPrecompute = 0;
fUseZeros = 0; fUseZeros = 0;
fVerbose = 0; fVerbose = 0;
util_getopt_reset(); util_getopt_reset();
while ( ( c = util_getopt( argc, argv, "xzvh" ) ) != EOF ) while ( ( c = util_getopt( argc, argv, "lxzvh" ) ) != EOF )
{ {
switch ( c ) switch ( c )
{ {
case 'l':
fUpdateLevel ^= 1;
break;
case 'x': case 'x':
fPrecompute ^= 1; fPrecompute ^= 1;
break; break;
...@@ -1731,7 +1736,7 @@ int Abc_CommandRewrite( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -1731,7 +1736,7 @@ int Abc_CommandRewrite( Abc_Frame_t * pAbc, int argc, char ** argv )
} }
// modify the current network // modify the current network
if ( !Abc_NtkRewrite( pNtk, fUseZeros, fVerbose ) ) if ( !Abc_NtkRewrite( pNtk, fUpdateLevel, fUseZeros, fVerbose ) )
{ {
fprintf( pErr, "Rewriting has failed.\n" ); fprintf( pErr, "Rewriting has failed.\n" );
return 1; return 1;
...@@ -1739,8 +1744,9 @@ int Abc_CommandRewrite( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -1739,8 +1744,9 @@ int Abc_CommandRewrite( Abc_Frame_t * pAbc, int argc, char ** argv )
return 0; return 0;
usage: usage:
fprintf( pErr, "usage: rewrite [-zvh]\n" ); fprintf( pErr, "usage: rewrite [-lzvh]\n" );
fprintf( pErr, "\t performs technology-independent rewriting of the AIG\n" ); fprintf( pErr, "\t performs technology-independent rewriting of the AIG\n" );
fprintf( pErr, "\t-l : toggle preserving the number of levels [default = %s]\n", fUpdateLevel? "yes": "no" );
fprintf( pErr, "\t-z : toggle using zero-cost replacements [default = %s]\n", fUseZeros? "yes": "no" ); fprintf( pErr, "\t-z : toggle using zero-cost replacements [default = %s]\n", fUseZeros? "yes": "no" );
fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" );
fprintf( pErr, "\t-h : print the command usage\n"); fprintf( pErr, "\t-h : print the command usage\n");
...@@ -1765,10 +1771,11 @@ int Abc_CommandRefactor( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -1765,10 +1771,11 @@ int Abc_CommandRefactor( Abc_Frame_t * pAbc, int argc, char ** argv )
int c; int c;
int nNodeSizeMax; int nNodeSizeMax;
int nConeSizeMax; int nConeSizeMax;
bool fUpdateLevel;
bool fUseZeros; bool fUseZeros;
bool fUseDcs; bool fUseDcs;
bool fVerbose; bool fVerbose;
extern int Abc_NtkRefactor( Abc_Ntk_t * pNtk, int nNodeSizeMax, int nConeSizeMax, bool fUseZeros, bool fUseDcs, bool fVerbose ); extern int Abc_NtkRefactor( Abc_Ntk_t * pNtk, int nNodeSizeMax, int nConeSizeMax, bool fUpdateLevel, bool fUseZeros, bool fUseDcs, bool fVerbose );
pNtk = Abc_FrameReadNet(pAbc); pNtk = Abc_FrameReadNet(pAbc);
pOut = Abc_FrameReadOut(pAbc); pOut = Abc_FrameReadOut(pAbc);
...@@ -1777,11 +1784,12 @@ int Abc_CommandRefactor( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -1777,11 +1784,12 @@ int Abc_CommandRefactor( Abc_Frame_t * pAbc, int argc, char ** argv )
// set defaults // set defaults
nNodeSizeMax = 10; nNodeSizeMax = 10;
nConeSizeMax = 16; nConeSizeMax = 16;
fUpdateLevel = 0;
fUseZeros = 0; fUseZeros = 0;
fUseDcs = 0; fUseDcs = 0;
fVerbose = 0; fVerbose = 0;
util_getopt_reset(); util_getopt_reset();
while ( ( c = util_getopt( argc, argv, "NCzdvh" ) ) != EOF ) while ( ( c = util_getopt( argc, argv, "NClzdvh" ) ) != EOF )
{ {
switch ( c ) switch ( c )
{ {
...@@ -1807,6 +1815,9 @@ int Abc_CommandRefactor( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -1807,6 +1815,9 @@ int Abc_CommandRefactor( Abc_Frame_t * pAbc, int argc, char ** argv )
if ( nConeSizeMax < 0 ) if ( nConeSizeMax < 0 )
goto usage; goto usage;
break; break;
case 'l':
fUpdateLevel ^= 1;
break;
case 'z': case 'z':
fUseZeros ^= 1; fUseZeros ^= 1;
break; break;
...@@ -1846,7 +1857,7 @@ int Abc_CommandRefactor( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -1846,7 +1857,7 @@ int Abc_CommandRefactor( Abc_Frame_t * pAbc, int argc, char ** argv )
} }
// modify the current network // modify the current network
if ( !Abc_NtkRefactor( pNtk, nNodeSizeMax, nConeSizeMax, fUseZeros, fUseDcs, fVerbose ) ) if ( !Abc_NtkRefactor( pNtk, nNodeSizeMax, nConeSizeMax, fUpdateLevel, fUseZeros, fUseDcs, fVerbose ) )
{ {
fprintf( pErr, "Refactoring has failed.\n" ); fprintf( pErr, "Refactoring has failed.\n" );
return 1; return 1;
...@@ -1854,10 +1865,11 @@ int Abc_CommandRefactor( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -1854,10 +1865,11 @@ int Abc_CommandRefactor( Abc_Frame_t * pAbc, int argc, char ** argv )
return 0; return 0;
usage: usage:
fprintf( pErr, "usage: refactor [-N num] [-C num] [-zdvh]\n" ); fprintf( pErr, "usage: refactor [-N num] [-C num] [-lzdvh]\n" );
fprintf( pErr, "\t performs technology-independent refactoring of the AIG\n" ); fprintf( pErr, "\t performs technology-independent refactoring of the AIG\n" );
fprintf( pErr, "\t-N num : the max support of the collapsed node [default = %d]\n", nNodeSizeMax ); fprintf( pErr, "\t-N num : the max support of the collapsed node [default = %d]\n", nNodeSizeMax );
fprintf( pErr, "\t-C num : the max support of the containing cone [default = %d]\n", nConeSizeMax ); fprintf( pErr, "\t-C num : the max support of the containing cone [default = %d]\n", nConeSizeMax );
fprintf( pErr, "\t-l : toggle preserving the number of levels [default = %s]\n", fUpdateLevel? "yes": "no" );
fprintf( pErr, "\t-z : toggle using zero-cost replacements [default = %s]\n", fUseZeros? "yes": "no" ); fprintf( pErr, "\t-z : toggle using zero-cost replacements [default = %s]\n", fUseZeros? "yes": "no" );
fprintf( pErr, "\t-d : toggle using don't-cares [default = %s]\n", fUseDcs? "yes": "no" ); fprintf( pErr, "\t-d : toggle using don't-cares [default = %s]\n", fUseDcs? "yes": "no" );
fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" );
...@@ -2291,7 +2303,9 @@ int Abc_CommandSat( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -2291,7 +2303,9 @@ int Abc_CommandSat( Abc_Frame_t * pAbc, int argc, char ** argv )
FILE * pOut, * pErr; FILE * pOut, * pErr;
Abc_Ntk_t * pNtk; Abc_Ntk_t * pNtk;
int c; int c;
int RetValue;
int fVerbose; int fVerbose;
int nSeconds;
pNtk = Abc_FrameReadNet(pAbc); pNtk = Abc_FrameReadNet(pAbc);
pOut = Abc_FrameReadOut(pAbc); pOut = Abc_FrameReadOut(pAbc);
...@@ -2299,11 +2313,23 @@ int Abc_CommandSat( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -2299,11 +2313,23 @@ int Abc_CommandSat( Abc_Frame_t * pAbc, int argc, char ** argv )
// set defaults // set defaults
fVerbose = 0; fVerbose = 0;
nSeconds = 20;
util_getopt_reset(); util_getopt_reset();
while ( ( c = util_getopt( argc, argv, "vh" ) ) != EOF ) while ( ( c = util_getopt( argc, argv, "Tvh" ) ) != EOF )
{ {
switch ( c ) switch ( c )
{ {
case 'T':
if ( util_optind >= argc )
{
fprintf( pErr, "Command line switch \"-T\" should be followed by an integer.\n" );
goto usage;
}
nSeconds = atoi(argv[util_optind]);
util_optind++;
if ( nSeconds < 0 )
goto usage;
break;
case 'v': case 'v':
fVerbose ^= 1; fVerbose ^= 1;
break; break;
...@@ -2334,15 +2360,19 @@ int Abc_CommandSat( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -2334,15 +2360,19 @@ int Abc_CommandSat( Abc_Frame_t * pAbc, int argc, char ** argv )
if ( Abc_NtkIsSopLogic(pNtk) ) if ( Abc_NtkIsSopLogic(pNtk) )
Abc_NtkSopToBdd(pNtk); Abc_NtkSopToBdd(pNtk);
if ( Abc_NtkMiterSat( pNtk, fVerbose ) ) RetValue = Abc_NtkMiterSat( pNtk, nSeconds, fVerbose );
printf( "The miter is satisfiable.\n" ); if ( RetValue == -1 )
printf( "The miter is UNDECIDED (SAT solver timed out).\n" );
else if ( RetValue == 0 )
printf( "The miter is SATISFIABLE.\n" );
else else
printf( "The miter is unsatisfiable.\n" ); printf( "The miter is UNSATISFIABLE.\n" );
return 0; return 0;
usage: usage:
fprintf( pErr, "usage: sat [-vh]\n" ); fprintf( pErr, "usage: sat [-T num] [-vh]\n" );
fprintf( pErr, "\t solves the miter\n" ); fprintf( pErr, "\t solves the miter\n" );
fprintf( pErr, "\t-T num : approximate runtime limit in seconds [default = %d]\n", nSeconds );
fprintf( pErr, "\t-v : prints verbose information [default = %s]\n", fVerbose? "yes": "no" ); fprintf( pErr, "\t-v : prints verbose information [default = %s]\n", fVerbose? "yes": "no" );
fprintf( pErr, "\t-h : print the command usage\n"); fprintf( pErr, "\t-h : print the command usage\n");
return 1; return 1;
...@@ -2863,6 +2893,7 @@ int Abc_CommandFraig( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -2863,6 +2893,7 @@ int Abc_CommandFraig( Abc_Frame_t * pAbc, int argc, char ** argv )
// set defaults // set defaults
fAllNodes = 0; fAllNodes = 0;
memset( pParams, 0, sizeof(Fraig_Params_t) );
pParams->nPatsRand = 2048; // the number of words of random simulation info pParams->nPatsRand = 2048; // the number of words of random simulation info
pParams->nPatsDyna = 2048; // the number of words of dynamic simulation info pParams->nPatsDyna = 2048; // the number of words of dynamic simulation info
pParams->nBTLimit = 99; // the max number of backtracks to perform pParams->nBTLimit = 99; // the max number of backtracks to perform
...@@ -2879,7 +2910,6 @@ int Abc_CommandFraig( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -2879,7 +2910,6 @@ int Abc_CommandFraig( Abc_Frame_t * pAbc, int argc, char ** argv )
{ {
switch ( c ) switch ( c )
{ {
case 'R': case 'R':
if ( util_optind >= argc ) if ( util_optind >= argc )
{ {
...@@ -3913,9 +3943,10 @@ int Abc_CommandCec( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -3913,9 +3943,10 @@ int Abc_CommandCec( Abc_Frame_t * pAbc, int argc, char ** argv )
int c; int c;
int fSat; int fSat;
int fVerbose; int fVerbose;
int nSeconds;
extern void Abc_NtkCecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2 ); extern void Abc_NtkCecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nSeconds );
extern void Abc_NtkCecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fVerbose ); extern void Abc_NtkCecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nSeconds, int fVerbose );
pNtk = Abc_FrameReadNet(pAbc); pNtk = Abc_FrameReadNet(pAbc);
...@@ -3925,11 +3956,23 @@ int Abc_CommandCec( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -3925,11 +3956,23 @@ int Abc_CommandCec( Abc_Frame_t * pAbc, int argc, char ** argv )
// set defaults // set defaults
fSat = 0; fSat = 0;
fVerbose = 0; fVerbose = 0;
nSeconds = 20;
util_getopt_reset(); util_getopt_reset();
while ( ( c = util_getopt( argc, argv, "svh" ) ) != EOF ) while ( ( c = util_getopt( argc, argv, "Tsvh" ) ) != EOF )
{ {
switch ( c ) switch ( c )
{ {
case 'T':
if ( util_optind >= argc )
{
fprintf( pErr, "Command line switch \"-T\" should be followed by an integer.\n" );
goto usage;
}
nSeconds = atoi(argv[util_optind]);
util_optind++;
if ( nSeconds < 0 )
goto usage;
break;
case 's': case 's':
fSat ^= 1; fSat ^= 1;
break; break;
...@@ -3948,17 +3991,18 @@ int Abc_CommandCec( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -3948,17 +3991,18 @@ int Abc_CommandCec( Abc_Frame_t * pAbc, int argc, char ** argv )
// perform equivalence checking // perform equivalence checking
if ( fSat ) if ( fSat )
Abc_NtkCecSat( pNtk1, pNtk2 ); Abc_NtkCecSat( pNtk1, pNtk2, nSeconds );
else else
Abc_NtkCecFraig( pNtk1, pNtk2, fVerbose ); Abc_NtkCecFraig( pNtk1, pNtk2, nSeconds, fVerbose );
if ( fDelete1 ) Abc_NtkDelete( pNtk1 ); if ( fDelete1 ) Abc_NtkDelete( pNtk1 );
if ( fDelete2 ) Abc_NtkDelete( pNtk2 ); if ( fDelete2 ) Abc_NtkDelete( pNtk2 );
return 0; return 0;
usage: usage:
fprintf( pErr, "usage: cec [-svh] <file1> <file2>\n" ); fprintf( pErr, "usage: cec [-T num] [-svh] <file1> <file2>\n" );
fprintf( pErr, "\t performs combinational equivalence checking\n" ); fprintf( pErr, "\t performs combinational equivalence checking\n" );
fprintf( pErr, "\t-T num : approximate runtime limit in seconds [default = %d]\n", nSeconds );
fprintf( pErr, "\t-s : toggle \"SAT only\" and \"FRAIG + SAT\" [default = %s]\n", fSat? "SAT only": "FRAIG + SAT" ); fprintf( pErr, "\t-s : toggle \"SAT only\" and \"FRAIG + SAT\" [default = %s]\n", fSat? "SAT only": "FRAIG + SAT" );
fprintf( pErr, "\t-v : toggles verbose output [default = %s]\n", fVerbose? "yes": "no" ); fprintf( pErr, "\t-v : toggles verbose output [default = %s]\n", fVerbose? "yes": "no" );
fprintf( pErr, "\t-h : print the command usage\n"); fprintf( pErr, "\t-h : print the command usage\n");
...@@ -3989,10 +4033,12 @@ int Abc_CommandSec( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -3989,10 +4033,12 @@ int Abc_CommandSec( Abc_Frame_t * pAbc, int argc, char ** argv )
int nArgcNew; int nArgcNew;
int c; int c;
int fSat; int fSat;
int fVerbose;
int nFrames; int nFrames;
int nSeconds;
extern void Abc_NtkSecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames ); extern void Abc_NtkSecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nSeconds, int nFrames );
extern void Abc_NtkSecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames ); extern void Abc_NtkSecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nSeconds, int nFrames, int fVerbose );
pNtk = Abc_FrameReadNet(pAbc); pNtk = Abc_FrameReadNet(pAbc);
...@@ -4000,10 +4046,12 @@ int Abc_CommandSec( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -4000,10 +4046,12 @@ int Abc_CommandSec( Abc_Frame_t * pAbc, int argc, char ** argv )
pErr = Abc_FrameReadErr(pAbc); pErr = Abc_FrameReadErr(pAbc);
// set defaults // set defaults
nFrames = 3;
fSat = 0; fSat = 0;
fVerbose = 0;
nFrames = 3;
nSeconds = 20;
util_getopt_reset(); util_getopt_reset();
while ( ( c = util_getopt( argc, argv, "Fsh" ) ) != EOF ) while ( ( c = util_getopt( argc, argv, "FTsvh" ) ) != EOF )
{ {
switch ( c ) switch ( c )
{ {
...@@ -4018,6 +4066,20 @@ int Abc_CommandSec( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -4018,6 +4066,20 @@ int Abc_CommandSec( Abc_Frame_t * pAbc, int argc, char ** argv )
if ( nFrames < 0 ) if ( nFrames < 0 )
goto usage; goto usage;
break; break;
case 'T':
if ( util_optind >= argc )
{
fprintf( pErr, "Command line switch \"-T\" should be followed by an integer.\n" );
goto usage;
}
nSeconds = atoi(argv[util_optind]);
util_optind++;
if ( nSeconds < 0 )
goto usage;
break;
case 'v':
fVerbose ^= 1;
break;
case 's': case 's':
fSat ^= 1; fSat ^= 1;
break; break;
...@@ -4033,20 +4095,22 @@ int Abc_CommandSec( Abc_Frame_t * pAbc, int argc, char ** argv ) ...@@ -4033,20 +4095,22 @@ int Abc_CommandSec( Abc_Frame_t * pAbc, int argc, char ** argv )
// perform equivalence checking // perform equivalence checking
if ( fSat ) if ( fSat )
Abc_NtkSecSat( pNtk1, pNtk2, nFrames ); Abc_NtkSecSat( pNtk1, pNtk2, nSeconds, nFrames );
else else
Abc_NtkSecFraig( pNtk1, pNtk2, nFrames ); Abc_NtkSecFraig( pNtk1, pNtk2, nSeconds, nFrames, fVerbose );
if ( fDelete1 ) Abc_NtkDelete( pNtk1 ); if ( fDelete1 ) Abc_NtkDelete( pNtk1 );
if ( fDelete2 ) Abc_NtkDelete( pNtk2 ); if ( fDelete2 ) Abc_NtkDelete( pNtk2 );
return 0; return 0;
usage: usage:
fprintf( pErr, "usage: sec [-sh] [-F num] <file1> <file2>\n" ); fprintf( pErr, "usage: sec [-F num] [-T num] [-svh] <file1> <file2>\n" );
fprintf( pErr, "\t performs bounded sequential equivalence checking\n" ); fprintf( pErr, "\t performs bounded sequential equivalence checking\n" );
fprintf( pErr, "\t-s : toggle \"SAT only\" and \"FRAIG + SAT\" [default = %s]\n", fSat? "SAT only": "FRAIG + SAT" ); fprintf( pErr, "\t-s : toggle \"SAT only\" and \"FRAIG + SAT\" [default = %s]\n", fSat? "SAT only": "FRAIG + SAT" );
fprintf( pErr, "\t-v : toggles verbose output [default = %s]\n", fVerbose? "yes": "no" );
fprintf( pErr, "\t-h : print the command usage\n"); fprintf( pErr, "\t-h : print the command usage\n");
fprintf( pErr, "\t-F num : the number of time frames to use [default = %d]\n", nFrames ); fprintf( pErr, "\t-F num : the number of time frames to use [default = %d]\n", nFrames );
fprintf( pErr, "\t-T num : approximate runtime limit in seconds [default = %d]\n", nSeconds );
fprintf( pErr, "\tfile1 : (optional) the file with the first network\n"); fprintf( pErr, "\tfile1 : (optional) the file with the first network\n");
fprintf( pErr, "\tfile2 : (optional) the file with the second network\n"); fprintf( pErr, "\tfile2 : (optional) the file with the second network\n");
fprintf( pErr, "\t if no files are given, uses the current network and its spec\n"); fprintf( pErr, "\t if no files are given, uses the current network and its spec\n");
......
...@@ -25,8 +25,8 @@ ...@@ -25,8 +25,8 @@
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
static void Abc_NtkBalancePerform( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkAig, bool fDuplicate ); static void Abc_NtkBalancePerform( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkAig, bool fDuplicate );
static Abc_Obj_t * Abc_NodeBalance_rec( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pNode, Vec_Vec_t * vStorage, bool fDuplicate ); static Abc_Obj_t * Abc_NodeBalance_rec( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pNode, Vec_Vec_t * vStorage, int Level, bool fDuplicate );
static Vec_Ptr_t * Abc_NodeBalanceCone( Abc_Obj_t * pNode, Vec_Vec_t * vSuper, int fDuplicate ); static Vec_Ptr_t * Abc_NodeBalanceCone( Abc_Obj_t * pNode, Vec_Vec_t * vSuper, int Level, int fDuplicate );
static int Abc_NodeBalanceCone_rec( Abc_Obj_t * pNode, Vec_Ptr_t * vSuper, bool fFirst, bool fDuplicate ); static int Abc_NodeBalanceCone_rec( Abc_Obj_t * pNode, Vec_Ptr_t * vSuper, bool fFirst, bool fDuplicate );
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
...@@ -86,7 +86,7 @@ void Abc_NtkBalancePerform( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkAig, bool fDuplica ...@@ -86,7 +86,7 @@ void Abc_NtkBalancePerform( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkAig, bool fDuplica
// set the level of PIs of AIG according to the arrival times of the old network // set the level of PIs of AIG according to the arrival times of the old network
Abc_NtkSetNodeLevelsArrival( pNtk ); Abc_NtkSetNodeLevelsArrival( pNtk );
// allocate temporary storage for supergates // allocate temporary storage for supergates
vStorage = Vec_VecStart( Abc_AigGetLevelNum(pNtk) + 1 ); vStorage = Vec_VecStart( 10 );
// perform balancing of POs // perform balancing of POs
pProgress = Extra_ProgressBarStart( stdout, Abc_NtkCoNum(pNtk) ); pProgress = Extra_ProgressBarStart( stdout, Abc_NtkCoNum(pNtk) );
Abc_NtkForEachCo( pNtk, pNode, i ) Abc_NtkForEachCo( pNtk, pNode, i )
...@@ -94,7 +94,7 @@ void Abc_NtkBalancePerform( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkAig, bool fDuplica ...@@ -94,7 +94,7 @@ void Abc_NtkBalancePerform( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkAig, bool fDuplica
Extra_ProgressBarUpdate( pProgress, i, NULL ); Extra_ProgressBarUpdate( pProgress, i, NULL );
// strash the driver node // strash the driver node
pDriver = Abc_ObjFanin0(pNode); pDriver = Abc_ObjFanin0(pNode);
Abc_NodeBalance_rec( pNtkAig, pDriver, vStorage, fDuplicate ); Abc_NodeBalance_rec( pNtkAig, pDriver, vStorage, 0, fDuplicate );
} }
Extra_ProgressBarStop( pProgress ); Extra_ProgressBarStop( pProgress );
Vec_VecFree( vStorage ); Vec_VecFree( vStorage );
...@@ -111,7 +111,7 @@ void Abc_NtkBalancePerform( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkAig, bool fDuplica ...@@ -111,7 +111,7 @@ void Abc_NtkBalancePerform( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkAig, bool fDuplica
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
Abc_Obj_t * Abc_NodeBalance_rec( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pNodeOld, Vec_Vec_t * vStorage, bool fDuplicate ) Abc_Obj_t * Abc_NodeBalance_rec( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pNodeOld, Vec_Vec_t * vStorage, int Level, bool fDuplicate )
{ {
Abc_Aig_t * pMan = pNtkNew->pManFunc; Abc_Aig_t * pMan = pNtkNew->pManFunc;
Abc_Obj_t * pNodeNew, * pNode1, * pNode2; Abc_Obj_t * pNodeNew, * pNode1, * pNode2;
...@@ -123,7 +123,7 @@ Abc_Obj_t * Abc_NodeBalance_rec( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pNodeOld, Vec_ ...@@ -123,7 +123,7 @@ Abc_Obj_t * Abc_NodeBalance_rec( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pNodeOld, Vec_
return pNodeOld->pCopy; return pNodeOld->pCopy;
assert( Abc_ObjIsNode(pNodeOld) ); assert( Abc_ObjIsNode(pNodeOld) );
// get the implication supergate // get the implication supergate
vSuper = Abc_NodeBalanceCone( pNodeOld, vStorage, fDuplicate ); vSuper = Abc_NodeBalanceCone( pNodeOld, vStorage, Level, fDuplicate );
if ( vSuper->nSize == 0 ) if ( vSuper->nSize == 0 )
{ // it means that the supergate contains two nodes in the opposite polarity { // it means that the supergate contains two nodes in the opposite polarity
pNodeOld->pCopy = Abc_ObjNot(Abc_AigConst1(pMan)); pNodeOld->pCopy = Abc_ObjNot(Abc_AigConst1(pMan));
...@@ -132,9 +132,11 @@ Abc_Obj_t * Abc_NodeBalance_rec( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pNodeOld, Vec_ ...@@ -132,9 +132,11 @@ Abc_Obj_t * Abc_NodeBalance_rec( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pNodeOld, Vec_
// for each old node, derive the new well-balanced node // for each old node, derive the new well-balanced node
for ( i = 0; i < vSuper->nSize; i++ ) for ( i = 0; i < vSuper->nSize; i++ )
{ {
pNodeNew = Abc_NodeBalance_rec( pNtkNew, Abc_ObjRegular(vSuper->pArray[i]), vStorage, fDuplicate ); pNodeNew = Abc_NodeBalance_rec( pNtkNew, Abc_ObjRegular(vSuper->pArray[i]), vStorage, Level + 1, fDuplicate );
vSuper->pArray[i] = Abc_ObjNotCond( pNodeNew, Abc_ObjIsComplement(vSuper->pArray[i]) ); vSuper->pArray[i] = Abc_ObjNotCond( pNodeNew, Abc_ObjIsComplement(vSuper->pArray[i]) );
} }
if ( vSuper->nSize < 2 )
printf( "BUG!\n" );
// sort the new nodes by level in the decreasing order // sort the new nodes by level in the decreasing order
Vec_PtrSort( vSuper, Abc_NodeCompareLevelsDecrease ); Vec_PtrSort( vSuper, Abc_NodeCompareLevelsDecrease );
// balance the nodes // balance the nodes
...@@ -149,6 +151,7 @@ Abc_Obj_t * Abc_NodeBalance_rec( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pNodeOld, Vec_ ...@@ -149,6 +151,7 @@ Abc_Obj_t * Abc_NodeBalance_rec( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pNodeOld, Vec_
assert( pNodeOld->pCopy == NULL ); assert( pNodeOld->pCopy == NULL );
// mark the old node with the new node // mark the old node with the new node
pNodeOld->pCopy = vSuper->pArray[0]; pNodeOld->pCopy = vSuper->pArray[0];
vSuper->nSize = 0;
return pNodeOld->pCopy; return pNodeOld->pCopy;
} }
...@@ -165,17 +168,25 @@ Abc_Obj_t * Abc_NodeBalance_rec( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pNodeOld, Vec_ ...@@ -165,17 +168,25 @@ Abc_Obj_t * Abc_NodeBalance_rec( Abc_Ntk_t * pNtkNew, Abc_Obj_t * pNodeOld, Vec_
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
Vec_Ptr_t * Abc_NodeBalanceCone( Abc_Obj_t * pNode, Vec_Vec_t * vStorage, int fDuplicate ) Vec_Ptr_t * Abc_NodeBalanceCone( Abc_Obj_t * pNode, Vec_Vec_t * vStorage, int Level, int fDuplicate )
{ {
Vec_Ptr_t * vNodes; Vec_Ptr_t * vNodes;
int RetValue, i; int RetValue, i;
assert( !Abc_ObjIsComplement(pNode) ); assert( !Abc_ObjIsComplement(pNode) );
vNodes = Vec_VecEntry( vStorage, pNode->Level ); // extend the storage
if ( Vec_VecSize( vStorage ) <= Level )
Vec_VecPush( vStorage, Level, 0 );
// get the temporary array of nodes
vNodes = Vec_VecEntry( vStorage, Level );
Vec_PtrClear( vNodes ); Vec_PtrClear( vNodes );
// collect the nodes in the implication supergate
RetValue = Abc_NodeBalanceCone_rec( pNode, vNodes, 1, fDuplicate ); RetValue = Abc_NodeBalanceCone_rec( pNode, vNodes, 1, fDuplicate );
assert( vNodes->nSize > 0 ); assert( vNodes->nSize > 1 );
// unmark the visited nodes
for ( i = 0; i < vNodes->nSize; i++ ) for ( i = 0; i < vNodes->nSize; i++ )
Abc_ObjRegular((Abc_Obj_t *)vNodes->pArray[i])->fMarkB = 0; Abc_ObjRegular((Abc_Obj_t *)vNodes->pArray[i])->fMarkB = 0;
// if we found the node and its complement in the same implication supergate,
// return empty set of nodes (meaning that we should use constant-0 node)
if ( RetValue == -1 ) if ( RetValue == -1 )
vNodes->nSize = 0; vNodes->nSize = 0;
return vNodes; return vNodes;
......
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
/// DECLARATIONS /// /// DECLARATIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
extern Fraig_Man_t * Abc_NtkToFraig( Abc_Ntk_t * pNtk, Fraig_Params_t * pParams, int fAllNodes );
static Abc_Ntk_t * Abc_NtkFromFraig( Fraig_Man_t * pMan, Abc_Ntk_t * pNtk ); static Abc_Ntk_t * Abc_NtkFromFraig( Fraig_Man_t * pMan, Abc_Ntk_t * pNtk );
static Abc_Obj_t * Abc_NodeFromFraig_rec( Abc_Ntk_t * pNtkNew, Fraig_Node_t * pNodeFraig ); static Abc_Obj_t * Abc_NodeFromFraig_rec( Abc_Ntk_t * pNtkNew, Fraig_Node_t * pNodeFraig );
...@@ -83,13 +82,14 @@ Abc_Ntk_t * Abc_NtkFraig( Abc_Ntk_t * pNtk, void * pParams, int fAllNodes ) ...@@ -83,13 +82,14 @@ Abc_Ntk_t * Abc_NtkFraig( Abc_Ntk_t * pNtk, void * pParams, int fAllNodes )
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
Fraig_Man_t * Abc_NtkToFraig( Abc_Ntk_t * pNtk, Fraig_Params_t * pParams, int fAllNodes ) void * Abc_NtkToFraig( Abc_Ntk_t * pNtk, void * pParams, int fAllNodes )
{ {
Fraig_Man_t * pMan; Fraig_Man_t * pMan;
ProgressBar * pProgress; ProgressBar * pProgress;
Fraig_Node_t * pNodeFraig; Fraig_Node_t * pNodeFraig;
Vec_Ptr_t * vNodes; Vec_Ptr_t * vNodes;
Abc_Obj_t * pNode, * pConst1, * pReset; Abc_Obj_t * pNode, * pConst1, * pReset;
int fInternal = ((Fraig_Params_t *)pParams)->fInternal;
int i; int i;
assert( Abc_NtkIsStrash(pNtk) ); assert( Abc_NtkIsStrash(pNtk) );
...@@ -106,11 +106,11 @@ Fraig_Man_t * Abc_NtkToFraig( Abc_Ntk_t * pNtk, Fraig_Params_t * pParams, int fA ...@@ -106,11 +106,11 @@ Fraig_Man_t * Abc_NtkToFraig( Abc_Ntk_t * pNtk, Fraig_Params_t * pParams, int fA
// perform strashing // perform strashing
vNodes = Abc_AigDfs( pNtk, fAllNodes, 0 ); vNodes = Abc_AigDfs( pNtk, fAllNodes, 0 );
if ( !pParams->fInternal ) if ( !fInternal )
pProgress = Extra_ProgressBarStart( stdout, vNodes->nSize ); pProgress = Extra_ProgressBarStart( stdout, vNodes->nSize );
Vec_PtrForEachEntry( vNodes, pNode, i ) Vec_PtrForEachEntry( vNodes, pNode, i )
{ {
if ( !pParams->fInternal ) if ( !fInternal )
Extra_ProgressBarUpdate( pProgress, i, NULL ); Extra_ProgressBarUpdate( pProgress, i, NULL );
if ( pNode == pConst1 ) if ( pNode == pConst1 )
pNodeFraig = Fraig_ManReadConst1(pMan); pNodeFraig = Fraig_ManReadConst1(pMan);
...@@ -123,7 +123,7 @@ Fraig_Man_t * Abc_NtkToFraig( Abc_Ntk_t * pNtk, Fraig_Params_t * pParams, int fA ...@@ -123,7 +123,7 @@ Fraig_Man_t * Abc_NtkToFraig( Abc_Ntk_t * pNtk, Fraig_Params_t * pParams, int fA
assert( pNode->pCopy == NULL ); assert( pNode->pCopy == NULL );
pNode->pCopy = (Abc_Obj_t *)pNodeFraig; pNode->pCopy = (Abc_Obj_t *)pNodeFraig;
} }
if ( !pParams->fInternal ) if ( !fInternal )
Extra_ProgressBarStop( pProgress ); Extra_ProgressBarStop( pProgress );
Vec_PtrFree( vNodes ); Vec_PtrFree( vNodes );
......
...@@ -372,8 +372,8 @@ Abc_Ntk_t * Abc_NtkMiterForCofactors( Abc_Ntk_t * pNtk, int Out, int In1, int In ...@@ -372,8 +372,8 @@ Abc_Ntk_t * Abc_NtkMiterForCofactors( Abc_Ntk_t * pNtk, int Out, int In1, int In
Synopsis [Checks the status of the miter.] Synopsis [Checks the status of the miter.]
Description [Return 1 if the miter is sat for at least one output. Description [Return 0 if the miter is sat for at least one output.
Return 0 if the miter is unsat for all its outputs. Returns -1 if the Return 1 if the miter is unsat for all its outputs. Returns -1 if the
miter is undecided for some outputs.] miter is undecided for some outputs.]
SideEffects [] SideEffects []
...@@ -396,15 +396,15 @@ int Abc_NtkMiterIsConstant( Abc_Ntk_t * pMiter ) ...@@ -396,15 +396,15 @@ int Abc_NtkMiterIsConstant( Abc_Ntk_t * pMiter )
{ {
// if the miter is constant 1, return immediately // if the miter is constant 1, return immediately
printf( "MITER IS CONSTANT 1!\n" ); printf( "MITER IS CONSTANT 1!\n" );
return 1; return 0;
} }
} }
// if the miter is undecided (or satisfiable), return immediately // if the miter is undecided (or satisfiable), return immediately
else else
return -1; return -1;
} }
// return 0, meaning all outputs are constant zero // return 1, meaning all outputs are constant zero
return 0; return 1;
} }
/**Function************************************************************* /**Function*************************************************************
......
...@@ -58,7 +58,7 @@ struct Abc_ManRef_t_ ...@@ -58,7 +58,7 @@ struct Abc_ManRef_t_
static void Abc_NtkManRefPrintStats( Abc_ManRef_t * p ); static void Abc_NtkManRefPrintStats( Abc_ManRef_t * p );
static Abc_ManRef_t * Abc_NtkManRefStart( int nNodeSizeMax, int nConeSizeMax, bool fUseDcs, bool fVerbose ); static Abc_ManRef_t * Abc_NtkManRefStart( int nNodeSizeMax, int nConeSizeMax, bool fUseDcs, bool fVerbose );
static void Abc_NtkManRefStop( Abc_ManRef_t * p ); static void Abc_NtkManRefStop( Abc_ManRef_t * p );
static Dec_Graph_t * Abc_NodeRefactor( Abc_ManRef_t * p, Abc_Obj_t * pNode, Vec_Ptr_t * vFanins, bool fUseZeros, bool fUseDcs, bool fVerbose ); static Dec_Graph_t * Abc_NodeRefactor( Abc_ManRef_t * p, Abc_Obj_t * pNode, Vec_Ptr_t * vFanins, bool fUpdateLevel, bool fUseZeros, bool fUseDcs, bool fVerbose );
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFITIONS /// /// FUNCTION DEFITIONS ///
...@@ -80,7 +80,7 @@ static Dec_Graph_t * Abc_NodeRefactor( Abc_ManRef_t * p, Abc_Obj_t * pNode, Vec ...@@ -80,7 +80,7 @@ static Dec_Graph_t * Abc_NodeRefactor( Abc_ManRef_t * p, Abc_Obj_t * pNode, Vec
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
int Abc_NtkRefactor( Abc_Ntk_t * pNtk, int nNodeSizeMax, int nConeSizeMax, bool fUseZeros, bool fUseDcs, bool fVerbose ) int Abc_NtkRefactor( Abc_Ntk_t * pNtk, int nNodeSizeMax, int nConeSizeMax, bool fUpdateLevel, bool fUseZeros, bool fUseDcs, bool fVerbose )
{ {
ProgressBar * pProgress; ProgressBar * pProgress;
Abc_ManRef_t * pManRef; Abc_ManRef_t * pManRef;
...@@ -98,6 +98,8 @@ int Abc_NtkRefactor( Abc_Ntk_t * pNtk, int nNodeSizeMax, int nConeSizeMax, bool ...@@ -98,6 +98,8 @@ int Abc_NtkRefactor( Abc_Ntk_t * pNtk, int nNodeSizeMax, int nConeSizeMax, bool
pManCut = Abc_NtkManCutStart( nNodeSizeMax, nConeSizeMax, 2, 1000 ); pManCut = Abc_NtkManCutStart( nNodeSizeMax, nConeSizeMax, 2, 1000 );
pManRef = Abc_NtkManRefStart( nNodeSizeMax, nConeSizeMax, fUseDcs, fVerbose ); pManRef = Abc_NtkManRefStart( nNodeSizeMax, nConeSizeMax, fUseDcs, fVerbose );
pManRef->vLeaves = Abc_NtkManCutReadCutLarge( pManCut ); pManRef->vLeaves = Abc_NtkManCutReadCutLarge( pManCut );
// compute the reverse levels if level update is requested
if ( fUpdateLevel )
Abc_NtkStartReverseLevels( pNtk ); Abc_NtkStartReverseLevels( pNtk );
// resynthesize each node once // resynthesize each node once
...@@ -121,13 +123,13 @@ clk = clock(); ...@@ -121,13 +123,13 @@ clk = clock();
pManRef->timeCut += clock() - clk; pManRef->timeCut += clock() - clk;
// evaluate this cut // evaluate this cut
clk = clock(); clk = clock();
pFForm = Abc_NodeRefactor( pManRef, pNode, vFanins, fUseZeros, fUseDcs, fVerbose ); pFForm = Abc_NodeRefactor( pManRef, pNode, vFanins, fUpdateLevel, fUseZeros, fUseDcs, fVerbose );
pManRef->timeRes += clock() - clk; pManRef->timeRes += clock() - clk;
if ( pFForm == NULL ) if ( pFForm == NULL )
continue; continue;
// acceptable replacement found, update the graph // acceptable replacement found, update the graph
clk = clock(); clk = clock();
Dec_GraphUpdateNetwork( pNode, pFForm, pManRef->nLastGain ); Dec_GraphUpdateNetwork( pNode, pFForm, fUpdateLevel, pManRef->nLastGain );
pManRef->timeNtk += clock() - clk; pManRef->timeNtk += clock() - clk;
Dec_GraphFree( pFForm ); Dec_GraphFree( pFForm );
} }
...@@ -140,7 +142,13 @@ pManRef->timeTotal = clock() - clkStart; ...@@ -140,7 +142,13 @@ pManRef->timeTotal = clock() - clkStart;
// delete the managers // delete the managers
Abc_NtkManCutStop( pManCut ); Abc_NtkManCutStop( pManCut );
Abc_NtkManRefStop( pManRef ); Abc_NtkManRefStop( pManRef );
// put the nodes into the DFS order and reassign their IDs
Abc_NtkReassignIds( pNtk );
// fix the levels
if ( fUpdateLevel )
Abc_NtkStopReverseLevels( pNtk ); Abc_NtkStopReverseLevels( pNtk );
else
Abc_NtkGetLevelNum( pNtk );
// check // check
if ( !Abc_NtkCheck( pNtk ) ) if ( !Abc_NtkCheck( pNtk ) )
{ {
...@@ -161,7 +169,7 @@ pManRef->timeTotal = clock() - clkStart; ...@@ -161,7 +169,7 @@ pManRef->timeTotal = clock() - clkStart;
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
Dec_Graph_t * Abc_NodeRefactor( Abc_ManRef_t * p, Abc_Obj_t * pNode, Vec_Ptr_t * vFanins, bool fUseZeros, bool fUseDcs, bool fVerbose ) Dec_Graph_t * Abc_NodeRefactor( Abc_ManRef_t * p, Abc_Obj_t * pNode, Vec_Ptr_t * vFanins, bool fUpdateLevel, bool fUseZeros, bool fUseDcs, bool fVerbose )
{ {
int fVeryVerbose = 0; int fVeryVerbose = 0;
Abc_Obj_t * pFanin; Abc_Obj_t * pFanin;
...@@ -169,6 +177,9 @@ Dec_Graph_t * Abc_NodeRefactor( Abc_ManRef_t * p, Abc_Obj_t * pNode, Vec_Ptr_t * ...@@ -169,6 +177,9 @@ Dec_Graph_t * Abc_NodeRefactor( Abc_ManRef_t * p, Abc_Obj_t * pNode, Vec_Ptr_t *
DdNode * bNodeFunc; DdNode * bNodeFunc;
int nNodesSaved, nNodesAdded, i, clk; int nNodesSaved, nNodesAdded, i, clk;
char * pSop; char * pSop;
int Required;
Required = fUpdateLevel? Abc_NodeReadRequiredLevel(pNode) : ABC_INFINITY;
p->nNodesConsidered++; p->nNodesConsidered++;
...@@ -239,7 +250,7 @@ p->timeFact += clock() - clk; ...@@ -239,7 +250,7 @@ p->timeFact += clock() - clk;
// detect how many new nodes will be added (while taking into account reused nodes) // detect how many new nodes will be added (while taking into account reused nodes)
clk = clock(); clk = clock();
nNodesAdded = Dec_GraphToNetworkCount( pNode, pFForm, nNodesSaved, Abc_NodeReadRequiredLevel(pNode) ); nNodesAdded = Dec_GraphToNetworkCount( pNode, pFForm, nNodesSaved, Required );
p->timeEval += clock() - clk; p->timeEval += clock() - clk;
// quit if there is no improvement // quit if there is no improvement
if ( nNodesAdded == -1 || nNodesAdded == nNodesSaved && !fUseZeros ) if ( nNodesAdded == -1 || nNodesAdded == nNodesSaved && !fUseZeros )
......
...@@ -486,7 +486,7 @@ void Abc_NtkRenodeSetBoundsCnf( Abc_Ntk_t * pNtk ) ...@@ -486,7 +486,7 @@ void Abc_NtkRenodeSetBoundsCnf( Abc_Ntk_t * pNtk )
Abc_ObjFanin1(pNode)->fMarkA == 0 ) Abc_ObjFanin1(pNode)->fMarkA == 0 )
nMuxes++; nMuxes++;
} }
printf( "The number of MUXes detected = %d (%5.2f %% of logic).\n", nMuxes, 300.0*nMuxes/Abc_NtkNodeNum(pNtk) ); // printf( "The number of MUXes detected = %d (%5.2f %% of logic).\n", nMuxes, 300.0*nMuxes/Abc_NtkNodeNum(pNtk) );
} }
/**Function************************************************************* /**Function*************************************************************
......
...@@ -50,7 +50,7 @@ static void Abc_NodePrintCuts( Abc_Obj_t * pNode ); ...@@ -50,7 +50,7 @@ static void Abc_NodePrintCuts( Abc_Obj_t * pNode );
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
int Abc_NtkRewrite( Abc_Ntk_t * pNtk, int fUseZeros, int fVerbose ) int Abc_NtkRewrite( Abc_Ntk_t * pNtk, int fUpdateLevel, int fUseZeros, int fVerbose )
{ {
int fDrop = 0; int fDrop = 0;
ProgressBar * pProgress; ProgressBar * pProgress;
...@@ -67,6 +67,8 @@ int Abc_NtkRewrite( Abc_Ntk_t * pNtk, int fUseZeros, int fVerbose ) ...@@ -67,6 +67,8 @@ int Abc_NtkRewrite( Abc_Ntk_t * pNtk, int fUseZeros, int fVerbose )
pManRwr = Rwr_ManStart( 0 ); pManRwr = Rwr_ManStart( 0 );
if ( pManRwr == NULL ) if ( pManRwr == NULL )
return 0; return 0;
// compute the reverse levels if level update is requested
if ( fUpdateLevel )
Abc_NtkStartReverseLevels( pNtk ); Abc_NtkStartReverseLevels( pNtk );
// start the cut manager // start the cut manager
clk = clock(); clk = clock();
...@@ -90,14 +92,16 @@ Rwr_ManAddTimeCuts( pManRwr, clock() - clk ); ...@@ -90,14 +92,16 @@ Rwr_ManAddTimeCuts( pManRwr, clock() - clk );
if ( Abc_ObjFanoutNum(pNode) > 1000 ) if ( Abc_ObjFanoutNum(pNode) > 1000 )
continue; continue;
// for each cut, try to resynthesize it // for each cut, try to resynthesize it
nGain = Rwr_NodeRewrite( pManRwr, pManCut, pNode, fUseZeros ); nGain = Rwr_NodeRewrite( pManRwr, pManCut, pNode, fUpdateLevel, fUseZeros );
if ( nGain > 0 || nGain == 0 && fUseZeros ) if ( nGain > 0 || nGain == 0 && fUseZeros )
{ {
Dec_Graph_t * pGraph = Rwr_ManReadDecs(pManRwr); Dec_Graph_t * pGraph = Rwr_ManReadDecs(pManRwr);
int fCompl = Rwr_ManReadCompl(pManRwr); int fCompl = Rwr_ManReadCompl(pManRwr);
// complement the FF if needed // complement the FF if needed
if ( fCompl ) Dec_GraphComplement( pGraph ); if ( fCompl ) Dec_GraphComplement( pGraph );
Dec_GraphUpdateNetwork( pNode, pGraph, nGain ); clk = clock();
Dec_GraphUpdateNetwork( pNode, pGraph, fUpdateLevel, nGain );
Rwr_ManAddTimeUpdate( pManRwr, clock() - clk );
if ( fCompl ) Dec_GraphComplement( pGraph ); if ( fCompl ) Dec_GraphComplement( pGraph );
} }
} }
...@@ -110,7 +114,13 @@ Rwr_ManAddTimeTotal( pManRwr, clock() - clkStart ); ...@@ -110,7 +114,13 @@ Rwr_ManAddTimeTotal( pManRwr, clock() - clkStart );
Rwr_ManStop( pManRwr ); Rwr_ManStop( pManRwr );
Cut_ManStop( pManCut ); Cut_ManStop( pManCut );
pNtk->pManCut = NULL; pNtk->pManCut = NULL;
// put the nodes into the DFS order and reassign their IDs
Abc_NtkReassignIds( pNtk );
// fix the levels
if ( fUpdateLevel )
Abc_NtkStopReverseLevels( pNtk ); Abc_NtkStopReverseLevels( pNtk );
else
Abc_NtkGetLevelNum( pNtk );
// check // check
if ( !Abc_NtkCheck( pNtk ) ) if ( !Abc_NtkCheck( pNtk ) )
{ {
......
...@@ -35,18 +35,18 @@ static void Abc_NodeAddClausesTop( solver * pSat, Abc_Obj_t * pNode, Vec_Int_t * ...@@ -35,18 +35,18 @@ static void Abc_NodeAddClausesTop( solver * pSat, Abc_Obj_t * pNode, Vec_Int_t *
Synopsis [Attempts to solve the miter using an internal SAT solver.] Synopsis [Attempts to solve the miter using an internal SAT solver.]
Description [Returns 1 if the miter is SAT.] Description [Returns -1 if timed out; 0 if SAT; 1 if UNSAT.]
SideEffects [] SideEffects []
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
bool Abc_NtkMiterSat( Abc_Ntk_t * pNtk, int fVerbose ) int Abc_NtkMiterSat( Abc_Ntk_t * pNtk, int nSeconds, int fVerbose )
{ {
solver * pSat; solver * pSat;
lbool status; lbool status;
int clk; int RetValue, clk;
assert( Abc_NtkIsBddLogic(pNtk) ); assert( Abc_NtkIsBddLogic(pNtk) );
assert( Abc_NtkLatchNum(pNtk) == 0 ); assert( Abc_NtkLatchNum(pNtk) == 0 );
...@@ -57,20 +57,18 @@ bool Abc_NtkMiterSat( Abc_Ntk_t * pNtk, int fVerbose ) ...@@ -57,20 +57,18 @@ bool Abc_NtkMiterSat( Abc_Ntk_t * pNtk, int fVerbose )
// load clauses into the solver // load clauses into the solver
clk = clock(); clk = clock();
pSat = Abc_NtkMiterSatCreate( pNtk ); pSat = Abc_NtkMiterSatCreate( pNtk );
// printf( "Created SAT problem with %d variable and %d clauses. ", // printf( "Created SAT problem with %d variable and %d clauses. ", solver_nvars(pSat), solver_nclauses(pSat) );
// solver_nvars(pSat), solver_nclauses(pSat) );
// PRT( "Time", clock() - clk ); // PRT( "Time", clock() - clk );
// simplify the problem // simplify the problem
clk = clock(); clk = clock();
status = solver_simplify(pSat); status = solver_simplify(pSat);
// printf( "Simplified the problem to %d variables and %d clauses. ", // printf( "Simplified the problem to %d variables and %d clauses. ", solver_nvars(pSat), solver_nclauses(pSat) );
// solver_nvars(pSat), solver_nclauses(pSat) );
// PRT( "Time", clock() - clk ); // PRT( "Time", clock() - clk );
if ( status == l_False ) if ( status == l_False )
{ {
solver_delete( pSat ); solver_delete( pSat );
printf( "The problem is UNSAT after simplification.\n" ); printf( "The problem is UNSATISFIABLE after simplification.\n" );
return 0; return 0;
} }
...@@ -78,15 +76,36 @@ bool Abc_NtkMiterSat( Abc_Ntk_t * pNtk, int fVerbose ) ...@@ -78,15 +76,36 @@ bool Abc_NtkMiterSat( Abc_Ntk_t * pNtk, int fVerbose )
clk = clock(); clk = clock();
if ( fVerbose ) if ( fVerbose )
pSat->verbosity = 1; pSat->verbosity = 1;
status = solver_solve( pSat, NULL, NULL ); status = solver_solve( pSat, NULL, NULL, nSeconds );
// if ( fVerbose ) if ( status == l_Undef )
// { {
printf( "The problem is %5s. ", (status == l_True)? "SAT" : "UNSAT" ); // printf( "The problem timed out.\n" );
PRT( "SAT solver time", clock() - clk ); RetValue = -1;
// } }
else if ( status == l_True )
{
// printf( "The problem is SATISFIABLE.\n" );
RetValue = 0;
}
else if ( status == l_False )
{
// printf( "The problem is UNSATISFIABLE.\n" );
RetValue = 1;
}
else
assert( 0 );
// PRT( "SAT solver time", clock() - clk );
// if the problem is SAT, get the counterexample
if ( status == l_True )
{
Vec_Int_t * vCiIds = Abc_NtkGetCiIds( pNtk );
pNtk->pModel = solver_get_model( pSat, vCiIds->pArray, vCiIds->nSize );
Vec_IntFree( vCiIds );
}
// free the solver // free the solver
solver_delete( pSat ); solver_delete( pSat );
return status == l_True; return RetValue;
} }
/**Function************************************************************* /**Function*************************************************************
......
...@@ -25,8 +25,6 @@ ...@@ -25,8 +25,6 @@
/// DECLARATIONS /// /// DECLARATIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
extern Fraig_Man_t * Abc_NtkToFraig( Abc_Ntk_t * pNtk, Fraig_Params_t * pParams, int fAllNodes );
static stmm_table * Abc_NtkFraigEquiv( Fraig_Man_t * p, Abc_Ntk_t * pNtk, int fUseInv, bool fVerbose ); static stmm_table * Abc_NtkFraigEquiv( Fraig_Man_t * p, Abc_Ntk_t * pNtk, int fUseInv, bool fVerbose );
static void Abc_NtkFraigTransform( Abc_Ntk_t * pNtk, stmm_table * tEquiv, int fUseInv, bool fVerbose ); static void Abc_NtkFraigTransform( Abc_Ntk_t * pNtk, stmm_table * tEquiv, int fUseInv, bool fVerbose );
static void Abc_NtkFraigMergeClassMapped( Abc_Ntk_t * pNtk, Abc_Obj_t * pChain, int fVerbose, int fUseInv ); static void Abc_NtkFraigMergeClassMapped( Abc_Ntk_t * pNtk, Abc_Obj_t * pChain, int fVerbose, int fUseInv );
......
...@@ -25,6 +25,10 @@ ...@@ -25,6 +25,10 @@
/// DECLARATIONS /// /// DECLARATIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
static int * Abc_NtkVerifyGetCleanModel( Abc_Ntk_t * pNtk );
static int * Abc_NtkVerifySimulatePattern( Abc_Ntk_t * pNtk, int * pModel );
static void Abc_NtkVerifyReportError( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int * pModel );
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFITIONS /// /// FUNCTION DEFITIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
...@@ -40,7 +44,7 @@ ...@@ -40,7 +44,7 @@
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
void Abc_NtkCecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2 ) void Abc_NtkCecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nSeconds )
{ {
Abc_Ntk_t * pMiter; Abc_Ntk_t * pMiter;
Abc_Ntk_t * pCnf; Abc_Ntk_t * pCnf;
...@@ -54,13 +58,17 @@ void Abc_NtkCecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2 ) ...@@ -54,13 +58,17 @@ void Abc_NtkCecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2 )
return; return;
} }
RetValue = Abc_NtkMiterIsConstant( pMiter ); RetValue = Abc_NtkMiterIsConstant( pMiter );
if ( RetValue == 1 ) if ( RetValue == 0 )
{ {
Abc_NtkDelete( pMiter ); Abc_NtkDelete( pMiter );
printf( "Networks are NOT EQUIVALENT after structural hashing.\n" ); printf( "Networks are NOT EQUIVALENT after structural hashing.\n" );
// report the error
pMiter->pModel = Abc_NtkVerifyGetCleanModel( pMiter );
Abc_NtkVerifyReportError( pNtk1, pNtk2, pMiter->pModel );
FREE( pMiter->pModel );
return; return;
} }
if ( RetValue == 0 ) if ( RetValue == 1 )
{ {
Abc_NtkDelete( pMiter ); Abc_NtkDelete( pMiter );
printf( "Networks are equivalent after structural hashing.\n" ); printf( "Networks are equivalent after structural hashing.\n" );
...@@ -77,10 +85,16 @@ void Abc_NtkCecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2 ) ...@@ -77,10 +85,16 @@ void Abc_NtkCecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2 )
} }
// solve the CNF using the SAT solver // solve the CNF using the SAT solver
if ( Abc_NtkMiterSat( pCnf, 0 ) ) RetValue = Abc_NtkMiterSat( pCnf, nSeconds, 0 );
if ( RetValue == -1 )
printf( "Networks are undecided (SAT solver timed out).\n" );
else if ( RetValue == 0 )
printf( "Networks are NOT EQUIVALENT after SAT.\n" ); printf( "Networks are NOT EQUIVALENT after SAT.\n" );
else else
printf( "Networks are equivalent after SAT.\n" ); printf( "Networks are equivalent after SAT.\n" );
if ( pCnf->pModel )
Abc_NtkVerifyReportError( pNtk1, pNtk2, pCnf->pModel );
FREE( pCnf->pModel );
Abc_NtkDelete( pCnf ); Abc_NtkDelete( pCnf );
} }
...@@ -96,11 +110,11 @@ void Abc_NtkCecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2 ) ...@@ -96,11 +110,11 @@ void Abc_NtkCecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2 )
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
void Abc_NtkCecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fVerbose ) void Abc_NtkCecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nSeconds, int fVerbose )
{ {
Fraig_Params_t Params; Fraig_Params_t Params;
Fraig_Man_t * pMan;
Abc_Ntk_t * pMiter; Abc_Ntk_t * pMiter;
Abc_Ntk_t * pFraig;
int RetValue; int RetValue;
// get the miter of the two networks // get the miter of the two networks
...@@ -111,13 +125,17 @@ void Abc_NtkCecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fVerbose ) ...@@ -111,13 +125,17 @@ void Abc_NtkCecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fVerbose )
return; return;
} }
RetValue = Abc_NtkMiterIsConstant( pMiter ); RetValue = Abc_NtkMiterIsConstant( pMiter );
if ( RetValue == 1 ) if ( RetValue == 0 )
{ {
Abc_NtkDelete( pMiter ); Abc_NtkDelete( pMiter );
printf( "Networks are NOT EQUIVALENT after structural hashing.\n" ); printf( "Networks are NOT EQUIVALENT after structural hashing.\n" );
// report the error
pMiter->pModel = Abc_NtkVerifyGetCleanModel( pMiter );
Abc_NtkVerifyReportError( pNtk1, pNtk2, pMiter->pModel );
FREE( pMiter->pModel );
return; return;
} }
if ( RetValue == 0 ) if ( RetValue == 1 )
{ {
Abc_NtkDelete( pMiter ); Abc_NtkDelete( pMiter );
printf( "Networks are equivalent after structural hashing.\n" ); printf( "Networks are equivalent after structural hashing.\n" );
...@@ -127,21 +145,27 @@ void Abc_NtkCecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fVerbose ) ...@@ -127,21 +145,27 @@ void Abc_NtkCecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fVerbose )
// convert the miter into a FRAIG // convert the miter into a FRAIG
Fraig_ParamsSetDefault( &Params ); Fraig_ParamsSetDefault( &Params );
Params.fVerbose = fVerbose; Params.fVerbose = fVerbose;
pFraig = Abc_NtkFraig( pMiter, &Params, 0 ); Params.nSeconds = nSeconds;
Abc_NtkDelete( pMiter ); pMan = Abc_NtkToFraig( pMiter, &Params, 0 );
if ( pFraig == NULL ) Fraig_ManProveMiter( pMan );
{
printf( "Fraiging has failed.\n" ); // analyze the result
return; RetValue = Fraig_ManCheckMiter( pMan );
} // report the result
RetValue = Abc_NtkMiterIsConstant( pFraig ); if ( RetValue == -1 )
Abc_NtkDelete( pFraig ); printf( "Networks are undecided (SAT solver timed out on the final miter).\n" );
if ( RetValue == 0 ) else if ( RetValue == 1 )
{
printf( "Networks are equivalent after fraiging.\n" ); printf( "Networks are equivalent after fraiging.\n" );
return; else if ( RetValue == 0 )
} {
printf( "Networks are NOT EQUIVALENT after fraiging.\n" ); printf( "Networks are NOT EQUIVALENT after fraiging.\n" );
Abc_NtkVerifyReportError( pNtk1, pNtk2, Fraig_ManReadModel(pMan) );
}
else assert( 0 );
// delete the fraig manager
Fraig_ManFree( pMan );
// delete the miter
Abc_NtkDelete( pMiter );
} }
/**Function************************************************************* /**Function*************************************************************
...@@ -155,7 +179,7 @@ void Abc_NtkCecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fVerbose ) ...@@ -155,7 +179,7 @@ void Abc_NtkCecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int fVerbose )
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
void Abc_NtkSecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames ) void Abc_NtkSecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nSeconds, int nFrames )
{ {
Abc_Ntk_t * pMiter; Abc_Ntk_t * pMiter;
Abc_Ntk_t * pFrames; Abc_Ntk_t * pFrames;
...@@ -170,13 +194,13 @@ void Abc_NtkSecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames ) ...@@ -170,13 +194,13 @@ void Abc_NtkSecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames )
return; return;
} }
RetValue = Abc_NtkMiterIsConstant( pMiter ); RetValue = Abc_NtkMiterIsConstant( pMiter );
if ( RetValue == 1 ) if ( RetValue == 0 )
{ {
Abc_NtkDelete( pMiter ); Abc_NtkDelete( pMiter );
printf( "Networks are NOT EQUIVALENT after structural hashing.\n" ); printf( "Networks are NOT EQUIVALENT after structural hashing.\n" );
return; return;
} }
if ( RetValue == 0 ) if ( RetValue == 1 )
{ {
Abc_NtkDelete( pMiter ); Abc_NtkDelete( pMiter );
printf( "Networks are equivalent after structural hashing.\n" ); printf( "Networks are equivalent after structural hashing.\n" );
...@@ -192,13 +216,13 @@ void Abc_NtkSecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames ) ...@@ -192,13 +216,13 @@ void Abc_NtkSecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames )
return; return;
} }
RetValue = Abc_NtkMiterIsConstant( pFrames ); RetValue = Abc_NtkMiterIsConstant( pFrames );
if ( RetValue == 1 ) if ( RetValue == 0 )
{ {
Abc_NtkDelete( pFrames ); Abc_NtkDelete( pFrames );
printf( "Networks are NOT EQUIVALENT after framing.\n" ); printf( "Networks are NOT EQUIVALENT after framing.\n" );
return; return;
} }
if ( RetValue == 0 ) if ( RetValue == 1 )
{ {
Abc_NtkDelete( pFrames ); Abc_NtkDelete( pFrames );
printf( "Networks are equivalent after framing.\n" ); printf( "Networks are equivalent after framing.\n" );
...@@ -215,7 +239,10 @@ void Abc_NtkSecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames ) ...@@ -215,7 +239,10 @@ void Abc_NtkSecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames )
} }
// solve the CNF using the SAT solver // solve the CNF using the SAT solver
if ( Abc_NtkMiterSat( pCnf, 0 ) ) RetValue = Abc_NtkMiterSat( pCnf, nSeconds, 0 );
if ( RetValue == -1 )
printf( "Networks are undecided (SAT solver timed out).\n" );
else if ( RetValue == 0 )
printf( "Networks are NOT EQUIVALENT after SAT.\n" ); printf( "Networks are NOT EQUIVALENT after SAT.\n" );
else else
printf( "Networks are equivalent after SAT.\n" ); printf( "Networks are equivalent after SAT.\n" );
...@@ -233,11 +260,11 @@ void Abc_NtkSecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames ) ...@@ -233,11 +260,11 @@ void Abc_NtkSecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames )
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
void Abc_NtkSecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames ) void Abc_NtkSecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nSeconds, int nFrames, int fVerbose )
{ {
Fraig_Params_t Params; Fraig_Params_t Params;
Fraig_Man_t * pMan;
Abc_Ntk_t * pMiter; Abc_Ntk_t * pMiter;
Abc_Ntk_t * pFraig;
Abc_Ntk_t * pFrames; Abc_Ntk_t * pFrames;
int RetValue; int RetValue;
...@@ -249,13 +276,13 @@ void Abc_NtkSecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames ) ...@@ -249,13 +276,13 @@ void Abc_NtkSecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames )
return; return;
} }
RetValue = Abc_NtkMiterIsConstant( pMiter ); RetValue = Abc_NtkMiterIsConstant( pMiter );
if ( RetValue == 1 ) if ( RetValue == 0 )
{ {
Abc_NtkDelete( pMiter ); Abc_NtkDelete( pMiter );
printf( "Networks are NOT EQUIVALENT after structural hashing.\n" ); printf( "Networks are NOT EQUIVALENT after structural hashing.\n" );
return; return;
} }
if ( RetValue == 0 ) if ( RetValue == 1 )
{ {
Abc_NtkDelete( pMiter ); Abc_NtkDelete( pMiter );
printf( "Networks are equivalent after structural hashing.\n" ); printf( "Networks are equivalent after structural hashing.\n" );
...@@ -271,13 +298,13 @@ void Abc_NtkSecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames ) ...@@ -271,13 +298,13 @@ void Abc_NtkSecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames )
return; return;
} }
RetValue = Abc_NtkMiterIsConstant( pFrames ); RetValue = Abc_NtkMiterIsConstant( pFrames );
if ( RetValue == 1 ) if ( RetValue == 0 )
{ {
Abc_NtkDelete( pFrames ); Abc_NtkDelete( pFrames );
printf( "Networks are NOT EQUIVALENT after framing.\n" ); printf( "Networks are NOT EQUIVALENT after framing.\n" );
return; return;
} }
if ( RetValue == 0 ) if ( RetValue == 1 )
{ {
Abc_NtkDelete( pFrames ); Abc_NtkDelete( pFrames );
printf( "Networks are equivalent after framing.\n" ); printf( "Networks are equivalent after framing.\n" );
...@@ -286,23 +313,164 @@ void Abc_NtkSecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames ) ...@@ -286,23 +313,164 @@ void Abc_NtkSecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames )
// convert the miter into a FRAIG // convert the miter into a FRAIG
Fraig_ParamsSetDefault( &Params ); Fraig_ParamsSetDefault( &Params );
pFraig = Abc_NtkFraig( pFrames, &Params, 0 ); Params.fVerbose = fVerbose;
Params.nSeconds = nSeconds;
pMan = Abc_NtkToFraig( pFrames, &Params, 0 );
Fraig_ManProveMiter( pMan );
// analyze the result
RetValue = Fraig_ManCheckMiter( pMan );
// report the result
if ( RetValue == -1 )
printf( "Networks are undecided (SAT solver timed out on the final miter).\n" );
else if ( RetValue == 1 )
printf( "Networks are equivalent after fraiging.\n" );
else if ( RetValue == 0 )
{
printf( "Networks are NOT EQUIVALENT after fraiging.\n" );
// Abc_NtkVerifyReportError( pNtk1, pNtk2, Fraig_ManReadModel(pMan) );
}
else assert( 0 );
// delete the fraig manager
Fraig_ManFree( pMan );
// delete the miter
Abc_NtkDelete( pFrames ); Abc_NtkDelete( pFrames );
if ( pFraig == NULL ) }
/**Function*************************************************************
Synopsis [Reports mismatch between the two networks.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_NtkVerifyReportError( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int * pModel )
{
Vec_Ptr_t * vNodes;
Abc_Obj_t * pNode;
int * pValues1, * pValues2;
int nMisses, nPrinted, i, iNode = -1;
assert( Abc_NtkCiNum(pNtk1) == Abc_NtkCiNum(pNtk2) );
assert( Abc_NtkCoNum(pNtk1) == Abc_NtkCoNum(pNtk2) );
// get the CO values under this model
pValues1 = Abc_NtkVerifySimulatePattern( pNtk1, pModel );
pValues2 = Abc_NtkVerifySimulatePattern( pNtk2, pModel );
// count the mismatches
nMisses = 0;
for ( i = 0; i < Abc_NtkCoNum(pNtk1); i++ )
nMisses += (int)( pValues1[i] != pValues2[i] );
printf( "Verification failed for %d outputs: ", nMisses );
// print the first 3 outputs
nPrinted = 0;
for ( i = 0; i < Abc_NtkCoNum(pNtk1); i++ )
if ( pValues1[i] != pValues2[i] )
{ {
printf( "Fraiging has failed.\n" ); if ( iNode == -1 )
return; iNode = i;
printf( " %s", Abc_ObjName(Abc_NtkCo(pNtk1,i)) );
if ( ++nPrinted == 3 )
break;
} }
RetValue = Abc_NtkMiterIsConstant( pFraig ); if ( nPrinted != nMisses )
Abc_NtkDelete( pFraig ); printf( " ..." );
if ( RetValue == 0 ) printf( "\n" );
// report mismatch for the first output
if ( iNode >= 0 )
{ {
printf( "Networks are equivalent after fraiging.\n" ); printf( "Output %s: Value in Network1 = %d. Value in Network2 = %d.\n",
return; Abc_ObjName(Abc_NtkCo(pNtk1,iNode)), pValues1[iNode], pValues2[iNode] );
printf( "Input pattern: " );
// collect PIs in the cone
pNode = Abc_NtkCo(pNtk1,iNode);
vNodes = Abc_NtkNodeSupport( pNtk1, &pNode, 1 );
// set the PI numbers
Abc_NtkForEachCi( pNtk1, pNode, i )
pNode->pCopy = (void*)i;
// print the model
Vec_PtrForEachEntry( vNodes, pNode, i )
{
assert( Abc_ObjIsCi(pNode) );
printf( " %s=%d", Abc_ObjName(pNode), pModel[(int)pNode->pCopy] );
} }
printf( "Networks are NOT EQUIVALENT after fraiging.\n" ); printf( "\n" );
Vec_PtrFree( vNodes );
}
free( pValues1 );
free( pValues2 );
}
/**Function*************************************************************
Synopsis [Returns a dummy pattern full of zeros.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
int * Abc_NtkVerifyGetCleanModel( Abc_Ntk_t * pNtk )
{
int * pModel = ALLOC( int, Abc_NtkCiNum(pNtk) );
memset( pModel, 0, sizeof(int) * Abc_NtkCiNum(pNtk) );
return pModel;
} }
/**Function*************************************************************
Synopsis [Returns the PO values under the given input pattern.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
int * Abc_NtkVerifySimulatePattern( Abc_Ntk_t * pNtk, int * pModel )
{
Vec_Ptr_t * vNodes;
Abc_Obj_t * pNode;
int * pValues, Value0, Value1, i;
int fStrashed = 0;
if ( !Abc_NtkIsStrash(pNtk) )
{
pNtk = Abc_NtkStrash(pNtk, 0, 0);
fStrashed = 1;
}
// increment the trav ID
Abc_NtkIncrementTravId( pNtk );
// set the CI values
Abc_NtkForEachCi( pNtk, pNode, i )
pNode->pCopy = (void *)pModel[i];
// simulate in the topological order
vNodes = Abc_NtkDfs( pNtk, 1 );
Vec_PtrForEachEntry( vNodes, pNode, i )
{
if ( Abc_NodeIsConst(pNode) )
pNode->pCopy = NULL;
else
{
Value0 = ((int)Abc_ObjFanin0(pNode)->pCopy) ^ Abc_ObjFaninC0(pNode);
Value1 = ((int)Abc_ObjFanin1(pNode)->pCopy) ^ Abc_ObjFaninC1(pNode);
pNode->pCopy = (void *)(Value0 & Value1);
}
}
Vec_PtrFree( vNodes );
// fill the output values
pValues = ALLOC( int, Abc_NtkCoNum(pNtk) );
Abc_NtkForEachCo( pNtk, pNode, i )
pValues[i] = ((int)Abc_ObjFanin0(pNode)->pCopy) ^ Abc_ObjFaninC0(pNode);
if ( fStrashed )
Abc_NtkDelete( pNtk );
return pValues;
}
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// END OF FILE /// /// END OF FILE ///
......
...@@ -112,7 +112,7 @@ Abc_Ntk_t * Abc_NtkAigToSeq( Abc_Ntk_t * pNtk ) ...@@ -112,7 +112,7 @@ Abc_Ntk_t * Abc_NtkAigToSeq( Abc_Ntk_t * pNtk )
if ( Abc_ObjIsCi(pFaninNew) || !Abc_NodeIsConst(pFaninNew) ) if ( Abc_ObjIsCi(pFaninNew) || !Abc_NodeIsConst(pFaninNew) )
continue; continue;
pConst = Abc_ObjNotCond( Abc_AigConst1(pManNew), Abc_ObjFaninC0(pLatch) ); pConst = Abc_ObjNotCond( Abc_AigConst1(pManNew), Abc_ObjFaninC0(pLatch) );
Abc_AigReplace( pManNew, pLatch, pConst ); Abc_AigReplace( pManNew, pLatch, pConst, 0 );
fChange = 1; fChange = 1;
Counter++; Counter++;
} }
......
...@@ -20,6 +20,9 @@ ...@@ -20,6 +20,9 @@
#include "mainInt.h" #include "mainInt.h"
// this line should be included in the library project
#define _LIB
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// DECLARATIONS /// /// DECLARATIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
...@@ -30,6 +33,8 @@ static int TypeCheck( Abc_Frame_t * pAbc, char * s); ...@@ -30,6 +33,8 @@ static int TypeCheck( Abc_Frame_t * pAbc, char * s);
/// FUNCTION DEFITIONS /// /// FUNCTION DEFITIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
#ifndef _LIB
/**Function************************************************************* /**Function*************************************************************
Synopsis [The main() procedure.] Synopsis [The main() procedure.]
...@@ -64,8 +69,8 @@ int main( int argc, char * argv[] ) ...@@ -64,8 +69,8 @@ int main( int argc, char * argv[] )
fInitRead = 0; fInitRead = 0;
fFinalWrite = 0; fFinalWrite = 0;
sInFile = sOutFile = NULL; sInFile = sOutFile = NULL;
sprintf( sReadCmd, "read_blif_mv" ); sprintf( sReadCmd, "read" );
sprintf( sWriteCmd, "write_blif_mv" ); sprintf( sWriteCmd, "write" );
util_getopt_reset(); util_getopt_reset();
while ((c = util_getopt(argc, argv, "c:hf:F:o:st:T:x")) != EOF) { while ((c = util_getopt(argc, argv, "c:hf:F:o:st:T:x")) != EOF) {
...@@ -226,6 +231,62 @@ usage: ...@@ -226,6 +231,62 @@ usage:
return 1; return 1;
} }
#endif
/**Function*************************************************************
Synopsis [Initialization procedure for the library project.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_Start()
{
Abc_Frame_t * pAbc;
// added to detect memory leaks:
#ifdef _DEBUG
_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
#endif
// get global frame (singleton pattern)
// will be initialized on first call
pAbc = Abc_FrameGetGlobalFrame();
// source the resource file
Abc_UtilsSource( pAbc );
}
/**Function*************************************************************
Synopsis [Deallocation procedure for the library project.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_Stop()
{
Abc_Frame_t * pAbc;
int fStatus = 0;
// if the memory should be freed, quit packages
if ( fStatus == -2 )
{
pAbc = Abc_FrameGetGlobalFrame();
// perform uninitializations
Abc_FrameEnd( pAbc );
// stop the framework
Abc_FrameDeallocate( pAbc );
}
}
/**Function******************************************************************** /**Function********************************************************************
......
...@@ -73,7 +73,11 @@ typedef struct Abc_Frame_t_ Abc_Frame_t; ...@@ -73,7 +73,11 @@ typedef struct Abc_Frame_t_ Abc_Frame_t;
/// FUNCTION DEFITIONS /// /// FUNCTION DEFITIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/*=== mvFrame.c ===========================================================*/ /*=== main.c ===========================================================*/
extern void Abc_Start();
extern void Abc_Stop();
/*=== mainFrame.c ===========================================================*/
extern Abc_Ntk_t * Abc_FrameReadNet( Abc_Frame_t * p ); extern Abc_Ntk_t * Abc_FrameReadNet( Abc_Frame_t * p );
extern FILE * Abc_FrameReadOut( Abc_Frame_t * p ); extern FILE * Abc_FrameReadOut( Abc_Frame_t * p );
extern FILE * Abc_FrameReadErr( Abc_Frame_t * p ); extern FILE * Abc_FrameReadErr( Abc_Frame_t * p );
......
...@@ -97,7 +97,7 @@ struct Dec_Man_t_ ...@@ -97,7 +97,7 @@ struct Dec_Man_t_
/*=== decAbc.c ========================================================*/ /*=== decAbc.c ========================================================*/
extern Abc_Obj_t * Dec_GraphToNetwork( Abc_Aig_t * pMan, Dec_Graph_t * pGraph ); extern Abc_Obj_t * Dec_GraphToNetwork( Abc_Aig_t * pMan, Dec_Graph_t * pGraph );
extern int Dec_GraphToNetworkCount( Abc_Obj_t * pRoot, Dec_Graph_t * pGraph, int NodeMax, int LevelMax ); extern int Dec_GraphToNetworkCount( Abc_Obj_t * pRoot, Dec_Graph_t * pGraph, int NodeMax, int LevelMax );
extern void Dec_GraphUpdateNetwork( Abc_Obj_t * pRoot, Dec_Graph_t * pGraph, int nGain ); extern void Dec_GraphUpdateNetwork( Abc_Obj_t * pRoot, Dec_Graph_t * pGraph, bool fUpdateLevel, int nGain );
/*=== decFactor.c ========================================================*/ /*=== decFactor.c ========================================================*/
extern Dec_Graph_t * Dec_Factor( char * pSop ); extern Dec_Graph_t * Dec_Factor( char * pSop );
/*=== decMan.c ========================================================*/ /*=== decMan.c ========================================================*/
......
...@@ -126,7 +126,7 @@ int Dec_GraphToNetworkCount( Abc_Obj_t * pRoot, Dec_Graph_t * pGraph, int NodeMa ...@@ -126,7 +126,7 @@ int Dec_GraphToNetworkCount( Abc_Obj_t * pRoot, Dec_Graph_t * pGraph, int NodeMa
else if ( Abc_ObjRegular(pAnd) == Abc_ObjRegular(pAnd1) ) else if ( Abc_ObjRegular(pAnd) == Abc_ObjRegular(pAnd1) )
LevelNew = (int)Abc_ObjRegular(pAnd1)->Level; LevelNew = (int)Abc_ObjRegular(pAnd1)->Level;
LevelOld = (int)Abc_ObjRegular(pAnd)->Level; LevelOld = (int)Abc_ObjRegular(pAnd)->Level;
assert( LevelNew == LevelOld ); // assert( LevelNew == LevelOld );
} }
if ( LevelNew > LevelMax ) if ( LevelNew > LevelMax )
return -1; return -1;
...@@ -148,7 +148,7 @@ int Dec_GraphToNetworkCount( Abc_Obj_t * pRoot, Dec_Graph_t * pGraph, int NodeMa ...@@ -148,7 +148,7 @@ int Dec_GraphToNetworkCount( Abc_Obj_t * pRoot, Dec_Graph_t * pGraph, int NodeMa
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
void Dec_GraphUpdateNetwork( Abc_Obj_t * pRoot, Dec_Graph_t * pGraph, int nGain ) void Dec_GraphUpdateNetwork( Abc_Obj_t * pRoot, Dec_Graph_t * pGraph, bool fUpdateLevel, int nGain )
{ {
Abc_Obj_t * pRootNew; Abc_Obj_t * pRootNew;
Abc_Ntk_t * pNtk = pRoot->pNtk; Abc_Ntk_t * pNtk = pRoot->pNtk;
...@@ -157,7 +157,7 @@ void Dec_GraphUpdateNetwork( Abc_Obj_t * pRoot, Dec_Graph_t * pGraph, int nGain ...@@ -157,7 +157,7 @@ void Dec_GraphUpdateNetwork( Abc_Obj_t * pRoot, Dec_Graph_t * pGraph, int nGain
// create the new structure of nodes // create the new structure of nodes
pRootNew = Dec_GraphToNetwork( pNtk->pManFunc, pGraph ); pRootNew = Dec_GraphToNetwork( pNtk->pManFunc, pGraph );
// remove the old nodes // remove the old nodes
Abc_AigReplace( pNtk->pManFunc, pRoot, pRootNew ); Abc_AigReplace( pNtk->pManFunc, pRoot, pRootNew, fUpdateLevel );
// compare the gains // compare the gains
nNodesNew = Abc_NtkNodeNum(pNtk); nNodesNew = Abc_NtkNodeNum(pNtk);
assert( nGain <= nNodesOld - nNodesNew ); assert( nGain <= nNodesOld - nNodesNew );
......
...@@ -49,6 +49,7 @@ struct Rwr_Man_t_ ...@@ -49,6 +49,7 @@ struct Rwr_Man_t_
char * pPhases; // canonical phases char * pPhases; // canonical phases
char * pPerms; // canonical permutations char * pPerms; // canonical permutations
unsigned char * pMap; // mapping of functions into class numbers unsigned char * pMap; // mapping of functions into class numbers
unsigned short * pMapInv; // mapping of classes into functions
char * pPractical; // practical NPN classes char * pPractical; // practical NPN classes
char ** pPerms4; // four-var permutations char ** pPerms4; // four-var permutations
// node space // node space
...@@ -67,6 +68,7 @@ struct Rwr_Man_t_ ...@@ -67,6 +68,7 @@ struct Rwr_Man_t_
Vec_Ptr_t * vFanins; // the fanins array (temporary) Vec_Ptr_t * vFanins; // the fanins array (temporary)
Vec_Ptr_t * vFaninsCur; // the fanins array (temporary) Vec_Ptr_t * vFaninsCur; // the fanins array (temporary)
Vec_Int_t * vLevNums; // the array of levels (temporary) Vec_Int_t * vLevNums; // the array of levels (temporary)
Vec_Ptr_t * vNodesTemp; // the nodes in MFFC (temporary)
// node statistics // node statistics
int nNodesConsidered; int nNodesConsidered;
int nNodesRewritten; int nNodesRewritten;
...@@ -80,6 +82,8 @@ struct Rwr_Man_t_ ...@@ -80,6 +82,8 @@ struct Rwr_Man_t_
int timeCut; int timeCut;
int timeRes; int timeRes;
int timeEval; int timeEval;
int timeMffc;
int timeUpdate;
int timeTotal; int timeTotal;
}; };
...@@ -114,7 +118,7 @@ static inline Rwr_Node_t * Rwr_NotCond( Rwr_Node_t * p, int c ) { return (Rwr_N ...@@ -114,7 +118,7 @@ static inline Rwr_Node_t * Rwr_NotCond( Rwr_Node_t * p, int c ) { return (Rwr_N
/*=== rwrDec.c ========================================================*/ /*=== rwrDec.c ========================================================*/
extern void Rwr_ManPreprocess( Rwr_Man_t * p ); extern void Rwr_ManPreprocess( Rwr_Man_t * p );
/*=== rwrEva.c ========================================================*/ /*=== rwrEva.c ========================================================*/
extern int Rwr_NodeRewrite( Rwr_Man_t * p, Cut_Man_t * pManCut, Abc_Obj_t * pNode, int fUseZeros ); extern int Rwr_NodeRewrite( Rwr_Man_t * p, Cut_Man_t * pManCut, Abc_Obj_t * pNode, int fUpdateLevel, int fUseZeros );
/*=== rwrLib.c ========================================================*/ /*=== rwrLib.c ========================================================*/
extern void Rwr_ManPrecompute( Rwr_Man_t * p ); extern void Rwr_ManPrecompute( Rwr_Man_t * p );
extern Rwr_Node_t * Rwr_ManAddVar( Rwr_Man_t * p, unsigned uTruth, int fPrecompute ); extern Rwr_Node_t * Rwr_ManAddVar( Rwr_Man_t * p, unsigned uTruth, int fPrecompute );
...@@ -128,6 +132,7 @@ extern void Rwr_ManPrintStats( Rwr_Man_t * p ); ...@@ -128,6 +132,7 @@ extern void Rwr_ManPrintStats( Rwr_Man_t * p );
extern void * Rwr_ManReadDecs( Rwr_Man_t * p ); extern void * Rwr_ManReadDecs( Rwr_Man_t * p );
extern int Rwr_ManReadCompl( Rwr_Man_t * p ); extern int Rwr_ManReadCompl( Rwr_Man_t * p );
extern void Rwr_ManAddTimeCuts( Rwr_Man_t * p, int Time ); extern void Rwr_ManAddTimeCuts( Rwr_Man_t * p, int Time );
extern void Rwr_ManAddTimeUpdate( Rwr_Man_t * p, int Time );
extern void Rwr_ManAddTimeTotal( Rwr_Man_t * p, int Time ); extern void Rwr_ManAddTimeTotal( Rwr_Man_t * p, int Time );
/*=== rwrPrint.c ========================================================*/ /*=== rwrPrint.c ========================================================*/
extern void Rwr_ManPrint( Rwr_Man_t * p ); extern void Rwr_ManPrint( Rwr_Man_t * p );
......
...@@ -49,6 +49,8 @@ void Rwr_ManPreprocess( Rwr_Man_t * p ) ...@@ -49,6 +49,8 @@ void Rwr_ManPreprocess( Rwr_Man_t * p )
Rwr_Node_t * pNode; Rwr_Node_t * pNode;
int i, k; int i, k;
// put the nodes into the structure // put the nodes into the structure
p->pMapInv = ALLOC( unsigned short, 222 );
memset( p->pMapInv, 0, sizeof(unsigned short) * 222 );
p->vClasses = Vec_VecStart( 222 ); p->vClasses = Vec_VecStart( 222 );
for ( i = 0; i < p->nFuncs; i++ ) for ( i = 0; i < p->nFuncs; i++ )
{ {
...@@ -60,6 +62,7 @@ void Rwr_ManPreprocess( Rwr_Man_t * p ) ...@@ -60,6 +62,7 @@ void Rwr_ManPreprocess( Rwr_Man_t * p )
assert( pNode->uTruth == p->pTable[i]->uTruth ); assert( pNode->uTruth == p->pTable[i]->uTruth );
assert( p->pMap[pNode->uTruth] >= 0 && p->pMap[pNode->uTruth] < 222 ); assert( p->pMap[pNode->uTruth] >= 0 && p->pMap[pNode->uTruth] < 222 );
Vec_VecPush( p->vClasses, p->pMap[pNode->uTruth], pNode ); Vec_VecPush( p->vClasses, p->pMap[pNode->uTruth], pNode );
p->pMapInv[ p->pMap[pNode->uTruth] ] = p->puCanons[pNode->uTruth];
} }
} }
// compute decomposition forms for each node and verify them // compute decomposition forms for each node and verify them
......
...@@ -49,7 +49,7 @@ static Dec_Graph_t * Rwr_CutEvaluate( Rwr_Man_t * p, Abc_Obj_t * pRoot, Cut_Cut_ ...@@ -49,7 +49,7 @@ static Dec_Graph_t * Rwr_CutEvaluate( Rwr_Man_t * p, Abc_Obj_t * pRoot, Cut_Cut_
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
int Rwr_NodeRewrite( Rwr_Man_t * p, Cut_Man_t * pManCut, Abc_Obj_t * pNode, int fUseZeros ) int Rwr_NodeRewrite( Rwr_Man_t * p, Cut_Man_t * pManCut, Abc_Obj_t * pNode, int fUpdateLevel, int fUseZeros )
{ {
int fVeryVerbose = 0; int fVeryVerbose = 0;
Dec_Graph_t * pGraph; Dec_Graph_t * pGraph;
...@@ -63,7 +63,7 @@ int Rwr_NodeRewrite( Rwr_Man_t * p, Cut_Man_t * pManCut, Abc_Obj_t * pNode, int ...@@ -63,7 +63,7 @@ int Rwr_NodeRewrite( Rwr_Man_t * p, Cut_Man_t * pManCut, Abc_Obj_t * pNode, int
p->nNodesConsidered++; p->nNodesConsidered++;
// get the required times // get the required times
Required = Abc_NodeReadRequiredLevel( pNode ); Required = fUpdateLevel? Abc_NodeReadRequiredLevel(pNode) : ABC_INFINITY;
// get the node's cuts // get the node's cuts
clk = clock(); clk = clock();
pCut = (Cut_Cut_t *)Abc_NodeGetCutsRecursive( pManCut, pNode ); pCut = (Cut_Cut_t *)Abc_NodeGetCutsRecursive( pManCut, pNode );
...@@ -98,6 +98,7 @@ clk = clock(); ...@@ -98,6 +98,7 @@ clk = clock();
} }
p->nCutsGood++; p->nCutsGood++;
clk2 = clock();
// mark the fanin boundary // mark the fanin boundary
Vec_PtrForEachEntry( p->vFaninsCur, pFanin, i ) Vec_PtrForEachEntry( p->vFaninsCur, pFanin, i )
Abc_ObjRegular(pFanin)->vFanouts.nSize++; Abc_ObjRegular(pFanin)->vFanouts.nSize++;
...@@ -107,6 +108,7 @@ clk = clock(); ...@@ -107,6 +108,7 @@ clk = clock();
// unmark the fanin boundary // unmark the fanin boundary
Vec_PtrForEachEntry( p->vFaninsCur, pFanin, i ) Vec_PtrForEachEntry( p->vFaninsCur, pFanin, i )
Abc_ObjRegular(pFanin)->vFanouts.nSize--; Abc_ObjRegular(pFanin)->vFanouts.nSize--;
p->timeMffc += clock() - clk2;
// evaluate the cut // evaluate the cut
clk2 = clock(); clk2 = clock();
......
...@@ -75,6 +75,7 @@ clk = clock(); ...@@ -75,6 +75,7 @@ clk = clock();
p->vLevNums = Vec_IntAlloc( 50 ); p->vLevNums = Vec_IntAlloc( 50 );
p->vFanins = Vec_PtrAlloc( 50 ); p->vFanins = Vec_PtrAlloc( 50 );
p->vFaninsCur = Vec_PtrAlloc( 50 ); p->vFaninsCur = Vec_PtrAlloc( 50 );
p->vNodesTemp = Vec_PtrAlloc( 50 );
if ( fPrecompute ) if ( fPrecompute )
{ // precompute subgraphs { // precompute subgraphs
Rwr_ManPrecompute( p ); Rwr_ManPrecompute( p );
...@@ -112,11 +113,13 @@ void Rwr_ManStop( Rwr_Man_t * p ) ...@@ -112,11 +113,13 @@ void Rwr_ManStop( Rwr_Man_t * p )
Dec_GraphFree( (Dec_Graph_t *)pNode->pNext ); Dec_GraphFree( (Dec_Graph_t *)pNode->pNext );
} }
if ( p->vClasses ) Vec_VecFree( p->vClasses ); if ( p->vClasses ) Vec_VecFree( p->vClasses );
Vec_PtrFree( p->vNodesTemp );
Vec_PtrFree( p->vForest ); Vec_PtrFree( p->vForest );
Vec_IntFree( p->vLevNums ); Vec_IntFree( p->vLevNums );
Vec_PtrFree( p->vFanins ); Vec_PtrFree( p->vFanins );
Vec_PtrFree( p->vFaninsCur ); Vec_PtrFree( p->vFaninsCur );
Extra_MmFixedStop( p->pMmNode, 0 ); Extra_MmFixedStop( p->pMmNode, 0 );
FREE( p->pMapInv );
free( p->pTable ); free( p->pTable );
free( p->pPractical ); free( p->pPractical );
free( p->pPerms4 ); free( p->pPerms4 );
...@@ -151,14 +154,16 @@ void Rwr_ManPrintStats( Rwr_Man_t * p ) ...@@ -151,14 +154,16 @@ void Rwr_ManPrintStats( Rwr_Man_t * p )
PRT( "Start ", p->timeStart ); PRT( "Start ", p->timeStart );
PRT( "Cuts ", p->timeCut ); PRT( "Cuts ", p->timeCut );
PRT( "Resynthesis ", p->timeRes ); PRT( "Resynthesis ", p->timeRes );
PRT( " Mffc ", p->timeMffc );
PRT( " Eval ", p->timeEval ); PRT( " Eval ", p->timeEval );
PRT( "Update ", p->timeUpdate );
PRT( "TOTAL ", p->timeTotal ); PRT( "TOTAL ", p->timeTotal );
/* /*
printf( "The scores are : " ); printf( "The scores are:\n" );
for ( i = 0; i < 222; i++ ) for ( i = 0; i < 222; i++ )
if ( p->nScores[i] > 0 ) if ( p->nScores[i] > 0 )
printf( "%d=%d ", i, p->nScores[i] ); printf( "%3d = %8d canon = %5d\n", i, p->nScores[i], p->pMapInv[i] );
printf( "\n" ); printf( "\n" );
*/ */
} }
...@@ -222,6 +227,22 @@ void Rwr_ManAddTimeCuts( Rwr_Man_t * p, int Time ) ...@@ -222,6 +227,22 @@ void Rwr_ManAddTimeCuts( Rwr_Man_t * p, int Time )
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
void Rwr_ManAddTimeUpdate( Rwr_Man_t * p, int Time )
{
p->timeUpdate += Time;
}
/**Function*************************************************************
Synopsis [Stops the resynthesis manager.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Rwr_ManAddTimeTotal( Rwr_Man_t * p, int Time ) void Rwr_ManAddTimeTotal( Rwr_Man_t * p, int Time )
{ {
p->timeTotal += Time; p->timeTotal += Time;
......
...@@ -79,6 +79,33 @@ void Rwr_GetBushVolume( Rwr_Man_t * p, int Entry, int * pVolume, int * pnFuncs ) ...@@ -79,6 +79,33 @@ void Rwr_GetBushVolume( Rwr_Man_t * p, int Entry, int * pVolume, int * pnFuncs )
/**Function************************************************************* /**Function*************************************************************
Synopsis [Adds the node to the end of the list.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
int Rwr_GetBushSumOfVolumes( Rwr_Man_t * p, int Entry )
{
Rwr_Node_t * pNode;
int Volume, VolumeTotal = 0;
for ( pNode = p->pTable[Entry]; pNode; pNode = pNode->pNext )
{
if ( pNode->uTruth != p->puCanons[pNode->uTruth] )
continue;
Volume = 0;
Rwr_ManIncTravId( p );
Rwr_Trav2_rec( p, pNode, &Volume );
VolumeTotal += Volume;
}
return VolumeTotal;
}
/**Function*************************************************************
Synopsis [Prints one rwr node.] Synopsis [Prints one rwr node.]
Description [] Description []
...@@ -221,7 +248,7 @@ void Rwr_ManPrint( Rwr_Man_t * p ) ...@@ -221,7 +248,7 @@ void Rwr_ManPrint( Rwr_Man_t * p )
continue; continue;
fprintf( pFile, "\nClass %3d. Func %6d. ", p->pMap[i], Counter++ ); fprintf( pFile, "\nClass %3d. Func %6d. ", p->pMap[i], Counter++ );
Rwr_GetBushVolume( p, i, &Volume, &nFuncs ); Rwr_GetBushVolume( p, i, &Volume, &nFuncs );
fprintf( pFile, "Functions = %2d. Volume = %2d. ", nFuncs, Volume ); fprintf( pFile, "Roots = %3d. Vol = %3d. Sum = %3d. ", nFuncs, Volume, Rwr_GetBushSumOfVolumes(p, i) );
uTruth = i; uTruth = i;
Extra_PrintBinary( pFile, &uTruth, 16 ); Extra_PrintBinary( pFile, &uTruth, 16 );
fprintf( pFile, "\n" ); fprintf( pFile, "\n" );
......
...@@ -35,8 +35,6 @@ static void Sim_UtilAssignFromFifo( Sim_Man_t * p ); ...@@ -35,8 +35,6 @@ static void Sim_UtilAssignFromFifo( Sim_Man_t * p );
static void Sim_SolveTargetsUsingSat( Sim_Man_t * p, int nCounters ); static void Sim_SolveTargetsUsingSat( Sim_Man_t * p, int nCounters );
static int Sim_SolveSuppModelVerify( Abc_Ntk_t * pNtk, int * pModel, int Input, int Output ); static int Sim_SolveSuppModelVerify( Abc_Ntk_t * pNtk, int * pModel, int Input, int Output );
extern Fraig_Man_t * Abc_NtkToFraig( Abc_Ntk_t * pNtk, Fraig_Params_t * pParams, int fAllNodes );
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFITIONS /// /// FUNCTION DEFITIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
...@@ -469,6 +467,7 @@ void Sim_SolveTargetsUsingSat( Sim_Man_t * p, int Limit ) ...@@ -469,6 +467,7 @@ void Sim_SolveTargetsUsingSat( Sim_Man_t * p, int Limit )
// transform the miter into a fraig // transform the miter into a fraig
Fraig_ParamsSetDefault( &Params ); Fraig_ParamsSetDefault( &Params );
Params.nSeconds = ABC_INFINITY;
Params.fInternal = 1; Params.fInternal = 1;
clk = clock(); clk = clock();
pMan = Abc_NtkToFraig( pMiter, &Params, 0 ); pMan = Abc_NtkToFraig( pMiter, &Params, 0 );
......
...@@ -26,8 +26,7 @@ ...@@ -26,8 +26,7 @@
/// DECLARATIONS /// /// DECLARATIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
extern int Sim_SymmsSatProveOne( Sym_Man_t * p, int Out, int Var1, int Var2, unsigned * pPattern ); static int Sim_SymmsSatProveOne( Sym_Man_t * p, int Out, int Var1, int Var2, unsigned * pPattern );
extern Fraig_Man_t * Abc_NtkToFraig( Abc_Ntk_t * pNtk, Fraig_Params_t * pParams, int fAllNodes );
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFITIONS /// /// FUNCTION DEFITIONS ///
...@@ -145,6 +144,7 @@ int Sim_SymmsSatProveOne( Sym_Man_t * p, int Out, int Var1, int Var2, unsigned * ...@@ -145,6 +144,7 @@ int Sim_SymmsSatProveOne( Sym_Man_t * p, int Out, int Var1, int Var2, unsigned *
Params.fInternal = 1; Params.fInternal = 1;
Params.nPatsRand = 512; Params.nPatsRand = 512;
Params.nPatsDyna = 512; Params.nPatsDyna = 512;
Params.nSeconds = ABC_INFINITY;
clk = clock(); clk = clock();
pMan = Abc_NtkToFraig( pMiter, &Params, 0 ); pMan = Abc_NtkToFraig( pMiter, &Params, 0 );
......
...@@ -119,6 +119,30 @@ void Asat_ClauseWriteDimacs( FILE * pFile, clause * pC, bool fIncrement ) ...@@ -119,6 +119,30 @@ void Asat_ClauseWriteDimacs( FILE * pFile, clause * pC, bool fIncrement )
fprintf( pFile, "\n" ); fprintf( pFile, "\n" );
} }
/**Function*************************************************************
Synopsis [Returns a counter-example.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
int * solver_get_model( solver * p, int * pVars, int nVars )
{
int * pModel;
int i;
pModel = ALLOC( int, nVars );
for ( i = 0; i < nVars; i++ )
{
assert( pVars[i] >= 0 && pVars[i] < p->size );
pModel[i] = (int)(p->model.ptr[pVars[i]] == (void *)l_True);
}
return pModel;
}
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// END OF FILE /// /// END OF FILE ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
......
...@@ -22,6 +22,7 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWA ...@@ -22,6 +22,7 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWA
#include <stdio.h> #include <stdio.h>
#include <assert.h> #include <assert.h>
#include <math.h> #include <math.h>
#include <time.h>
#include "solver.h" #include "solver.h"
...@@ -1055,13 +1056,14 @@ bool solver_simplify(solver* s) ...@@ -1055,13 +1056,14 @@ bool solver_simplify(solver* s)
} }
bool solver_solve(solver* s, lit* begin, lit* end) int solver_solve(solver* s, lit* begin, lit* end, int nSeconds)
{ {
double nof_conflicts = 100; double nof_conflicts = 100;
double nof_learnts = solver_nclauses(s) / 3; double nof_learnts = solver_nclauses(s) / 3;
lbool status = l_Undef; lbool status = l_Undef;
lbool* values = s->assigns; lbool* values = s->assigns;
lit* i; lit* i;
int timeStart = clock();
for (i = begin; i < end; i++) for (i = begin; i < end; i++)
if ((lit_sign(*i) ? -values[lit_var(*i)] : values[lit_var(*i)]) == l_False || (assume(s,*i), solver_propagate(s) != 0)){ if ((lit_sign(*i) ? -values[lit_var(*i)] : values[lit_var(*i)]) == l_False || (assume(s,*i), solver_propagate(s) != 0)){
...@@ -1096,12 +1098,15 @@ bool solver_solve(solver* s, lit* begin, lit* end) ...@@ -1096,12 +1098,15 @@ bool solver_solve(solver* s, lit* begin, lit* end)
status = solver_search(s,(int)nof_conflicts, (int)nof_learnts); status = solver_search(s,(int)nof_conflicts, (int)nof_learnts);
nof_conflicts *= 1.5; nof_conflicts *= 1.5;
nof_learnts *= 1.1; nof_learnts *= 1.1;
// if the runtime limit is exceeded, quit the restart loop
if ( clock() - timeStart >= nSeconds * CLOCKS_PER_SEC )
break;
} }
if (s->verbosity >= 1) if (s->verbosity >= 1)
printf("==============================================================================\n"); printf("==============================================================================\n");
solver_canceluntil(s,0); solver_canceluntil(s,0);
return status != l_False; return status;
} }
......
...@@ -69,7 +69,8 @@ extern void solver_delete(solver* s); ...@@ -69,7 +69,8 @@ extern void solver_delete(solver* s);
extern bool solver_addclause(solver* s, lit* begin, lit* end); extern bool solver_addclause(solver* s, lit* begin, lit* end);
extern bool solver_simplify(solver* s); extern bool solver_simplify(solver* s);
extern bool solver_solve(solver* s, lit* begin, lit* end); extern int solver_solve(solver* s, lit* begin, lit* end, int nSeconds);
extern int * solver_get_model( solver * p, int * pVars, int nVars );
extern int solver_nvars(solver* s); extern int solver_nvars(solver* s);
extern int solver_nclauses(solver* s); extern int solver_nclauses(solver* s);
......
...@@ -24,6 +24,8 @@ ...@@ -24,6 +24,8 @@
/// DECLARATIONS /// /// DECLARATIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
#define ABC_DEFAULT_TIMEOUT 60 // 60 seconds
struct CSAT_ManagerStruct_t struct CSAT_ManagerStruct_t
{ {
// information about the problem // information about the problem
...@@ -33,7 +35,8 @@ struct CSAT_ManagerStruct_t ...@@ -33,7 +35,8 @@ struct CSAT_ManagerStruct_t
Abc_Ntk_t * pTarget; // the AIG representing the target Abc_Ntk_t * pTarget; // the AIG representing the target
char * pDumpFileName; // the name of the file to dump the target network char * pDumpFileName; // the name of the file to dump the target network
// solving parameters // solving parameters
int mode; // 0 = baseline; 1 = resource-aware fraiging int mode; // 0 = brute-force SAT; 1 = resource-aware FRAIG
int nSeconds; // time limit for pure SAT solving
Fraig_Params_t Params; // the set of parameters to call FRAIG package Fraig_Params_t Params; // the set of parameters to call FRAIG package
// information about the target // information about the target
int nog; // the numbers of gates in the target int nog; // the numbers of gates in the target
...@@ -44,11 +47,9 @@ struct CSAT_ManagerStruct_t ...@@ -44,11 +47,9 @@ struct CSAT_ManagerStruct_t
}; };
static CSAT_Target_ResultT * CSAT_TargetResAlloc( int nVars ); static CSAT_Target_ResultT * CSAT_TargetResAlloc( int nVars );
static void CSAT_TargetResFree( CSAT_Target_ResultT * p );
static char * CSAT_GetNodeName( CSAT_Manager mng, Abc_Obj_t * pNode ); static char * CSAT_GetNodeName( CSAT_Manager mng, Abc_Obj_t * pNode );
// some external procedures // some external procedures
extern Fraig_Man_t * Abc_NtkToFraig( Abc_Ntk_t * pNtk, Fraig_Params_t * pParams, int fAllNodes );
extern int Io_WriteBench( Abc_Ntk_t * pNtk, char * FileName ); extern int Io_WriteBench( Abc_Ntk_t * pNtk, char * FileName );
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
...@@ -77,6 +78,7 @@ CSAT_Manager CSAT_InitManager() ...@@ -77,6 +78,7 @@ CSAT_Manager CSAT_InitManager()
mng->tNode2Name = stmm_init_table(stmm_ptrcmp, stmm_ptrhash); mng->tNode2Name = stmm_init_table(stmm_ptrcmp, stmm_ptrhash);
mng->vNodes = Vec_PtrAlloc( 100 ); mng->vNodes = Vec_PtrAlloc( 100 );
mng->vValues = Vec_IntAlloc( 100 ); mng->vValues = Vec_IntAlloc( 100 );
mng->nSeconds = ABC_DEFAULT_TIMEOUT;
return mng; return mng;
} }
...@@ -107,7 +109,7 @@ void CSAT_QuitManager( CSAT_Manager mng ) ...@@ -107,7 +109,7 @@ void CSAT_QuitManager( CSAT_Manager mng )
Synopsis [Sets solver options for learning.] Synopsis [Sets solver options for learning.]
Description [0 = baseline; 1 = resource-aware solving.] Description [0 = brute-force SAT; 1 = resource-aware FRAIG.]
SideEffects [] SideEffects []
...@@ -118,11 +120,11 @@ void CSAT_SetSolveOption( CSAT_Manager mng, enum CSAT_OptionT option ) ...@@ -118,11 +120,11 @@ void CSAT_SetSolveOption( CSAT_Manager mng, enum CSAT_OptionT option )
{ {
mng->mode = option; mng->mode = option;
if ( option == 0 ) if ( option == 0 )
printf( "CSAT_SetSolveOption: Setting baseline solving mode.\n" ); printf( "CSAT_SetSolveOption: Setting brute-force SAT mode.\n" );
else if ( option == 1 ) else if ( option == 1 )
printf( "CSAT_SetSolveOption: Setting resource-aware solving mode.\n" ); printf( "CSAT_SetSolveOption: Setting resource-aware FRAIG mode.\n" );
else else
printf( "CSAT_SetSolveOption: Unknown option.\n" ); printf( "CSAT_SetSolveOption: Unknown solving mode.\n" );
} }
...@@ -280,7 +282,7 @@ int CSAT_Check_Integrity( CSAT_Manager mng ) ...@@ -280,7 +282,7 @@ int CSAT_Check_Integrity( CSAT_Manager mng )
assert( Abc_NtkLatchNum(pNtk) == 0 ); assert( Abc_NtkLatchNum(pNtk) == 0 );
// make sure everything is okay with the network structure // make sure everything is okay with the network structure
if ( !Abc_NtkCheckRead( pNtk ) ) if ( !Abc_NtkDoCheck( pNtk ) )
{ {
printf( "CSAT_Check_Integrity: The internal network check has failed.\n" ); printf( "CSAT_Check_Integrity: The internal network check has failed.\n" );
return 0; return 0;
...@@ -311,7 +313,7 @@ int CSAT_Check_Integrity( CSAT_Manager mng ) ...@@ -311,7 +313,7 @@ int CSAT_Check_Integrity( CSAT_Manager mng )
***********************************************************************/ ***********************************************************************/
void CSAT_SetTimeLimit( CSAT_Manager mng, int runtime ) void CSAT_SetTimeLimit( CSAT_Manager mng, int runtime )
{ {
printf( "CSAT_SetTimeLimit: The resource limit is not implemented (warning).\n" ); mng->nSeconds = runtime;
} }
/**Function************************************************************* /**Function*************************************************************
...@@ -458,7 +460,8 @@ void CSAT_SolveInit( CSAT_Manager mng ) ...@@ -458,7 +460,8 @@ void CSAT_SolveInit( CSAT_Manager mng )
memset( pParams, 0, sizeof(Fraig_Params_t) ); memset( pParams, 0, sizeof(Fraig_Params_t) );
pParams->nPatsRand = nWordsMin * 32; // the number of words of random simulation info pParams->nPatsRand = nWordsMin * 32; // the number of words of random simulation info
pParams->nPatsDyna = nWordsMin * 32; // the number of words of dynamic simulation info pParams->nPatsDyna = nWordsMin * 32; // the number of words of dynamic simulation info
pParams->nBTLimit = 99; // the max number of backtracks to perform at a node pParams->nBTLimit = 10; // the max number of backtracks to perform at a node
pParams->nSeconds = mng->nSeconds; // the time out for the final proof
pParams->fFuncRed = mng->mode; // performs only one level hashing pParams->fFuncRed = mng->mode; // performs only one level hashing
pParams->fFeedBack = 1; // enables solver feedback pParams->fFeedBack = 1; // enables solver feedback
pParams->fDist1Pats = 1; // enables distance-1 patterns pParams->fDist1Pats = 1; // enables distance-1 patterns
...@@ -498,6 +501,7 @@ void CSAT_AnalyzeTargets( CSAT_Manager mng ) ...@@ -498,6 +501,7 @@ void CSAT_AnalyzeTargets( CSAT_Manager mng )
enum CSAT_StatusT CSAT_Solve( CSAT_Manager mng ) enum CSAT_StatusT CSAT_Solve( CSAT_Manager mng )
{ {
Fraig_Man_t * pMan; Fraig_Man_t * pMan;
Abc_Ntk_t * pCnf;
int * pModel; int * pModel;
int RetValue, i; int RetValue, i;
...@@ -505,13 +509,45 @@ enum CSAT_StatusT CSAT_Solve( CSAT_Manager mng ) ...@@ -505,13 +509,45 @@ enum CSAT_StatusT CSAT_Solve( CSAT_Manager mng )
if ( mng->pTarget == NULL ) if ( mng->pTarget == NULL )
{ printf( "CSAT_Solve: Target network is not derived by CSAT_SolveInit().\n" ); return UNDETERMINED; } { printf( "CSAT_Solve: Target network is not derived by CSAT_SolveInit().\n" ); return UNDETERMINED; }
// optimizations of the target go here
// for example, to enable one pass of rewriting, uncomment this line
// Abc_NtkRewrite( mng->pTarget, 0, 1, 0 );
if ( mng->mode == 0 ) // brute-force SAT
{
// transfor the AIG into a logic network for efficient CNF construction
pCnf = Abc_NtkRenode( mng->pTarget, 0, 100, 1, 0, 0 );
RetValue = Abc_NtkMiterSat( pCnf, mng->nSeconds, 0 );
// analyze the result
mng->pResult = CSAT_TargetResAlloc( Abc_NtkCiNum(mng->pTarget) );
if ( RetValue == -1 )
mng->pResult->status = UNDETERMINED;
else if ( RetValue == 1 )
mng->pResult->status = UNSATISFIABLE;
else if ( RetValue == 0 )
{
mng->pResult->status = SATISFIABLE;
// create the array of PI names and values
for ( i = 0; i < mng->pResult->no_sig; i++ )
{
mng->pResult->names[i] = CSAT_GetNodeName(mng, Abc_NtkCi(mng->pNtk, i)); // returns the same string that was given
mng->pResult->values[i] = pCnf->pModel[i];
}
FREE( mng->pTarget->pModel );
}
else assert( 0 );
Abc_NtkDelete( pCnf );
}
else if ( mng->mode == 1 ) // resource-aware fraiging
{
// transform the target into a fraig // transform the target into a fraig
pMan = Abc_NtkToFraig( mng->pTarget, &mng->Params, 0 ); pMan = Abc_NtkToFraig( mng->pTarget, &mng->Params, 0 );
Fraig_ManProveMiter( pMan ); Fraig_ManProveMiter( pMan );
RetValue = Fraig_ManCheckMiter( pMan );
// analyze the result // analyze the result
mng->pResult = CSAT_TargetResAlloc( Abc_NtkCiNum(mng->pTarget) ); mng->pResult = CSAT_TargetResAlloc( Abc_NtkCiNum(mng->pTarget) );
RetValue = Fraig_ManCheckMiter( pMan );
if ( RetValue == -1 ) if ( RetValue == -1 )
mng->pResult->status = UNDETERMINED; mng->pResult->status = UNDETERMINED;
else if ( RetValue == 1 ) else if ( RetValue == 1 )
...@@ -528,11 +564,13 @@ enum CSAT_StatusT CSAT_Solve( CSAT_Manager mng ) ...@@ -528,11 +564,13 @@ enum CSAT_StatusT CSAT_Solve( CSAT_Manager mng )
mng->pResult->values[i] = pModel[i]; mng->pResult->values[i] = pModel[i];
} }
} }
else assert( 0 );
// delete the fraig manager
Fraig_ManFree( pMan );
}
else else
assert( 0 ); assert( 0 );
// delete the fraig manager
Fraig_ManFree( pMan );
// delete the target // delete the target
Abc_NtkDelete( mng->pTarget ); Abc_NtkDelete( mng->pTarget );
mng->pTarget = NULL; mng->pTarget = NULL;
...@@ -558,9 +596,9 @@ CSAT_Target_ResultT * CSAT_Get_Target_Result( CSAT_Manager mng, int TargetID ) ...@@ -558,9 +596,9 @@ CSAT_Target_ResultT * CSAT_Get_Target_Result( CSAT_Manager mng, int TargetID )
/**Function************************************************************* /**Function*************************************************************
Synopsis [Dumps the target AIG into the BENCH file.] Synopsis [Dumps the original network into the BENCH file.]
Description [] Description [This procedure should be modified to dump the target.]
SideEffects [] SideEffects []
...@@ -569,11 +607,13 @@ CSAT_Target_ResultT * CSAT_Get_Target_Result( CSAT_Manager mng, int TargetID ) ...@@ -569,11 +607,13 @@ CSAT_Target_ResultT * CSAT_Get_Target_Result( CSAT_Manager mng, int TargetID )
***********************************************************************/ ***********************************************************************/
void CSAT_Dump_Bench_File( CSAT_Manager mng ) void CSAT_Dump_Bench_File( CSAT_Manager mng )
{ {
Abc_Ntk_t * pNtkTemp; Abc_Ntk_t * pNtkTemp, * pNtkAig;
char * pFileName; char * pFileName;
// derive the netlist // derive the netlist
pNtkTemp = Abc_NtkLogicToNetlistBench( mng->pTarget ); pNtkAig = Abc_NtkStrash( mng->pNtk, 0, 0 );
pNtkTemp = Abc_NtkLogicToNetlistBench( pNtkAig );
Abc_NtkDelete( pNtkAig );
if ( pNtkTemp == NULL ) if ( pNtkTemp == NULL )
{ printf( "CSAT_Dump_Bench_File: Dumping BENCH has failed.\n" ); return; } { printf( "CSAT_Dump_Bench_File: Dumping BENCH has failed.\n" ); return; }
pFileName = mng->pDumpFileName? mng->pDumpFileName: "abc_test.bench"; pFileName = mng->pDumpFileName? mng->pDumpFileName: "abc_test.bench";
......
...@@ -167,6 +167,10 @@ extern enum CSAT_StatusT CSAT_Solve(CSAT_Manager mng); ...@@ -167,6 +167,10 @@ extern enum CSAT_StatusT CSAT_Solve(CSAT_Manager mng);
extern CSAT_Target_ResultT * CSAT_Get_Target_Result(CSAT_Manager mng, int TargetID); extern CSAT_Target_ResultT * CSAT_Get_Target_Result(CSAT_Manager mng, int TargetID);
extern void CSAT_Dump_Bench_File(CSAT_Manager mng); extern void CSAT_Dump_Bench_File(CSAT_Manager mng);
// ADDED PROCEDURES:
extern void CSAT_QuitManager( CSAT_Manager mng );
extern void CSAT_TargetResFree( CSAT_Target_ResultT * p );
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// END OF FILE /// /// END OF FILE ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
......
...@@ -43,6 +43,7 @@ struct Fraig_ParamsStruct_t_ ...@@ -43,6 +43,7 @@ struct Fraig_ParamsStruct_t_
int nPatsRand; // the number of words of random simulation info int nPatsRand; // the number of words of random simulation info
int nPatsDyna; // the number of words of dynamic simulation info int nPatsDyna; // the number of words of dynamic simulation info
int nBTLimit; // the max number of backtracks to perform int nBTLimit; // the max number of backtracks to perform
int nSeconds; // the timeout for the final proof
int fFuncRed; // performs only one level hashing int fFuncRed; // performs only one level hashing
int fFeedBack; // enables solver feedback int fFeedBack; // enables solver feedback
int fDist1Pats; // enables distance-1 patterns int fDist1Pats; // enables distance-1 patterns
...@@ -162,8 +163,8 @@ extern int Fraig_CheckTfi( Fraig_Man_t * pMan, Fraig_Node_t * pO ...@@ -162,8 +163,8 @@ extern int Fraig_CheckTfi( Fraig_Man_t * pMan, Fraig_Node_t * pO
extern int Fraig_CountLevels( Fraig_Man_t * pMan ); extern int Fraig_CountLevels( Fraig_Man_t * pMan );
/*=== fraigSat.c =============================================================*/ /*=== fraigSat.c =============================================================*/
extern int Fraig_NodesAreEqual( Fraig_Man_t * p, Fraig_Node_t * pNode1, Fraig_Node_t * pNode2, int nBTLimit ); extern int Fraig_NodesAreEqual( Fraig_Man_t * p, Fraig_Node_t * pNode1, Fraig_Node_t * pNode2, int nBTLimit, int nTimeLimit );
extern int Fraig_NodeIsEquivalent( Fraig_Man_t * p, Fraig_Node_t * pOld, Fraig_Node_t * pNew, int nBTLimit ); extern int Fraig_NodeIsEquivalent( Fraig_Man_t * p, Fraig_Node_t * pOld, Fraig_Node_t * pNew, int nBTLimit, int nTimeLimit );
extern void Fraig_ManProveMiter( Fraig_Man_t * p ); extern void Fraig_ManProveMiter( Fraig_Man_t * p );
extern int Fraig_ManCheckMiter( Fraig_Man_t * p ); extern int Fraig_ManCheckMiter( Fraig_Man_t * p );
......
...@@ -167,7 +167,7 @@ Fraig_Node_t * Fraig_NodeAndCanon( Fraig_Man_t * pMan, Fraig_Node_t * p1, Fraig_ ...@@ -167,7 +167,7 @@ Fraig_Node_t * Fraig_NodeAndCanon( Fraig_Man_t * pMan, Fraig_Node_t * p1, Fraig_
// there is another node which looks the same according to simulation // there is another node which looks the same according to simulation
// use SAT to resolve the ambiguity // use SAT to resolve the ambiguity
if ( Fraig_NodeIsEquivalent( pMan, pNodeOld, pNodeNew, pMan->nBTLimit ) ) if ( Fraig_NodeIsEquivalent( pMan, pNodeOld, pNodeNew, pMan->nBTLimit, 1000000 ) )
{ {
// set the node to be equivalent with this node // set the node to be equivalent with this node
// to prevent loops, only set if the old node is not in the TFI of the new node // to prevent loops, only set if the old node is not in the TFI of the new node
......
...@@ -143,6 +143,7 @@ struct Fraig_ManStruct_t_ ...@@ -143,6 +143,7 @@ struct Fraig_ManStruct_t_
int nWordsRand; // the number of words of random simulation info int nWordsRand; // the number of words of random simulation info
int nWordsDyna; // the number of words of dynamic simulation info int nWordsDyna; // the number of words of dynamic simulation info
int nBTLimit; // the max number of backtracks to perform int nBTLimit; // the max number of backtracks to perform
int nSeconds; // the runtime limit for the miter proof
int fFuncRed; // performs only one level hashing int fFuncRed; // performs only one level hashing
int fFeedBack; // enables solver feedback int fFeedBack; // enables solver feedback
int fDist1Pats; // enables solver feedback int fDist1Pats; // enables solver feedback
......
...@@ -46,6 +46,7 @@ void Fraig_ParamsSetDefault( Fraig_Params_t * pParams ) ...@@ -46,6 +46,7 @@ void Fraig_ParamsSetDefault( Fraig_Params_t * pParams )
pParams->nPatsRand = FRAIG_PATTERNS_RANDOM; // the number of words of random simulation info pParams->nPatsRand = FRAIG_PATTERNS_RANDOM; // the number of words of random simulation info
pParams->nPatsDyna = FRAIG_PATTERNS_DYNAMIC; // the number of words of dynamic simulation info pParams->nPatsDyna = FRAIG_PATTERNS_DYNAMIC; // the number of words of dynamic simulation info
pParams->nBTLimit = 99; // the max number of backtracks to perform pParams->nBTLimit = 99; // the max number of backtracks to perform
pParams->nSeconds = 20; // the max number of seconds to solve the miter
pParams->fFuncRed = 1; // performs only one level hashing pParams->fFuncRed = 1; // performs only one level hashing
pParams->fFeedBack = 1; // enables solver feedback pParams->fFeedBack = 1; // enables solver feedback
pParams->fDist1Pats = 1; // enables distance-1 patterns pParams->fDist1Pats = 1; // enables distance-1 patterns
...@@ -100,6 +101,7 @@ Fraig_Man_t * Fraig_ManCreate( Fraig_Params_t * pParams ) ...@@ -100,6 +101,7 @@ Fraig_Man_t * Fraig_ManCreate( Fraig_Params_t * pParams )
p->nWordsRand = FRAIG_NUM_WORDS( pParams->nPatsRand ); // the number of words of random simulation info p->nWordsRand = FRAIG_NUM_WORDS( pParams->nPatsRand ); // the number of words of random simulation info
p->nWordsDyna = FRAIG_NUM_WORDS( pParams->nPatsDyna ); // the number of patterns for dynamic simulation info p->nWordsDyna = FRAIG_NUM_WORDS( pParams->nPatsDyna ); // the number of patterns for dynamic simulation info
p->nBTLimit = pParams->nBTLimit; // -1 means infinite backtrack limit p->nBTLimit = pParams->nBTLimit; // -1 means infinite backtrack limit
p->nSeconds = pParams->nSeconds; // the timeout for the final miter
p->fFuncRed = pParams->fFuncRed; // enables functional reduction (otherwise, only one-level hashing is performed) p->fFuncRed = pParams->fFuncRed; // enables functional reduction (otherwise, only one-level hashing is performed)
p->fFeedBack = pParams->fFeedBack; // enables solver feedback (the use of counter-examples in simulation) p->fFeedBack = pParams->fFeedBack; // enables solver feedback (the use of counter-examples in simulation)
p->fDist1Pats = pParams->fDist1Pats; // enables solver feedback (the use of counter-examples in simulation) p->fDist1Pats = pParams->fDist1Pats; // enables solver feedback (the use of counter-examples in simulation)
......
...@@ -56,13 +56,13 @@ extern void * Msat_ClauseVecReadEntry( void * p, int i ); ...@@ -56,13 +56,13 @@ extern void * Msat_ClauseVecReadEntry( void * p, int i );
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
int Fraig_NodesAreEqual( Fraig_Man_t * p, Fraig_Node_t * pNode1, Fraig_Node_t * pNode2, int nBTLimit ) int Fraig_NodesAreEqual( Fraig_Man_t * p, Fraig_Node_t * pNode1, Fraig_Node_t * pNode2, int nBTLimit, int nTimeLimit )
{ {
if ( pNode1 == pNode2 ) if ( pNode1 == pNode2 )
return 1; return 1;
if ( pNode1 == Fraig_Not(pNode2) ) if ( pNode1 == Fraig_Not(pNode2) )
return 0; return 0;
return Fraig_NodeIsEquivalent( p, Fraig_Regular(pNode1), Fraig_Regular(pNode2), nBTLimit ); return Fraig_NodeIsEquivalent( p, Fraig_Regular(pNode1), Fraig_Regular(pNode2), nBTLimit, nTimeLimit );
} }
/**Function************************************************************* /**Function*************************************************************
...@@ -95,7 +95,7 @@ void Fraig_ManProveMiter( Fraig_Man_t * p ) ...@@ -95,7 +95,7 @@ void Fraig_ManProveMiter( Fraig_Man_t * p )
// skip nodes that are different according to simulation // skip nodes that are different according to simulation
if ( !Fraig_CompareSimInfo( pNode, p->pConst1, p->nWordsRand, 1 ) ) if ( !Fraig_CompareSimInfo( pNode, p->pConst1, p->nWordsRand, 1 ) )
continue; continue;
if ( Fraig_NodeIsEquivalent( p, p->pConst1, pNode, -1 ) ) if ( Fraig_NodeIsEquivalent( p, p->pConst1, pNode, -1, p->nSeconds ) )
{ {
if ( Fraig_IsComplement(p->vOutputs->pArray[i]) ) if ( Fraig_IsComplement(p->vOutputs->pArray[i]) )
p->vOutputs->pArray[i] = Fraig_Not(p->pConst1); p->vOutputs->pArray[i] = Fraig_Not(p->pConst1);
...@@ -160,7 +160,7 @@ int Fraig_ManCheckMiter( Fraig_Man_t * p ) ...@@ -160,7 +160,7 @@ int Fraig_ManCheckMiter( Fraig_Man_t * p )
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
int Fraig_NodeIsEquivalent( Fraig_Man_t * p, Fraig_Node_t * pOld, Fraig_Node_t * pNew, int nBTLimit ) int Fraig_NodeIsEquivalent( Fraig_Man_t * p, Fraig_Node_t * pOld, Fraig_Node_t * pNew, int nBTLimit, int nTimeLimit )
{ {
int RetValue, RetValue1, i, fComp, clk; int RetValue, RetValue1, i, fComp, clk;
int fVerbose = 0; int fVerbose = 0;
...@@ -227,7 +227,7 @@ if ( fVerbose ) ...@@ -227,7 +227,7 @@ if ( fVerbose )
Msat_IntVecPush( p->vProj, MSAT_VAR2LIT(pNew->Num, !fComp) ); Msat_IntVecPush( p->vProj, MSAT_VAR2LIT(pNew->Num, !fComp) );
// run the solver // run the solver
clk = clock(); clk = clock();
RetValue1 = Msat_SolverSolve( p->pSat, p->vProj, nBTLimit ); RetValue1 = Msat_SolverSolve( p->pSat, p->vProj, nBTLimit, nTimeLimit );
p->timeSat += clock() - clk; p->timeSat += clock() - clk;
if ( RetValue1 == MSAT_FALSE ) if ( RetValue1 == MSAT_FALSE )
...@@ -286,7 +286,7 @@ p->time3 += clock() - clk; ...@@ -286,7 +286,7 @@ p->time3 += clock() - clk;
Msat_IntVecPush( p->vProj, MSAT_VAR2LIT(pNew->Num, fComp) ); Msat_IntVecPush( p->vProj, MSAT_VAR2LIT(pNew->Num, fComp) );
// run the solver // run the solver
clk = clock(); clk = clock();
RetValue1 = Msat_SolverSolve( p->pSat, p->vProj, nBTLimit ); RetValue1 = Msat_SolverSolve( p->pSat, p->vProj, nBTLimit, nTimeLimit );
p->timeSat += clock() - clk; p->timeSat += clock() - clk;
if ( RetValue1 == MSAT_FALSE ) if ( RetValue1 == MSAT_FALSE )
{ {
...@@ -411,7 +411,7 @@ if ( fVerbose ) ...@@ -411,7 +411,7 @@ if ( fVerbose )
Msat_IntVecPush( p->vProj, MSAT_VAR2LIT(pNew->Num, !fComp) ); Msat_IntVecPush( p->vProj, MSAT_VAR2LIT(pNew->Num, !fComp) );
// run the solver // run the solver
clk = clock(); clk = clock();
RetValue1 = Msat_SolverSolve( p->pSat, p->vProj, nBTLimit ); RetValue1 = Msat_SolverSolve( p->pSat, p->vProj, nBTLimit, 1000000 );
p->timeSat += clock() - clk; p->timeSat += clock() - clk;
if ( RetValue1 == MSAT_FALSE ) if ( RetValue1 == MSAT_FALSE )
......
...@@ -79,7 +79,7 @@ extern bool Msat_SolverParseDimacs( FILE * pFile, Msat_Solver_t ** p ...@@ -79,7 +79,7 @@ extern bool Msat_SolverParseDimacs( FILE * pFile, Msat_Solver_t ** p
extern bool Msat_SolverAddVar( Msat_Solver_t * p ); extern bool Msat_SolverAddVar( Msat_Solver_t * p );
extern bool Msat_SolverAddClause( Msat_Solver_t * p, Msat_IntVec_t * pLits ); extern bool Msat_SolverAddClause( Msat_Solver_t * p, Msat_IntVec_t * pLits );
extern bool Msat_SolverSimplifyDB( Msat_Solver_t * p ); extern bool Msat_SolverSimplifyDB( Msat_Solver_t * p );
extern bool Msat_SolverSolve( Msat_Solver_t * p, Msat_IntVec_t * pVecAssumps, int nBackTrackLimit ); extern bool Msat_SolverSolve( Msat_Solver_t * p, Msat_IntVec_t * pVecAssumps, int nBackTrackLimit, int nTimeLimit );
// printing stats, assignments, and clauses // printing stats, assignments, and clauses
extern void Msat_SolverPrintStats( Msat_Solver_t * p ); extern void Msat_SolverPrintStats( Msat_Solver_t * p );
extern void Msat_SolverPrintAssignment( Msat_Solver_t * p ); extern void Msat_SolverPrintAssignment( Msat_Solver_t * p );
......
...@@ -131,11 +131,12 @@ void Msat_SolverPrintStats( Msat_Solver_t * p ) ...@@ -131,11 +131,12 @@ void Msat_SolverPrintStats( Msat_Solver_t * p )
SeeAlso [] SeeAlso []
***********************************************************************/ ***********************************************************************/
bool Msat_SolverSolve( Msat_Solver_t * p, Msat_IntVec_t * vAssumps, int nBackTrackLimit ) bool Msat_SolverSolve( Msat_Solver_t * p, Msat_IntVec_t * vAssumps, int nBackTrackLimit, int nTimeLimit )
{ {
Msat_SearchParams_t Params = { 0.95, 0.999 }; Msat_SearchParams_t Params = { 0.95, 0.999 };
double nConflictsLimit, nLearnedLimit; double nConflictsLimit, nLearnedLimit;
Msat_Type_t Status; Msat_Type_t Status;
int timeStart = clock();
int64 nConflictsOld = p->Stats.nConflicts; int64 nConflictsOld = p->Stats.nConflicts;
int64 nDecisionsOld = p->Stats.nDecisions; int64 nDecisionsOld = p->Stats.nDecisions;
...@@ -174,6 +175,9 @@ bool Msat_SolverSolve( Msat_Solver_t * p, Msat_IntVec_t * vAssumps, int nBackTra ...@@ -174,6 +175,9 @@ bool Msat_SolverSolve( Msat_Solver_t * p, Msat_IntVec_t * vAssumps, int nBackTra
// if the limit on the number of backtracks is given, quit the restart loop // if the limit on the number of backtracks is given, quit the restart loop
if ( nBackTrackLimit > 0 ) if ( nBackTrackLimit > 0 )
break; break;
// if the runtime limit is exceeded, quit the restart loop
if ( clock() - timeStart >= nTimeLimit * CLOCKS_PER_SEC )
break;
} }
Msat_SolverCancelUntil( p, 0 ); Msat_SolverCancelUntil( p, 0 );
p->nBackTracks = (int)p->Stats.nConflicts - p->nBackTracks; p->nBackTracks = (int)p->Stats.nConflicts - p->nBackTracks;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment