Make pkg:charcode a dev-dependency
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6d86746..34b9b86 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,4 @@
-## 0.3.0-dev
+## 0.3.0-nullsafety.0
 
 - Remove `TarReader.contents` and `TarReader.header`. Use `current.contents` and `current.header`, respectively.
 
@@ -12,7 +12,7 @@
 - Remove `MemoryEntry`. Use `TarEntry.data` to create a tar entry from bytes.
 - Make `WritingSink` private. Use `tarWritingSink` to create a general `StreamSink<tar.Entry>`.
 - `TarReader` is now a [`StreamIterator`](https://api.dart.dev/stable/2.10.4/dart-async/StreamIterator-class.html),
-  the transformer had some design flaws
+  the transformer had some design flaws.
 
 ## 0.1.0-nullsafety.1
 
diff --git a/README.md b/README.md
index f00862f..dc8c383 100644
--- a/README.md
+++ b/README.md
@@ -101,4 +101,4 @@
 -----
 
 Big thanks to [Garett Tok Ern Liang](https://github.com/walnutdust) for writing the initial 
-tar implementation this library is based on.
\ No newline at end of file
+Dart tar reader that this library is based on.
\ No newline at end of file
diff --git a/lib/src/charcodes.dart b/lib/src/charcodes.dart
new file mode 100644
index 0000000..1d34a6d
--- /dev/null
+++ b/lib/src/charcodes.dart
@@ -0,0 +1,71 @@
+/// "Line feed" control character.
+const int $lf = 0x0a;
+
+/// Space character.
+const int $space = 0x20;
+
+/// Character `0`.
+const int $0 = 0x30;
+
+/// Character `1`.
+const int $1 = 0x31;
+
+/// Character `2`.
+const int $2 = 0x32;
+
+/// Character `3`.
+const int $3 = 0x33;
+
+/// Character `4`.
+const int $4 = 0x34;
+
+/// Character `5`.
+const int $5 = 0x35;
+
+/// Character `6`.
+const int $6 = 0x36;
+
+/// Character `7`.
+const int $7 = 0x37;
+
+/// Character `8`.
+const int $8 = 0x38;
+
+/// Character `9`.
+const int $9 = 0x39;
+
+/// Character `<`.
+const int $equal = 0x3d;
+
+/// Character `A`.
+const int $A = 0x41;
+
+/// Character `K`.
+const int $K = 0x4b;
+
+/// Character `L`.
+const int $L = 0x4c;
+
+/// Character `S`.
+const int $S = 0x53;
+
+/// Character `a`.
+const int $a = 0x61;
+
+/// Character `g`.
+const int $g = 0x67;
+
+/// Character `r`.
+const int $r = 0x72;
+
+/// Character `s`.
+const int $s = 0x73;
+
+/// Character `t`.
+const int $t = 0x74;
+
+/// Character `u`.
+const int $u = 0x75;
+
+/// Character `x`.
+const int $x = 0x78;
diff --git a/lib/src/constants.dart b/lib/src/constants.dart
index 711f6b1..fb2c7f4 100644
--- a/lib/src/constants.dart
+++ b/lib/src/constants.dart
@@ -1,7 +1,6 @@
 import 'dart:typed_data';
 
-import 'package:charcode/charcode.dart';
-
+import 'charcodes.dart';
 import 'exception.dart';
 
 // Magic values to help us identify the TAR header type.
diff --git a/lib/src/exception.dart b/lib/src/exception.dart
index 53387ac..3d9e614 100644
--- a/lib/src/exception.dart
+++ b/lib/src/exception.dart
@@ -1,7 +1,7 @@
 import 'package:meta/meta.dart';
 
 /// An exception indicating that there was an issue parsing a `.tar` file.
-/// Intended ot be seen by the user.
+/// Intended to be seen by the user.
 class TarException extends FormatException {
   @internal
   TarException(String message) : super(message);
diff --git a/lib/src/reader.dart b/lib/src/reader.dart
index 6ec8443..171e67f 100644
--- a/lib/src/reader.dart
+++ b/lib/src/reader.dart
@@ -3,11 +3,11 @@
 import 'dart:convert';
 import 'dart:typed_data';
 
-import 'package:charcode/charcode.dart';
 import 'package:chunked_stream/chunked_stream.dart';
 import 'package:meta/meta.dart';
 import 'package:typed_data/typed_data.dart';
 
+import 'charcodes.dart';
 import 'constants.dart';
 import 'entry.dart';
 import 'exception.dart';
diff --git a/lib/src/utils.dart b/lib/src/utils.dart
index 041dde2..a6b7e13 100644
--- a/lib/src/utils.dart
+++ b/lib/src/utils.dart
@@ -2,8 +2,7 @@
 import 'dart:math';
 import 'dart:typed_data';
 
-import 'package:charcode/charcode.dart';
-
+import 'charcodes.dart';
 import 'constants.dart';
 import 'exception.dart';
 
diff --git a/lib/src/writer.dart b/lib/src/writer.dart
index 0d9d2bb..dad1d8c 100644
--- a/lib/src/writer.dart
+++ b/lib/src/writer.dart
@@ -2,11 +2,10 @@
 import 'dart:convert';
 import 'dart:typed_data';
 
-import 'package:charcode/ascii.dart';
-import 'package:tar/src/format.dart';
-
+import 'charcodes.dart';
 import 'constants.dart';
 import 'entry.dart';
+import 'format.dart';
 import 'header.dart';
 
 class _WritingTransformer extends StreamTransformerBase<TarEntry, List<int>> {
diff --git a/pubspec.yaml b/pubspec.yaml
index e8cc120..94306ad 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -7,11 +7,11 @@
   sdk: '>=2.12.0-0 <3.0.0'
 
 dependencies:
-  charcode: ^1.2.0-nullsafety
   chunked_stream: ^1.4.0-nullsafety.0
   meta: ^1.3.0-nullsafety.6
   typed_data: ^1.3.0-nullsafety.5
 
 dev_dependencies:
+  charcode: ^1.2.0-nullsafety
   extra_pedantic: ^1.2.0
   test: ^1.16.0-nullsafety
diff --git a/tool/generate_charcodes.sh b/tool/generate_charcodes.sh
new file mode 100755
index 0000000..4f139de
--- /dev/null
+++ b/tool/generate_charcodes.sh
@@ -0,0 +1 @@
+dart run charcode 'ustarxgASLK=\x20\x0a\d' > lib/src/charcodes.dart
\ No newline at end of file