foo
http://
http://example
http://example.
http://.com
http://invalid-.com
http://-invalid.com
http://invalid.com-
http://invalid.-com
http://inv-.alid-.com
http://inv-.-alid.com
file://localhost/path
git://example.com/
http://.
http://..
http://../
http://?
http://??
http://??/
http://#
http://##
http://##/
http://foo.bar?q=Spaces should be encoded
//
//a
///a
///
http:///a
foo.com
rdar://1234
h://test
http:// shouldfail.com
:// should fail
http://foo.bar/foo(bar)baz quux
http://-error-.invalid/
http://dashinpunytld.trailingdot.xn--.
http://dashinpunytld.xn---
http://-a.b.co
http://a.b-.co
http://a.-b.co
http://a.b-.c.co
http:/
http://
http://
http://1.1.1.1.1
http://123.123.123
http://3628126748
http://123
http://000.000.000.000
http://016.016.016.016
http://192.168.000.001
http://01.2.3.4
http://01.2.3.4
http://1.02.3.4
http://1.2.03.4
http://1.2.3.04
http://.www.foo.bar/
http://.www.foo.bar./
http://[::1:2::3]:8080/
http://[]
http://[]:8080
http://example..com/
http://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.example.com
http://example.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com
http://example.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
http://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaa
https://test.[com
http://@example.com
http://:@example.com
http://:bar@example.com
http://foo@bar@example.com
http://foo/bar@example.com
http://foo:bar:baz@example.com
http://foo:bar@baz@example.com
http://foo:bar/baz@example.com
http://invalid-.com/?m=foo@example.com
