diff --git a/go.mod b/go.mod index 0259ab863..7be5b10b8 100644 --- a/go.mod +++ b/go.mod @@ -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 diff --git a/go.sum b/go.sum index 556ae7057..51336fad9 100644 --- a/go.sum +++ b/go.sum @@ -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= diff --git a/vendor/github.com/tdewolff/minify/v2/README.md b/vendor/github.com/tdewolff/minify/v2/README.md index a65ffee1e..4f601b874 100644 --- a/vendor/github.com/tdewolff/minify/v2/README.md +++ b/vendor/github.com/tdewolff/minify/v2/README.md @@ -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 diff --git a/vendor/github.com/tdewolff/minify/v2/html/hash.go b/vendor/github.com/tdewolff/minify/v2/html/hash.go index 3b91cbbd5..0ae20d48d 100644 --- a/vendor/github.com/tdewolff/minify/v2/html/hash.go +++ b/vendor/github.com/tdewolff/minify/v2/html/hash.go @@ -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 } diff --git a/vendor/github.com/tdewolff/minify/v2/html/html.go b/vendor/github.com/tdewolff/minify/v2/html/html.go index 616a9ba5a..fe5d9ae99 100644 --- a/vendor/github.com/tdewolff/minify/v2/html/html.go +++ b/vendor/github.com/tdewolff/minify/v2/html/html.go @@ -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 (, , ...) 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 } diff --git a/vendor/github.com/tdewolff/minify/v2/html/table.go b/vendor/github.com/tdewolff/minify/v2/html/table.go index 22239fcca..2fd3207f1 100644 --- a/vendor/github.com/tdewolff/minify/v2/html/table.go +++ b/vendor/github.com/tdewolff/minify/v2/html/table.go @@ -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("⊇"), "Supset": []byte("⋑"), "THORN": []byte("Þ"), - "Tab": []byte(" "), + "Tab": []byte("\t"), "Tcaron": []byte("Ť"), "Tcedil": []byte("Ţ"), "Therefore": []byte("∴"), diff --git a/vendor/github.com/tdewolff/parse/v2/strconv/decimal.go b/vendor/github.com/tdewolff/parse/v2/strconv/decimal.go new file mode 100644 index 000000000..fc3baf608 --- /dev/null +++ b/vendor/github.com/tdewolff/parse/v2/strconv/decimal.go @@ -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 +} diff --git a/vendor/github.com/tdewolff/parse/v2/strconv/float.go b/vendor/github.com/tdewolff/parse/v2/strconv/float.go index c89bdb29d..35558fc98 100644 --- a/vendor/github.com/tdewolff/parse/v2/strconv/float.go +++ b/vendor/github.com/tdewolff/parse/v2/strconv/float.go @@ -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-- diff --git a/vendor/github.com/tdewolff/parse/v2/strconv/price.go b/vendor/github.com/tdewolff/parse/v2/strconv/price.go index 94b38343e..18ded69f5 100644 --- a/vendor/github.com/tdewolff/parse/v2/strconv/price.go +++ b/vendor/github.com/tdewolff/parse/v2/strconv/price.go @@ -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-- diff --git a/vendor/modules.txt b/vendor/modules.txt index 26210a852..051e758e7 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -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