[chore]: Bump github.com/tdewolff/minify/v2 from 2.12.7 to 2.12.8 (#2073)

This commit is contained in:
dependabot[bot] 2023-08-07 08:28:49 +00:00 committed by GitHub
parent 0f812746b7
commit 517829ae6a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 689 additions and 576 deletions

4
go.mod
View file

@ -45,7 +45,7 @@ require (
github.com/superseriousbusiness/activity v1.4.0-gts
github.com/superseriousbusiness/exif-terminator v0.5.0
github.com/superseriousbusiness/oauth2/v4 v4.3.2-SSB.0.20230227143000-f4900831d6c8
github.com/tdewolff/minify/v2 v2.12.7
github.com/tdewolff/minify/v2 v2.12.8
github.com/ulule/limiter/v3 v3.11.2
github.com/uptrace/bun v1.1.14
github.com/uptrace/bun/dialect/pgdialect v1.1.14
@ -152,7 +152,7 @@ require (
github.com/spf13/pflag v1.0.5 // indirect
github.com/subosito/gotenv v1.4.2 // indirect
github.com/superseriousbusiness/go-jpeg-image-structure/v2 v2.0.0-20220321154430-d89a106fdabe // indirect
github.com/tdewolff/parse/v2 v2.6.6 // indirect
github.com/tdewolff/parse/v2 v2.6.7 // indirect
github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.11 // indirect

12
go.sum
View file

@ -111,7 +111,6 @@ github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams=
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
@ -149,7 +148,6 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c=
github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4=
github.com/djherbis/atime v1.1.0/go.mod h1:28OF6Y8s3NQWwacXc5eZTsEsiMzp7LF8MbXE+XJPdBE=
github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw=
github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/dsoprea/go-exif/v2 v2.0.0-20200321225314-640175a69fe4/go.mod h1:Lm2lMM2zx8p4a34ZemkaUV95AnMl4ZvLbCUbwOvLC2E=
@ -438,7 +436,6 @@ github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs=
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
@ -564,11 +561,10 @@ github.com/superseriousbusiness/go-jpeg-image-structure/v2 v2.0.0-20220321154430
github.com/superseriousbusiness/go-jpeg-image-structure/v2 v2.0.0-20220321154430-d89a106fdabe/go.mod h1:gH4P6gN1V+wmIw5o97KGaa1RgXB/tVpC2UNzijhg3E4=
github.com/superseriousbusiness/oauth2/v4 v4.3.2-SSB.0.20230227143000-f4900831d6c8 h1:nTIhuP157oOFcscuoK1kCme1xTeGIzztSw70lX9NrDQ=
github.com/superseriousbusiness/oauth2/v4 v4.3.2-SSB.0.20230227143000-f4900831d6c8/go.mod h1:uYC/W92oVRJ49Vh1GcvTqpeFqHi+Ovrl2sMllQWRAEo=
github.com/tdewolff/minify/v2 v2.12.7 h1:pBzz2tAfz5VghOXiQIsSta6srhmTeinQPjRDHWoumCA=
github.com/tdewolff/minify/v2 v2.12.7/go.mod h1:ZRKTheiOGyLSK8hOZWWv+YoJAECzDivNgAlVYDHp/Ws=
github.com/tdewolff/parse/v2 v2.6.6 h1:Yld+0CrKUJaCV78DL1G2nk3C9lKrxyRTux5aaK/AkDo=
github.com/tdewolff/parse/v2 v2.6.6/go.mod h1:woz0cgbLwFdtbjJu8PIKxhW05KplTFQkOdX78o+Jgrs=
github.com/tdewolff/test v1.0.7/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
github.com/tdewolff/minify/v2 v2.12.8 h1:Q2BqOTmlMjoutkuD/OPCnJUpIqrzT3nRPkw+q+KpXS0=
github.com/tdewolff/minify/v2 v2.12.8/go.mod h1:YRgk7CC21LZnbuke2fmYnCTq+zhCgpb0yJACOTUNJ1E=
github.com/tdewolff/parse/v2 v2.6.7 h1:WrFllrqmzAcrKHzoYgMupqgUBIfBVOb0yscFzDf8bBg=
github.com/tdewolff/parse/v2 v2.6.7/go.mod h1:XHDhaU6IBgsryfdnpzUXBlT6leW/l25yrFBTEb4eIyM=
github.com/tdewolff/test v1.0.9 h1:SswqJCmeN4B+9gEAi/5uqT0qpi1y2/2O47V/1hhGZT0=
github.com/tdewolff/test v1.0.9/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
github.com/tidwall/btree v0.0.0-20191029221954-400434d76274 h1:G6Z6HvJuPjG6XfNGi/feOATzeJrfgTNJY+rGrHbA04E=

View file

@ -79,7 +79,7 @@ Minifiers or bindings to minifiers exist in almost all programming languages. So
This minifier proves to be that fast and extensive minifier that can handle HTML and any other filetype it may contain (CSS, JS, ...). It is usually orders of magnitude faster than existing minifiers.
## Installation
Make sure you have [Git](https://git-scm.com/) and [Go](https://golang.org/dl/) (1.13 or higher) installed, run
Make sure you have [Git](https://git-scm.com/) and [Go](https://golang.org/dl/) (1.18 or higher) installed, run
```
mkdir Project
cd Project

View file

@ -11,238 +11,254 @@ type Hash uint32
// Unique hash definitions to be used instead of strings
const (
A Hash = 0x1 // a
Abbr Hash = 0x37a04 // abbr
Abbr Hash = 0x3b804 // abbr
About Hash = 0x5 // about
Accept Hash = 0x1106 // accept
Accept_Charset Hash = 0x110e // accept-charset
Action Hash = 0x23f06 // action
Address Hash = 0x5a07 // address
Align Hash = 0x32705 // align
Alink Hash = 0x7005 // alink
Allowfullscreen Hash = 0x2ad0f // allowfullscreen
Amp_Boilerplate Hash = 0x610f // amp-boilerplate
Area Hash = 0x1e304 // area
Acronym Hash = 0x4a07 // acronym
Action Hash = 0x21d06 // action
Address Hash = 0x7807 // address
Align Hash = 0x35b05 // align
Alink Hash = 0x3a405 // alink
Allowfullscreen Hash = 0x2e10f // allowfullscreen
Amp_Boilerplate Hash = 0x7f0f // amp-boilerplate
Applet Hash = 0xd706 // applet
Area Hash = 0x2fd04 // area
Article Hash = 0x2707 // article
Aside Hash = 0xb405 // aside
Async Hash = 0xac05 // async
Audio Hash = 0xd105 // audio
Autofocus Hash = 0xe409 // autofocus
Autoplay Hash = 0x10808 // autoplay
Axis Hash = 0x11004 // axis
Aside Hash = 0x5b05 // aside
Async Hash = 0x8e05 // async
Audio Hash = 0x9605 // audio
Autofocus Hash = 0xcc09 // autofocus
Autoplay Hash = 0x10c08 // autoplay
Axis Hash = 0x11404 // axis
B Hash = 0x101 // b
Background Hash = 0x300a // background
Base Hash = 0x19604 // base
Bb Hash = 0x37b02 // bb
Bdi Hash = 0x7503 // bdi
Bdo Hash = 0x31f03 // bdo
Bgcolor Hash = 0x12607 // bgcolor
Blockquote Hash = 0x13e0a // blockquote
Base Hash = 0x17804 // base
Basefont Hash = 0x17808 // basefont
Bb Hash = 0x3b902 // bb
Bdi Hash = 0x18403 // bdi
Bdo Hash = 0x35303 // bdo
Bgcolor Hash = 0x12a07 // bgcolor
Big Hash = 0x13103 // big
Blockquote Hash = 0x1340a // blockquote
Body Hash = 0xd04 // body
Br Hash = 0x37c02 // br
Button Hash = 0x14806 // button
Canvas Hash = 0xb006 // canvas
Caption Hash = 0x21f07 // caption
Br Hash = 0x36102 // br
Button Hash = 0x13e06 // button
Canvas Hash = 0x5706 // canvas
Caption Hash = 0x1fe07 // caption
Center Hash = 0xb706 // center
Charset Hash = 0x1807 // charset
Checked Hash = 0x1b307 // checked
Cite Hash = 0xfb04 // cite
Class Hash = 0x15905 // class
Classid Hash = 0x15907 // classid
Checked Hash = 0x19707 // checked
Cite Hash = 0x9204 // cite
Class Hash = 0x15105 // class
Classid Hash = 0x15107 // classid
Clear Hash = 0x2b05 // clear
Code Hash = 0x19204 // code
Codebase Hash = 0x19208 // codebase
Codetype Hash = 0x1a408 // codetype
Col Hash = 0x12803 // col
Colgroup Hash = 0x1bb08 // colgroup
Color Hash = 0x12805 // color
Cols Hash = 0x1cf04 // cols
Colspan Hash = 0x1cf07 // colspan
Compact Hash = 0x1ec07 // compact
Content Hash = 0x28407 // content
Controls Hash = 0x20108 // controls
Code Hash = 0x17404 // code
Codebase Hash = 0x17408 // codebase
Codetype Hash = 0x18808 // codetype
Col Hash = 0x12c03 // col
Colgroup Hash = 0x1af08 // colgroup
Color Hash = 0x12c05 // color
Cols Hash = 0x1c904 // cols
Colspan Hash = 0x1c907 // colspan
Compact Hash = 0x1d707 // compact
Content Hash = 0x27b07 // content
Controls Hash = 0x1e708 // controls
Data Hash = 0x1f04 // data
Datalist Hash = 0x1f08 // datalist
Datatype Hash = 0x4d08 // datatype
Dd Hash = 0x5b02 // dd
Declare Hash = 0xb707 // declare
Default Hash = 0x7f07 // default
DefaultChecked Hash = 0x1730e // defaultChecked
DefaultMuted Hash = 0x7f0c // defaultMuted
DefaultSelected Hash = 0x8a0f // defaultSelected
Defer Hash = 0x9805 // defer
Del Hash = 0x10503 // del
Details Hash = 0x15f07 // details
Dfn Hash = 0x16c03 // dfn
Dialog Hash = 0xa606 // dialog
Dir Hash = 0x7603 // dir
Disabled Hash = 0x18008 // disabled
Div Hash = 0x18703 // div
Dl Hash = 0x1b902 // dl
Dt Hash = 0x23102 // dt
Datatype Hash = 0xac08 // datatype
Dd Hash = 0x7902 // dd
Declare Hash = 0x5e07 // declare
Default Hash = 0xeb07 // default
DefaultChecked Hash = 0x2270e // defaultChecked
DefaultMuted Hash = 0xeb0c // defaultMuted
DefaultSelected Hash = 0xf60f // defaultSelected
Defer Hash = 0x10405 // defer
Del Hash = 0x37903 // del
Details Hash = 0x15707 // details
Dfn Hash = 0x16403 // dfn
Dialog Hash = 0xc606 // dialog
Dir Hash = 0x18503 // dir
Disabled Hash = 0x19d08 // disabled
Div Hash = 0x1a403 // div
Dl Hash = 0x1e502 // dl
Dt Hash = 0x21702 // dt
Em Hash = 0x4302 // em
Embed Hash = 0x4905 // embed
Enabled Hash = 0x26c07 // enabled
Enctype Hash = 0x1fa07 // enctype
Face Hash = 0x5604 // face
Fieldset Hash = 0x21408 // fieldset
Figcaption Hash = 0x21c0a // figcaption
Figure Hash = 0x22606 // figure
Footer Hash = 0xdb06 // footer
For Hash = 0x23b03 // for
Form Hash = 0x23b04 // form
Formaction Hash = 0x23b0a // formaction
Formnovalidate Hash = 0x2450e // formnovalidate
Frame Hash = 0x28c05 // frame
Frameborder Hash = 0x28c0b // frameborder
H1 Hash = 0x2e002 // h1
H2 Hash = 0x25302 // h2
H3 Hash = 0x25502 // h3
H4 Hash = 0x25702 // h4
H5 Hash = 0x25902 // h5
H6 Hash = 0x25b02 // h6
Head Hash = 0x2d204 // head
Header Hash = 0x2d206 // header
Hgroup Hash = 0x25d06 // hgroup
Hidden Hash = 0x26806 // hidden
Hr Hash = 0x32d02 // hr
Href Hash = 0x32d04 // href
Hreflang Hash = 0x32d08 // hreflang
Html Hash = 0x27304 // html
Http_Equiv Hash = 0x2770a // http-equiv
Embed Hash = 0x37505 // embed
Enabled Hash = 0x26307 // enabled
Enctype Hash = 0x2a207 // enctype
Face Hash = 0xb504 // face
Fieldset Hash = 0x1f308 // fieldset
Figcaption Hash = 0x1fb0a // figcaption
Figure Hash = 0x20c06 // figure
Font Hash = 0x17c04 // font
Footer Hash = 0xa006 // footer
For Hash = 0x21903 // for
Form Hash = 0x21904 // form
Formaction Hash = 0x2190a // formaction
Formnovalidate Hash = 0x2350e // formnovalidate
Frame Hash = 0x14505 // frame
Frameborder Hash = 0x2830b // frameborder
Frameset Hash = 0x14508 // frameset
H1 Hash = 0x2d002 // h1
H2 Hash = 0x24302 // h2
H3 Hash = 0x24502 // h3
H4 Hash = 0x24702 // h4
H5 Hash = 0x24902 // h5
H6 Hash = 0x24b02 // h6
Head Hash = 0x2c204 // head
Header Hash = 0x2c206 // header
Hgroup Hash = 0x24d06 // hgroup
Hidden Hash = 0x25f06 // hidden
Hr Hash = 0x16802 // hr
Href Hash = 0x16804 // href
Hreflang Hash = 0x16808 // hreflang
Html Hash = 0x26a04 // html
Http_Equiv Hash = 0x26e0a // http-equiv
I Hash = 0x2401 // i
Icon Hash = 0x28304 // icon
Id Hash = 0xb602 // id
Iframe Hash = 0x28b06 // iframe
Img Hash = 0x29703 // img
Inert Hash = 0xf605 // inert
Inlist Hash = 0x29a06 // inlist
Input Hash = 0x2a405 // input
Ins Hash = 0x2a903 // ins
Ismap Hash = 0x11205 // ismap
Itemscope Hash = 0xfc09 // itemscope
Kbd Hash = 0x7403 // kbd
Keygen Hash = 0x1f606 // keygen
Label Hash = 0xbe05 // label
Lang Hash = 0x33104 // lang
Language Hash = 0x33108 // language
Legend Hash = 0x2c506 // legend
Icon Hash = 0x27a04 // icon
Id Hash = 0x5d02 // id
Iframe Hash = 0x28206 // iframe
Image Hash = 0x28e05 // image
Img Hash = 0x29303 // img
Inert Hash = 0x5205 // inert
Inlist Hash = 0x29606 // inlist
Input Hash = 0x2a905 // input
Ins Hash = 0x2ae03 // ins
Ismap Hash = 0x11605 // ismap
Itemscope Hash = 0xe209 // itemscope
Kbd Hash = 0x18303 // kbd
Keygen Hash = 0x29e06 // keygen
Label Hash = 0x6505 // label
Lang Hash = 0x16c04 // lang
Language Hash = 0x16c08 // language
Legend Hash = 0x31706 // legend
Li Hash = 0x2302 // li
Link Hash = 0x7104 // link
Longdesc Hash = 0xc208 // longdesc
Main Hash = 0xf404 // main
Manifest Hash = 0x2bc08 // manifest
Map Hash = 0xee03 // map
Mark Hash = 0x2cb04 // mark
Math Hash = 0x2cf04 // math
Max Hash = 0x2d803 // max
Maxlength Hash = 0x2d809 // maxlength
Media Hash = 0xa405 // media
Menu Hash = 0x12204 // menu
Meta Hash = 0x2e204 // meta
Meter Hash = 0x2f705 // meter
Method Hash = 0x2fc06 // method
Multiple Hash = 0x30208 // multiple
Muted Hash = 0x30a05 // muted
Name Hash = 0xa204 // name
Nav Hash = 0x32403 // nav
Nohref Hash = 0x32b06 // nohref
Noresize Hash = 0x13608 // noresize
Noscript Hash = 0x14d08 // noscript
Noshade Hash = 0x16e07 // noshade
Novalidate Hash = 0x2490a // novalidate
Nowrap Hash = 0x1d506 // nowrap
Object Hash = 0xd506 // object
Ol Hash = 0xcb02 // ol
Open Hash = 0x32104 // open
Optgroup Hash = 0x35608 // optgroup
Option Hash = 0x30f06 // option
Link Hash = 0x3a504 // link
Longdesc Hash = 0x6908 // longdesc
Main Hash = 0x5004 // main
Manifest Hash = 0x11e08 // manifest
Map Hash = 0xd603 // map
Mark Hash = 0x2b404 // mark
Marquee Hash = 0x2b807 // marquee
Math Hash = 0x2bf04 // math
Max Hash = 0x2c803 // max
Maxlength Hash = 0x2c809 // maxlength
Media Hash = 0xc405 // media
Menu Hash = 0xde04 // menu
Menuitem Hash = 0xde08 // menuitem
Meta Hash = 0x2d204 // meta
Meter Hash = 0x30605 // meter
Method Hash = 0x30b06 // method
Multiple Hash = 0x31108 // multiple
Muted Hash = 0x31d05 // muted
Name Hash = 0xc204 // name
Nav Hash = 0x35803 // nav
Nobr Hash = 0x35f04 // nobr
Noembed Hash = 0x37307 // noembed
Noframes Hash = 0x14308 // noframes
Nohref Hash = 0x16606 // nohref
Noresize Hash = 0x1cf08 // noresize
Noscript Hash = 0x20408 // noscript
Noshade Hash = 0x22207 // noshade
Novalidate Hash = 0x2390a // novalidate
Nowrap Hash = 0x2ef06 // nowrap
Object Hash = 0x9a06 // object
Ol Hash = 0x7202 // ol
Open Hash = 0x35504 // open
Optgroup Hash = 0x39908 // optgroup
Option Hash = 0x32206 // option
Output Hash = 0x206 // output
P Hash = 0x501 // p
Param Hash = 0xf005 // param
Pauseonexit Hash = 0x1160b // pauseonexit
Picture Hash = 0x1c207 // picture
Plaintext Hash = 0x1da09 // plaintext
Poster Hash = 0x26206 // poster
Pre Hash = 0x35d03 // pre
Prefix Hash = 0x35d06 // prefix
Profile Hash = 0x36407 // profile
Progress Hash = 0x34208 // progress
Property Hash = 0x31508 // property
Q Hash = 0x14301 // q
Param Hash = 0x11a05 // param
Pauseonexit Hash = 0x1b60b // pauseonexit
Picture Hash = 0x25207 // picture
Plaintext Hash = 0x2f409 // plaintext
Portal Hash = 0x3a006 // portal
Poster Hash = 0x38c06 // poster
Pre Hash = 0x38503 // pre
Prefix Hash = 0x38506 // prefix
Profile Hash = 0x32807 // profile
Progress Hash = 0x32f08 // progress
Property Hash = 0x33e08 // property
Q Hash = 0x13901 // q
Rb Hash = 0x2f02 // rb
Readonly Hash = 0x1e408 // readonly
Rel Hash = 0xbc03 // rel
Required Hash = 0x22a08 // required
Resource Hash = 0x1c708 // resource
Rev Hash = 0x7803 // rev
Reversed Hash = 0x7808 // reversed
Rows Hash = 0x9c04 // rows
Rowspan Hash = 0x9c07 // rowspan
Rp Hash = 0x6a02 // rp
Readonly Hash = 0x2fe08 // readonly
Rel Hash = 0x6303 // rel
Required Hash = 0x21008 // required
Resource Hash = 0x25708 // resource
Rev Hash = 0xa503 // rev
Reversed Hash = 0xa508 // reversed
Rows Hash = 0xbc04 // rows
Rowspan Hash = 0xbc07 // rowspan
Rp Hash = 0x8802 // rp
Rt Hash = 0x2802 // rt
Rtc Hash = 0xf903 // rtc
Ruby Hash = 0xe004 // ruby
Rules Hash = 0x12c05 // rules
Rtc Hash = 0x5503 // rtc
Ruby Hash = 0x10804 // ruby
Rules Hash = 0x36205 // rules
S Hash = 0x1c01 // s
Samp Hash = 0x6004 // samp
Scope Hash = 0x10005 // scope
Scoped Hash = 0x10006 // scoped
Script Hash = 0x14f06 // script
Scrolling Hash = 0xc809 // scrolling
Seamless Hash = 0x19808 // seamless
Section Hash = 0x13007 // section
Select Hash = 0x16506 // select
Selected Hash = 0x16508 // selected
Shape Hash = 0x19f05 // shape
Size Hash = 0x13a04 // size
Slot Hash = 0x20804 // slot
Small Hash = 0x2ab05 // small
Sortable Hash = 0x2ef08 // sortable
Source Hash = 0x1c906 // source
Span Hash = 0x9f04 // span
Src Hash = 0x34903 // src
Srcset Hash = 0x34906 // srcset
Samp Hash = 0x7e04 // samp
Scope Hash = 0xe605 // scope
Scoped Hash = 0xe606 // scoped
Script Hash = 0x20606 // script
Scrolling Hash = 0x6f09 // scrolling
Seamless Hash = 0x36608 // seamless
Section Hash = 0x36d07 // section
Select Hash = 0x15d06 // select
Selected Hash = 0x15d08 // selected
Shape Hash = 0x1ee05 // shape
Size Hash = 0x1d304 // size
Slot Hash = 0x2b004 // slot
Small Hash = 0x2df05 // small
Sortable Hash = 0x33608 // sortable
Source Hash = 0x25906 // source
Span Hash = 0xbf04 // span
Src Hash = 0x34603 // src
Srcset Hash = 0x34606 // srcset
Start Hash = 0x2505 // start
Strong Hash = 0x29e06 // strong
Style Hash = 0x2c205 // style
Sub Hash = 0x31d03 // sub
Summary Hash = 0x33907 // summary
Sup Hash = 0x34003 // sup
Svg Hash = 0x34f03 // svg
Tabindex Hash = 0x2e408 // tabindex
Table Hash = 0x2f205 // table
Strike Hash = 0x29a06 // strike
Strong Hash = 0x12406 // strong
Style Hash = 0x34c05 // style
Sub Hash = 0x35103 // sub
Summary Hash = 0x37c07 // summary
Sup Hash = 0x38303 // sup
Svg Hash = 0x39203 // svg
Tabindex Hash = 0x2d408 // tabindex
Table Hash = 0x33905 // table
Target Hash = 0x706 // target
Tbody Hash = 0xc05 // tbody
Td Hash = 0x1e02 // td
Template Hash = 0x4208 // template
Text Hash = 0x1df04 // text
Textarea Hash = 0x1df08 // textarea
Tfoot Hash = 0xda05 // tfoot
Th Hash = 0x2d102 // th
Thead Hash = 0x2d105 // thead
Time Hash = 0x12004 // time
Title Hash = 0x15405 // title
Tr Hash = 0x1f202 // tr
Track Hash = 0x1f205 // track
Translate Hash = 0x20b09 // translate
Truespeed Hash = 0x23209 // truespeed
Type Hash = 0x5104 // type
Typemustmatch Hash = 0x1a80d // typemustmatch
Typeof Hash = 0x5106 // typeof
Text Hash = 0x2f904 // text
Textarea Hash = 0x2f908 // textarea
Tfoot Hash = 0x9f05 // tfoot
Th Hash = 0x2c102 // th
Thead Hash = 0x2c105 // thead
Time Hash = 0xdc04 // time
Title Hash = 0x14c05 // title
Tr Hash = 0x12502 // tr
Track Hash = 0x17f05 // track
Translate Hash = 0x1c009 // translate
Truespeed Hash = 0x1dd09 // truespeed
Tt Hash = 0x14002 // tt
Type Hash = 0xb004 // type
Typemustmatch Hash = 0x18c0d // typemustmatch
Typeof Hash = 0xb006 // typeof
U Hash = 0x301 // u
Ul Hash = 0x8302 // ul
Ul Hash = 0xef02 // ul
Undeterminate Hash = 0x370d // undeterminate
Usemap Hash = 0xeb06 // usemap
Valign Hash = 0x32606 // valign
Value Hash = 0x18905 // value
Valuetype Hash = 0x18909 // valuetype
Var Hash = 0x28003 // var
Video Hash = 0x35205 // video
Visible Hash = 0x36b07 // visible
Vlink Hash = 0x37205 // vlink
Vocab Hash = 0x37705 // vocab
Wbr Hash = 0x37e03 // wbr
Xmlns Hash = 0x2eb05 // xmlns
Xmp Hash = 0x36203 // xmp
Usemap Hash = 0xd306 // usemap
Valign Hash = 0x35a06 // valign
Value Hash = 0x1a605 // value
Valuetype Hash = 0x1a609 // valuetype
Var Hash = 0x27703 // var
Video Hash = 0x39505 // video
Visible Hash = 0x3a907 // visible
Vlink Hash = 0x3b005 // vlink
Vocab Hash = 0x3b505 // vocab
Wbr Hash = 0x3bc03 // wbr
Xmlns Hash = 0x2db05 // xmlns
Xmp Hash = 0x38a03 // xmp
)
// String returns the hash' name.
@ -288,256 +304,273 @@ NEXT:
return 0
}
const _Hash_hash0 = 0x9acb0442
const _Hash_hash0 = 0x67ac9bb5
const _Hash_maxLen = 15
const _Hash_text = "aboutputargetbodyaccept-charsetdatalistarticlearbackgroundet" +
"erminatemplatembedatatypeofaceaddressamp-boilerplatealinkbdi" +
"reversedefaultMutedefaultSelectedeferowspanamedialogasyncanv" +
"asideclarelabelongdescrollingaudiobjectfooterubyautofocusema" +
"paramainertcitemscopedelautoplayaxismapauseonexitimenubgcolo" +
"rulesectionoresizeblockquotebuttonoscriptitleclassidetailsel" +
"ectedfnoshadefaultCheckedisabledivaluetypecodebaseamlesshape" +
"codetypemustmatcheckedlcolgroupicturesourcecolspanowraplaint" +
"extareadonlycompactrackeygenctypecontrolslotranslatefieldset" +
"figcaptionfigurequiredtruespeedformactionformnovalidateh2h3h" +
"4h5h6hgrouposterhiddenabledhtmlhttp-equivaricontentiframebor" +
"derimginlistronginputinsmallowfullscreenmanifestylegendmarkm" +
"atheadermaxlength1metabindexmlnsortablemetermethodmultiplemu" +
"tedoptionpropertysubdopenavalignohreflanguagesummarysuprogre" +
"ssrcsetsvgvideoptgrouprefixmprofilevisiblevlinkvocabbrwbr"
"erminatemplateacronymainertcanvasideclarelabelongdescrolling" +
"addressamp-boilerplateasynciteaudiobjectfootereversedatatype" +
"ofacenterowspanamedialogautofocusemappletimenuitemscopedefau" +
"ltMutedefaultSelectedeferubyautoplayaxismaparamanifestrongbg" +
"colorbigblockquotebuttonoframesetitleclassidetailselectedfno" +
"hreflanguagecodebasefontrackbdircodetypemustmatcheckedisable" +
"divaluetypecolgroupauseonexitranslatecolspanoresizecompactru" +
"espeedlcontrolshapefieldsetfigcaptionoscriptfigurequiredtfor" +
"mactionoshadefaultCheckedformnovalidateh2h3h4h5h6hgroupictur" +
"esourcehiddenabledhtmlhttp-equivaricontentiframeborderimagei" +
"mginlistrikeygenctypeinputinslotmarkmarqueematheadermaxlengt" +
"h1metabindexmlnsmallowfullscreenowraplaintextareadonlymeterm" +
"ethodmultiplegendmutedoptionprofileprogressortablepropertysr" +
"csetstylesubdopenavalignobruleseamlessectionoembedelsummarys" +
"uprefixmpostersvgvideoptgrouportalinkvisiblevlinkvocabbrwbr"
var _Hash_table = [1 << 9]Hash{
0x0: 0x1df08, // textarea
0x4: 0x32d02, // hr
0x8: 0x1c207, // picture
0xb: 0x18905, // value
0xf: 0x2e408, // tabindex
0x12: 0x15905, // class
0x15: 0x37e03, // wbr
0x18: 0x1a80d, // typemustmatch
0x1a: 0x1b902, // dl
0x1d: 0xf903, // rtc
0x1e: 0x25702, // h4
0x22: 0x2ef08, // sortable
0x24: 0x4208, // template
0x25: 0x28c0b, // frameborder
0x28: 0x37a04, // abbr
0x29: 0x28b06, // iframe
0x2a: 0x610f, // amp-boilerplate
0x2c: 0x1e408, // readonly
0x30: 0x23f06, // action
0x33: 0x28c05, // frame
0x35: 0x12c05, // rules
0x36: 0x30208, // multiple
0x38: 0x31f03, // bdo
0x39: 0x1d506, // nowrap
0x3e: 0x21408, // fieldset
0x3f: 0x7503, // bdi
0x46: 0x7f0c, // defaultMuted
0x49: 0x35205, // video
0x4c: 0x19808, // seamless
0x4d: 0x13608, // noresize
0x4f: 0xb602, // id
0x51: 0x25d06, // hgroup
0x52: 0x23102, // dt
0x55: 0x12805, // color
0x56: 0x34003, // sup
0x59: 0x370d, // undeterminate
0x5a: 0x35608, // optgroup
0x5b: 0x2d206, // header
0x5c: 0xb405, // aside
0x5f: 0x10005, // scope
0x60: 0x101, // b
0x61: 0xcb02, // ol
0x64: 0x32b06, // nohref
0x65: 0x1da09, // plaintext
0x66: 0x20804, // slot
0x67: 0x11004, // axis
0x68: 0x12803, // col
0x69: 0x32606, // valign
0x6c: 0x2d105, // thead
0x70: 0x34906, // srcset
0x71: 0x26806, // hidden
0x76: 0x1bb08, // colgroup
0x78: 0x34f03, // svg
0x7b: 0x2cb04, // mark
0x7e: 0x33104, // lang
0x81: 0x1cf04, // cols
0x86: 0x5a07, // address
0x8b: 0xf404, // main
0x8c: 0x4302, // em
0x8f: 0x32d08, // hreflang
0x93: 0x1b307, // checked
0x94: 0x25902, // h5
0x95: 0x301, // u
0x96: 0x32705, // align
0x97: 0x14301, // q
0x99: 0xd506, // object
0x9b: 0x28407, // content
0x9d: 0xc809, // scrolling
0x9f: 0x36407, // profile
0xa0: 0x34903, // src
0xa1: 0xda05, // tfoot
0xa3: 0x2f705, // meter
0xa4: 0x37705, // vocab
0xa6: 0xd04, // body
0xa8: 0x19204, // code
0xac: 0x20108, // controls
0xb0: 0x2ab05, // small
0xb1: 0x18008, // disabled
0xb5: 0x5604, // face
0xb6: 0x501, // p
0xb9: 0x2302, // li
0xbb: 0xe409, // autofocus
0xbf: 0x27304, // html
0xc2: 0x4d08, // datatype
0xc6: 0x35d06, // prefix
0xcb: 0x35d03, // pre
0xcc: 0x1106, // accept
0xd1: 0x23b03, // for
0xd5: 0x29e06, // strong
0xd6: 0x9c07, // rowspan
0xd7: 0x25502, // h3
0xd8: 0x2cf04, // math
0xde: 0x16e07, // noshade
0xdf: 0x19f05, // shape
0xe1: 0x10006, // scoped
0xe3: 0x706, // target
0xe6: 0x21c0a, // figcaption
0xe9: 0x1df04, // text
0xea: 0x1c708, // resource
0xec: 0xee03, // map
0xf0: 0x29a06, // inlist
0xf1: 0x16506, // select
0xf2: 0x1f606, // keygen
0xf3: 0x5106, // typeof
0xf6: 0xb006, // canvas
0xf7: 0x30f06, // option
0xf8: 0xbe05, // label
0xf9: 0xbc03, // rel
0xfb: 0x1f04, // data
0xfd: 0x6004, // samp
0x100: 0x110e, // accept-charset
0x101: 0xeb06, // usemap
0x103: 0x2bc08, // manifest
0x109: 0xa204, // name
0x10a: 0x14806, // button
0x10b: 0x2b05, // clear
0x10e: 0x33907, // summary
0x10f: 0x2e204, // meta
0x110: 0x33108, // language
0x112: 0x300a, // background
0x113: 0x2707, // article
0x116: 0x23b0a, // formaction
0x119: 0x1, // a
0x11b: 0x5, // about
0x11c: 0xfc09, // itemscope
0x11e: 0x14d08, // noscript
0x11f: 0x15907, // classid
0x120: 0x36203, // xmp
0x121: 0x19604, // base
0x123: 0x1c01, // s
0x124: 0x36b07, // visible
0x126: 0x37b02, // bb
0x127: 0x9c04, // rows
0x12d: 0x2450e, // formnovalidate
0x131: 0x1f205, // track
0x135: 0x18703, // div
0x136: 0xac05, // async
0x137: 0x31508, // property
0x13a: 0x16c03, // dfn
0x13e: 0xf605, // inert
0x142: 0x10503, // del
0x144: 0x25302, // h2
0x147: 0x2c205, // style
0x149: 0x29703, // img
0x14a: 0xc05, // tbody
0x14b: 0x7603, // dir
0x14c: 0x2eb05, // xmlns
0x14e: 0x1f08, // datalist
0x14f: 0x32d04, // href
0x150: 0x1f202, // tr
0x151: 0x13e0a, // blockquote
0x152: 0x18909, // valuetype
0x155: 0xdb06, // footer
0x157: 0x14f06, // script
0x158: 0x1cf07, // colspan
0x15d: 0x1730e, // defaultChecked
0x15f: 0x2490a, // novalidate
0x164: 0x1a408, // codetype
0x165: 0x2c506, // legend
0x16b: 0x1160b, // pauseonexit
0x16c: 0x21f07, // caption
0x16f: 0x26c07, // enabled
0x173: 0x26206, // poster
0x175: 0x30a05, // muted
0x176: 0x11205, // ismap
0x178: 0x2a903, // ins
0x17a: 0xe004, // ruby
0x17b: 0x37c02, // br
0x17c: 0x8a0f, // defaultSelected
0x17d: 0x7403, // kbd
0x17f: 0x1c906, // source
0x182: 0x9f04, // span
0x184: 0x2d803, // max
0x18a: 0x5b02, // dd
0x18b: 0x13a04, // size
0x18c: 0xa405, // media
0x18d: 0x19208, // codebase
0x18f: 0x4905, // embed
0x192: 0x5104, // type
0x193: 0xf005, // param
0x194: 0x25b02, // h6
0x197: 0x28304, // icon
0x198: 0x12607, // bgcolor
0x199: 0x2ad0f, // allowfullscreen
0x19a: 0x12004, // time
0x19b: 0x7803, // rev
0x19d: 0x34208, // progress
0x19e: 0x22606, // figure
0x1a0: 0x6a02, // rp
0x1a2: 0xa606, // dialog
0x1a4: 0x2802, // rt
0x1a7: 0x1e304, // area
0x1a8: 0x7808, // reversed
0x1aa: 0x32104, // open
0x1ac: 0x2d204, // head
0x1ad: 0x7005, // alink
0x1af: 0x28003, // var
0x1b0: 0x15f07, // details
0x1b1: 0x2401, // i
0x1b3: 0x1e02, // td
0x1b4: 0xb707, // declare
0x1b5: 0x8302, // ul
0x1ba: 0x2fc06, // method
0x1bd: 0x13007, // section
0x1be: 0x22a08, // required
0x1c2: 0x9805, // defer
0x1c3: 0x37205, // vlink
0x1c4: 0x15405, // title
0x1c5: 0x2770a, // http-equiv
0x1c6: 0x1fa07, // enctype
0x1c7: 0x1ec07, // compact
0x1c8: 0x2d809, // maxlength
0x1c9: 0x16508, // selected
0x1cc: 0xd105, // audio
0x1cd: 0xc208, // longdesc
0x1d1: 0xfb04, // cite
0x1da: 0x2505, // start
0x1de: 0x2d102, // th
0x1df: 0x10808, // autoplay
0x1e2: 0x7104, // link
0x1e3: 0x206, // output
0x1e5: 0x12204, // menu
0x1e6: 0x2a405, // input
0x1eb: 0x32403, // nav
0x1ec: 0x31d03, // sub
0x1ee: 0x1807, // charset
0x1ef: 0x7f07, // default
0x1f3: 0x2f205, // table
0x1f4: 0x23b04, // form
0x1f5: 0x23209, // truespeed
0x1f6: 0x2f02, // rb
0x1fb: 0x20b09, // translate
0x1fd: 0x2e002, // h1
0x1: 0x13e06, // button
0x3: 0x2a207, // enctype
0x4: 0x32206, // option
0x5: 0x1fb0a, // figcaption
0x7: 0x2ae03, // ins
0x9: 0x9605, // audio
0xb: 0x2830b, // frameborder
0xd: 0x2190a, // formaction
0xe: 0x5, // about
0xf: 0x34606, // srcset
0x10: 0x1dd09, // truespeed
0x11: 0xeb0c, // defaultMuted
0x13: 0xa006, // footer
0x15: 0x19d08, // disabled
0x16: 0x26e0a, // http-equiv
0x19: 0x3a504, // link
0x1a: 0x29606, // inlist
0x1d: 0x10804, // ruby
0x21: 0x2a905, // input
0x22: 0x35803, // nav
0x25: 0x7902, // dd
0x26: 0x2350e, // formnovalidate
0x28: 0x16804, // href
0x29: 0x24702, // h4
0x2b: 0x10405, // defer
0x2d: 0x1f308, // fieldset
0x2e: 0xeb07, // default
0x34: 0x2fd04, // area
0x36: 0xb006, // typeof
0x37: 0x37307, // noembed
0x38: 0x5e07, // declare
0x3a: 0x4a07, // acronym
0x3b: 0xc05, // tbody
0x3e: 0x15107, // classid
0x41: 0x9a06, // object
0x43: 0x16403, // dfn
0x44: 0xef02, // ul
0x45: 0x16c04, // lang
0x47: 0x16606, // nohref
0x49: 0x2c803, // max
0x4a: 0x6505, // label
0x4c: 0x1d304, // size
0x4d: 0xe606, // scoped
0x4f: 0x15105, // class
0x50: 0x11404, // axis
0x54: 0xbf04, // span
0x56: 0x19707, // checked
0x59: 0x38506, // prefix
0x5b: 0x4208, // template
0x5c: 0x370d, // undeterminate
0x5d: 0xc606, // dialog
0x5e: 0x6908, // longdesc
0x60: 0x21903, // for
0x61: 0x2c102, // th
0x64: 0x15d08, // selected
0x65: 0x35103, // sub
0x6a: 0xd306, // usemap
0x6e: 0x24d06, // hgroup
0x6f: 0x38303, // sup
0x70: 0x2b404, // mark
0x71: 0x28206, // iframe
0x72: 0x30605, // meter
0x74: 0x21008, // required
0x75: 0x1f04, // data
0x78: 0x14308, // noframes
0x83: 0x7807, // address
0x88: 0x10c08, // autoplay
0x8a: 0x28e05, // image
0x8b: 0x16c08, // language
0x8e: 0x2f904, // text
0x8f: 0x16802, // hr
0x90: 0x5d02, // id
0x92: 0x31108, // multiple
0x94: 0x16808, // hreflang
0x95: 0x2db05, // xmlns
0x96: 0x24902, // h5
0x98: 0x25207, // picture
0x99: 0x1106, // accept
0x9a: 0x1a609, // valuetype
0x9b: 0x3a006, // portal
0x9d: 0xac08, // datatype
0x9e: 0x18403, // bdi
0xa0: 0x27a04, // icon
0xa2: 0xa503, // rev
0xa5: 0x25708, // resource
0xa8: 0x35504, // open
0xac: 0x4302, // em
0xae: 0x1340a, // blockquote
0xb0: 0x2f409, // plaintext
0xb1: 0x2d204, // meta
0xb2: 0x1c01, // s
0xb4: 0xdc04, // time
0xb5: 0x1fe07, // caption
0xb8: 0x33e08, // property
0xb9: 0x1, // a
0xbb: 0x2b807, // marquee
0xbc: 0x3b505, // vocab
0xbd: 0x1e502, // dl
0xbf: 0xbc07, // rowspan
0xc4: 0x18503, // dir
0xc5: 0x39908, // optgroup
0xcc: 0x38c06, // poster
0xcd: 0x24502, // h3
0xce: 0x3b804, // abbr
0xd1: 0x17408, // codebase
0xd2: 0x27b07, // content
0xd4: 0x7e04, // samp
0xd6: 0xc204, // name
0xd9: 0x14c05, // title
0xda: 0x1a605, // value
0xdd: 0xb004, // type
0xde: 0x35f04, // nobr
0xe0: 0x17c04, // font
0xe1: 0xd603, // map
0xe2: 0x2d002, // h1
0xe3: 0x22207, // noshade
0xe4: 0x6303, // rel
0xe5: 0x14002, // tt
0xe7: 0xde04, // menu
0xeb: 0x2f908, // textarea
0xee: 0x35b05, // align
0xf1: 0x29303, // img
0xf2: 0x35a06, // valign
0xf3: 0x2c204, // head
0xf4: 0x12a07, // bgcolor
0xf5: 0x5004, // main
0xf6: 0x2302, // li
0xf7: 0x5205, // inert
0xfa: 0x5706, // canvas
0xfb: 0xe605, // scope
0xfc: 0x15d06, // select
0x100: 0xa508, // reversed
0x101: 0x20408, // noscript
0x102: 0x37c07, // summary
0x103: 0x24b02, // h6
0x106: 0x17404, // code
0x107: 0x14508, // frameset
0x10a: 0x12406, // strong
0x10d: 0x300a, // background
0x10e: 0x18303, // kbd
0x114: 0x31706, // legend
0x116: 0x32f08, // progress
0x118: 0x2d408, // tabindex
0x119: 0x34603, // src
0x11c: 0x39505, // video
0x11f: 0x29a06, // strike
0x121: 0xd706, // applet
0x123: 0x2802, // rt
0x125: 0x20606, // script
0x128: 0xbc04, // rows
0x129: 0x2707, // article
0x12e: 0x9204, // cite
0x131: 0x18c0d, // typemustmatch
0x133: 0x17f05, // track
0x135: 0x3b902, // bb
0x136: 0x1ee05, // shape
0x137: 0x5b05, // aside
0x138: 0x1b60b, // pauseonexit
0x13c: 0x38503, // pre
0x140: 0x301, // u
0x149: 0x1a403, // div
0x14c: 0x3a405, // alink
0x14e: 0x27703, // var
0x14f: 0x21d06, // action
0x152: 0x2b05, // clear
0x154: 0x2401, // i
0x155: 0x21702, // dt
0x156: 0x36608, // seamless
0x157: 0x21904, // form
0x15b: 0x15707, // details
0x15f: 0x8e05, // async
0x160: 0x26a04, // html
0x161: 0x33608, // sortable
0x165: 0x2f02, // rb
0x167: 0x2e10f, // allowfullscreen
0x168: 0x17804, // base
0x169: 0x25f06, // hidden
0x16e: 0x2ef06, // nowrap
0x16f: 0x2505, // start
0x170: 0x14505, // frame
0x171: 0x1f08, // datalist
0x173: 0x12502, // tr
0x174: 0x30b06, // method
0x175: 0x101, // b
0x176: 0x1c904, // cols
0x178: 0x110e, // accept-charset
0x17a: 0x36205, // rules
0x17b: 0x7f0f, // amp-boilerplate
0x17f: 0x2270e, // defaultChecked
0x180: 0x32807, // profile
0x181: 0x2b004, // slot
0x182: 0x11a05, // param
0x185: 0x1c907, // colspan
0x186: 0x34c05, // style
0x187: 0x1e02, // td
0x188: 0x12c05, // color
0x18c: 0x13901, // q
0x18d: 0x3b005, // vlink
0x18e: 0x39203, // svg
0x18f: 0x33905, // table
0x190: 0x29e06, // keygen
0x192: 0x20c06, // figure
0x193: 0x3a907, // visible
0x195: 0x17808, // basefont
0x196: 0x8802, // rp
0x197: 0xf60f, // defaultSelected
0x198: 0x1af08, // colgroup
0x19a: 0x3bc03, // wbr
0x19c: 0x36d07, // section
0x19d: 0x25906, // source
0x19f: 0x2bf04, // math
0x1a1: 0x2fe08, // readonly
0x1a7: 0x1e708, // controls
0x1a9: 0xde08, // menuitem
0x1ad: 0x206, // output
0x1b0: 0x2c809, // maxlength
0x1b2: 0xe209, // itemscope
0x1b9: 0x501, // p
0x1bc: 0x2df05, // small
0x1bd: 0x36102, // br
0x1c0: 0x5503, // rtc
0x1c1: 0x1c009, // translate
0x1c4: 0x35303, // bdo
0x1c5: 0xd04, // body
0x1c8: 0xb706, // center
0x1c9: 0x2c105, // thead
0x1ca: 0xcc09, // autofocus
0x1cc: 0xb504, // face
0x1cd: 0x24302, // h2
0x1ce: 0x11e08, // manifest
0x1d0: 0x706, // target
0x1d1: 0x11605, // ismap
0x1d3: 0xc405, // media
0x1d7: 0x13103, // big
0x1da: 0x37903, // del
0x1dc: 0x6f09, // scrolling
0x1de: 0x37505, // embed
0x1e0: 0x31d05, // muted
0x1e4: 0x2390a, // novalidate
0x1e6: 0x7202, // ol
0x1eb: 0x9f05, // tfoot
0x1ec: 0x18808, // codetype
0x1ee: 0x26307, // enabled
0x1f0: 0x2c206, // header
0x1f1: 0x1cf08, // noresize
0x1f6: 0x1d707, // compact
0x1f9: 0x12c03, // col
0x1fa: 0x38a03, // xmp
0x1fb: 0x1807, // charset
}

View file

@ -129,7 +129,7 @@ func (o *Minifier) Minify(m *minify.M, w io.Writer, r io.Reader, _ map[string]st
var params map[string]string
if rawTagHash == Iframe {
mimetype = htmlMimeBytes
} else if len(rawTagMediatype) > 0 {
} else if 0 < len(rawTagMediatype) {
mimetype, params = parse.Mediatype(rawTagMediatype)
} else if rawTagHash == Script {
mimetype = jsMimeBytes
@ -169,20 +169,15 @@ func (o *Minifier) Minify(m *minify.M, w io.Writer, r io.Reader, _ map[string]st
t.Data = t.Data[:len(t.Data)-1]
omitSpace = false
break
} else if next.TokenType == html.TextToken {
// this only happens when a comment, doctype or phrasing end tag (only for !o.KeepWhitespace) was in between
// remove if the text token starts with a whitespace
if len(next.Data) > 0 && parse.IsWhitespace(next.Data[0]) {
t.Data = t.Data[:len(t.Data)-1]
omitSpace = false
}
} else if next.TokenType == html.TextToken && !parse.IsAllWhitespace(next.Data) {
// stop looking when text encountered
break
} else if next.TokenType == html.StartTagToken || next.TokenType == html.EndTagToken {
if o.KeepWhitespace {
break
}
// remove when followed up by a block tag
if next.Traits&nonPhrasingTag != 0 {
// remove when followed by a block tag
if next.Traits&blockTag != 0 {
t.Data = t.Data[:len(t.Data)-1]
omitSpace = false
break
@ -271,14 +266,14 @@ func (o *Minifier) Minify(m *minify.M, w io.Writer, r io.Reader, _ map[string]st
}
}
if t.Traits&nonPhrasingTag != 0 {
omitSpace = true // omit spaces after block elements
} else if o.KeepWhitespace || t.Traits&objectTag != 0 {
omitSpace = false
}
if !omitEndTag {
if len(t.Data) > 3+len(t.Text) {
if o.KeepWhitespace || t.Traits&objectTag != 0 {
omitSpace = false
} else if t.Traits&blockTag != 0 {
omitSpace = true // omit spaces after block elements
}
if 3+len(t.Text) < len(t.Data) {
t.Data[2+len(t.Text)] = '>'
t.Data = t.Data[:3+len(t.Text)]
}
@ -296,7 +291,7 @@ func (o *Minifier) Minify(m *minify.M, w io.Writer, r io.Reader, _ map[string]st
if o.KeepWhitespace || t.Traits&objectTag != 0 {
omitSpace = false
} else if t.Traits&nonPhrasingTag != 0 {
} else if t.Traits&blockTag != 0 {
omitSpace = true // omit spaces after block elements
}
@ -327,7 +322,7 @@ func (o *Minifier) Minify(m *minify.M, w io.Writer, r io.Reader, _ map[string]st
for i := 0; i < len(content.AttrVal); i++ {
if content.AttrVal[i] == '=' && i+2 < len(content.AttrVal) {
i++
if n := parse.Number(content.AttrVal[i:]); n > 0 {
if n := parse.Number(content.AttrVal[i:]); 0 < n {
minNum := minify.Number(content.AttrVal[i:i+n], -1)
if len(minNum) < n {
copy(content.AttrVal[i:i+len(minNum)], minNum)
@ -434,10 +429,10 @@ func (o *Minifier) Minify(m *minify.M, w io.Writer, r io.Reader, _ map[string]st
if len(val) == 0 {
continue
}
} else if len(attr.Text) > 2 && attr.Text[0] == 'o' && attr.Text[1] == 'n' {
} else if 2 < len(attr.Text) && attr.Text[0] == 'o' && attr.Text[1] == 'n' {
// JS minifier for attribute inline code
val = parse.TrimWhitespace(val)
if len(val) >= 11 && parse.EqualFold(val[:11], jsSchemeBytes) {
if 11 <= len(val) && parse.EqualFold(val[:11], jsSchemeBytes) {
val = val[11:]
}
attrMinifyBuffer.Reset()
@ -475,7 +470,7 @@ func (o *Minifier) Minify(m *minify.M, w io.Writer, r io.Reader, _ map[string]st
w.Write(spaceBytes)
w.Write(attr.Text)
if len(val) > 0 && attr.Traits&booleanAttr == 0 {
if 0 < len(val) && attr.Traits&booleanAttr == 0 {
w.Write(isBytes)
// use double quotes for RDFa attributes
@ -504,7 +499,7 @@ func (o *Minifier) Minify(m *minify.M, w io.Writer, r io.Reader, _ map[string]st
}
// keep space after phrasing tags (<i>, <span>, ...) FontAwesome etc.
if t.TokenType == html.StartTagToken && t.Traits&nonPhrasingTag == 0 {
if t.TokenType == html.StartTagToken && t.Traits == normalTag {
if next := tb.Peek(0); next.Hash == t.Hash && next.TokenType == html.EndTagToken {
omitSpace = false
}

View file

@ -3,12 +3,12 @@ package html
type traits uint16
const (
normalTag traits = 1 << iota
rawTag // raw tags need special processing for their content
nonPhrasingTag // non-phrasing elements are unaffected by whitespace, remove spaces around these tags
objectTag // content tags with a few exclusions, keep spaces after these open/close tags
omitPTag // omit p end tag if it is followed by this start tag
keepPTag // keep p end tag if it is followed by this end tag
normalTag traits = 1 << iota
rawTag // raw tags need special processing for their content
blockTag // remove spaces around these tags
objectTag // keep spaces after these open/close tags
omitPTag // omit p end tag if it is followed by this start tag
keepPTag // keep p end tag if it is followed by this end tag
)
const (
@ -21,54 +21,54 @@ const (
var tagMap = map[Hash]traits{
A: keepPTag,
Abbr: normalTag,
Address: nonPhrasingTag | omitPTag,
Address: blockTag | omitPTag,
Area: normalTag,
Article: nonPhrasingTag | omitPTag,
Aside: nonPhrasingTag | omitPTag,
Article: blockTag | omitPTag,
Aside: blockTag | omitPTag,
Audio: keepPTag,
B: normalTag,
Base: normalTag,
Bb: normalTag,
Bdi: normalTag,
Bdo: normalTag,
Blockquote: nonPhrasingTag | omitPTag,
Body: nonPhrasingTag,
Br: nonPhrasingTag,
Blockquote: blockTag | omitPTag,
Body: normalTag,
Br: blockTag,
Button: objectTag,
Canvas: objectTag | keepPTag,
Caption: nonPhrasingTag,
Caption: blockTag,
Cite: normalTag,
Code: normalTag,
Col: nonPhrasingTag,
Colgroup: nonPhrasingTag,
Col: blockTag,
Colgroup: blockTag,
Data: normalTag,
Datalist: normalTag,
Dd: nonPhrasingTag,
Datalist: normalTag, // no text content
Dd: blockTag,
Del: keepPTag,
Details: omitPTag,
Details: blockTag | omitPTag,
Dfn: normalTag,
Dialog: normalTag,
Div: nonPhrasingTag | omitPTag,
Dl: nonPhrasingTag | omitPTag,
Dt: nonPhrasingTag,
Div: blockTag | omitPTag,
Dl: blockTag | omitPTag,
Dt: blockTag,
Em: normalTag,
Embed: nonPhrasingTag,
Fieldset: nonPhrasingTag | omitPTag,
Figcaption: nonPhrasingTag | omitPTag,
Figure: nonPhrasingTag | omitPTag,
Footer: nonPhrasingTag | omitPTag,
Form: nonPhrasingTag | omitPTag,
H1: nonPhrasingTag | omitPTag,
H2: nonPhrasingTag | omitPTag,
H3: nonPhrasingTag | omitPTag,
H4: nonPhrasingTag | omitPTag,
H5: nonPhrasingTag | omitPTag,
H6: nonPhrasingTag | omitPTag,
Head: nonPhrasingTag,
Header: nonPhrasingTag | omitPTag,
Hgroup: nonPhrasingTag,
Hr: nonPhrasingTag | omitPTag,
Html: nonPhrasingTag,
Embed: normalTag,
Fieldset: blockTag | omitPTag,
Figcaption: blockTag | omitPTag,
Figure: blockTag | omitPTag,
Footer: blockTag | omitPTag,
Form: blockTag | omitPTag,
H1: blockTag | omitPTag,
H2: blockTag | omitPTag,
H3: blockTag | omitPTag,
H4: blockTag | omitPTag,
H5: blockTag | omitPTag,
H6: blockTag | omitPTag,
Head: blockTag,
Header: blockTag | omitPTag,
Hgroup: blockTag,
Hr: blockTag | omitPTag,
Html: blockTag,
I: normalTag,
Iframe: rawTag | objectTag,
Img: objectTag,
@ -76,64 +76,90 @@ var tagMap = map[Hash]traits{
Ins: keepPTag,
Kbd: normalTag,
Label: normalTag,
Legend: normalTag,
Li: nonPhrasingTag,
Legend: blockTag,
Li: blockTag,
Link: normalTag,
Main: nonPhrasingTag | omitPTag,
Main: blockTag | omitPTag,
Map: keepPTag,
Mark: normalTag,
Math: rawTag,
Menu: omitPTag,
Meta: nonPhrasingTag,
Menu: blockTag | omitPTag,
Meta: normalTag,
Meter: objectTag,
Nav: nonPhrasingTag | omitPTag,
Noscript: nonPhrasingTag | keepPTag,
Nav: blockTag | omitPTag,
Noscript: blockTag | keepPTag,
Object: objectTag,
Ol: nonPhrasingTag | omitPTag,
Optgroup: normalTag,
Option: normalTag,
Output: nonPhrasingTag,
P: nonPhrasingTag | omitPTag,
Ol: blockTag | omitPTag,
Optgroup: normalTag, // no text content
Option: blockTag,
Output: normalTag,
P: blockTag | omitPTag,
Param: normalTag,
Picture: normalTag,
Pre: nonPhrasingTag | omitPTag,
Pre: blockTag | omitPTag,
Progress: objectTag,
Q: objectTag,
Rp: normalTag,
Rt: normalTag,
Rt: objectTag,
Ruby: normalTag,
S: normalTag,
Samp: normalTag,
Script: rawTag,
Section: nonPhrasingTag | omitPTag,
Section: blockTag | omitPTag,
Select: objectTag,
Slot: normalTag,
Small: normalTag,
Source: normalTag,
Span: normalTag,
Strong: normalTag,
Style: rawTag | nonPhrasingTag,
Style: rawTag | blockTag,
Sub: normalTag,
Summary: normalTag,
Summary: blockTag,
Sup: normalTag,
Svg: rawTag | objectTag,
Table: nonPhrasingTag | omitPTag,
Tbody: nonPhrasingTag,
Td: nonPhrasingTag,
Table: blockTag | omitPTag,
Tbody: blockTag,
Td: blockTag,
Template: normalTag,
Textarea: rawTag | objectTag,
Tfoot: nonPhrasingTag,
Th: nonPhrasingTag,
Thead: nonPhrasingTag,
Tfoot: blockTag,
Th: blockTag,
Thead: blockTag,
Time: normalTag,
Title: nonPhrasingTag,
Tr: nonPhrasingTag,
Title: normalTag,
Tr: blockTag,
Track: normalTag,
U: normalTag,
Ul: nonPhrasingTag | omitPTag,
Ul: blockTag | omitPTag,
Var: normalTag,
Video: objectTag | keepPTag,
Wbr: normalTag,
Wbr: objectTag,
// removed tags
Acronym: normalTag,
Applet: normalTag,
Basefont: normalTag,
Big: normalTag,
Center: blockTag,
Dir: blockTag,
Font: normalTag,
Frame: normalTag,
Frameset: normalTag,
Image: objectTag,
Marquee: blockTag,
Menuitem: normalTag,
Nobr: normalTag,
Noembed: blockTag,
Noframes: blockTag,
Plaintext: normalTag,
Rtc: objectTag,
Rb: normalTag,
Strike: normalTag,
Tt: normalTag,
Xmp: blockTag,
// experimental tags
Portal: normalTag,
}
var attrMap = map[Hash]traits{
@ -574,7 +600,7 @@ var EntitiesMap = map[string][]byte{
"SupersetEqual": []byte("&supe;"),
"Supset": []byte("&Sup;"),
"THORN": []byte("&#222;"),
"Tab": []byte(" "),
"Tab": []byte("\t"),
"Tcaron": []byte("&#356;"),
"Tcedil": []byte("&#354;"),
"Therefore": []byte("&#8756;"),

63
vendor/github.com/tdewolff/parse/v2/strconv/decimal.go generated vendored Normal file
View file

@ -0,0 +1,63 @@
package strconv
import (
"math"
)
func ParseDecimal(b []byte) (float64, int) {
i := 0
start := i
dot := -1
trunk := -1
n := uint64(0)
for ; i < len(b); i++ {
c := b[i]
if '0' <= c && c <= '9' {
if trunk == -1 {
if math.MaxUint64/10 < n {
trunk = i
} else {
n *= 10
n += uint64(c - '0')
}
}
} else if dot == -1 && c == '.' {
dot = i
} else {
break
}
}
if i == start || i == start+1 && dot == start {
return 0.0, 0
}
f := float64(n)
mantExp := int64(0)
if dot != -1 {
if trunk == -1 {
trunk = i
}
mantExp = int64(trunk - dot - 1)
} else if trunk != -1 {
mantExp = int64(trunk - i)
}
exp := -mantExp
// copied from strconv/atof.go
if exp == 0 {
return f, i
} else if 0 < exp && exp <= 15+22 { // int * 10^k
// If exponent is big but number of digits is not,
// can move a few zeros into the integer part.
if 22 < exp {
f *= float64pow10[exp-22]
exp = 22
}
if -1e15 <= f && f <= 1e15 {
return f * float64pow10[exp], i
}
} else if exp < 0 && -22 <= exp { // int / 10^k
return f / float64pow10[-exp], i
}
return f * math.Pow10(int(-mantExp)), i
}

View file

@ -25,9 +25,9 @@ func ParseFloat(b []byte) (float64, int) {
n := uint64(0)
for ; i < len(b); i++ {
c := b[i]
if c >= '0' && c <= '9' {
if '0' <= c && c <= '9' {
if trunk == -1 {
if n > math.MaxUint64/10 {
if math.MaxUint64/10 < n {
trunk = i
} else {
n *= 10
@ -62,7 +62,7 @@ func ParseFloat(b []byte) (float64, int) {
if i < len(b) && (b[i] == 'e' || b[i] == 'E') {
startExp := i
i++
if e, expLen := ParseInt(b[i:]); expLen > 0 {
if e, expLen := ParseInt(b[i:]); 0 < expLen {
expExp = e
i += expLen
} else {
@ -74,17 +74,17 @@ func ParseFloat(b []byte) (float64, int) {
// copied from strconv/atof.go
if exp == 0 {
return f, i
} else if exp > 0 && exp <= 15+22 { // int * 10^k
} else if 0 < exp && exp <= 15+22 { // int * 10^k
// If exponent is big but number of digits is not,
// can move a few zeros into the integer part.
if exp > 22 {
if 22 < exp {
f *= float64pow10[exp-22]
exp = 22
}
if f <= 1e15 && f >= -1e15 {
if -1e15 <= f && f <= 1e15 {
return f * float64pow10[exp], i
}
} else if exp < 0 && exp >= -22 { // int / 10^k
} else if -22 <= exp && exp < 0 { // int / 10^k
return f / float64pow10[-exp], i
}
f *= math.Pow10(int(-mantExp))
@ -135,7 +135,7 @@ func AppendFloat(b []byte, f float64, prec int) ([]byte, bool) {
// expLen is zero for positive exponents, because positive exponents are determined later on in the big conversion loop
exp := 0
expLen := 0
if mantExp > 0 {
if 0 < mantExp {
// positive exponent is determined in the loop below
// but if we initially decreased the exponent to fit in an integer, we can't set the new exponent in the loop alone,
// since the number of zeros at the end determines the positive exponent in the loop, and we just artificially lost zeros
@ -156,7 +156,7 @@ func AppendFloat(b []byte, f float64, prec int) ([]byte, bool) {
if neg {
maxLen++
}
if i+maxLen > cap(b) {
if cap(b) < i+maxLen {
b = append(b, make([]byte, maxLen)...)
} else {
b = b[:i+maxLen]
@ -175,17 +175,17 @@ func AppendFloat(b []byte, f float64, prec int) ([]byte, bool) {
last := i + mantLen // right-most position of digit that is non-zero + dot
dot := last - prec - exp // position of dot
j := last
for mant > 0 {
for 0 < mant {
if j == dot {
b[j] = '.'
j--
}
newMant := mant / 10
digit := mant - 10*newMant
if zero && digit > 0 {
if zero && 0 < digit {
// first non-zero digit, if we are still behind the dot we can trim the end to this position
// otherwise trim to the dot (including the dot)
if j > dot {
if dot < j {
i = j + 1
// decrease negative exponent further to get rid of dot
if exp < 0 {
@ -209,9 +209,9 @@ func AppendFloat(b []byte, f float64, prec int) ([]byte, bool) {
mant = newMant
}
if j > dot {
if dot < j {
// extra zeros behind the dot
for j > dot {
for dot < j {
b[j] = '0'
j--
}
@ -244,7 +244,7 @@ func AppendFloat(b []byte, f float64, prec int) ([]byte, bool) {
}
i += LenInt(int64(exp))
j := i
for exp > 0 {
for 0 < exp {
newExp := exp / 10
digit := exp - 10*newExp
j--

View file

@ -20,14 +20,14 @@ func AppendPrice(b []byte, price int64, dec bool, milSeparator byte, decSeparato
// rounding
if !dec {
firstDec := (price / 10) % 10
if firstDec >= 5 {
if 5 <= firstDec {
price += 100
}
}
// calculate size
n := LenInt(price) - 2
if n > 0 {
if 0 < n {
n += (n - 1) / 3 // mil separator
} else {
n = 1
@ -38,7 +38,7 @@ func AppendPrice(b []byte, price int64, dec bool, milSeparator byte, decSeparato
// resize byte slice
i := len(b)
if i+n > cap(b) {
if cap(b) < i+n {
b = append(b, make([]byte, n)...)
} else {
b = b[:i+n]
@ -66,7 +66,7 @@ func AppendPrice(b []byte, price int64, dec bool, milSeparator byte, decSeparato
// print integer-part
j := 0
for price > 0 {
for 0 < price {
if j == 3 {
b[i] = milSeparator
i--

6
vendor/modules.txt vendored
View file

@ -659,11 +659,11 @@ github.com/superseriousbusiness/oauth2/v4/generates
github.com/superseriousbusiness/oauth2/v4/manage
github.com/superseriousbusiness/oauth2/v4/models
github.com/superseriousbusiness/oauth2/v4/server
# github.com/tdewolff/minify/v2 v2.12.7
## explicit; go 1.13
# github.com/tdewolff/minify/v2 v2.12.8
## explicit; go 1.18
github.com/tdewolff/minify/v2
github.com/tdewolff/minify/v2/html
# github.com/tdewolff/parse/v2 v2.6.6
# github.com/tdewolff/parse/v2 v2.6.7
## explicit; go 1.13
github.com/tdewolff/parse/v2
github.com/tdewolff/parse/v2/buffer