public GNPXApp000(NuPz_Win pGNP00win)
        {
            List <string> DirLst = Directory.EnumerateDirectories(".").ToList();

            LanguageLst = new List <string>();
            LanguageLst.Add("en");
            foreach (var P in DirLst)
            {
                var Q = P.Replace(".", "").Replace("\\", "");
                if (Q == "en")
                {
                    continue;
                }
                if (Q.Length == 2 || (Q[2] == '-' && Q.Length == 5))
                {
                    LanguageLst.Add(Q);
                }
            }

            LanguageLst = LanguageLst.FindAll(P => (P.Length == 2 || (P[2] == '-' && P.Length == 5)));
            LanguageLst.Sort();

            this.pGNP00win       = pGNP00win;
            cellSizeP            = cellSize + lineWidth;
            SDKCntrl             = new SDK_Ctrl(this, 0);
            GNPX_Eng             = new GNPZ_Engin(this, new UPuzzle());
            UPuzzleMan.pGNPX_Eng = GNPX_Eng;
            SDK_Ctrl.pGNPX_Eng   = GNPX_Eng;
            PTrans     = new PuzzleTrans(this);
            SolverLst2 = new List <UMthdChked>();
        }
        }                                                               //int[,]

        public GNPX_AnalyzerMan(GNPZ_Engin pENGN)
        {
            SolverLst0 = new List <UAlgMethod>();
            this.pENGN = pENGN;

            SprLKsMan = new SuperLinkMan(this);

            var SSingle = new SimpleSingleGen(this);

            SolverLst0.Add(new UAlgMethod(1, "LastDigit", 1, SSingle.LastDigit));
            SolverLst0.Add(new UAlgMethod(2, "NakedSingle", 1, SSingle.NakedSingle));
            SolverLst0.Add(new UAlgMethod(3, "HiddenSingle", 1, SSingle.HiddenSingle));

            var GLTech = new GeneralLogicGen(this);

            SolverLst0.Add(new UAlgMethod(4, " GeneralLogic", 2, GLTech.GeneralLogicExnm, true));

            var LockedCand = new LockedCandidateGen(this);

            SolverLst0.Add(new UAlgMethod(5, "LockedCandidate", 2, LockedCand.LockedCandidate));

            var LockedSet = new LockedSetGen(this);

            SolverLst0.Add(new UAlgMethod(10, "LockedSet(2D)", 3, LockedSet.LockedSet2));
            SolverLst0.Add(new UAlgMethod(12, "LockedSet(3D)", 4, LockedSet.LockedSet3));
            SolverLst0.Add(new UAlgMethod(14, "LockedSet(4D)", 5, LockedSet.LockedSet4));
            SolverLst0.Add(new UAlgMethod(16, "LockedSet(5D)", -6, LockedSet.LockedSet5));          //complementary to 4D
            SolverLst0.Add(new UAlgMethod(18, "LockedSet(6D)", -6, LockedSet.LockedSet6));          //complementary to 3D
            SolverLst0.Add(new UAlgMethod(20, "LockedSet(7D)", -6, LockedSet.LockedSet7));          //complementary to 2D
            SolverLst0.Add(new UAlgMethod(11, "LockedSet(2D)Hidden", 3, LockedSet.LockedSet2Hidden));
            SolverLst0.Add(new UAlgMethod(13, "LockedSet(3D)Hidden", 4, LockedSet.LockedSet3Hidden));
            SolverLst0.Add(new UAlgMethod(15, "LockedSet(4D)Hidden", 5, LockedSet.LockedSet4Hidden));
            SolverLst0.Add(new UAlgMethod(17, "LockedSet(5D)Hidden", -6, LockedSet.LockedSet5Hidden));    //complementary to 4D
            SolverLst0.Add(new UAlgMethod(19, "LockedSet(6D)Hidden", -6, LockedSet.LockedSet6Hidden));    //complementary to 3D
            SolverLst0.Add(new UAlgMethod(21, "LockedSet(7D)Hidden", -6, LockedSet.LockedSet7Hidden));    //complementary to 2D

            var Fish = new FishGen(this);

            SolverLst0.Add(new UAlgMethod(30, "XWing", 4, Fish.XWing));
            SolverLst0.Add(new UAlgMethod(31, "SwordFish", 5, Fish.SwordFish));
            SolverLst0.Add(new UAlgMethod(32, "JellyFish", 6, Fish.JellyFish));
            SolverLst0.Add(new UAlgMethod(33, "Squirmbag", -6, Fish.Squirmbag));          //complementary to 4D
            SolverLst0.Add(new UAlgMethod(34, "Whale", -6, Fish.Whale));                  //complementary to 3D
            SolverLst0.Add(new UAlgMethod(35, "Leviathan", -6, Fish.Leviathan));          //complementary to 2D

            SolverLst0.Add(new UAlgMethod(40, "Finned XWing", 5, Fish.FinnedXWing));
            SolverLst0.Add(new UAlgMethod(41, "Finned SwordFish", 6, Fish.FinnedSwordFish));
            SolverLst0.Add(new UAlgMethod(42, "Finned JellyFish", 6, Fish.FinnedJellyFish));
            SolverLst0.Add(new UAlgMethod(43, "Finned Squirmbag", 7, Fish.FinnedSquirmbag));    //not complementary with fin
            SolverLst0.Add(new UAlgMethod(44, "Finned Whale", 7, Fish.FinnedWhale));            //not complementary with fin
            SolverLst0.Add(new UAlgMethod(45, "Finned Leviathan", 7, Fish.FinnedLeviathan));    //not complementary with fin

            SolverLst0.Add(new UAlgMethod(90, "Franken/MutantFish", 8, Fish.FrankenMutantFish));
            SolverLst0.Add(new UAlgMethod(91, "Finned Franken/Mutant Fish", 8, Fish.FinnedFrankenMutantFish));

            //  SolverLst0.Add( new UAlgMethod( 100, "EndoFinned F/M Fish",      11, Fish.EndoFinnedFMFish ) );
            //  SolverLst0.Add( new UAlgMethod( 101, "Cannibalistic F/M Fish",   11, Fish.CannibalisticFMFish ) );

            var nxgCellLink = new NXGCellLinkGen(this);

            SolverLst0.Add(new UAlgMethod(50, "Skyscraper", 5, nxgCellLink.Skyscraper));
            SolverLst0.Add(new UAlgMethod(51, "EmptyRectangle", 5, nxgCellLink.EmptyRectangle));
            SolverLst0.Add(new UAlgMethod(52, "XY-Wing", 6, nxgCellLink.XYwing));
            SolverLst0.Add(new UAlgMethod(53, "W-Wing", 7, nxgCellLink.Wwing));

            SolverLst0.Add(new UAlgMethod(55, "RemotePair", 6, nxgCellLink.RemotePair));
            SolverLst0.Add(new UAlgMethod(56, "XChain", 7, nxgCellLink.XChain));
            SolverLst0.Add(new UAlgMethod(57, "XYChain", 7, nxgCellLink.XYChain));

            SolverLst0.Add(new UAlgMethod(60, "Color-Trap", 6, nxgCellLink.Color_Trap));
            SolverLst0.Add(new UAlgMethod(61, "Color-Wrap", 6, nxgCellLink.Color_Wrap));
            SolverLst0.Add(new UAlgMethod(62, "MultiColor-Type1", 7, nxgCellLink.MultiColor_Type1));
            SolverLst0.Add(new UAlgMethod(63, "MultiColor-Type2", 7, nxgCellLink.MultiColor_Type2));

            var ALSTechP = new AALSTechGen(this);  //fakeALS(2次ALS)

            SolverLst0.Add(new UAlgMethod(59, "SueDeCoq", 6, ALSTechP.SueDeCoq));

            //var SimpleXYZ=new SimpleUVWXYZwingGen(this);        // -----------> Replaced with ALS version
            //SolverLst0.Add( new UAlgMethod( 70, "XYZ-Wing",         6, SimpleXYZ.XYZwing ) );
            //SolverLst0.Add( new UAlgMethod( 71, "WXYZ-Wing",        6, SimpleXYZ.WXYZwing ) );
            //SolverLst0.Add( new UAlgMethod( 72, "VWXYZ-Wing",       7, SimpleXYZ.VWXYZwing ) );
            //SolverLst0.Add( new UAlgMethod( 73, "UVWXYZ-Wing",      7, SimpleXYZ.UVWXYZwing ) );

            var ALSTech = new ALSTechGen(this);                   // ALS version

            SolverLst0.Add(new UAlgMethod(75, "XYZ-WingALS", 8, ALSTech.XYZwingALS));
            SolverLst0.Add(new UAlgMethod(80, "ALS-XZ", 8, ALSTech.ALS_XZ));
            SolverLst0.Add(new UAlgMethod(81, "ALS-XY-Wing", 9, ALSTech.ALS_XY_Wing));
            SolverLst0.Add(new UAlgMethod(82, "ALS-Chain", 10, ALSTech.ALS_Chain));
            SolverLst0.Add(new UAlgMethod(83, "ALS-DeathBlossom", 10, ALSTech.ALS_DeathBlossom));
            SolverLst0.Add(new UAlgMethod(83, "ALS-DeathBlossomExt", 10, ALSTech.ALS_DeathBlossomExt));

            var NLTech = new NiceLoopGen(this);

            SolverLst0.Add(new UAlgMethod(95, "NiceLoop", 11, NLTech.NiceLoop));

            var GNLTech = new GroupedLinkGen(this);

            //SolverLst0.Add( new UAlgMethod(  96, "GroupedNiceLoop",    12, GNLTech.GroupedNiceLoop ) );
            SolverLst0.Add(new UAlgMethod(97, "GroupedNiceLoopEx", 12, GNLTech.GroupedNiceLoopEx));        //Updated to Radiation Search
            //SolverLst0.Add( new UAlgMethod( 103, "Kraken Fish",        12, GNLTech.KrakenFish ) );
            //SolverLst0.Add( new UAlgMethod( 104, "Kraken FinnedFish",  12, GNLTech.KrakenFinnedFish ) );
            SolverLst0.Add(new UAlgMethod(105, "Kraken FishEx", 12, GNLTech.KrakenFishEx));
            SolverLst0.Add(new UAlgMethod(106, "Kraken FinnedFishEx", 12, GNLTech.KrakenFinnedFishEx));

            SolverLst0.Add(new UAlgMethod(112, "ForceChain_CellEx", 12, GNLTech.ForceChain_CellEx));
            SolverLst0.Add(new UAlgMethod(114, "ForceChain_HouseEx", 12, GNLTech.ForceChain_HouseEx));
            SolverLst0.Add(new UAlgMethod(116, "ForceChain_ContradictionEx", 12, GNLTech.ForceChain_ContradictionEx));

            SolverLst0.Sort((a, b) => (a.ID - b.ID));
        }