private static DataNode ReadEncrypted(BinaryReader reader)
        {
            DataNode result = null;

            using (RijndaelManaged rijndaelManaged = new RijndaelManaged())
            {
                rijndaelManaged.Key = DataNodeBinary.m_EncryptKey;
                rijndaelManaged.IV  = DataNodeBinary.m_EncryptVector;
                ICryptoTransform cryptoTransform = rijndaelManaged.CreateDecryptor(rijndaelManaged.Key, rijndaelManaged.IV);
                CryptoStream     input           = new CryptoStream(reader.BaseStream, cryptoTransform, CryptoStreamMode.Read);
                BinaryReader     binaryReader    = new BinaryReader(input);
                int num = binaryReader.ReadInt32();
                switch (num)
                {
                case 1:
                    result = DataNodeBinary.ReadFromBinary(binaryReader, null);
                    break;

                case 2:
                    result = DataNodeBinary.ReadCompressed(binaryReader);
                    break;

                case 3:
                    Debug.LogError("Double encryption!!!");
                    break;

                default:
                    Debug.LogError("Unknown version " + num);
                    break;
                }
                cryptoTransform.Dispose();
            }
            return(result);
        }
        public static DataNode FromBinaryStream(BinaryReader reader)
        {
            string text = reader.ReadString();

            if (text != "DEF2")
            {
                Debug.LogError("Unknown header " + text);
                return(null);
            }
            int num = reader.ReadInt32();

            switch (num)
            {
            case 1:
                return(DataNodeBinary.ReadFromBinary(reader, null));

            case 2:
                return(DataNodeBinary.ReadCompressed(reader));

            case 3:
                return(DataNodeBinary.ReadEncrypted(reader));

            default:
                Debug.LogError("Unknown version " + num);
                return(null);
            }
        }
        private static DataNode ReadCompressed(BinaryReader reader)
        {
            List <string> list = DataNodeBinary.ReadHeader(reader);

            if (list == null)
            {
                return(null);
            }
            return(DataNodeBinary.ReadFromBinary(reader, list));
        }
        private static DataNode ReadSubNodes(BinaryReader br, bool isList, List <string> header)
        {
            DataNode dataNode = new DataNode(DataNodeBinary.ReadString(br, header));

            dataNode.IsList = isList;
            int num = br.ReadInt32();

            for (int i = 0; i < num; i++)
            {
                DataNode node = DataNodeBinary.ReadFromBinary(br, header);
                dataNode.AddNode(node);
            }
            return(dataNode);
        }