diff --git a/README.md b/README.md
index 2e2d740..5dd205b 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@
**Now with Interactive Mode.** Browse any repo right in your terminal. See every file, pick what you want, skip what you don't. Just `gitpick owner/repo -i` and you're in. No more guessing paths.
-📦 `Zero dependencies` / `Un/packed (~38/14kb)` / `Faster and more features` yet drop-in replacement for `degit`
+📦 `Zero dependencies` / `Un/packed (~63/24kb)` / `Faster and more features` yet drop-in replacement for `degit`
> #### Just `copy-and-paste` any GitHub, GitLab or Bitbucket URL - no editing required (shorthands work too) - to clone individual files, folders, branches, commits, raw content or even entire repositories without the `.git` directory.
diff --git a/bin/external/speed-highlight.ts b/bin/external/speed-highlight.ts
new file mode 100644
index 0000000..15b496a
--- /dev/null
+++ b/bin/external/speed-highlight.ts
@@ -0,0 +1,895 @@
+var te = Object.defineProperty
+var d = (n) => (t) => {
+ var p = n[t]
+ if (p) return p()
+ throw new Error("Module not found in bundle: " + t)
+}
+var e = (n, t) => () => (n && (t = n((n = 0))), t)
+var a = (n, t) => {
+ for (var p in t) te(n, p, { get: t[p], enumerable: !0 })
+}
+var B = {}
+a(B, { default: () => ee })
+var ee,
+ G = e(() => {
+ ee = [
+ { type: "cmnt", match: /(;|#).*/gm },
+ { expand: "str" },
+ { expand: "num" },
+ { type: "num", match: /\$[\da-fA-F]*\b/g },
+ { type: "kwd", match: /^[a-z]+\s+[a-z.]+\b/gm, sub: [{ type: "func", match: /^[a-z]+/g }] },
+ { type: "kwd", match: /^\t*[a-z][a-z\d]*\b/gm },
+ { match: /%|\$/g, type: "oper" },
+ ]
+ })
+var H = {}
+a(H, { default: () => I })
+var k,
+ I,
+ N = e(() => {
+ ;((k = { type: "var", match: /\$\w+|\${[^}]*}|\$\([^)]*\)/g }),
+ (I = [
+ { sub: "todo", match: /#.*/g },
+ { type: "str", match: /(["'])((?!\1)[^\r\n\\]|\\[^])*\1?/g, sub: [k] },
+ { type: "oper", match: /(?<=\s|^)\.*\/[a-z/_.-]+/gi },
+ {
+ type: "kwd",
+ match:
+ /\s-[a-zA-Z]+|$<|[&|;]+|\b(unset|readonly|shift|export|if|fi|else|elif|while|do|done|for|until|case|esac|break|continue|exit|return|trap|wait|eval|exec|then|declare|enable|local|select|typeset|time|add|remove|install|update|delete)(?=\s|$)/g,
+ },
+ { expand: "num" },
+ { type: "func", match: /(?<=(^|\||\&\&|\;)\s*)[a-z_.-]+(?=\s|$)/gim },
+ { type: "bool", match: /(?<=\s|^)(true|false)(?=\s|$)/g },
+ { type: "oper", match: /[=(){}<>!]+/g },
+ { type: "var", match: /(?<=\s|^)[\w_]+(?=\s*=)/g },
+ k,
+ ]))
+ })
+var _ = {}
+a(_, { default: () => ae })
+var ae,
+ z = e(() => {
+ ae = [
+ { match: /[^\[\->+.<\]\s].*/g, sub: "todo" },
+ { type: "func", match: /\.+/g },
+ { type: "kwd", match: /[<>]+/g },
+ { type: "oper", match: /[+-]+/g },
+ ]
+ })
+var Y = {}
+a(Y, { default: () => ne })
+var ne,
+ Z = e(() => {
+ ne = [
+ { match: /\/\/.*\n?|\/\*((?!\*\/)[^])*(\*\/)?/g, sub: "todo" },
+ { expand: "str" },
+ { expand: "num" },
+ { type: "kwd", match: /#\s*include (<.*>|".*")/g, sub: [{ type: "str", match: /(<|").*/g }] },
+ {
+ match: /asm\s*{[^}]*}/g,
+ sub: [
+ { type: "kwd", match: /^asm/g },
+ { match: /[^{}]*(?=}$)/g, sub: "asm" },
+ ],
+ },
+ {
+ type: "kwd",
+ match:
+ /\*|&|#[a-z]+\b|\b(asm|auto|double|int|struct|break|else|long|switch|case|enum|register|typedef|char|extern|return|union|const|float|short|unsigned|continue|for|signed|void|default|goto|sizeof|volatile|do|if|static|while)\b/g,
+ },
+ { type: "oper", match: /[/*+:?&|%^~=!,<>.^-]+/g },
+ { type: "func", match: /[a-zA-Z_][\w_]*(?=\s*\()/g },
+ { type: "class", match: /\b[A-Z][\w_]*\b/g },
+ ]
+ })
+var X = {}
+a(X, { default: () => se })
+var se,
+ W = e(() => {
+ se = [
+ { match: /\/\*((?!\*\/)[^])*(\*\/)?/g, sub: "todo" },
+ { expand: "str" },
+ { type: "kwd", match: /@\w+\b|\b(and|not|only|or)\b|\b[a-z-]+(?=[^{}]*{)/g },
+ { type: "var", match: /\b[\w-]+(?=\s*:)|(::?|\.)[\w-]+(?=[^{}]*{)/g },
+ { type: "func", match: /#[\w-]+(?=[^{}]*{)/g },
+ { type: "num", match: /#[\da-f]{3,8}/g },
+ {
+ type: "num",
+ match: /\d+(\.\d+)?(cm|mm|in|px|pt|pc|em|ex|ch|rem|vm|vh|vmin|vmax|%)?/g,
+ sub: [{ type: "var", match: /[a-z]+|%/g }],
+ },
+ {
+ match: /url\([^)]*\)/g,
+ sub: [
+ { type: "func", match: /url(?=\()/g },
+ { type: "str", match: /[^()]+/g },
+ ],
+ },
+ { type: "func", match: /\b[a-zA-Z]\w*(?=\s*\()/g },
+ { type: "num", match: /\b[a-z-]+\b/g },
+ ]
+ })
+var j = {}
+a(j, { default: () => pe })
+var pe,
+ K = e(() => {
+ pe = [{ expand: "strDouble" }, { type: "oper", match: /,/g }]
+ })
+var V = {}
+a(V, { default: () => A })
+var A,
+ R = e(() => {
+ A = [
+ { type: "deleted", match: /^[-<].*/gm },
+ { type: "insert", match: /^[+>].*/gm },
+ { type: "kwd", match: /!.*/gm },
+ { type: "section", match: /^@@.*@@$|^\d.*|^([*-+])\1\1.*/gm },
+ ]
+ })
+var q = {}
+a(q, { default: () => re })
+var re,
+ Q = e(() => {
+ N()
+ re = [
+ {
+ type: "kwd",
+ match:
+ /^(FROM|RUN|CMD|LABEL|MAINTAINER|EXPOSE|ENV|ADD|COPY|ENTRYPOINT|VOLUME|USER|WORKDIR|ARG|ONBUILD|STOPSIGNAL|HEALTHCHECK|SHELL)\b/gim,
+ },
+ ...I,
+ ]
+ })
+var J = {}
+a(J, { default: () => ce })
+var ce,
+ tt = e(() => {
+ R()
+ ce = [
+ { match: /^#.*/gm, sub: "todo" },
+ { expand: "str" },
+ ...A,
+ { type: "func", match: /^(\$ )?git(\s.*)?$/gm },
+ { type: "kwd", match: /^commit \w+$/gm },
+ ]
+ })
+var et = {}
+a(et, { default: () => me })
+var me,
+ at = e(() => {
+ me = [
+ { match: /\/\/.*\n?|\/\*((?!\*\/)[^])*(\*\/)?/g, sub: "todo" },
+ { expand: "str" },
+ { expand: "num" },
+ {
+ type: "kwd",
+ match:
+ /\*|&|\b(break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go|goto|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/g,
+ },
+ { type: "func", match: /[a-zA-Z_][\w_]*(?=\s*\()/g },
+ { type: "class", match: /\b[A-Z][\w_]*\b/g },
+ { type: "oper", match: /[+\-*\/%&|^~=!<>.^-]+/g },
+ ]
+ })
+var st = {}
+a(st, { default: () => O, name: () => u, properties: () => i, xmlElement: () => l })
+var nt,
+ oe,
+ u,
+ i,
+ l,
+ O,
+ x = e(() => {
+ ;((nt =
+ ":A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD"),
+ (oe = nt + "\\-\\.0-9\xB7\u0300-\u036F\u203F-\u2040"),
+ (u = `[${nt}][${oe}]*`),
+ (i = `\\s*(\\s+${u}\\s*(=\\s*([^"']\\S*|("|')(\\\\[^]|(?!\\4)[^])*\\4?)?)?\\s*)*`),
+ (l = {
+ match: RegExp(`<[/!?]?${u}${i}[/!?]?>`, "g"),
+ sub: [
+ {
+ type: "var",
+ match: RegExp(`^<[/!?]?${u}`, "g"),
+ sub: [{ type: "oper", match: /^<[\/!?]?/g }],
+ },
+ {
+ type: "str",
+ match: /=\s*([^"']\S*|("|')(\\[^]|(?!\2)[^])*\2?)/g,
+ sub: [{ type: "oper", match: /^=/g }],
+ },
+ { type: "oper", match: /[\/!?]?>/g },
+ { type: "class", match: RegExp(u, "g") },
+ ],
+ }),
+ (O = [
+ { match: /)[^])*-->/g, sub: "todo" },
+ { type: "class", match: //gi },
+ l,
+ {
+ type: "str",
+ match: RegExp(`<\\?${u}([^?]|\\?[^?>])*\\?+>`, "g"),
+ sub: [
+ {
+ type: "var",
+ match: RegExp(`^<\\?${u}`, "g"),
+ sub: [{ type: "oper", match: /^<\?/g }],
+ },
+ { type: "oper", match: /\?+>$/g },
+ ],
+ },
+ { type: "var", match: /&(#x?)?[\da-z]{1,8};/gi },
+ ]))
+ })
+var pt = {}
+a(pt, { default: () => le })
+var le,
+ rt = e(() => {
+ x()
+ le = [
+ {
+ type: "class",
+ match: /])*>/gi,
+ sub: [
+ { type: "str", match: /"[^"]*"|'[^']*'/g },
+ { type: "oper", match: /^$/g },
+ { type: "var", match: /DOCTYPE/gi },
+ ],
+ },
+ {
+ match: RegExp(`)[^])*`, "g"),
+ sub: [
+ { match: RegExp(`^$)`, "g"), sub: "css" },
+ l,
+ ],
+ },
+ {
+ match: RegExp(`