ires 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1024) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +32 -45
  3. data/ext/Gopkg.lock +31 -1
  4. data/ext/ires/image.go +227 -0
  5. data/ext/ires/ires.go +47 -59
  6. data/ext/ires/uri.go +143 -0
  7. data/ext/main.go +18 -9
  8. data/ext/vendor/github.com/PuerkitoBio/purell/LICENSE +12 -0
  9. data/ext/vendor/github.com/PuerkitoBio/purell/README.md +187 -0
  10. data/ext/vendor/github.com/PuerkitoBio/purell/bench_test.go +57 -0
  11. data/ext/vendor/github.com/PuerkitoBio/purell/benchmarks/v0.1.0 +9 -0
  12. data/ext/vendor/github.com/PuerkitoBio/purell/example_test.go +35 -0
  13. data/ext/vendor/github.com/PuerkitoBio/purell/purell.go +379 -0
  14. data/ext/vendor/github.com/PuerkitoBio/purell/purell_test.go +768 -0
  15. data/ext/vendor/github.com/PuerkitoBio/purell/urlnorm_test.go +53 -0
  16. data/ext/vendor/github.com/PuerkitoBio/urlesc/LICENSE +27 -0
  17. data/ext/vendor/github.com/PuerkitoBio/urlesc/README.md +16 -0
  18. data/ext/vendor/github.com/PuerkitoBio/urlesc/urlesc.go +180 -0
  19. data/ext/vendor/github.com/PuerkitoBio/urlesc/urlesc_test.go +641 -0
  20. data/ext/vendor/github.com/{satori/go.uuid → goware/urlx}/LICENSE +3 -1
  21. data/ext/vendor/github.com/goware/urlx/README.md +172 -0
  22. data/ext/vendor/github.com/goware/urlx/urlx.go +196 -0
  23. data/ext/vendor/github.com/goware/urlx/urlx_test.go +232 -0
  24. data/ext/vendor/golang.org/x/net/AUTHORS +3 -0
  25. data/ext/vendor/golang.org/x/net/CONTRIBUTING.md +31 -0
  26. data/ext/vendor/golang.org/x/net/CONTRIBUTORS +3 -0
  27. data/ext/vendor/golang.org/x/net/LICENSE +27 -0
  28. data/ext/vendor/golang.org/x/net/PATENTS +22 -0
  29. data/ext/vendor/golang.org/x/net/README.md +16 -0
  30. data/ext/vendor/golang.org/x/net/bpf/asm.go +41 -0
  31. data/ext/vendor/golang.org/x/net/bpf/constants.go +218 -0
  32. data/ext/vendor/golang.org/x/net/bpf/doc.go +82 -0
  33. data/ext/vendor/golang.org/x/net/bpf/instructions.go +704 -0
  34. data/ext/vendor/golang.org/x/net/bpf/instructions_test.go +525 -0
  35. data/ext/vendor/golang.org/x/net/bpf/setter.go +10 -0
  36. data/ext/vendor/golang.org/x/net/bpf/testdata/all_instructions.bpf +1 -0
  37. data/ext/vendor/golang.org/x/net/bpf/testdata/all_instructions.txt +79 -0
  38. data/ext/vendor/golang.org/x/net/bpf/vm.go +140 -0
  39. data/ext/vendor/golang.org/x/net/bpf/vm_aluop_test.go +512 -0
  40. data/ext/vendor/golang.org/x/net/bpf/vm_bpf_test.go +192 -0
  41. data/ext/vendor/golang.org/x/net/bpf/vm_extension_test.go +49 -0
  42. data/ext/vendor/golang.org/x/net/bpf/vm_instructions.go +174 -0
  43. data/ext/vendor/golang.org/x/net/bpf/vm_jump_test.go +380 -0
  44. data/ext/vendor/golang.org/x/net/bpf/vm_load_test.go +246 -0
  45. data/ext/vendor/golang.org/x/net/bpf/vm_ret_test.go +115 -0
  46. data/ext/vendor/golang.org/x/net/bpf/vm_scratch_test.go +247 -0
  47. data/ext/vendor/golang.org/x/net/bpf/vm_test.go +144 -0
  48. data/ext/vendor/golang.org/x/net/codereview.cfg +1 -0
  49. data/ext/vendor/golang.org/x/net/context/context.go +54 -0
  50. data/ext/vendor/golang.org/x/net/context/context_test.go +583 -0
  51. data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +74 -0
  52. data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_17_test.go +29 -0
  53. data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17.go +147 -0
  54. data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17_test.go +79 -0
  55. data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_test.go +105 -0
  56. data/ext/vendor/golang.org/x/net/context/go17.go +72 -0
  57. data/ext/vendor/golang.org/x/net/context/go19.go +20 -0
  58. data/ext/vendor/golang.org/x/net/context/pre_go17.go +300 -0
  59. data/ext/vendor/golang.org/x/net/context/pre_go19.go +109 -0
  60. data/ext/vendor/golang.org/x/net/context/withtimeout_test.go +31 -0
  61. data/ext/vendor/golang.org/x/net/dict/dict.go +210 -0
  62. data/ext/vendor/golang.org/x/net/dns/dnsmessage/example_test.go +132 -0
  63. data/ext/vendor/golang.org/x/net/dns/dnsmessage/message.go +1997 -0
  64. data/ext/vendor/golang.org/x/net/dns/dnsmessage/message_test.go +1116 -0
  65. data/ext/vendor/golang.org/x/net/html/atom/atom.go +78 -0
  66. data/ext/vendor/golang.org/x/net/html/atom/atom_test.go +109 -0
  67. data/ext/vendor/golang.org/x/net/html/atom/gen.go +709 -0
  68. data/ext/vendor/golang.org/x/net/html/atom/table.go +777 -0
  69. data/ext/vendor/golang.org/x/net/html/atom/table_test.go +373 -0
  70. data/ext/vendor/golang.org/x/net/html/charset/charset.go +257 -0
  71. data/ext/vendor/golang.org/x/net/html/charset/charset_test.go +237 -0
  72. data/ext/vendor/golang.org/x/net/html/charset/testdata/HTTP-charset.html +48 -0
  73. data/ext/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-UTF-8-BOM.html +48 -0
  74. data/ext/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-charset.html +49 -0
  75. data/ext/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-content.html +49 -0
  76. data/ext/vendor/golang.org/x/net/html/charset/testdata/No-encoding-declaration.html +47 -0
  77. data/ext/vendor/golang.org/x/net/html/charset/testdata/README +9 -0
  78. data/ext/vendor/golang.org/x/net/html/charset/testdata/UTF-16BE-BOM.html +0 -0
  79. data/ext/vendor/golang.org/x/net/html/charset/testdata/UTF-16LE-BOM.html +0 -0
  80. data/ext/vendor/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-charset.html +49 -0
  81. data/ext/vendor/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-content.html +48 -0
  82. data/ext/vendor/golang.org/x/net/html/charset/testdata/meta-charset-attribute.html +48 -0
  83. data/ext/vendor/golang.org/x/net/html/charset/testdata/meta-content-attribute.html +48 -0
  84. data/ext/vendor/golang.org/x/net/html/const.go +104 -0
  85. data/ext/vendor/golang.org/x/net/html/doc.go +106 -0
  86. data/ext/vendor/golang.org/x/net/html/doctype.go +156 -0
  87. data/ext/vendor/golang.org/x/net/html/entity.go +2253 -0
  88. data/ext/vendor/golang.org/x/net/html/entity_test.go +29 -0
  89. data/ext/vendor/golang.org/x/net/html/escape.go +258 -0
  90. data/ext/vendor/golang.org/x/net/html/escape_test.go +97 -0
  91. data/ext/vendor/golang.org/x/net/html/example_test.go +40 -0
  92. data/ext/vendor/golang.org/x/net/html/foreign.go +226 -0
  93. data/ext/vendor/golang.org/x/net/html/node.go +193 -0
  94. data/ext/vendor/golang.org/x/net/html/node_test.go +146 -0
  95. data/ext/vendor/golang.org/x/net/html/parse.go +2094 -0
  96. data/ext/vendor/golang.org/x/net/html/parse_test.go +388 -0
  97. data/ext/vendor/golang.org/x/net/html/render.go +271 -0
  98. data/ext/vendor/golang.org/x/net/html/render_test.go +156 -0
  99. data/ext/vendor/golang.org/x/net/html/testdata/go1.html +2237 -0
  100. data/ext/vendor/golang.org/x/net/html/testdata/webkit/README +28 -0
  101. data/ext/vendor/golang.org/x/net/html/testdata/webkit/adoption01.dat +194 -0
  102. data/ext/vendor/golang.org/x/net/html/testdata/webkit/adoption02.dat +31 -0
  103. data/ext/vendor/golang.org/x/net/html/testdata/webkit/comments01.dat +135 -0
  104. data/ext/vendor/golang.org/x/net/html/testdata/webkit/doctype01.dat +370 -0
  105. data/ext/vendor/golang.org/x/net/html/testdata/webkit/entities01.dat +603 -0
  106. data/ext/vendor/golang.org/x/net/html/testdata/webkit/entities02.dat +249 -0
  107. data/ext/vendor/golang.org/x/net/html/testdata/webkit/html5test-com.dat +246 -0
  108. data/ext/vendor/golang.org/x/net/html/testdata/webkit/inbody01.dat +43 -0
  109. data/ext/vendor/golang.org/x/net/html/testdata/webkit/isindex.dat +40 -0
  110. data/ext/vendor/golang.org/x/net/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.dat +0 -0
  111. data/ext/vendor/golang.org/x/net/html/testdata/webkit/pending-spec-changes.dat +52 -0
  112. data/ext/vendor/golang.org/x/net/html/testdata/webkit/plain-text-unsafe.dat +0 -0
  113. data/ext/vendor/golang.org/x/net/html/testdata/webkit/scriptdata01.dat +308 -0
  114. data/ext/vendor/golang.org/x/net/html/testdata/webkit/scripted/adoption01.dat +15 -0
  115. data/ext/vendor/golang.org/x/net/html/testdata/webkit/scripted/webkit01.dat +28 -0
  116. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tables01.dat +212 -0
  117. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests1.dat +1952 -0
  118. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests10.dat +799 -0
  119. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests11.dat +482 -0
  120. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests12.dat +62 -0
  121. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests14.dat +74 -0
  122. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests15.dat +208 -0
  123. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests16.dat +2299 -0
  124. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests17.dat +153 -0
  125. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests18.dat +269 -0
  126. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests19.dat +1237 -0
  127. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests2.dat +763 -0
  128. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests20.dat +455 -0
  129. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests21.dat +221 -0
  130. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests22.dat +157 -0
  131. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests23.dat +155 -0
  132. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests24.dat +79 -0
  133. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests25.dat +219 -0
  134. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests26.dat +313 -0
  135. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests3.dat +305 -0
  136. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests4.dat +59 -0
  137. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests5.dat +191 -0
  138. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests6.dat +663 -0
  139. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests7.dat +390 -0
  140. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests8.dat +148 -0
  141. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests9.dat +457 -0
  142. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests_innerHTML_1.dat +741 -0
  143. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tricky01.dat +261 -0
  144. data/ext/vendor/golang.org/x/net/html/testdata/webkit/webkit01.dat +610 -0
  145. data/ext/vendor/golang.org/x/net/html/testdata/webkit/webkit02.dat +159 -0
  146. data/ext/vendor/golang.org/x/net/html/token.go +1219 -0
  147. data/ext/vendor/golang.org/x/net/html/token_test.go +748 -0
  148. data/ext/vendor/golang.org/x/net/http2/Dockerfile +51 -0
  149. data/ext/vendor/golang.org/x/net/http2/Makefile +3 -0
  150. data/ext/vendor/golang.org/x/net/http2/README +20 -0
  151. data/ext/vendor/golang.org/x/net/http2/ciphers.go +641 -0
  152. data/ext/vendor/golang.org/x/net/http2/ciphers_test.go +309 -0
  153. data/ext/vendor/golang.org/x/net/http2/client_conn_pool.go +256 -0
  154. data/ext/vendor/golang.org/x/net/http2/configure_transport.go +80 -0
  155. data/ext/vendor/golang.org/x/net/http2/databuffer.go +146 -0
  156. data/ext/vendor/golang.org/x/net/http2/databuffer_test.go +157 -0
  157. data/ext/vendor/golang.org/x/net/http2/errors.go +133 -0
  158. data/ext/vendor/golang.org/x/net/http2/errors_test.go +24 -0
  159. data/ext/vendor/golang.org/x/net/http2/flow.go +50 -0
  160. data/ext/vendor/golang.org/x/net/http2/flow_test.go +53 -0
  161. data/ext/vendor/golang.org/x/net/http2/frame.go +1579 -0
  162. data/ext/vendor/golang.org/x/net/http2/frame_test.go +1191 -0
  163. data/ext/vendor/golang.org/x/net/http2/go16.go +16 -0
  164. data/ext/vendor/golang.org/x/net/http2/go17.go +106 -0
  165. data/ext/vendor/golang.org/x/net/http2/go17_not18.go +36 -0
  166. data/ext/vendor/golang.org/x/net/http2/go18.go +56 -0
  167. data/ext/vendor/golang.org/x/net/http2/go18_test.go +79 -0
  168. data/ext/vendor/golang.org/x/net/http2/go19.go +16 -0
  169. data/ext/vendor/golang.org/x/net/http2/go19_test.go +60 -0
  170. data/ext/vendor/golang.org/x/net/http2/gotrack.go +170 -0
  171. data/ext/vendor/golang.org/x/net/http2/gotrack_test.go +33 -0
  172. data/ext/vendor/golang.org/x/net/http2/h2demo/Makefile +8 -0
  173. data/ext/vendor/golang.org/x/net/http2/h2demo/README +16 -0
  174. data/ext/vendor/golang.org/x/net/http2/h2demo/h2demo.go +538 -0
  175. data/ext/vendor/golang.org/x/net/http2/h2demo/launch.go +302 -0
  176. data/ext/vendor/golang.org/x/net/http2/h2demo/rootCA.key +27 -0
  177. data/ext/vendor/golang.org/x/net/http2/h2demo/rootCA.pem +26 -0
  178. data/ext/vendor/golang.org/x/net/http2/h2demo/rootCA.srl +1 -0
  179. data/ext/vendor/golang.org/x/net/http2/h2demo/server.crt +20 -0
  180. data/ext/vendor/golang.org/x/net/http2/h2demo/server.key +27 -0
  181. data/ext/vendor/golang.org/x/net/http2/h2demo/tmpl.go +1991 -0
  182. data/ext/vendor/golang.org/x/net/http2/h2i/README.md +97 -0
  183. data/ext/vendor/golang.org/x/net/http2/h2i/h2i.go +522 -0
  184. data/ext/vendor/golang.org/x/net/http2/headermap.go +78 -0
  185. data/ext/vendor/golang.org/x/net/http2/hpack/encode.go +240 -0
  186. data/ext/vendor/golang.org/x/net/http2/hpack/encode_test.go +386 -0
  187. data/ext/vendor/golang.org/x/net/http2/hpack/hpack.go +490 -0
  188. data/ext/vendor/golang.org/x/net/http2/hpack/hpack_test.go +722 -0
  189. data/ext/vendor/golang.org/x/net/http2/hpack/huffman.go +212 -0
  190. data/ext/vendor/golang.org/x/net/http2/hpack/tables.go +479 -0
  191. data/ext/vendor/golang.org/x/net/http2/hpack/tables_test.go +214 -0
  192. data/ext/vendor/golang.org/x/net/http2/http2.go +391 -0
  193. data/ext/vendor/golang.org/x/net/http2/http2_test.go +199 -0
  194. data/ext/vendor/golang.org/x/net/http2/not_go16.go +21 -0
  195. data/ext/vendor/golang.org/x/net/http2/not_go17.go +87 -0
  196. data/ext/vendor/golang.org/x/net/http2/not_go18.go +29 -0
  197. data/ext/vendor/golang.org/x/net/http2/not_go19.go +16 -0
  198. data/ext/vendor/golang.org/x/net/http2/pipe.go +163 -0
  199. data/ext/vendor/golang.org/x/net/http2/pipe_test.go +130 -0
  200. data/ext/vendor/golang.org/x/net/http2/server.go +2857 -0
  201. data/ext/vendor/golang.org/x/net/http2/server_push_test.go +521 -0
  202. data/ext/vendor/golang.org/x/net/http2/server_test.go +3721 -0
  203. data/ext/vendor/golang.org/x/net/http2/testdata/draft-ietf-httpbis-http2.xml +5021 -0
  204. data/ext/vendor/golang.org/x/net/http2/transport.go +2285 -0
  205. data/ext/vendor/golang.org/x/net/http2/transport_test.go +3714 -0
  206. data/ext/vendor/golang.org/x/net/http2/write.go +370 -0
  207. data/ext/vendor/golang.org/x/net/http2/writesched.go +242 -0
  208. data/ext/vendor/golang.org/x/net/http2/writesched_priority.go +452 -0
  209. data/ext/vendor/golang.org/x/net/http2/writesched_priority_test.go +541 -0
  210. data/ext/vendor/golang.org/x/net/http2/writesched_random.go +72 -0
  211. data/ext/vendor/golang.org/x/net/http2/writesched_random_test.go +44 -0
  212. data/ext/vendor/golang.org/x/net/http2/writesched_test.go +125 -0
  213. data/ext/vendor/golang.org/x/net/http2/z_spec_test.go +356 -0
  214. data/ext/vendor/golang.org/x/net/icmp/dstunreach.go +41 -0
  215. data/ext/vendor/golang.org/x/net/icmp/echo.go +45 -0
  216. data/ext/vendor/golang.org/x/net/icmp/endpoint.go +113 -0
  217. data/ext/vendor/golang.org/x/net/icmp/example_test.go +63 -0
  218. data/ext/vendor/golang.org/x/net/icmp/extension.go +89 -0
  219. data/ext/vendor/golang.org/x/net/icmp/extension_test.go +259 -0
  220. data/ext/vendor/golang.org/x/net/icmp/helper_posix.go +75 -0
  221. data/ext/vendor/golang.org/x/net/icmp/interface.go +236 -0
  222. data/ext/vendor/golang.org/x/net/icmp/ipv4.go +61 -0
  223. data/ext/vendor/golang.org/x/net/icmp/ipv4_test.go +83 -0
  224. data/ext/vendor/golang.org/x/net/icmp/ipv6.go +23 -0
  225. data/ext/vendor/golang.org/x/net/icmp/listen_posix.go +100 -0
  226. data/ext/vendor/golang.org/x/net/icmp/listen_stub.go +33 -0
  227. data/ext/vendor/golang.org/x/net/icmp/message.go +152 -0
  228. data/ext/vendor/golang.org/x/net/icmp/message_test.go +134 -0
  229. data/ext/vendor/golang.org/x/net/icmp/messagebody.go +41 -0
  230. data/ext/vendor/golang.org/x/net/icmp/mpls.go +77 -0
  231. data/ext/vendor/golang.org/x/net/icmp/multipart.go +109 -0
  232. data/ext/vendor/golang.org/x/net/icmp/multipart_test.go +442 -0
  233. data/ext/vendor/golang.org/x/net/icmp/packettoobig.go +43 -0
  234. data/ext/vendor/golang.org/x/net/icmp/paramprob.go +63 -0
  235. data/ext/vendor/golang.org/x/net/icmp/ping_test.go +200 -0
  236. data/ext/vendor/golang.org/x/net/icmp/sys_freebsd.go +11 -0
  237. data/ext/vendor/golang.org/x/net/icmp/timeexceeded.go +39 -0
  238. data/ext/vendor/golang.org/x/net/idna/example_test.go +70 -0
  239. data/ext/vendor/golang.org/x/net/idna/idna.go +680 -0
  240. data/ext/vendor/golang.org/x/net/idna/idna_test.go +108 -0
  241. data/ext/vendor/golang.org/x/net/idna/punycode.go +203 -0
  242. data/ext/vendor/golang.org/x/net/idna/punycode_test.go +198 -0
  243. data/ext/vendor/golang.org/x/net/idna/tables.go +4477 -0
  244. data/ext/vendor/golang.org/x/net/idna/trie.go +72 -0
  245. data/ext/vendor/golang.org/x/net/idna/trieval.go +114 -0
  246. data/ext/vendor/golang.org/x/net/internal/iana/const.go +180 -0
  247. data/ext/vendor/golang.org/x/net/internal/iana/gen.go +293 -0
  248. data/ext/vendor/golang.org/x/net/internal/nettest/helper_bsd.go +53 -0
  249. data/ext/vendor/golang.org/x/net/internal/nettest/helper_nobsd.go +15 -0
  250. data/ext/vendor/golang.org/x/net/internal/nettest/helper_posix.go +31 -0
  251. data/ext/vendor/golang.org/x/net/internal/nettest/helper_stub.go +32 -0
  252. data/ext/vendor/golang.org/x/net/internal/nettest/helper_unix.go +29 -0
  253. data/ext/vendor/golang.org/x/net/internal/nettest/helper_windows.go +42 -0
  254. data/ext/vendor/golang.org/x/net/internal/nettest/interface.go +94 -0
  255. data/ext/vendor/golang.org/x/net/internal/nettest/rlimit.go +11 -0
  256. data/ext/vendor/golang.org/x/net/internal/nettest/stack.go +147 -0
  257. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr.go +11 -0
  258. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go +13 -0
  259. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go +14 -0
  260. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go +14 -0
  261. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go +14 -0
  262. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go +17 -0
  263. data/ext/vendor/golang.org/x/net/internal/socket/defs_darwin.go +44 -0
  264. data/ext/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go +44 -0
  265. data/ext/vendor/golang.org/x/net/internal/socket/defs_freebsd.go +44 -0
  266. data/ext/vendor/golang.org/x/net/internal/socket/defs_linux.go +49 -0
  267. data/ext/vendor/golang.org/x/net/internal/socket/defs_netbsd.go +47 -0
  268. data/ext/vendor/golang.org/x/net/internal/socket/defs_openbsd.go +44 -0
  269. data/ext/vendor/golang.org/x/net/internal/socket/defs_solaris.go +44 -0
  270. data/ext/vendor/golang.org/x/net/internal/socket/error_unix.go +31 -0
  271. data/ext/vendor/golang.org/x/net/internal/socket/error_windows.go +26 -0
  272. data/ext/vendor/golang.org/x/net/internal/socket/iovec_32bit.go +19 -0
  273. data/ext/vendor/golang.org/x/net/internal/socket/iovec_64bit.go +19 -0
  274. data/ext/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go +19 -0
  275. data/ext/vendor/golang.org/x/net/internal/socket/iovec_stub.go +11 -0
  276. data/ext/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go +21 -0
  277. data/ext/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go +42 -0
  278. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go +39 -0
  279. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go +16 -0
  280. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_linux.go +36 -0
  281. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go +24 -0
  282. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go +24 -0
  283. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go +14 -0
  284. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go +36 -0
  285. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_stub.go +14 -0
  286. data/ext/vendor/golang.org/x/net/internal/socket/rawconn.go +66 -0
  287. data/ext/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go +74 -0
  288. data/ext/vendor/golang.org/x/net/internal/socket/rawconn_msg.go +77 -0
  289. data/ext/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go +18 -0
  290. data/ext/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go +18 -0
  291. data/ext/vendor/golang.org/x/net/internal/socket/rawconn_stub.go +25 -0
  292. data/ext/vendor/golang.org/x/net/internal/socket/reflect.go +62 -0
  293. data/ext/vendor/golang.org/x/net/internal/socket/socket.go +285 -0
  294. data/ext/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go +259 -0
  295. data/ext/vendor/golang.org/x/net/internal/socket/socket_test.go +46 -0
  296. data/ext/vendor/golang.org/x/net/internal/socket/sys.go +33 -0
  297. data/ext/vendor/golang.org/x/net/internal/socket/sys_bsd.go +17 -0
  298. data/ext/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go +14 -0
  299. data/ext/vendor/golang.org/x/net/internal/socket/sys_darwin.go +7 -0
  300. data/ext/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go +7 -0
  301. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux.go +27 -0
  302. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_386.go +55 -0
  303. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_386.s +11 -0
  304. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go +10 -0
  305. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go +10 -0
  306. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go +10 -0
  307. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go +10 -0
  308. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go +10 -0
  309. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go +10 -0
  310. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go +10 -0
  311. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go +10 -0
  312. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go +10 -0
  313. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go +55 -0
  314. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s +11 -0
  315. data/ext/vendor/golang.org/x/net/internal/socket/sys_netbsd.go +25 -0
  316. data/ext/vendor/golang.org/x/net/internal/socket/sys_posix.go +168 -0
  317. data/ext/vendor/golang.org/x/net/internal/socket/sys_solaris.go +71 -0
  318. data/ext/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s +11 -0
  319. data/ext/vendor/golang.org/x/net/internal/socket/sys_stub.go +64 -0
  320. data/ext/vendor/golang.org/x/net/internal/socket/sys_unix.go +33 -0
  321. data/ext/vendor/golang.org/x/net/internal/socket/sys_windows.go +70 -0
  322. data/ext/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go +59 -0
  323. data/ext/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go +61 -0
  324. data/ext/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go +59 -0
  325. data/ext/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go +61 -0
  326. data/ext/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go +59 -0
  327. data/ext/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go +61 -0
  328. data/ext/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go +59 -0
  329. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go +63 -0
  330. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go +66 -0
  331. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go +63 -0
  332. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go +66 -0
  333. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go +63 -0
  334. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go +66 -0
  335. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go +66 -0
  336. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go +63 -0
  337. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go +66 -0
  338. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go +66 -0
  339. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go +66 -0
  340. data/ext/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go +65 -0
  341. data/ext/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go +68 -0
  342. data/ext/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go +59 -0
  343. data/ext/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go +59 -0
  344. data/ext/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go +61 -0
  345. data/ext/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go +59 -0
  346. data/ext/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go +60 -0
  347. data/ext/vendor/golang.org/x/net/internal/timeseries/timeseries.go +525 -0
  348. data/ext/vendor/golang.org/x/net/internal/timeseries/timeseries_test.go +170 -0
  349. data/ext/vendor/golang.org/x/net/ipv4/batch.go +191 -0
  350. data/ext/vendor/golang.org/x/net/ipv4/bpf_test.go +93 -0
  351. data/ext/vendor/golang.org/x/net/ipv4/control.go +144 -0
  352. data/ext/vendor/golang.org/x/net/ipv4/control_bsd.go +40 -0
  353. data/ext/vendor/golang.org/x/net/ipv4/control_pktinfo.go +39 -0
  354. data/ext/vendor/golang.org/x/net/ipv4/control_stub.go +13 -0
  355. data/ext/vendor/golang.org/x/net/ipv4/control_test.go +21 -0
  356. data/ext/vendor/golang.org/x/net/ipv4/control_unix.go +73 -0
  357. data/ext/vendor/golang.org/x/net/ipv4/control_windows.go +16 -0
  358. data/ext/vendor/golang.org/x/net/ipv4/defs_darwin.go +77 -0
  359. data/ext/vendor/golang.org/x/net/ipv4/defs_dragonfly.go +38 -0
  360. data/ext/vendor/golang.org/x/net/ipv4/defs_freebsd.go +75 -0
  361. data/ext/vendor/golang.org/x/net/ipv4/defs_linux.go +122 -0
  362. data/ext/vendor/golang.org/x/net/ipv4/defs_netbsd.go +37 -0
  363. data/ext/vendor/golang.org/x/net/ipv4/defs_openbsd.go +37 -0
  364. data/ext/vendor/golang.org/x/net/ipv4/defs_solaris.go +84 -0
  365. data/ext/vendor/golang.org/x/net/ipv4/dgramopt.go +265 -0
  366. data/ext/vendor/golang.org/x/net/ipv4/doc.go +244 -0
  367. data/ext/vendor/golang.org/x/net/ipv4/endpoint.go +187 -0
  368. data/ext/vendor/golang.org/x/net/ipv4/example_test.go +224 -0
  369. data/ext/vendor/golang.org/x/net/ipv4/gen.go +199 -0
  370. data/ext/vendor/golang.org/x/net/ipv4/genericopt.go +57 -0
  371. data/ext/vendor/golang.org/x/net/ipv4/header.go +159 -0
  372. data/ext/vendor/golang.org/x/net/ipv4/header_test.go +228 -0
  373. data/ext/vendor/golang.org/x/net/ipv4/helper.go +63 -0
  374. data/ext/vendor/golang.org/x/net/ipv4/iana.go +34 -0
  375. data/ext/vendor/golang.org/x/net/ipv4/icmp.go +57 -0
  376. data/ext/vendor/golang.org/x/net/ipv4/icmp_linux.go +25 -0
  377. data/ext/vendor/golang.org/x/net/ipv4/icmp_stub.go +25 -0
  378. data/ext/vendor/golang.org/x/net/ipv4/icmp_test.go +95 -0
  379. data/ext/vendor/golang.org/x/net/ipv4/multicast_test.go +334 -0
  380. data/ext/vendor/golang.org/x/net/ipv4/multicastlistener_test.go +265 -0
  381. data/ext/vendor/golang.org/x/net/ipv4/multicastsockopt_test.go +195 -0
  382. data/ext/vendor/golang.org/x/net/ipv4/packet.go +69 -0
  383. data/ext/vendor/golang.org/x/net/ipv4/packet_go1_8.go +56 -0
  384. data/ext/vendor/golang.org/x/net/ipv4/packet_go1_9.go +67 -0
  385. data/ext/vendor/golang.org/x/net/ipv4/payload.go +23 -0
  386. data/ext/vendor/golang.org/x/net/ipv4/payload_cmsg.go +36 -0
  387. data/ext/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go +59 -0
  388. data/ext/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go +67 -0
  389. data/ext/vendor/golang.org/x/net/ipv4/payload_nocmsg.go +42 -0
  390. data/ext/vendor/golang.org/x/net/ipv4/readwrite_go1_8_test.go +248 -0
  391. data/ext/vendor/golang.org/x/net/ipv4/readwrite_go1_9_test.go +388 -0
  392. data/ext/vendor/golang.org/x/net/ipv4/readwrite_test.go +140 -0
  393. data/ext/vendor/golang.org/x/net/ipv4/sockopt.go +44 -0
  394. data/ext/vendor/golang.org/x/net/ipv4/sockopt_posix.go +71 -0
  395. data/ext/vendor/golang.org/x/net/ipv4/sockopt_stub.go +42 -0
  396. data/ext/vendor/golang.org/x/net/ipv4/sys_asmreq.go +119 -0
  397. data/ext/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go +25 -0
  398. data/ext/vendor/golang.org/x/net/ipv4/sys_asmreqn.go +42 -0
  399. data/ext/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go +21 -0
  400. data/ext/vendor/golang.org/x/net/ipv4/sys_bpf.go +23 -0
  401. data/ext/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go +16 -0
  402. data/ext/vendor/golang.org/x/net/ipv4/sys_bsd.go +37 -0
  403. data/ext/vendor/golang.org/x/net/ipv4/sys_darwin.go +93 -0
  404. data/ext/vendor/golang.org/x/net/ipv4/sys_dragonfly.go +35 -0
  405. data/ext/vendor/golang.org/x/net/ipv4/sys_freebsd.go +76 -0
  406. data/ext/vendor/golang.org/x/net/ipv4/sys_linux.go +59 -0
  407. data/ext/vendor/golang.org/x/net/ipv4/sys_solaris.go +57 -0
  408. data/ext/vendor/golang.org/x/net/ipv4/sys_ssmreq.go +54 -0
  409. data/ext/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go +21 -0
  410. data/ext/vendor/golang.org/x/net/ipv4/sys_stub.go +13 -0
  411. data/ext/vendor/golang.org/x/net/ipv4/sys_windows.go +67 -0
  412. data/ext/vendor/golang.org/x/net/ipv4/unicast_test.go +247 -0
  413. data/ext/vendor/golang.org/x/net/ipv4/unicastsockopt_test.go +148 -0
  414. data/ext/vendor/golang.org/x/net/ipv4/zsys_darwin.go +99 -0
  415. data/ext/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go +31 -0
  416. data/ext/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go +93 -0
  417. data/ext/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go +95 -0
  418. data/ext/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go +95 -0
  419. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_386.go +148 -0
  420. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go +150 -0
  421. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go +148 -0
  422. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go +150 -0
  423. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go +148 -0
  424. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go +150 -0
  425. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go +150 -0
  426. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go +148 -0
  427. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go +148 -0
  428. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go +150 -0
  429. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go +150 -0
  430. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go +150 -0
  431. data/ext/vendor/golang.org/x/net/ipv4/zsys_netbsd.go +30 -0
  432. data/ext/vendor/golang.org/x/net/ipv4/zsys_openbsd.go +30 -0
  433. data/ext/vendor/golang.org/x/net/ipv4/zsys_solaris.go +100 -0
  434. data/ext/vendor/golang.org/x/net/ipv6/batch.go +119 -0
  435. data/ext/vendor/golang.org/x/net/ipv6/bpf_test.go +96 -0
  436. data/ext/vendor/golang.org/x/net/ipv6/control.go +187 -0
  437. data/ext/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go +48 -0
  438. data/ext/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go +94 -0
  439. data/ext/vendor/golang.org/x/net/ipv6/control_stub.go +13 -0
  440. data/ext/vendor/golang.org/x/net/ipv6/control_test.go +21 -0
  441. data/ext/vendor/golang.org/x/net/ipv6/control_unix.go +55 -0
  442. data/ext/vendor/golang.org/x/net/ipv6/control_windows.go +16 -0
  443. data/ext/vendor/golang.org/x/net/ipv6/defs_darwin.go +112 -0
  444. data/ext/vendor/golang.org/x/net/ipv6/defs_dragonfly.go +84 -0
  445. data/ext/vendor/golang.org/x/net/ipv6/defs_freebsd.go +105 -0
  446. data/ext/vendor/golang.org/x/net/ipv6/defs_linux.go +147 -0
  447. data/ext/vendor/golang.org/x/net/ipv6/defs_netbsd.go +80 -0
  448. data/ext/vendor/golang.org/x/net/ipv6/defs_openbsd.go +89 -0
  449. data/ext/vendor/golang.org/x/net/ipv6/defs_solaris.go +114 -0
  450. data/ext/vendor/golang.org/x/net/ipv6/dgramopt.go +302 -0
  451. data/ext/vendor/golang.org/x/net/ipv6/doc.go +243 -0
  452. data/ext/vendor/golang.org/x/net/ipv6/endpoint.go +128 -0
  453. data/ext/vendor/golang.org/x/net/ipv6/example_test.go +216 -0
  454. data/ext/vendor/golang.org/x/net/ipv6/gen.go +199 -0
  455. data/ext/vendor/golang.org/x/net/ipv6/genericopt.go +58 -0
  456. data/ext/vendor/golang.org/x/net/ipv6/header.go +55 -0
  457. data/ext/vendor/golang.org/x/net/ipv6/header_test.go +55 -0
  458. data/ext/vendor/golang.org/x/net/ipv6/helper.go +57 -0
  459. data/ext/vendor/golang.org/x/net/ipv6/iana.go +82 -0
  460. data/ext/vendor/golang.org/x/net/ipv6/icmp.go +60 -0
  461. data/ext/vendor/golang.org/x/net/ipv6/icmp_bsd.go +29 -0
  462. data/ext/vendor/golang.org/x/net/ipv6/icmp_linux.go +27 -0
  463. data/ext/vendor/golang.org/x/net/ipv6/icmp_solaris.go +27 -0
  464. data/ext/vendor/golang.org/x/net/ipv6/icmp_stub.go +23 -0
  465. data/ext/vendor/golang.org/x/net/ipv6/icmp_test.go +96 -0
  466. data/ext/vendor/golang.org/x/net/ipv6/icmp_windows.go +22 -0
  467. data/ext/vendor/golang.org/x/net/ipv6/mocktransponder_test.go +32 -0
  468. data/ext/vendor/golang.org/x/net/ipv6/multicast_test.go +264 -0
  469. data/ext/vendor/golang.org/x/net/ipv6/multicastlistener_test.go +261 -0
  470. data/ext/vendor/golang.org/x/net/ipv6/multicastsockopt_test.go +157 -0
  471. data/ext/vendor/golang.org/x/net/ipv6/payload.go +23 -0
  472. data/ext/vendor/golang.org/x/net/ipv6/payload_cmsg.go +35 -0
  473. data/ext/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go +55 -0
  474. data/ext/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go +57 -0
  475. data/ext/vendor/golang.org/x/net/ipv6/payload_nocmsg.go +41 -0
  476. data/ext/vendor/golang.org/x/net/ipv6/readwrite_go1_8_test.go +242 -0
  477. data/ext/vendor/golang.org/x/net/ipv6/readwrite_go1_9_test.go +373 -0
  478. data/ext/vendor/golang.org/x/net/ipv6/readwrite_test.go +148 -0
  479. data/ext/vendor/golang.org/x/net/ipv6/sockopt.go +43 -0
  480. data/ext/vendor/golang.org/x/net/ipv6/sockopt_posix.go +87 -0
  481. data/ext/vendor/golang.org/x/net/ipv6/sockopt_stub.go +46 -0
  482. data/ext/vendor/golang.org/x/net/ipv6/sockopt_test.go +133 -0
  483. data/ext/vendor/golang.org/x/net/ipv6/sys_asmreq.go +24 -0
  484. data/ext/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go +17 -0
  485. data/ext/vendor/golang.org/x/net/ipv6/sys_bpf.go +23 -0
  486. data/ext/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go +16 -0
  487. data/ext/vendor/golang.org/x/net/ipv6/sys_bsd.go +57 -0
  488. data/ext/vendor/golang.org/x/net/ipv6/sys_darwin.go +106 -0
  489. data/ext/vendor/golang.org/x/net/ipv6/sys_freebsd.go +92 -0
  490. data/ext/vendor/golang.org/x/net/ipv6/sys_linux.go +74 -0
  491. data/ext/vendor/golang.org/x/net/ipv6/sys_solaris.go +74 -0
  492. data/ext/vendor/golang.org/x/net/ipv6/sys_ssmreq.go +54 -0
  493. data/ext/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go +21 -0
  494. data/ext/vendor/golang.org/x/net/ipv6/sys_stub.go +13 -0
  495. data/ext/vendor/golang.org/x/net/ipv6/sys_windows.go +75 -0
  496. data/ext/vendor/golang.org/x/net/ipv6/unicast_test.go +184 -0
  497. data/ext/vendor/golang.org/x/net/ipv6/unicastsockopt_test.go +120 -0
  498. data/ext/vendor/golang.org/x/net/ipv6/zsys_darwin.go +131 -0
  499. data/ext/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go +88 -0
  500. data/ext/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go +122 -0
  501. data/ext/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go +124 -0
  502. data/ext/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go +124 -0
  503. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_386.go +170 -0
  504. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go +172 -0
  505. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go +170 -0
  506. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go +172 -0
  507. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go +170 -0
  508. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go +172 -0
  509. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go +172 -0
  510. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go +170 -0
  511. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go +170 -0
  512. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go +172 -0
  513. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go +172 -0
  514. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go +172 -0
  515. data/ext/vendor/golang.org/x/net/ipv6/zsys_netbsd.go +84 -0
  516. data/ext/vendor/golang.org/x/net/ipv6/zsys_openbsd.go +93 -0
  517. data/ext/vendor/golang.org/x/net/ipv6/zsys_solaris.go +131 -0
  518. data/ext/vendor/golang.org/x/net/lex/httplex/httplex.go +351 -0
  519. data/ext/vendor/golang.org/x/net/lex/httplex/httplex_test.go +119 -0
  520. data/ext/vendor/golang.org/x/net/lif/address.go +105 -0
  521. data/ext/vendor/golang.org/x/net/lif/address_test.go +123 -0
  522. data/ext/vendor/golang.org/x/net/lif/binary.go +115 -0
  523. data/ext/vendor/golang.org/x/net/lif/defs_solaris.go +90 -0
  524. data/ext/vendor/golang.org/x/net/lif/lif.go +43 -0
  525. data/ext/vendor/golang.org/x/net/lif/link.go +126 -0
  526. data/ext/vendor/golang.org/x/net/lif/link_test.go +63 -0
  527. data/ext/vendor/golang.org/x/net/lif/sys.go +21 -0
  528. data/ext/vendor/golang.org/x/net/lif/sys_solaris_amd64.s +8 -0
  529. data/ext/vendor/golang.org/x/net/lif/syscall.go +28 -0
  530. data/ext/vendor/golang.org/x/net/lif/zsys_solaris_amd64.go +103 -0
  531. data/ext/vendor/golang.org/x/net/nettest/conntest.go +456 -0
  532. data/ext/vendor/golang.org/x/net/nettest/conntest_go16.go +24 -0
  533. data/ext/vendor/golang.org/x/net/nettest/conntest_go17.go +24 -0
  534. data/ext/vendor/golang.org/x/net/nettest/conntest_test.go +76 -0
  535. data/ext/vendor/golang.org/x/net/netutil/listen.go +48 -0
  536. data/ext/vendor/golang.org/x/net/netutil/listen_test.go +101 -0
  537. data/ext/vendor/golang.org/x/net/proxy/direct.go +18 -0
  538. data/ext/vendor/golang.org/x/net/proxy/per_host.go +140 -0
  539. data/ext/vendor/golang.org/x/net/proxy/per_host_test.go +55 -0
  540. data/ext/vendor/golang.org/x/net/proxy/proxy.go +134 -0
  541. data/ext/vendor/golang.org/x/net/proxy/proxy_test.go +215 -0
  542. data/ext/vendor/golang.org/x/net/proxy/socks5.go +214 -0
  543. data/ext/vendor/golang.org/x/net/publicsuffix/gen.go +713 -0
  544. data/ext/vendor/golang.org/x/net/publicsuffix/list.go +135 -0
  545. data/ext/vendor/golang.org/x/net/publicsuffix/list_test.go +416 -0
  546. data/ext/vendor/golang.org/x/net/publicsuffix/table.go +9419 -0
  547. data/ext/vendor/golang.org/x/net/publicsuffix/table_test.go +16756 -0
  548. data/ext/vendor/golang.org/x/net/route/address.go +425 -0
  549. data/ext/vendor/golang.org/x/net/route/address_darwin_test.go +63 -0
  550. data/ext/vendor/golang.org/x/net/route/address_test.go +103 -0
  551. data/ext/vendor/golang.org/x/net/route/binary.go +90 -0
  552. data/ext/vendor/golang.org/x/net/route/defs_darwin.go +114 -0
  553. data/ext/vendor/golang.org/x/net/route/defs_dragonfly.go +113 -0
  554. data/ext/vendor/golang.org/x/net/route/defs_freebsd.go +337 -0
  555. data/ext/vendor/golang.org/x/net/route/defs_netbsd.go +112 -0
  556. data/ext/vendor/golang.org/x/net/route/defs_openbsd.go +116 -0
  557. data/ext/vendor/golang.org/x/net/route/interface.go +64 -0
  558. data/ext/vendor/golang.org/x/net/route/interface_announce.go +32 -0
  559. data/ext/vendor/golang.org/x/net/route/interface_classic.go +66 -0
  560. data/ext/vendor/golang.org/x/net/route/interface_freebsd.go +78 -0
  561. data/ext/vendor/golang.org/x/net/route/interface_multicast.go +30 -0
  562. data/ext/vendor/golang.org/x/net/route/interface_openbsd.go +90 -0
  563. data/ext/vendor/golang.org/x/net/route/message.go +72 -0
  564. data/ext/vendor/golang.org/x/net/route/message_darwin_test.go +34 -0
  565. data/ext/vendor/golang.org/x/net/route/message_freebsd_test.go +92 -0
  566. data/ext/vendor/golang.org/x/net/route/message_test.go +239 -0
  567. data/ext/vendor/golang.org/x/net/route/route.go +123 -0
  568. data/ext/vendor/golang.org/x/net/route/route_classic.go +67 -0
  569. data/ext/vendor/golang.org/x/net/route/route_openbsd.go +65 -0
  570. data/ext/vendor/golang.org/x/net/route/route_test.go +390 -0
  571. data/ext/vendor/golang.org/x/net/route/sys.go +39 -0
  572. data/ext/vendor/golang.org/x/net/route/sys_darwin.go +87 -0
  573. data/ext/vendor/golang.org/x/net/route/sys_dragonfly.go +76 -0
  574. data/ext/vendor/golang.org/x/net/route/sys_freebsd.go +155 -0
  575. data/ext/vendor/golang.org/x/net/route/sys_netbsd.go +71 -0
  576. data/ext/vendor/golang.org/x/net/route/sys_openbsd.go +80 -0
  577. data/ext/vendor/golang.org/x/net/route/syscall.go +28 -0
  578. data/ext/vendor/golang.org/x/net/route/zsys_darwin.go +99 -0
  579. data/ext/vendor/golang.org/x/net/route/zsys_dragonfly.go +98 -0
  580. data/ext/vendor/golang.org/x/net/route/zsys_freebsd_386.go +126 -0
  581. data/ext/vendor/golang.org/x/net/route/zsys_freebsd_amd64.go +123 -0
  582. data/ext/vendor/golang.org/x/net/route/zsys_freebsd_arm.go +123 -0
  583. data/ext/vendor/golang.org/x/net/route/zsys_netbsd.go +97 -0
  584. data/ext/vendor/golang.org/x/net/route/zsys_openbsd.go +101 -0
  585. data/ext/vendor/golang.org/x/net/trace/events.go +532 -0
  586. data/ext/vendor/golang.org/x/net/trace/histogram.go +365 -0
  587. data/ext/vendor/golang.org/x/net/trace/histogram_test.go +325 -0
  588. data/ext/vendor/golang.org/x/net/trace/trace.go +1082 -0
  589. data/ext/vendor/golang.org/x/net/trace/trace_go16.go +21 -0
  590. data/ext/vendor/golang.org/x/net/trace/trace_go17.go +21 -0
  591. data/ext/vendor/golang.org/x/net/trace/trace_test.go +178 -0
  592. data/ext/vendor/golang.org/x/net/webdav/file.go +796 -0
  593. data/ext/vendor/golang.org/x/net/webdav/file_go1.6.go +17 -0
  594. data/ext/vendor/golang.org/x/net/webdav/file_go1.7.go +16 -0
  595. data/ext/vendor/golang.org/x/net/webdav/file_test.go +1184 -0
  596. data/ext/vendor/golang.org/x/net/webdav/if.go +173 -0
  597. data/ext/vendor/golang.org/x/net/webdav/if_test.go +322 -0
  598. data/ext/vendor/golang.org/x/net/webdav/internal/xml/README +11 -0
  599. data/ext/vendor/golang.org/x/net/webdav/internal/xml/atom_test.go +56 -0
  600. data/ext/vendor/golang.org/x/net/webdav/internal/xml/example_test.go +151 -0
  601. data/ext/vendor/golang.org/x/net/webdav/internal/xml/marshal.go +1223 -0
  602. data/ext/vendor/golang.org/x/net/webdav/internal/xml/marshal_test.go +1939 -0
  603. data/ext/vendor/golang.org/x/net/webdav/internal/xml/read.go +692 -0
  604. data/ext/vendor/golang.org/x/net/webdav/internal/xml/read_test.go +744 -0
  605. data/ext/vendor/golang.org/x/net/webdav/internal/xml/typeinfo.go +371 -0
  606. data/ext/vendor/golang.org/x/net/webdav/internal/xml/xml.go +1998 -0
  607. data/ext/vendor/golang.org/x/net/webdav/internal/xml/xml_test.go +752 -0
  608. data/ext/vendor/golang.org/x/net/webdav/litmus_test_server.go +94 -0
  609. data/ext/vendor/golang.org/x/net/webdav/lock.go +445 -0
  610. data/ext/vendor/golang.org/x/net/webdav/lock_test.go +731 -0
  611. data/ext/vendor/golang.org/x/net/webdav/prop.go +418 -0
  612. data/ext/vendor/golang.org/x/net/webdav/prop_test.go +613 -0
  613. data/ext/vendor/golang.org/x/net/webdav/webdav.go +702 -0
  614. data/ext/vendor/golang.org/x/net/webdav/webdav_test.go +344 -0
  615. data/ext/vendor/golang.org/x/net/webdav/xml.go +519 -0
  616. data/ext/vendor/golang.org/x/net/webdav/xml_test.go +906 -0
  617. data/ext/vendor/golang.org/x/net/websocket/client.go +106 -0
  618. data/ext/vendor/golang.org/x/net/websocket/dial.go +24 -0
  619. data/ext/vendor/golang.org/x/net/websocket/dial_test.go +43 -0
  620. data/ext/vendor/golang.org/x/net/websocket/exampledial_test.go +31 -0
  621. data/ext/vendor/golang.org/x/net/websocket/examplehandler_test.go +26 -0
  622. data/ext/vendor/golang.org/x/net/websocket/hybi.go +583 -0
  623. data/ext/vendor/golang.org/x/net/websocket/hybi_test.go +608 -0
  624. data/ext/vendor/golang.org/x/net/websocket/server.go +113 -0
  625. data/ext/vendor/golang.org/x/net/websocket/websocket.go +448 -0
  626. data/ext/vendor/golang.org/x/net/websocket/websocket_test.go +665 -0
  627. data/ext/vendor/golang.org/x/net/xsrftoken/xsrf.go +94 -0
  628. data/ext/vendor/golang.org/x/net/xsrftoken/xsrf_test.go +83 -0
  629. data/ext/vendor/golang.org/x/text/AUTHORS +3 -0
  630. data/ext/vendor/golang.org/x/text/CONTRIBUTING.md +31 -0
  631. data/ext/vendor/golang.org/x/text/CONTRIBUTORS +3 -0
  632. data/ext/vendor/golang.org/x/text/LICENSE +27 -0
  633. data/ext/vendor/golang.org/x/text/PATENTS +22 -0
  634. data/ext/vendor/golang.org/x/text/README.md +91 -0
  635. data/ext/vendor/golang.org/x/text/cases/cases.go +162 -0
  636. data/ext/vendor/golang.org/x/text/cases/context.go +376 -0
  637. data/ext/vendor/golang.org/x/text/cases/context_test.go +438 -0
  638. data/ext/vendor/golang.org/x/text/cases/example_test.go +53 -0
  639. data/ext/vendor/golang.org/x/text/cases/fold.go +34 -0
  640. data/ext/vendor/golang.org/x/text/cases/fold_test.go +51 -0
  641. data/ext/vendor/golang.org/x/text/cases/gen.go +839 -0
  642. data/ext/vendor/golang.org/x/text/cases/gen_trieval.go +219 -0
  643. data/ext/vendor/golang.org/x/text/cases/icu.go +61 -0
  644. data/ext/vendor/golang.org/x/text/cases/icu_test.go +210 -0
  645. data/ext/vendor/golang.org/x/text/cases/info.go +82 -0
  646. data/ext/vendor/golang.org/x/text/cases/map.go +816 -0
  647. data/ext/vendor/golang.org/x/text/cases/map_test.go +950 -0
  648. data/ext/vendor/golang.org/x/text/cases/tables.go +2251 -0
  649. data/ext/vendor/golang.org/x/text/cases/tables_test.go +1158 -0
  650. data/ext/vendor/golang.org/x/text/cases/trieval.go +215 -0
  651. data/ext/vendor/golang.org/x/text/cmd/gotext/doc.go +35 -0
  652. data/ext/vendor/golang.org/x/text/cmd/gotext/extract.go +195 -0
  653. data/ext/vendor/golang.org/x/text/cmd/gotext/main.go +356 -0
  654. data/ext/vendor/golang.org/x/text/cmd/gotext/message.go +127 -0
  655. data/ext/vendor/golang.org/x/text/codereview.cfg +1 -0
  656. data/ext/vendor/golang.org/x/text/collate/build/builder.go +702 -0
  657. data/ext/vendor/golang.org/x/text/collate/build/builder_test.go +290 -0
  658. data/ext/vendor/golang.org/x/text/collate/build/colelem.go +294 -0
  659. data/ext/vendor/golang.org/x/text/collate/build/colelem_test.go +215 -0
  660. data/ext/vendor/golang.org/x/text/collate/build/contract.go +309 -0
  661. data/ext/vendor/golang.org/x/text/collate/build/contract_test.go +266 -0
  662. data/ext/vendor/golang.org/x/text/collate/build/order.go +393 -0
  663. data/ext/vendor/golang.org/x/text/collate/build/order_test.go +229 -0
  664. data/ext/vendor/golang.org/x/text/collate/build/table.go +81 -0
  665. data/ext/vendor/golang.org/x/text/collate/build/trie.go +290 -0
  666. data/ext/vendor/golang.org/x/text/collate/build/trie_test.go +107 -0
  667. data/ext/vendor/golang.org/x/text/collate/collate.go +403 -0
  668. data/ext/vendor/golang.org/x/text/collate/collate_test.go +482 -0
  669. data/ext/vendor/golang.org/x/text/collate/export_test.go +51 -0
  670. data/ext/vendor/golang.org/x/text/collate/index.go +32 -0
  671. data/ext/vendor/golang.org/x/text/collate/maketables.go +553 -0
  672. data/ext/vendor/golang.org/x/text/collate/option.go +239 -0
  673. data/ext/vendor/golang.org/x/text/collate/option_test.go +209 -0
  674. data/ext/vendor/golang.org/x/text/collate/reg_test.go +230 -0
  675. data/ext/vendor/golang.org/x/text/collate/sort.go +81 -0
  676. data/ext/vendor/golang.org/x/text/collate/sort_test.go +55 -0
  677. data/ext/vendor/golang.org/x/text/collate/table_test.go +291 -0
  678. data/ext/vendor/golang.org/x/text/collate/tables.go +73789 -0
  679. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/Makefile +7 -0
  680. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/chars.go +1156 -0
  681. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/col.go +97 -0
  682. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/colcmp.go +529 -0
  683. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/darwin.go +111 -0
  684. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/gen.go +183 -0
  685. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/icu.go +209 -0
  686. data/ext/vendor/golang.org/x/text/currency/common.go +66 -0
  687. data/ext/vendor/golang.org/x/text/currency/currency.go +185 -0
  688. data/ext/vendor/golang.org/x/text/currency/currency_test.go +171 -0
  689. data/ext/vendor/golang.org/x/text/currency/example_test.go +27 -0
  690. data/ext/vendor/golang.org/x/text/currency/format.go +215 -0
  691. data/ext/vendor/golang.org/x/text/currency/format_test.go +70 -0
  692. data/ext/vendor/golang.org/x/text/currency/gen.go +400 -0
  693. data/ext/vendor/golang.org/x/text/currency/gen_common.go +70 -0
  694. data/ext/vendor/golang.org/x/text/currency/query.go +152 -0
  695. data/ext/vendor/golang.org/x/text/currency/query_test.go +107 -0
  696. data/ext/vendor/golang.org/x/text/currency/tables.go +2574 -0
  697. data/ext/vendor/golang.org/x/text/currency/tables_test.go +93 -0
  698. data/ext/vendor/golang.org/x/text/doc.go +13 -0
  699. data/ext/vendor/golang.org/x/text/encoding/charmap/charmap.go +249 -0
  700. data/ext/vendor/golang.org/x/text/encoding/charmap/charmap_test.go +258 -0
  701. data/ext/vendor/golang.org/x/text/encoding/charmap/maketables.go +556 -0
  702. data/ext/vendor/golang.org/x/text/encoding/charmap/tables.go +7410 -0
  703. data/ext/vendor/golang.org/x/text/encoding/encoding.go +335 -0
  704. data/ext/vendor/golang.org/x/text/encoding/encoding_test.go +290 -0
  705. data/ext/vendor/golang.org/x/text/encoding/example_test.go +42 -0
  706. data/ext/vendor/golang.org/x/text/encoding/htmlindex/gen.go +173 -0
  707. data/ext/vendor/golang.org/x/text/encoding/htmlindex/htmlindex.go +86 -0
  708. data/ext/vendor/golang.org/x/text/encoding/htmlindex/htmlindex_test.go +144 -0
  709. data/ext/vendor/golang.org/x/text/encoding/htmlindex/map.go +105 -0
  710. data/ext/vendor/golang.org/x/text/encoding/htmlindex/tables.go +352 -0
  711. data/ext/vendor/golang.org/x/text/encoding/ianaindex/example_test.go +27 -0
  712. data/ext/vendor/golang.org/x/text/encoding/ianaindex/gen.go +192 -0
  713. data/ext/vendor/golang.org/x/text/encoding/ianaindex/ianaindex.go +209 -0
  714. data/ext/vendor/golang.org/x/text/encoding/ianaindex/ianaindex_test.go +192 -0
  715. data/ext/vendor/golang.org/x/text/encoding/ianaindex/tables.go +2348 -0
  716. data/ext/vendor/golang.org/x/text/encoding/internal/enctest/enctest.go +180 -0
  717. data/ext/vendor/golang.org/x/text/encoding/internal/identifier/gen.go +137 -0
  718. data/ext/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go +81 -0
  719. data/ext/vendor/golang.org/x/text/encoding/internal/identifier/mib.go +1621 -0
  720. data/ext/vendor/golang.org/x/text/encoding/internal/internal.go +75 -0
  721. data/ext/vendor/golang.org/x/text/encoding/japanese/all.go +12 -0
  722. data/ext/vendor/golang.org/x/text/encoding/japanese/all_test.go +248 -0
  723. data/ext/vendor/golang.org/x/text/encoding/japanese/eucjp.go +225 -0
  724. data/ext/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go +299 -0
  725. data/ext/vendor/golang.org/x/text/encoding/japanese/maketables.go +161 -0
  726. data/ext/vendor/golang.org/x/text/encoding/japanese/shiftjis.go +189 -0
  727. data/ext/vendor/golang.org/x/text/encoding/japanese/tables.go +26971 -0
  728. data/ext/vendor/golang.org/x/text/encoding/korean/all_test.go +94 -0
  729. data/ext/vendor/golang.org/x/text/encoding/korean/euckr.go +177 -0
  730. data/ext/vendor/golang.org/x/text/encoding/korean/maketables.go +143 -0
  731. data/ext/vendor/golang.org/x/text/encoding/korean/tables.go +34152 -0
  732. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/all.go +12 -0
  733. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/all_test.go +143 -0
  734. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go +269 -0
  735. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go +245 -0
  736. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/maketables.go +161 -0
  737. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/tables.go +43999 -0
  738. data/ext/vendor/golang.org/x/text/encoding/testdata/candide-gb18030.txt +510 -0
  739. data/ext/vendor/golang.org/x/text/encoding/testdata/candide-utf-16le.txt +0 -0
  740. data/ext/vendor/golang.org/x/text/encoding/testdata/candide-utf-32be.txt +0 -0
  741. data/ext/vendor/golang.org/x/text/encoding/testdata/candide-utf-8.txt +510 -0
  742. data/ext/vendor/golang.org/x/text/encoding/testdata/candide-windows-1252.txt +510 -0
  743. data/ext/vendor/golang.org/x/text/encoding/testdata/rashomon-euc-jp.txt +178 -0
  744. data/ext/vendor/golang.org/x/text/encoding/testdata/rashomon-iso-2022-jp.txt +178 -0
  745. data/ext/vendor/golang.org/x/text/encoding/testdata/rashomon-shift-jis.txt +178 -0
  746. data/ext/vendor/golang.org/x/text/encoding/testdata/rashomon-utf-8.txt +178 -0
  747. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-hz-gb2312.txt +107 -0
  748. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-utf-8.txt +107 -0
  749. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-gbk.txt +107 -0
  750. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-utf-8.txt +107 -0
  751. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-big5.txt +106 -0
  752. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-utf-8.txt +106 -0
  753. data/ext/vendor/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-euc-kr.txt +175 -0
  754. data/ext/vendor/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-utf-8.txt +175 -0
  755. data/ext/vendor/golang.org/x/text/encoding/traditionalchinese/all_test.go +114 -0
  756. data/ext/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go +199 -0
  757. data/ext/vendor/golang.org/x/text/encoding/traditionalchinese/maketables.go +140 -0
  758. data/ext/vendor/golang.org/x/text/encoding/traditionalchinese/tables.go +37142 -0
  759. data/ext/vendor/golang.org/x/text/encoding/unicode/override.go +82 -0
  760. data/ext/vendor/golang.org/x/text/encoding/unicode/unicode.go +434 -0
  761. data/ext/vendor/golang.org/x/text/encoding/unicode/unicode_test.go +499 -0
  762. data/ext/vendor/golang.org/x/text/encoding/unicode/utf32/utf32.go +296 -0
  763. data/ext/vendor/golang.org/x/text/encoding/unicode/utf32/utf32_test.go +248 -0
  764. data/ext/vendor/golang.org/x/text/feature/plural/common.go +70 -0
  765. data/ext/vendor/golang.org/x/text/feature/plural/data_test.go +190 -0
  766. data/ext/vendor/golang.org/x/text/feature/plural/example_test.go +46 -0
  767. data/ext/vendor/golang.org/x/text/feature/plural/gen.go +513 -0
  768. data/ext/vendor/golang.org/x/text/feature/plural/gen_common.go +74 -0
  769. data/ext/vendor/golang.org/x/text/feature/plural/message.go +244 -0
  770. data/ext/vendor/golang.org/x/text/feature/plural/message_test.go +197 -0
  771. data/ext/vendor/golang.org/x/text/feature/plural/plural.go +258 -0
  772. data/ext/vendor/golang.org/x/text/feature/plural/plural_test.go +216 -0
  773. data/ext/vendor/golang.org/x/text/feature/plural/tables.go +540 -0
  774. data/ext/vendor/golang.org/x/text/gen.go +318 -0
  775. data/ext/vendor/golang.org/x/text/internal/catmsg/catmsg.go +366 -0
  776. data/ext/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go +316 -0
  777. data/ext/vendor/golang.org/x/text/internal/catmsg/codec.go +407 -0
  778. data/ext/vendor/golang.org/x/text/internal/catmsg/varint.go +62 -0
  779. data/ext/vendor/golang.org/x/text/internal/catmsg/varint_test.go +123 -0
  780. data/ext/vendor/golang.org/x/text/internal/colltab/collate_test.go +121 -0
  781. data/ext/vendor/golang.org/x/text/internal/colltab/collelem.go +371 -0
  782. data/ext/vendor/golang.org/x/text/internal/colltab/collelem_test.go +183 -0
  783. data/ext/vendor/golang.org/x/text/internal/colltab/colltab.go +105 -0
  784. data/ext/vendor/golang.org/x/text/internal/colltab/colltab_test.go +64 -0
  785. data/ext/vendor/golang.org/x/text/internal/colltab/contract.go +145 -0
  786. data/ext/vendor/golang.org/x/text/internal/colltab/contract_test.go +131 -0
  787. data/ext/vendor/golang.org/x/text/internal/colltab/iter.go +178 -0
  788. data/ext/vendor/golang.org/x/text/internal/colltab/iter_test.go +63 -0
  789. data/ext/vendor/golang.org/x/text/internal/colltab/numeric.go +236 -0
  790. data/ext/vendor/golang.org/x/text/internal/colltab/numeric_test.go +159 -0
  791. data/ext/vendor/golang.org/x/text/internal/colltab/table.go +275 -0
  792. data/ext/vendor/golang.org/x/text/internal/colltab/trie.go +159 -0
  793. data/ext/vendor/golang.org/x/text/internal/colltab/trie_test.go +106 -0
  794. data/ext/vendor/golang.org/x/text/internal/colltab/weighter.go +31 -0
  795. data/ext/vendor/golang.org/x/text/internal/colltab/weighter_test.go +42 -0
  796. data/ext/vendor/golang.org/x/text/internal/export/README +4 -0
  797. data/ext/vendor/golang.org/x/text/internal/export/idna/common_test.go +55 -0
  798. data/ext/vendor/golang.org/x/text/internal/export/idna/example_test.go +68 -0
  799. data/ext/vendor/golang.org/x/text/internal/export/idna/gen.go +276 -0
  800. data/ext/vendor/golang.org/x/text/internal/export/idna/gen_common.go +59 -0
  801. data/ext/vendor/golang.org/x/text/internal/export/idna/gen_test.go +91 -0
  802. data/ext/vendor/golang.org/x/text/internal/export/idna/gen_trieval.go +123 -0
  803. data/ext/vendor/golang.org/x/text/internal/export/idna/idna.go +717 -0
  804. data/ext/vendor/golang.org/x/text/internal/export/idna/idna_test.go +308 -0
  805. data/ext/vendor/golang.org/x/text/internal/export/idna/punycode.go +201 -0
  806. data/ext/vendor/golang.org/x/text/internal/export/idna/punycode_test.go +198 -0
  807. data/ext/vendor/golang.org/x/text/internal/export/idna/tables.go +4557 -0
  808. data/ext/vendor/golang.org/x/text/internal/export/idna/trie.go +70 -0
  809. data/ext/vendor/golang.org/x/text/internal/export/idna/trieval.go +119 -0
  810. data/ext/vendor/golang.org/x/text/internal/format/format.go +41 -0
  811. data/ext/vendor/golang.org/x/text/internal/gen.go +52 -0
  812. data/ext/vendor/golang.org/x/text/internal/gen/code.go +351 -0
  813. data/ext/vendor/golang.org/x/text/internal/gen/gen.go +281 -0
  814. data/ext/vendor/golang.org/x/text/internal/gen_test.go +38 -0
  815. data/ext/vendor/golang.org/x/text/internal/internal.go +51 -0
  816. data/ext/vendor/golang.org/x/text/internal/internal_test.go +38 -0
  817. data/ext/vendor/golang.org/x/text/internal/match.go +67 -0
  818. data/ext/vendor/golang.org/x/text/internal/match_test.go +56 -0
  819. data/ext/vendor/golang.org/x/text/internal/number/common.go +40 -0
  820. data/ext/vendor/golang.org/x/text/internal/number/decimal.go +498 -0
  821. data/ext/vendor/golang.org/x/text/internal/number/decimal_test.go +329 -0
  822. data/ext/vendor/golang.org/x/text/internal/number/format.go +540 -0
  823. data/ext/vendor/golang.org/x/text/internal/number/format_test.go +522 -0
  824. data/ext/vendor/golang.org/x/text/internal/number/gen.go +458 -0
  825. data/ext/vendor/golang.org/x/text/internal/number/gen_common.go +44 -0
  826. data/ext/vendor/golang.org/x/text/internal/number/number.go +154 -0
  827. data/ext/vendor/golang.org/x/text/internal/number/number_test.go +100 -0
  828. data/ext/vendor/golang.org/x/text/internal/number/pattern.go +485 -0
  829. data/ext/vendor/golang.org/x/text/internal/number/pattern_test.go +438 -0
  830. data/ext/vendor/golang.org/x/text/internal/number/roundingmode_string.go +16 -0
  831. data/ext/vendor/golang.org/x/text/internal/number/tables.go +1154 -0
  832. data/ext/vendor/golang.org/x/text/internal/number/tables_test.go +125 -0
  833. data/ext/vendor/golang.org/x/text/internal/stringset/set.go +86 -0
  834. data/ext/vendor/golang.org/x/text/internal/stringset/set_test.go +53 -0
  835. data/ext/vendor/golang.org/x/text/internal/tables.go +117 -0
  836. data/ext/vendor/golang.org/x/text/internal/tag/tag.go +100 -0
  837. data/ext/vendor/golang.org/x/text/internal/tag/tag_test.go +67 -0
  838. data/ext/vendor/golang.org/x/text/internal/testtext/codesize.go +53 -0
  839. data/ext/vendor/golang.org/x/text/internal/testtext/flag.go +22 -0
  840. data/ext/vendor/golang.org/x/text/internal/testtext/gc.go +14 -0
  841. data/ext/vendor/golang.org/x/text/internal/testtext/gccgo.go +11 -0
  842. data/ext/vendor/golang.org/x/text/internal/testtext/go1_6.go +23 -0
  843. data/ext/vendor/golang.org/x/text/internal/testtext/go1_7.go +17 -0
  844. data/ext/vendor/golang.org/x/text/internal/testtext/text.go +105 -0
  845. data/ext/vendor/golang.org/x/text/internal/triegen/compact.go +58 -0
  846. data/ext/vendor/golang.org/x/text/internal/triegen/data_test.go +875 -0
  847. data/ext/vendor/golang.org/x/text/internal/triegen/example_compact_test.go +71 -0
  848. data/ext/vendor/golang.org/x/text/internal/triegen/example_test.go +148 -0
  849. data/ext/vendor/golang.org/x/text/internal/triegen/gen_test.go +68 -0
  850. data/ext/vendor/golang.org/x/text/internal/triegen/print.go +251 -0
  851. data/ext/vendor/golang.org/x/text/internal/triegen/triegen.go +494 -0
  852. data/ext/vendor/golang.org/x/text/internal/ucd/example_test.go +81 -0
  853. data/ext/vendor/golang.org/x/text/internal/ucd/ucd.go +371 -0
  854. data/ext/vendor/golang.org/x/text/internal/ucd/ucd_test.go +105 -0
  855. data/ext/vendor/golang.org/x/text/internal/utf8internal/utf8internal.go +87 -0
  856. data/ext/vendor/golang.org/x/text/language/Makefile +16 -0
  857. data/ext/vendor/golang.org/x/text/language/common.go +16 -0
  858. data/ext/vendor/golang.org/x/text/language/coverage.go +197 -0
  859. data/ext/vendor/golang.org/x/text/language/coverage_test.go +154 -0
  860. data/ext/vendor/golang.org/x/text/language/display/dict.go +92 -0
  861. data/ext/vendor/golang.org/x/text/language/display/dict_test.go +39 -0
  862. data/ext/vendor/golang.org/x/text/language/display/display.go +420 -0
  863. data/ext/vendor/golang.org/x/text/language/display/display_test.go +705 -0
  864. data/ext/vendor/golang.org/x/text/language/display/examples_test.go +116 -0
  865. data/ext/vendor/golang.org/x/text/language/display/lookup.go +251 -0
  866. data/ext/vendor/golang.org/x/text/language/display/maketables.go +602 -0
  867. data/ext/vendor/golang.org/x/text/language/display/tables.go +50344 -0
  868. data/ext/vendor/golang.org/x/text/language/doc.go +102 -0
  869. data/ext/vendor/golang.org/x/text/language/examples_test.go +413 -0
  870. data/ext/vendor/golang.org/x/text/language/gen.go +1706 -0
  871. data/ext/vendor/golang.org/x/text/language/gen_common.go +20 -0
  872. data/ext/vendor/golang.org/x/text/language/gen_index.go +162 -0
  873. data/ext/vendor/golang.org/x/text/language/go1_1.go +38 -0
  874. data/ext/vendor/golang.org/x/text/language/go1_2.go +11 -0
  875. data/ext/vendor/golang.org/x/text/language/httpexample_test.go +48 -0
  876. data/ext/vendor/golang.org/x/text/language/index.go +769 -0
  877. data/ext/vendor/golang.org/x/text/language/language.go +887 -0
  878. data/ext/vendor/golang.org/x/text/language/language_test.go +878 -0
  879. data/ext/vendor/golang.org/x/text/language/lookup.go +396 -0
  880. data/ext/vendor/golang.org/x/text/language/lookup_test.go +457 -0
  881. data/ext/vendor/golang.org/x/text/language/match.go +933 -0
  882. data/ext/vendor/golang.org/x/text/language/match_test.go +505 -0
  883. data/ext/vendor/golang.org/x/text/language/parse.go +859 -0
  884. data/ext/vendor/golang.org/x/text/language/parse_test.go +517 -0
  885. data/ext/vendor/golang.org/x/text/language/tables.go +3675 -0
  886. data/ext/vendor/golang.org/x/text/language/tags.go +143 -0
  887. data/ext/vendor/golang.org/x/text/language/testdata/CLDRLocaleMatcherTest.txt +389 -0
  888. data/ext/vendor/golang.org/x/text/language/testdata/GoLocaleMatcherTest.txt +226 -0
  889. data/ext/vendor/golang.org/x/text/message/catalog.go +28 -0
  890. data/ext/vendor/golang.org/x/text/message/catalog/catalog.go +292 -0
  891. data/ext/vendor/golang.org/x/text/message/catalog/catalog_test.go +194 -0
  892. data/ext/vendor/golang.org/x/text/message/catalog/dict.go +90 -0
  893. data/ext/vendor/golang.org/x/text/message/doc.go +100 -0
  894. data/ext/vendor/golang.org/x/text/message/examples_test.go +42 -0
  895. data/ext/vendor/golang.org/x/text/message/fmt_test.go +1889 -0
  896. data/ext/vendor/golang.org/x/text/message/format.go +532 -0
  897. data/ext/vendor/golang.org/x/text/message/message.go +169 -0
  898. data/ext/vendor/golang.org/x/text/message/message_test.go +181 -0
  899. data/ext/vendor/golang.org/x/text/message/print.go +1194 -0
  900. data/ext/vendor/golang.org/x/text/number/doc.go +28 -0
  901. data/ext/vendor/golang.org/x/text/number/examples_test.go +28 -0
  902. data/ext/vendor/golang.org/x/text/number/format.go +122 -0
  903. data/ext/vendor/golang.org/x/text/number/format_test.go +107 -0
  904. data/ext/vendor/golang.org/x/text/number/number.go +77 -0
  905. data/ext/vendor/golang.org/x/text/number/number_test.go +190 -0
  906. data/ext/vendor/golang.org/x/text/number/option.go +177 -0
  907. data/ext/vendor/golang.org/x/text/runes/cond.go +187 -0
  908. data/ext/vendor/golang.org/x/text/runes/cond_test.go +282 -0
  909. data/ext/vendor/golang.org/x/text/runes/example_test.go +60 -0
  910. data/ext/vendor/golang.org/x/text/runes/runes.go +355 -0
  911. data/ext/vendor/golang.org/x/text/runes/runes_test.go +664 -0
  912. data/ext/vendor/golang.org/x/text/search/index.go +35 -0
  913. data/ext/vendor/golang.org/x/text/search/pattern.go +155 -0
  914. data/ext/vendor/golang.org/x/text/search/pattern_test.go +357 -0
  915. data/ext/vendor/golang.org/x/text/search/search.go +237 -0
  916. data/ext/vendor/golang.org/x/text/search/tables.go +12448 -0
  917. data/ext/vendor/golang.org/x/text/secure/bidirule/bench_test.go +54 -0
  918. data/ext/vendor/golang.org/x/text/secure/bidirule/bidirule.go +340 -0
  919. data/ext/vendor/golang.org/x/text/secure/bidirule/bidirule_test.go +851 -0
  920. data/ext/vendor/golang.org/x/text/secure/doc.go +6 -0
  921. data/ext/vendor/golang.org/x/text/secure/precis/benchmark_test.go +82 -0
  922. data/ext/vendor/golang.org/x/text/secure/precis/class.go +36 -0
  923. data/ext/vendor/golang.org/x/text/secure/precis/class_test.go +50 -0
  924. data/ext/vendor/golang.org/x/text/secure/precis/context.go +139 -0
  925. data/ext/vendor/golang.org/x/text/secure/precis/doc.go +14 -0
  926. data/ext/vendor/golang.org/x/text/secure/precis/enforce_test.go +396 -0
  927. data/ext/vendor/golang.org/x/text/secure/precis/gen.go +310 -0
  928. data/ext/vendor/golang.org/x/text/secure/precis/gen_trieval.go +68 -0
  929. data/ext/vendor/golang.org/x/text/secure/precis/nickname.go +72 -0
  930. data/ext/vendor/golang.org/x/text/secure/precis/options.go +157 -0
  931. data/ext/vendor/golang.org/x/text/secure/precis/profile.go +402 -0
  932. data/ext/vendor/golang.org/x/text/secure/precis/profile_test.go +149 -0
  933. data/ext/vendor/golang.org/x/text/secure/precis/profiles.go +78 -0
  934. data/ext/vendor/golang.org/x/text/secure/precis/tables.go +3887 -0
  935. data/ext/vendor/golang.org/x/text/secure/precis/tables_test.go +69 -0
  936. data/ext/vendor/golang.org/x/text/secure/precis/transformer.go +32 -0
  937. data/ext/vendor/golang.org/x/text/secure/precis/trieval.go +64 -0
  938. data/ext/vendor/golang.org/x/text/transform/examples_test.go +37 -0
  939. data/ext/vendor/golang.org/x/text/transform/transform.go +705 -0
  940. data/ext/vendor/golang.org/x/text/transform/transform_test.go +1317 -0
  941. data/ext/vendor/golang.org/x/text/unicode/bidi/bidi.go +198 -0
  942. data/ext/vendor/golang.org/x/text/unicode/bidi/bracket.go +335 -0
  943. data/ext/vendor/golang.org/x/text/unicode/bidi/core.go +1058 -0
  944. data/ext/vendor/golang.org/x/text/unicode/bidi/core_test.go +224 -0
  945. data/ext/vendor/golang.org/x/text/unicode/bidi/gen.go +133 -0
  946. data/ext/vendor/golang.org/x/text/unicode/bidi/gen_ranges.go +57 -0
  947. data/ext/vendor/golang.org/x/text/unicode/bidi/gen_trieval.go +64 -0
  948. data/ext/vendor/golang.org/x/text/unicode/bidi/prop.go +206 -0
  949. data/ext/vendor/golang.org/x/text/unicode/bidi/ranges_test.go +53 -0
  950. data/ext/vendor/golang.org/x/text/unicode/bidi/tables.go +1813 -0
  951. data/ext/vendor/golang.org/x/text/unicode/bidi/tables_test.go +82 -0
  952. data/ext/vendor/golang.org/x/text/unicode/bidi/trieval.go +60 -0
  953. data/ext/vendor/golang.org/x/text/unicode/cldr/base.go +100 -0
  954. data/ext/vendor/golang.org/x/text/unicode/cldr/cldr.go +130 -0
  955. data/ext/vendor/golang.org/x/text/unicode/cldr/cldr_test.go +27 -0
  956. data/ext/vendor/golang.org/x/text/unicode/cldr/collate.go +359 -0
  957. data/ext/vendor/golang.org/x/text/unicode/cldr/collate_test.go +275 -0
  958. data/ext/vendor/golang.org/x/text/unicode/cldr/data_test.go +186 -0
  959. data/ext/vendor/golang.org/x/text/unicode/cldr/decode.go +171 -0
  960. data/ext/vendor/golang.org/x/text/unicode/cldr/examples_test.go +21 -0
  961. data/ext/vendor/golang.org/x/text/unicode/cldr/makexml.go +400 -0
  962. data/ext/vendor/golang.org/x/text/unicode/cldr/resolve.go +602 -0
  963. data/ext/vendor/golang.org/x/text/unicode/cldr/resolve_test.go +368 -0
  964. data/ext/vendor/golang.org/x/text/unicode/cldr/slice.go +144 -0
  965. data/ext/vendor/golang.org/x/text/unicode/cldr/slice_test.go +175 -0
  966. data/ext/vendor/golang.org/x/text/unicode/cldr/xml.go +1487 -0
  967. data/ext/vendor/golang.org/x/text/unicode/doc.go +8 -0
  968. data/ext/vendor/golang.org/x/text/unicode/norm/composition.go +508 -0
  969. data/ext/vendor/golang.org/x/text/unicode/norm/composition_test.go +130 -0
  970. data/ext/vendor/golang.org/x/text/unicode/norm/example_iter_test.go +82 -0
  971. data/ext/vendor/golang.org/x/text/unicode/norm/example_test.go +27 -0
  972. data/ext/vendor/golang.org/x/text/unicode/norm/forminfo.go +259 -0
  973. data/ext/vendor/golang.org/x/text/unicode/norm/forminfo_test.go +54 -0
  974. data/ext/vendor/golang.org/x/text/unicode/norm/input.go +109 -0
  975. data/ext/vendor/golang.org/x/text/unicode/norm/iter.go +457 -0
  976. data/ext/vendor/golang.org/x/text/unicode/norm/iter_test.go +98 -0
  977. data/ext/vendor/golang.org/x/text/unicode/norm/maketables.go +976 -0
  978. data/ext/vendor/golang.org/x/text/unicode/norm/norm_test.go +14 -0
  979. data/ext/vendor/golang.org/x/text/unicode/norm/normalize.go +609 -0
  980. data/ext/vendor/golang.org/x/text/unicode/norm/normalize_test.go +1287 -0
  981. data/ext/vendor/golang.org/x/text/unicode/norm/readwriter.go +125 -0
  982. data/ext/vendor/golang.org/x/text/unicode/norm/readwriter_test.go +56 -0
  983. data/ext/vendor/golang.org/x/text/unicode/norm/tables.go +7651 -0
  984. data/ext/vendor/golang.org/x/text/unicode/norm/transform.go +88 -0
  985. data/ext/vendor/golang.org/x/text/unicode/norm/transform_test.go +101 -0
  986. data/ext/vendor/golang.org/x/text/unicode/norm/trie.go +54 -0
  987. data/ext/vendor/golang.org/x/text/unicode/norm/triegen.go +117 -0
  988. data/ext/vendor/golang.org/x/text/unicode/norm/ucd_test.go +275 -0
  989. data/ext/vendor/golang.org/x/text/unicode/rangetable/gen.go +115 -0
  990. data/ext/vendor/golang.org/x/text/unicode/rangetable/merge.go +260 -0
  991. data/ext/vendor/golang.org/x/text/unicode/rangetable/merge_test.go +184 -0
  992. data/ext/vendor/golang.org/x/text/unicode/rangetable/rangetable.go +70 -0
  993. data/ext/vendor/golang.org/x/text/unicode/rangetable/rangetable_test.go +55 -0
  994. data/ext/vendor/golang.org/x/text/unicode/rangetable/tables.go +6376 -0
  995. data/ext/vendor/golang.org/x/text/unicode/runenames/bits.go +59 -0
  996. data/ext/vendor/golang.org/x/text/unicode/runenames/example_test.go +118 -0
  997. data/ext/vendor/golang.org/x/text/unicode/runenames/gen.go +195 -0
  998. data/ext/vendor/golang.org/x/text/unicode/runenames/gen_bits.go +63 -0
  999. data/ext/vendor/golang.org/x/text/unicode/runenames/runenames.go +48 -0
  1000. data/ext/vendor/golang.org/x/text/unicode/runenames/runenames_test.go +46 -0
  1001. data/ext/vendor/golang.org/x/text/unicode/runenames/tables.go +15514 -0
  1002. data/ext/vendor/golang.org/x/text/width/common_test.go +92 -0
  1003. data/ext/vendor/golang.org/x/text/width/example_test.go +52 -0
  1004. data/ext/vendor/golang.org/x/text/width/gen.go +115 -0
  1005. data/ext/vendor/golang.org/x/text/width/gen_common.go +96 -0
  1006. data/ext/vendor/golang.org/x/text/width/gen_trieval.go +34 -0
  1007. data/ext/vendor/golang.org/x/text/width/kind_string.go +16 -0
  1008. data/ext/vendor/golang.org/x/text/width/runes_test.go +461 -0
  1009. data/ext/vendor/golang.org/x/text/width/tables.go +1316 -0
  1010. data/ext/vendor/golang.org/x/text/width/tables_test.go +59 -0
  1011. data/ext/vendor/golang.org/x/text/width/transform.go +239 -0
  1012. data/ext/vendor/golang.org/x/text/width/transform_test.go +701 -0
  1013. data/ext/vendor/golang.org/x/text/width/trieval.go +30 -0
  1014. data/ext/vendor/golang.org/x/text/width/width.go +206 -0
  1015. data/lib/ires/version.rb +1 -1
  1016. data/shared/darwin/ires.so +0 -0
  1017. data/shared/linux/ires.so +0 -0
  1018. metadata +1011 -23
  1019. data/ext/operate/image.go +0 -176
  1020. data/ext/util/uri/uri.go +0 -105
  1021. data/ext/vendor/github.com/satori/go.uuid/README.md +0 -65
  1022. data/ext/vendor/github.com/satori/go.uuid/benchmarks_test.go +0 -121
  1023. data/ext/vendor/github.com/satori/go.uuid/uuid.go +0 -488
  1024. data/ext/vendor/github.com/satori/go.uuid/uuid_test.go +0 -633
@@ -0,0 +1,159 @@
1
+ #data
2
+ <foo bar=qux/>
3
+ #errors
4
+ #document
5
+ | <html>
6
+ | <head>
7
+ | <body>
8
+ | <foo>
9
+ | bar="qux/"
10
+
11
+ #data
12
+ <p id="status"><noscript><strong>A</strong></noscript><span>B</span></p>
13
+ #errors
14
+ #document
15
+ | <html>
16
+ | <head>
17
+ | <body>
18
+ | <p>
19
+ | id="status"
20
+ | <noscript>
21
+ | "<strong>A</strong>"
22
+ | <span>
23
+ | "B"
24
+
25
+ #data
26
+ <div><sarcasm><div></div></sarcasm></div>
27
+ #errors
28
+ #document
29
+ | <html>
30
+ | <head>
31
+ | <body>
32
+ | <div>
33
+ | <sarcasm>
34
+ | <div>
35
+
36
+ #data
37
+ <html><body><img src="" border="0" alt="><div>A</div></body></html>
38
+ #errors
39
+ #document
40
+ | <html>
41
+ | <head>
42
+ | <body>
43
+
44
+ #data
45
+ <table><td></tbody>A
46
+ #errors
47
+ #document
48
+ | <html>
49
+ | <head>
50
+ | <body>
51
+ | "A"
52
+ | <table>
53
+ | <tbody>
54
+ | <tr>
55
+ | <td>
56
+
57
+ #data
58
+ <table><td></thead>A
59
+ #errors
60
+ #document
61
+ | <html>
62
+ | <head>
63
+ | <body>
64
+ | <table>
65
+ | <tbody>
66
+ | <tr>
67
+ | <td>
68
+ | "A"
69
+
70
+ #data
71
+ <table><td></tfoot>A
72
+ #errors
73
+ #document
74
+ | <html>
75
+ | <head>
76
+ | <body>
77
+ | <table>
78
+ | <tbody>
79
+ | <tr>
80
+ | <td>
81
+ | "A"
82
+
83
+ #data
84
+ <table><thead><td></tbody>A
85
+ #errors
86
+ #document
87
+ | <html>
88
+ | <head>
89
+ | <body>
90
+ | <table>
91
+ | <thead>
92
+ | <tr>
93
+ | <td>
94
+ | "A"
95
+
96
+ #data
97
+ <legend>test</legend>
98
+ #errors
99
+ #document
100
+ | <html>
101
+ | <head>
102
+ | <body>
103
+ | <legend>
104
+ | "test"
105
+
106
+ #data
107
+ <table><input>
108
+ #errors
109
+ #document
110
+ | <html>
111
+ | <head>
112
+ | <body>
113
+ | <input>
114
+ | <table>
115
+
116
+ #data
117
+ <b><em><dcell><postfield><postfield><postfield><postfield><missing_glyph><missing_glyph><missing_glyph><missing_glyph><hkern><aside></b></em>
118
+ #errors
119
+ #document-fragment
120
+ div
121
+ #document
122
+ | <b>
123
+ | <em>
124
+ | <dcell>
125
+ | <postfield>
126
+ | <postfield>
127
+ | <postfield>
128
+ | <postfield>
129
+ | <missing_glyph>
130
+ | <missing_glyph>
131
+ | <missing_glyph>
132
+ | <missing_glyph>
133
+ | <hkern>
134
+ | <aside>
135
+ | <em>
136
+ | <b>
137
+
138
+ #data
139
+ <isindex action="x">
140
+ #errors
141
+ #document-fragment
142
+ table
143
+ #document
144
+ | <form>
145
+ | action="x"
146
+ | <hr>
147
+ | <label>
148
+ | "This is a searchable index. Enter search keywords: "
149
+ | <input>
150
+ | name="isindex"
151
+ | <hr>
152
+
153
+ #data
154
+ <option><XH<optgroup></optgroup>
155
+ #errors
156
+ #document-fragment
157
+ select
158
+ #document
159
+ | <option>
@@ -0,0 +1,1219 @@
1
+ // Copyright 2010 The Go Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style
3
+ // license that can be found in the LICENSE file.
4
+
5
+ package html
6
+
7
+ import (
8
+ "bytes"
9
+ "errors"
10
+ "io"
11
+ "strconv"
12
+ "strings"
13
+
14
+ "golang.org/x/net/html/atom"
15
+ )
16
+
17
+ // A TokenType is the type of a Token.
18
+ type TokenType uint32
19
+
20
+ const (
21
+ // ErrorToken means that an error occurred during tokenization.
22
+ ErrorToken TokenType = iota
23
+ // TextToken means a text node.
24
+ TextToken
25
+ // A StartTagToken looks like <a>.
26
+ StartTagToken
27
+ // An EndTagToken looks like </a>.
28
+ EndTagToken
29
+ // A SelfClosingTagToken tag looks like <br/>.
30
+ SelfClosingTagToken
31
+ // A CommentToken looks like <!--x-->.
32
+ CommentToken
33
+ // A DoctypeToken looks like <!DOCTYPE x>
34
+ DoctypeToken
35
+ )
36
+
37
+ // ErrBufferExceeded means that the buffering limit was exceeded.
38
+ var ErrBufferExceeded = errors.New("max buffer exceeded")
39
+
40
+ // String returns a string representation of the TokenType.
41
+ func (t TokenType) String() string {
42
+ switch t {
43
+ case ErrorToken:
44
+ return "Error"
45
+ case TextToken:
46
+ return "Text"
47
+ case StartTagToken:
48
+ return "StartTag"
49
+ case EndTagToken:
50
+ return "EndTag"
51
+ case SelfClosingTagToken:
52
+ return "SelfClosingTag"
53
+ case CommentToken:
54
+ return "Comment"
55
+ case DoctypeToken:
56
+ return "Doctype"
57
+ }
58
+ return "Invalid(" + strconv.Itoa(int(t)) + ")"
59
+ }
60
+
61
+ // An Attribute is an attribute namespace-key-value triple. Namespace is
62
+ // non-empty for foreign attributes like xlink, Key is alphabetic (and hence
63
+ // does not contain escapable characters like '&', '<' or '>'), and Val is
64
+ // unescaped (it looks like "a<b" rather than "a&lt;b").
65
+ //
66
+ // Namespace is only used by the parser, not the tokenizer.
67
+ type Attribute struct {
68
+ Namespace, Key, Val string
69
+ }
70
+
71
+ // A Token consists of a TokenType and some Data (tag name for start and end
72
+ // tags, content for text, comments and doctypes). A tag Token may also contain
73
+ // a slice of Attributes. Data is unescaped for all Tokens (it looks like "a<b"
74
+ // rather than "a&lt;b"). For tag Tokens, DataAtom is the atom for Data, or
75
+ // zero if Data is not a known tag name.
76
+ type Token struct {
77
+ Type TokenType
78
+ DataAtom atom.Atom
79
+ Data string
80
+ Attr []Attribute
81
+ }
82
+
83
+ // tagString returns a string representation of a tag Token's Data and Attr.
84
+ func (t Token) tagString() string {
85
+ if len(t.Attr) == 0 {
86
+ return t.Data
87
+ }
88
+ buf := bytes.NewBufferString(t.Data)
89
+ for _, a := range t.Attr {
90
+ buf.WriteByte(' ')
91
+ buf.WriteString(a.Key)
92
+ buf.WriteString(`="`)
93
+ escape(buf, a.Val)
94
+ buf.WriteByte('"')
95
+ }
96
+ return buf.String()
97
+ }
98
+
99
+ // String returns a string representation of the Token.
100
+ func (t Token) String() string {
101
+ switch t.Type {
102
+ case ErrorToken:
103
+ return ""
104
+ case TextToken:
105
+ return EscapeString(t.Data)
106
+ case StartTagToken:
107
+ return "<" + t.tagString() + ">"
108
+ case EndTagToken:
109
+ return "</" + t.tagString() + ">"
110
+ case SelfClosingTagToken:
111
+ return "<" + t.tagString() + "/>"
112
+ case CommentToken:
113
+ return "<!--" + t.Data + "-->"
114
+ case DoctypeToken:
115
+ return "<!DOCTYPE " + t.Data + ">"
116
+ }
117
+ return "Invalid(" + strconv.Itoa(int(t.Type)) + ")"
118
+ }
119
+
120
+ // span is a range of bytes in a Tokenizer's buffer. The start is inclusive,
121
+ // the end is exclusive.
122
+ type span struct {
123
+ start, end int
124
+ }
125
+
126
+ // A Tokenizer returns a stream of HTML Tokens.
127
+ type Tokenizer struct {
128
+ // r is the source of the HTML text.
129
+ r io.Reader
130
+ // tt is the TokenType of the current token.
131
+ tt TokenType
132
+ // err is the first error encountered during tokenization. It is possible
133
+ // for tt != Error && err != nil to hold: this means that Next returned a
134
+ // valid token but the subsequent Next call will return an error token.
135
+ // For example, if the HTML text input was just "plain", then the first
136
+ // Next call would set z.err to io.EOF but return a TextToken, and all
137
+ // subsequent Next calls would return an ErrorToken.
138
+ // err is never reset. Once it becomes non-nil, it stays non-nil.
139
+ err error
140
+ // readErr is the error returned by the io.Reader r. It is separate from
141
+ // err because it is valid for an io.Reader to return (n int, err1 error)
142
+ // such that n > 0 && err1 != nil, and callers should always process the
143
+ // n > 0 bytes before considering the error err1.
144
+ readErr error
145
+ // buf[raw.start:raw.end] holds the raw bytes of the current token.
146
+ // buf[raw.end:] is buffered input that will yield future tokens.
147
+ raw span
148
+ buf []byte
149
+ // maxBuf limits the data buffered in buf. A value of 0 means unlimited.
150
+ maxBuf int
151
+ // buf[data.start:data.end] holds the raw bytes of the current token's data:
152
+ // a text token's text, a tag token's tag name, etc.
153
+ data span
154
+ // pendingAttr is the attribute key and value currently being tokenized.
155
+ // When complete, pendingAttr is pushed onto attr. nAttrReturned is
156
+ // incremented on each call to TagAttr.
157
+ pendingAttr [2]span
158
+ attr [][2]span
159
+ nAttrReturned int
160
+ // rawTag is the "script" in "</script>" that closes the next token. If
161
+ // non-empty, the subsequent call to Next will return a raw or RCDATA text
162
+ // token: one that treats "<p>" as text instead of an element.
163
+ // rawTag's contents are lower-cased.
164
+ rawTag string
165
+ // textIsRaw is whether the current text token's data is not escaped.
166
+ textIsRaw bool
167
+ // convertNUL is whether NUL bytes in the current token's data should
168
+ // be converted into \ufffd replacement characters.
169
+ convertNUL bool
170
+ // allowCDATA is whether CDATA sections are allowed in the current context.
171
+ allowCDATA bool
172
+ }
173
+
174
+ // AllowCDATA sets whether or not the tokenizer recognizes <![CDATA[foo]]> as
175
+ // the text "foo". The default value is false, which means to recognize it as
176
+ // a bogus comment "<!-- [CDATA[foo]] -->" instead.
177
+ //
178
+ // Strictly speaking, an HTML5 compliant tokenizer should allow CDATA if and
179
+ // only if tokenizing foreign content, such as MathML and SVG. However,
180
+ // tracking foreign-contentness is difficult to do purely in the tokenizer,
181
+ // as opposed to the parser, due to HTML integration points: an <svg> element
182
+ // can contain a <foreignObject> that is foreign-to-SVG but not foreign-to-
183
+ // HTML. For strict compliance with the HTML5 tokenization algorithm, it is the
184
+ // responsibility of the user of a tokenizer to call AllowCDATA as appropriate.
185
+ // In practice, if using the tokenizer without caring whether MathML or SVG
186
+ // CDATA is text or comments, such as tokenizing HTML to find all the anchor
187
+ // text, it is acceptable to ignore this responsibility.
188
+ func (z *Tokenizer) AllowCDATA(allowCDATA bool) {
189
+ z.allowCDATA = allowCDATA
190
+ }
191
+
192
+ // NextIsNotRawText instructs the tokenizer that the next token should not be
193
+ // considered as 'raw text'. Some elements, such as script and title elements,
194
+ // normally require the next token after the opening tag to be 'raw text' that
195
+ // has no child elements. For example, tokenizing "<title>a<b>c</b>d</title>"
196
+ // yields a start tag token for "<title>", a text token for "a<b>c</b>d", and
197
+ // an end tag token for "</title>". There are no distinct start tag or end tag
198
+ // tokens for the "<b>" and "</b>".
199
+ //
200
+ // This tokenizer implementation will generally look for raw text at the right
201
+ // times. Strictly speaking, an HTML5 compliant tokenizer should not look for
202
+ // raw text if in foreign content: <title> generally needs raw text, but a
203
+ // <title> inside an <svg> does not. Another example is that a <textarea>
204
+ // generally needs raw text, but a <textarea> is not allowed as an immediate
205
+ // child of a <select>; in normal parsing, a <textarea> implies </select>, but
206
+ // one cannot close the implicit element when parsing a <select>'s InnerHTML.
207
+ // Similarly to AllowCDATA, tracking the correct moment to override raw-text-
208
+ // ness is difficult to do purely in the tokenizer, as opposed to the parser.
209
+ // For strict compliance with the HTML5 tokenization algorithm, it is the
210
+ // responsibility of the user of a tokenizer to call NextIsNotRawText as
211
+ // appropriate. In practice, like AllowCDATA, it is acceptable to ignore this
212
+ // responsibility for basic usage.
213
+ //
214
+ // Note that this 'raw text' concept is different from the one offered by the
215
+ // Tokenizer.Raw method.
216
+ func (z *Tokenizer) NextIsNotRawText() {
217
+ z.rawTag = ""
218
+ }
219
+
220
+ // Err returns the error associated with the most recent ErrorToken token.
221
+ // This is typically io.EOF, meaning the end of tokenization.
222
+ func (z *Tokenizer) Err() error {
223
+ if z.tt != ErrorToken {
224
+ return nil
225
+ }
226
+ return z.err
227
+ }
228
+
229
+ // readByte returns the next byte from the input stream, doing a buffered read
230
+ // from z.r into z.buf if necessary. z.buf[z.raw.start:z.raw.end] remains a contiguous byte
231
+ // slice that holds all the bytes read so far for the current token.
232
+ // It sets z.err if the underlying reader returns an error.
233
+ // Pre-condition: z.err == nil.
234
+ func (z *Tokenizer) readByte() byte {
235
+ if z.raw.end >= len(z.buf) {
236
+ // Our buffer is exhausted and we have to read from z.r. Check if the
237
+ // previous read resulted in an error.
238
+ if z.readErr != nil {
239
+ z.err = z.readErr
240
+ return 0
241
+ }
242
+ // We copy z.buf[z.raw.start:z.raw.end] to the beginning of z.buf. If the length
243
+ // z.raw.end - z.raw.start is more than half the capacity of z.buf, then we
244
+ // allocate a new buffer before the copy.
245
+ c := cap(z.buf)
246
+ d := z.raw.end - z.raw.start
247
+ var buf1 []byte
248
+ if 2*d > c {
249
+ buf1 = make([]byte, d, 2*c)
250
+ } else {
251
+ buf1 = z.buf[:d]
252
+ }
253
+ copy(buf1, z.buf[z.raw.start:z.raw.end])
254
+ if x := z.raw.start; x != 0 {
255
+ // Adjust the data/attr spans to refer to the same contents after the copy.
256
+ z.data.start -= x
257
+ z.data.end -= x
258
+ z.pendingAttr[0].start -= x
259
+ z.pendingAttr[0].end -= x
260
+ z.pendingAttr[1].start -= x
261
+ z.pendingAttr[1].end -= x
262
+ for i := range z.attr {
263
+ z.attr[i][0].start -= x
264
+ z.attr[i][0].end -= x
265
+ z.attr[i][1].start -= x
266
+ z.attr[i][1].end -= x
267
+ }
268
+ }
269
+ z.raw.start, z.raw.end, z.buf = 0, d, buf1[:d]
270
+ // Now that we have copied the live bytes to the start of the buffer,
271
+ // we read from z.r into the remainder.
272
+ var n int
273
+ n, z.readErr = readAtLeastOneByte(z.r, buf1[d:cap(buf1)])
274
+ if n == 0 {
275
+ z.err = z.readErr
276
+ return 0
277
+ }
278
+ z.buf = buf1[:d+n]
279
+ }
280
+ x := z.buf[z.raw.end]
281
+ z.raw.end++
282
+ if z.maxBuf > 0 && z.raw.end-z.raw.start >= z.maxBuf {
283
+ z.err = ErrBufferExceeded
284
+ return 0
285
+ }
286
+ return x
287
+ }
288
+
289
+ // Buffered returns a slice containing data buffered but not yet tokenized.
290
+ func (z *Tokenizer) Buffered() []byte {
291
+ return z.buf[z.raw.end:]
292
+ }
293
+
294
+ // readAtLeastOneByte wraps an io.Reader so that reading cannot return (0, nil).
295
+ // It returns io.ErrNoProgress if the underlying r.Read method returns (0, nil)
296
+ // too many times in succession.
297
+ func readAtLeastOneByte(r io.Reader, b []byte) (int, error) {
298
+ for i := 0; i < 100; i++ {
299
+ n, err := r.Read(b)
300
+ if n != 0 || err != nil {
301
+ return n, err
302
+ }
303
+ }
304
+ return 0, io.ErrNoProgress
305
+ }
306
+
307
+ // skipWhiteSpace skips past any white space.
308
+ func (z *Tokenizer) skipWhiteSpace() {
309
+ if z.err != nil {
310
+ return
311
+ }
312
+ for {
313
+ c := z.readByte()
314
+ if z.err != nil {
315
+ return
316
+ }
317
+ switch c {
318
+ case ' ', '\n', '\r', '\t', '\f':
319
+ // No-op.
320
+ default:
321
+ z.raw.end--
322
+ return
323
+ }
324
+ }
325
+ }
326
+
327
+ // readRawOrRCDATA reads until the next "</foo>", where "foo" is z.rawTag and
328
+ // is typically something like "script" or "textarea".
329
+ func (z *Tokenizer) readRawOrRCDATA() {
330
+ if z.rawTag == "script" {
331
+ z.readScript()
332
+ z.textIsRaw = true
333
+ z.rawTag = ""
334
+ return
335
+ }
336
+ loop:
337
+ for {
338
+ c := z.readByte()
339
+ if z.err != nil {
340
+ break loop
341
+ }
342
+ if c != '<' {
343
+ continue loop
344
+ }
345
+ c = z.readByte()
346
+ if z.err != nil {
347
+ break loop
348
+ }
349
+ if c != '/' {
350
+ continue loop
351
+ }
352
+ if z.readRawEndTag() || z.err != nil {
353
+ break loop
354
+ }
355
+ }
356
+ z.data.end = z.raw.end
357
+ // A textarea's or title's RCDATA can contain escaped entities.
358
+ z.textIsRaw = z.rawTag != "textarea" && z.rawTag != "title"
359
+ z.rawTag = ""
360
+ }
361
+
362
+ // readRawEndTag attempts to read a tag like "</foo>", where "foo" is z.rawTag.
363
+ // If it succeeds, it backs up the input position to reconsume the tag and
364
+ // returns true. Otherwise it returns false. The opening "</" has already been
365
+ // consumed.
366
+ func (z *Tokenizer) readRawEndTag() bool {
367
+ for i := 0; i < len(z.rawTag); i++ {
368
+ c := z.readByte()
369
+ if z.err != nil {
370
+ return false
371
+ }
372
+ if c != z.rawTag[i] && c != z.rawTag[i]-('a'-'A') {
373
+ z.raw.end--
374
+ return false
375
+ }
376
+ }
377
+ c := z.readByte()
378
+ if z.err != nil {
379
+ return false
380
+ }
381
+ switch c {
382
+ case ' ', '\n', '\r', '\t', '\f', '/', '>':
383
+ // The 3 is 2 for the leading "</" plus 1 for the trailing character c.
384
+ z.raw.end -= 3 + len(z.rawTag)
385
+ return true
386
+ }
387
+ z.raw.end--
388
+ return false
389
+ }
390
+
391
+ // readScript reads until the next </script> tag, following the byzantine
392
+ // rules for escaping/hiding the closing tag.
393
+ func (z *Tokenizer) readScript() {
394
+ defer func() {
395
+ z.data.end = z.raw.end
396
+ }()
397
+ var c byte
398
+
399
+ scriptData:
400
+ c = z.readByte()
401
+ if z.err != nil {
402
+ return
403
+ }
404
+ if c == '<' {
405
+ goto scriptDataLessThanSign
406
+ }
407
+ goto scriptData
408
+
409
+ scriptDataLessThanSign:
410
+ c = z.readByte()
411
+ if z.err != nil {
412
+ return
413
+ }
414
+ switch c {
415
+ case '/':
416
+ goto scriptDataEndTagOpen
417
+ case '!':
418
+ goto scriptDataEscapeStart
419
+ }
420
+ z.raw.end--
421
+ goto scriptData
422
+
423
+ scriptDataEndTagOpen:
424
+ if z.readRawEndTag() || z.err != nil {
425
+ return
426
+ }
427
+ goto scriptData
428
+
429
+ scriptDataEscapeStart:
430
+ c = z.readByte()
431
+ if z.err != nil {
432
+ return
433
+ }
434
+ if c == '-' {
435
+ goto scriptDataEscapeStartDash
436
+ }
437
+ z.raw.end--
438
+ goto scriptData
439
+
440
+ scriptDataEscapeStartDash:
441
+ c = z.readByte()
442
+ if z.err != nil {
443
+ return
444
+ }
445
+ if c == '-' {
446
+ goto scriptDataEscapedDashDash
447
+ }
448
+ z.raw.end--
449
+ goto scriptData
450
+
451
+ scriptDataEscaped:
452
+ c = z.readByte()
453
+ if z.err != nil {
454
+ return
455
+ }
456
+ switch c {
457
+ case '-':
458
+ goto scriptDataEscapedDash
459
+ case '<':
460
+ goto scriptDataEscapedLessThanSign
461
+ }
462
+ goto scriptDataEscaped
463
+
464
+ scriptDataEscapedDash:
465
+ c = z.readByte()
466
+ if z.err != nil {
467
+ return
468
+ }
469
+ switch c {
470
+ case '-':
471
+ goto scriptDataEscapedDashDash
472
+ case '<':
473
+ goto scriptDataEscapedLessThanSign
474
+ }
475
+ goto scriptDataEscaped
476
+
477
+ scriptDataEscapedDashDash:
478
+ c = z.readByte()
479
+ if z.err != nil {
480
+ return
481
+ }
482
+ switch c {
483
+ case '-':
484
+ goto scriptDataEscapedDashDash
485
+ case '<':
486
+ goto scriptDataEscapedLessThanSign
487
+ case '>':
488
+ goto scriptData
489
+ }
490
+ goto scriptDataEscaped
491
+
492
+ scriptDataEscapedLessThanSign:
493
+ c = z.readByte()
494
+ if z.err != nil {
495
+ return
496
+ }
497
+ if c == '/' {
498
+ goto scriptDataEscapedEndTagOpen
499
+ }
500
+ if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' {
501
+ goto scriptDataDoubleEscapeStart
502
+ }
503
+ z.raw.end--
504
+ goto scriptData
505
+
506
+ scriptDataEscapedEndTagOpen:
507
+ if z.readRawEndTag() || z.err != nil {
508
+ return
509
+ }
510
+ goto scriptDataEscaped
511
+
512
+ scriptDataDoubleEscapeStart:
513
+ z.raw.end--
514
+ for i := 0; i < len("script"); i++ {
515
+ c = z.readByte()
516
+ if z.err != nil {
517
+ return
518
+ }
519
+ if c != "script"[i] && c != "SCRIPT"[i] {
520
+ z.raw.end--
521
+ goto scriptDataEscaped
522
+ }
523
+ }
524
+ c = z.readByte()
525
+ if z.err != nil {
526
+ return
527
+ }
528
+ switch c {
529
+ case ' ', '\n', '\r', '\t', '\f', '/', '>':
530
+ goto scriptDataDoubleEscaped
531
+ }
532
+ z.raw.end--
533
+ goto scriptDataEscaped
534
+
535
+ scriptDataDoubleEscaped:
536
+ c = z.readByte()
537
+ if z.err != nil {
538
+ return
539
+ }
540
+ switch c {
541
+ case '-':
542
+ goto scriptDataDoubleEscapedDash
543
+ case '<':
544
+ goto scriptDataDoubleEscapedLessThanSign
545
+ }
546
+ goto scriptDataDoubleEscaped
547
+
548
+ scriptDataDoubleEscapedDash:
549
+ c = z.readByte()
550
+ if z.err != nil {
551
+ return
552
+ }
553
+ switch c {
554
+ case '-':
555
+ goto scriptDataDoubleEscapedDashDash
556
+ case '<':
557
+ goto scriptDataDoubleEscapedLessThanSign
558
+ }
559
+ goto scriptDataDoubleEscaped
560
+
561
+ scriptDataDoubleEscapedDashDash:
562
+ c = z.readByte()
563
+ if z.err != nil {
564
+ return
565
+ }
566
+ switch c {
567
+ case '-':
568
+ goto scriptDataDoubleEscapedDashDash
569
+ case '<':
570
+ goto scriptDataDoubleEscapedLessThanSign
571
+ case '>':
572
+ goto scriptData
573
+ }
574
+ goto scriptDataDoubleEscaped
575
+
576
+ scriptDataDoubleEscapedLessThanSign:
577
+ c = z.readByte()
578
+ if z.err != nil {
579
+ return
580
+ }
581
+ if c == '/' {
582
+ goto scriptDataDoubleEscapeEnd
583
+ }
584
+ z.raw.end--
585
+ goto scriptDataDoubleEscaped
586
+
587
+ scriptDataDoubleEscapeEnd:
588
+ if z.readRawEndTag() {
589
+ z.raw.end += len("</script>")
590
+ goto scriptDataEscaped
591
+ }
592
+ if z.err != nil {
593
+ return
594
+ }
595
+ goto scriptDataDoubleEscaped
596
+ }
597
+
598
+ // readComment reads the next comment token starting with "<!--". The opening
599
+ // "<!--" has already been consumed.
600
+ func (z *Tokenizer) readComment() {
601
+ z.data.start = z.raw.end
602
+ defer func() {
603
+ if z.data.end < z.data.start {
604
+ // It's a comment with no data, like <!-->.
605
+ z.data.end = z.data.start
606
+ }
607
+ }()
608
+ for dashCount := 2; ; {
609
+ c := z.readByte()
610
+ if z.err != nil {
611
+ // Ignore up to two dashes at EOF.
612
+ if dashCount > 2 {
613
+ dashCount = 2
614
+ }
615
+ z.data.end = z.raw.end - dashCount
616
+ return
617
+ }
618
+ switch c {
619
+ case '-':
620
+ dashCount++
621
+ continue
622
+ case '>':
623
+ if dashCount >= 2 {
624
+ z.data.end = z.raw.end - len("-->")
625
+ return
626
+ }
627
+ case '!':
628
+ if dashCount >= 2 {
629
+ c = z.readByte()
630
+ if z.err != nil {
631
+ z.data.end = z.raw.end
632
+ return
633
+ }
634
+ if c == '>' {
635
+ z.data.end = z.raw.end - len("--!>")
636
+ return
637
+ }
638
+ }
639
+ }
640
+ dashCount = 0
641
+ }
642
+ }
643
+
644
+ // readUntilCloseAngle reads until the next ">".
645
+ func (z *Tokenizer) readUntilCloseAngle() {
646
+ z.data.start = z.raw.end
647
+ for {
648
+ c := z.readByte()
649
+ if z.err != nil {
650
+ z.data.end = z.raw.end
651
+ return
652
+ }
653
+ if c == '>' {
654
+ z.data.end = z.raw.end - len(">")
655
+ return
656
+ }
657
+ }
658
+ }
659
+
660
+ // readMarkupDeclaration reads the next token starting with "<!". It might be
661
+ // a "<!--comment-->", a "<!DOCTYPE foo>", a "<![CDATA[section]]>" or
662
+ // "<!a bogus comment". The opening "<!" has already been consumed.
663
+ func (z *Tokenizer) readMarkupDeclaration() TokenType {
664
+ z.data.start = z.raw.end
665
+ var c [2]byte
666
+ for i := 0; i < 2; i++ {
667
+ c[i] = z.readByte()
668
+ if z.err != nil {
669
+ z.data.end = z.raw.end
670
+ return CommentToken
671
+ }
672
+ }
673
+ if c[0] == '-' && c[1] == '-' {
674
+ z.readComment()
675
+ return CommentToken
676
+ }
677
+ z.raw.end -= 2
678
+ if z.readDoctype() {
679
+ return DoctypeToken
680
+ }
681
+ if z.allowCDATA && z.readCDATA() {
682
+ z.convertNUL = true
683
+ return TextToken
684
+ }
685
+ // It's a bogus comment.
686
+ z.readUntilCloseAngle()
687
+ return CommentToken
688
+ }
689
+
690
+ // readDoctype attempts to read a doctype declaration and returns true if
691
+ // successful. The opening "<!" has already been consumed.
692
+ func (z *Tokenizer) readDoctype() bool {
693
+ const s = "DOCTYPE"
694
+ for i := 0; i < len(s); i++ {
695
+ c := z.readByte()
696
+ if z.err != nil {
697
+ z.data.end = z.raw.end
698
+ return false
699
+ }
700
+ if c != s[i] && c != s[i]+('a'-'A') {
701
+ // Back up to read the fragment of "DOCTYPE" again.
702
+ z.raw.end = z.data.start
703
+ return false
704
+ }
705
+ }
706
+ if z.skipWhiteSpace(); z.err != nil {
707
+ z.data.start = z.raw.end
708
+ z.data.end = z.raw.end
709
+ return true
710
+ }
711
+ z.readUntilCloseAngle()
712
+ return true
713
+ }
714
+
715
+ // readCDATA attempts to read a CDATA section and returns true if
716
+ // successful. The opening "<!" has already been consumed.
717
+ func (z *Tokenizer) readCDATA() bool {
718
+ const s = "[CDATA["
719
+ for i := 0; i < len(s); i++ {
720
+ c := z.readByte()
721
+ if z.err != nil {
722
+ z.data.end = z.raw.end
723
+ return false
724
+ }
725
+ if c != s[i] {
726
+ // Back up to read the fragment of "[CDATA[" again.
727
+ z.raw.end = z.data.start
728
+ return false
729
+ }
730
+ }
731
+ z.data.start = z.raw.end
732
+ brackets := 0
733
+ for {
734
+ c := z.readByte()
735
+ if z.err != nil {
736
+ z.data.end = z.raw.end
737
+ return true
738
+ }
739
+ switch c {
740
+ case ']':
741
+ brackets++
742
+ case '>':
743
+ if brackets >= 2 {
744
+ z.data.end = z.raw.end - len("]]>")
745
+ return true
746
+ }
747
+ brackets = 0
748
+ default:
749
+ brackets = 0
750
+ }
751
+ }
752
+ }
753
+
754
+ // startTagIn returns whether the start tag in z.buf[z.data.start:z.data.end]
755
+ // case-insensitively matches any element of ss.
756
+ func (z *Tokenizer) startTagIn(ss ...string) bool {
757
+ loop:
758
+ for _, s := range ss {
759
+ if z.data.end-z.data.start != len(s) {
760
+ continue loop
761
+ }
762
+ for i := 0; i < len(s); i++ {
763
+ c := z.buf[z.data.start+i]
764
+ if 'A' <= c && c <= 'Z' {
765
+ c += 'a' - 'A'
766
+ }
767
+ if c != s[i] {
768
+ continue loop
769
+ }
770
+ }
771
+ return true
772
+ }
773
+ return false
774
+ }
775
+
776
+ // readStartTag reads the next start tag token. The opening "<a" has already
777
+ // been consumed, where 'a' means anything in [A-Za-z].
778
+ func (z *Tokenizer) readStartTag() TokenType {
779
+ z.readTag(true)
780
+ if z.err != nil {
781
+ return ErrorToken
782
+ }
783
+ // Several tags flag the tokenizer's next token as raw.
784
+ c, raw := z.buf[z.data.start], false
785
+ if 'A' <= c && c <= 'Z' {
786
+ c += 'a' - 'A'
787
+ }
788
+ switch c {
789
+ case 'i':
790
+ raw = z.startTagIn("iframe")
791
+ case 'n':
792
+ raw = z.startTagIn("noembed", "noframes", "noscript")
793
+ case 'p':
794
+ raw = z.startTagIn("plaintext")
795
+ case 's':
796
+ raw = z.startTagIn("script", "style")
797
+ case 't':
798
+ raw = z.startTagIn("textarea", "title")
799
+ case 'x':
800
+ raw = z.startTagIn("xmp")
801
+ }
802
+ if raw {
803
+ z.rawTag = strings.ToLower(string(z.buf[z.data.start:z.data.end]))
804
+ }
805
+ // Look for a self-closing token like "<br/>".
806
+ if z.err == nil && z.buf[z.raw.end-2] == '/' {
807
+ return SelfClosingTagToken
808
+ }
809
+ return StartTagToken
810
+ }
811
+
812
+ // readTag reads the next tag token and its attributes. If saveAttr, those
813
+ // attributes are saved in z.attr, otherwise z.attr is set to an empty slice.
814
+ // The opening "<a" or "</a" has already been consumed, where 'a' means anything
815
+ // in [A-Za-z].
816
+ func (z *Tokenizer) readTag(saveAttr bool) {
817
+ z.attr = z.attr[:0]
818
+ z.nAttrReturned = 0
819
+ // Read the tag name and attribute key/value pairs.
820
+ z.readTagName()
821
+ if z.skipWhiteSpace(); z.err != nil {
822
+ return
823
+ }
824
+ for {
825
+ c := z.readByte()
826
+ if z.err != nil || c == '>' {
827
+ break
828
+ }
829
+ z.raw.end--
830
+ z.readTagAttrKey()
831
+ z.readTagAttrVal()
832
+ // Save pendingAttr if saveAttr and that attribute has a non-empty key.
833
+ if saveAttr && z.pendingAttr[0].start != z.pendingAttr[0].end {
834
+ z.attr = append(z.attr, z.pendingAttr)
835
+ }
836
+ if z.skipWhiteSpace(); z.err != nil {
837
+ break
838
+ }
839
+ }
840
+ }
841
+
842
+ // readTagName sets z.data to the "div" in "<div k=v>". The reader (z.raw.end)
843
+ // is positioned such that the first byte of the tag name (the "d" in "<div")
844
+ // has already been consumed.
845
+ func (z *Tokenizer) readTagName() {
846
+ z.data.start = z.raw.end - 1
847
+ for {
848
+ c := z.readByte()
849
+ if z.err != nil {
850
+ z.data.end = z.raw.end
851
+ return
852
+ }
853
+ switch c {
854
+ case ' ', '\n', '\r', '\t', '\f':
855
+ z.data.end = z.raw.end - 1
856
+ return
857
+ case '/', '>':
858
+ z.raw.end--
859
+ z.data.end = z.raw.end
860
+ return
861
+ }
862
+ }
863
+ }
864
+
865
+ // readTagAttrKey sets z.pendingAttr[0] to the "k" in "<div k=v>".
866
+ // Precondition: z.err == nil.
867
+ func (z *Tokenizer) readTagAttrKey() {
868
+ z.pendingAttr[0].start = z.raw.end
869
+ for {
870
+ c := z.readByte()
871
+ if z.err != nil {
872
+ z.pendingAttr[0].end = z.raw.end
873
+ return
874
+ }
875
+ switch c {
876
+ case ' ', '\n', '\r', '\t', '\f', '/':
877
+ z.pendingAttr[0].end = z.raw.end - 1
878
+ return
879
+ case '=', '>':
880
+ z.raw.end--
881
+ z.pendingAttr[0].end = z.raw.end
882
+ return
883
+ }
884
+ }
885
+ }
886
+
887
+ // readTagAttrVal sets z.pendingAttr[1] to the "v" in "<div k=v>".
888
+ func (z *Tokenizer) readTagAttrVal() {
889
+ z.pendingAttr[1].start = z.raw.end
890
+ z.pendingAttr[1].end = z.raw.end
891
+ if z.skipWhiteSpace(); z.err != nil {
892
+ return
893
+ }
894
+ c := z.readByte()
895
+ if z.err != nil {
896
+ return
897
+ }
898
+ if c != '=' {
899
+ z.raw.end--
900
+ return
901
+ }
902
+ if z.skipWhiteSpace(); z.err != nil {
903
+ return
904
+ }
905
+ quote := z.readByte()
906
+ if z.err != nil {
907
+ return
908
+ }
909
+ switch quote {
910
+ case '>':
911
+ z.raw.end--
912
+ return
913
+
914
+ case '\'', '"':
915
+ z.pendingAttr[1].start = z.raw.end
916
+ for {
917
+ c := z.readByte()
918
+ if z.err != nil {
919
+ z.pendingAttr[1].end = z.raw.end
920
+ return
921
+ }
922
+ if c == quote {
923
+ z.pendingAttr[1].end = z.raw.end - 1
924
+ return
925
+ }
926
+ }
927
+
928
+ default:
929
+ z.pendingAttr[1].start = z.raw.end - 1
930
+ for {
931
+ c := z.readByte()
932
+ if z.err != nil {
933
+ z.pendingAttr[1].end = z.raw.end
934
+ return
935
+ }
936
+ switch c {
937
+ case ' ', '\n', '\r', '\t', '\f':
938
+ z.pendingAttr[1].end = z.raw.end - 1
939
+ return
940
+ case '>':
941
+ z.raw.end--
942
+ z.pendingAttr[1].end = z.raw.end
943
+ return
944
+ }
945
+ }
946
+ }
947
+ }
948
+
949
+ // Next scans the next token and returns its type.
950
+ func (z *Tokenizer) Next() TokenType {
951
+ z.raw.start = z.raw.end
952
+ z.data.start = z.raw.end
953
+ z.data.end = z.raw.end
954
+ if z.err != nil {
955
+ z.tt = ErrorToken
956
+ return z.tt
957
+ }
958
+ if z.rawTag != "" {
959
+ if z.rawTag == "plaintext" {
960
+ // Read everything up to EOF.
961
+ for z.err == nil {
962
+ z.readByte()
963
+ }
964
+ z.data.end = z.raw.end
965
+ z.textIsRaw = true
966
+ } else {
967
+ z.readRawOrRCDATA()
968
+ }
969
+ if z.data.end > z.data.start {
970
+ z.tt = TextToken
971
+ z.convertNUL = true
972
+ return z.tt
973
+ }
974
+ }
975
+ z.textIsRaw = false
976
+ z.convertNUL = false
977
+
978
+ loop:
979
+ for {
980
+ c := z.readByte()
981
+ if z.err != nil {
982
+ break loop
983
+ }
984
+ if c != '<' {
985
+ continue loop
986
+ }
987
+
988
+ // Check if the '<' we have just read is part of a tag, comment
989
+ // or doctype. If not, it's part of the accumulated text token.
990
+ c = z.readByte()
991
+ if z.err != nil {
992
+ break loop
993
+ }
994
+ var tokenType TokenType
995
+ switch {
996
+ case 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z':
997
+ tokenType = StartTagToken
998
+ case c == '/':
999
+ tokenType = EndTagToken
1000
+ case c == '!' || c == '?':
1001
+ // We use CommentToken to mean any of "<!--actual comments-->",
1002
+ // "<!DOCTYPE declarations>" and "<?xml processing instructions?>".
1003
+ tokenType = CommentToken
1004
+ default:
1005
+ // Reconsume the current character.
1006
+ z.raw.end--
1007
+ continue
1008
+ }
1009
+
1010
+ // We have a non-text token, but we might have accumulated some text
1011
+ // before that. If so, we return the text first, and return the non-
1012
+ // text token on the subsequent call to Next.
1013
+ if x := z.raw.end - len("<a"); z.raw.start < x {
1014
+ z.raw.end = x
1015
+ z.data.end = x
1016
+ z.tt = TextToken
1017
+ return z.tt
1018
+ }
1019
+ switch tokenType {
1020
+ case StartTagToken:
1021
+ z.tt = z.readStartTag()
1022
+ return z.tt
1023
+ case EndTagToken:
1024
+ c = z.readByte()
1025
+ if z.err != nil {
1026
+ break loop
1027
+ }
1028
+ if c == '>' {
1029
+ // "</>" does not generate a token at all. Generate an empty comment
1030
+ // to allow passthrough clients to pick up the data using Raw.
1031
+ // Reset the tokenizer state and start again.
1032
+ z.tt = CommentToken
1033
+ return z.tt
1034
+ }
1035
+ if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' {
1036
+ z.readTag(false)
1037
+ if z.err != nil {
1038
+ z.tt = ErrorToken
1039
+ } else {
1040
+ z.tt = EndTagToken
1041
+ }
1042
+ return z.tt
1043
+ }
1044
+ z.raw.end--
1045
+ z.readUntilCloseAngle()
1046
+ z.tt = CommentToken
1047
+ return z.tt
1048
+ case CommentToken:
1049
+ if c == '!' {
1050
+ z.tt = z.readMarkupDeclaration()
1051
+ return z.tt
1052
+ }
1053
+ z.raw.end--
1054
+ z.readUntilCloseAngle()
1055
+ z.tt = CommentToken
1056
+ return z.tt
1057
+ }
1058
+ }
1059
+ if z.raw.start < z.raw.end {
1060
+ z.data.end = z.raw.end
1061
+ z.tt = TextToken
1062
+ return z.tt
1063
+ }
1064
+ z.tt = ErrorToken
1065
+ return z.tt
1066
+ }
1067
+
1068
+ // Raw returns the unmodified text of the current token. Calling Next, Token,
1069
+ // Text, TagName or TagAttr may change the contents of the returned slice.
1070
+ func (z *Tokenizer) Raw() []byte {
1071
+ return z.buf[z.raw.start:z.raw.end]
1072
+ }
1073
+
1074
+ // convertNewlines converts "\r" and "\r\n" in s to "\n".
1075
+ // The conversion happens in place, but the resulting slice may be shorter.
1076
+ func convertNewlines(s []byte) []byte {
1077
+ for i, c := range s {
1078
+ if c != '\r' {
1079
+ continue
1080
+ }
1081
+
1082
+ src := i + 1
1083
+ if src >= len(s) || s[src] != '\n' {
1084
+ s[i] = '\n'
1085
+ continue
1086
+ }
1087
+
1088
+ dst := i
1089
+ for src < len(s) {
1090
+ if s[src] == '\r' {
1091
+ if src+1 < len(s) && s[src+1] == '\n' {
1092
+ src++
1093
+ }
1094
+ s[dst] = '\n'
1095
+ } else {
1096
+ s[dst] = s[src]
1097
+ }
1098
+ src++
1099
+ dst++
1100
+ }
1101
+ return s[:dst]
1102
+ }
1103
+ return s
1104
+ }
1105
+
1106
+ var (
1107
+ nul = []byte("\x00")
1108
+ replacement = []byte("\ufffd")
1109
+ )
1110
+
1111
+ // Text returns the unescaped text of a text, comment or doctype token. The
1112
+ // contents of the returned slice may change on the next call to Next.
1113
+ func (z *Tokenizer) Text() []byte {
1114
+ switch z.tt {
1115
+ case TextToken, CommentToken, DoctypeToken:
1116
+ s := z.buf[z.data.start:z.data.end]
1117
+ z.data.start = z.raw.end
1118
+ z.data.end = z.raw.end
1119
+ s = convertNewlines(s)
1120
+ if (z.convertNUL || z.tt == CommentToken) && bytes.Contains(s, nul) {
1121
+ s = bytes.Replace(s, nul, replacement, -1)
1122
+ }
1123
+ if !z.textIsRaw {
1124
+ s = unescape(s, false)
1125
+ }
1126
+ return s
1127
+ }
1128
+ return nil
1129
+ }
1130
+
1131
+ // TagName returns the lower-cased name of a tag token (the `img` out of
1132
+ // `<IMG SRC="foo">`) and whether the tag has attributes.
1133
+ // The contents of the returned slice may change on the next call to Next.
1134
+ func (z *Tokenizer) TagName() (name []byte, hasAttr bool) {
1135
+ if z.data.start < z.data.end {
1136
+ switch z.tt {
1137
+ case StartTagToken, EndTagToken, SelfClosingTagToken:
1138
+ s := z.buf[z.data.start:z.data.end]
1139
+ z.data.start = z.raw.end
1140
+ z.data.end = z.raw.end
1141
+ return lower(s), z.nAttrReturned < len(z.attr)
1142
+ }
1143
+ }
1144
+ return nil, false
1145
+ }
1146
+
1147
+ // TagAttr returns the lower-cased key and unescaped value of the next unparsed
1148
+ // attribute for the current tag token and whether there are more attributes.
1149
+ // The contents of the returned slices may change on the next call to Next.
1150
+ func (z *Tokenizer) TagAttr() (key, val []byte, moreAttr bool) {
1151
+ if z.nAttrReturned < len(z.attr) {
1152
+ switch z.tt {
1153
+ case StartTagToken, SelfClosingTagToken:
1154
+ x := z.attr[z.nAttrReturned]
1155
+ z.nAttrReturned++
1156
+ key = z.buf[x[0].start:x[0].end]
1157
+ val = z.buf[x[1].start:x[1].end]
1158
+ return lower(key), unescape(convertNewlines(val), true), z.nAttrReturned < len(z.attr)
1159
+ }
1160
+ }
1161
+ return nil, nil, false
1162
+ }
1163
+
1164
+ // Token returns the next Token. The result's Data and Attr values remain valid
1165
+ // after subsequent Next calls.
1166
+ func (z *Tokenizer) Token() Token {
1167
+ t := Token{Type: z.tt}
1168
+ switch z.tt {
1169
+ case TextToken, CommentToken, DoctypeToken:
1170
+ t.Data = string(z.Text())
1171
+ case StartTagToken, SelfClosingTagToken, EndTagToken:
1172
+ name, moreAttr := z.TagName()
1173
+ for moreAttr {
1174
+ var key, val []byte
1175
+ key, val, moreAttr = z.TagAttr()
1176
+ t.Attr = append(t.Attr, Attribute{"", atom.String(key), string(val)})
1177
+ }
1178
+ if a := atom.Lookup(name); a != 0 {
1179
+ t.DataAtom, t.Data = a, a.String()
1180
+ } else {
1181
+ t.DataAtom, t.Data = 0, string(name)
1182
+ }
1183
+ }
1184
+ return t
1185
+ }
1186
+
1187
+ // SetMaxBuf sets a limit on the amount of data buffered during tokenization.
1188
+ // A value of 0 means unlimited.
1189
+ func (z *Tokenizer) SetMaxBuf(n int) {
1190
+ z.maxBuf = n
1191
+ }
1192
+
1193
+ // NewTokenizer returns a new HTML Tokenizer for the given Reader.
1194
+ // The input is assumed to be UTF-8 encoded.
1195
+ func NewTokenizer(r io.Reader) *Tokenizer {
1196
+ return NewTokenizerFragment(r, "")
1197
+ }
1198
+
1199
+ // NewTokenizerFragment returns a new HTML Tokenizer for the given Reader, for
1200
+ // tokenizing an existing element's InnerHTML fragment. contextTag is that
1201
+ // element's tag, such as "div" or "iframe".
1202
+ //
1203
+ // For example, how the InnerHTML "a<b" is tokenized depends on whether it is
1204
+ // for a <p> tag or a <script> tag.
1205
+ //
1206
+ // The input is assumed to be UTF-8 encoded.
1207
+ func NewTokenizerFragment(r io.Reader, contextTag string) *Tokenizer {
1208
+ z := &Tokenizer{
1209
+ r: r,
1210
+ buf: make([]byte, 0, 4096),
1211
+ }
1212
+ if contextTag != "" {
1213
+ switch s := strings.ToLower(contextTag); s {
1214
+ case "iframe", "noembed", "noframes", "noscript", "plaintext", "script", "style", "title", "textarea", "xmp":
1215
+ z.rawTag = s
1216
+ }
1217
+ }
1218
+ return z
1219
+ }