public override async Task <bool> LoadAsync()
        {
            var file = await ApplicationData.Current.LocalFolder.GetFileAsync(FILENAME);

            var provider = new Windows.Security.Cryptography.DataProtection.DataProtectionProvider("LOCAL=user");

            using (var stream = await file.OpenStreamForReadAsync().ConfigureAwait(false))
            {
                using (var reader = new BinaryReader(stream))
                {
                    var length = reader.ReadInt32();
                    var cipher = reader.ReadBytes(length);

                    var plaintext = await provider.UnprotectAsync(cipher.AsBuffer()).AsTask().ConfigureAwait(false);

                    var bytes = plaintext.ToArray();

                    var json = Encoding.UTF8.GetString(bytes, 0, bytes.Length);

                    data = JsonToDictionary(json);
                }
            }

            return(true);
        }
        public override async Task <bool> SaveAsync()
        {
            byte[] bytes = Encoding.UTF8.GetBytes(DictionaryToJson(data));

            var provider = new Windows.Security.Cryptography.DataProtection.DataProtectionProvider("LOCAL=user");

            var cipher = (await provider.ProtectAsync(bytes.AsBuffer()).AsTask().ConfigureAwait(false)).ToArray();

            var localFolder = ApplicationData.Current.LocalFolder;
            var file        = await localFolder.CreateFileAsync(FILENAME, CreationCollisionOption.OpenIfExists).AsTask().ConfigureAwait(false);

            using (var stream = await file.OpenStreamForWriteAsync().ConfigureAwait(false))
            {
                using (var writer = new BinaryWriter(stream))
                {
                    writer.Write((Int32)cipher.Length);
                    writer.Write(cipher);
                }
            }
            return(true);
        }