$request:charset[utf-8] $sValue[abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 `+-=~!@#^$%^^&*()_ []{}<>^;:'",./? абвгдеёжзийклмнопрстуфхцчшщъыьэюя АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ]
Origin:
=^taint[html][$sValue]=

$sEscapedValue[^sValue.js-escape[]] Escaped:
=^taint[html][$sEscapedValue]=

$sUnescapedValue[^string:js-unescape[$sEscapedValue]] Unescaped [^if($sUnescapedValue eq $sValue){equal to source}{NOT equal to source}]:
=$sUnescapedValue=

Empty string escape/unescape: $v[] $s[$v]
=^s.js-escape[]=
=^string:js-unescape[$s]=

# replace %uXXXX to \uXXXX and check escaping again $sEscapedValue2[^sEscapedValue.match[%u][gi]{\u}]
=^taint[html][$sEscapedValue2]=
$sUnescapedValue2[^string:js-unescape[$sEscapedValue2]] Unescaped [^if($sUnescapedValue2 eq $sValue){equal to source}{NOT equal to source}]