From 3032d599ffc04225188c7149152b7571589366b4 Mon Sep 17 00:00:00 2001 From: DesertsP Date: Sun, 3 Mar 2019 12:03:05 +0800 Subject: [PATCH] support pjax --- dist/Valine.min.js | 2 +- dist/Valine.min.js.map | 2 +- src/Valine.js | 18 ++++++++++++------ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/dist/Valine.min.js b/dist/Valine.min.js index 1b09bad0..66c0880e 100644 --- a/dist/Valine.min.js +++ b/dist/Valine.min.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Valine",[],t):"object"==typeof exports?exports.Valine=t():e.Valine=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/dist/",t(t.s=10)}([function(e,t,n){function r(e,t){return new o(t).process(e)}var i=n(2),o=n(13);t=e.exports=r,t.FilterCSS=o;for(var a in i)t[a]=i[a];"undefined"!=typeof window&&(window.filterCSS=e.exports)},function(e,t){e.exports={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n/g,T=/"/g,L=/"/g,C=/&#([a-zA-Z0-9]*);?/gim,$=/:?/gim,q=/&newline;?/gim,R=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,I=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,E=/u\s*r\s*l\s*\(.*/gi,j=//g;t.whiteList=r(),t.getDefaultWhiteList=r,t.onTag=i,t.onIgnoreTag=o,t.onTagAttr=a,t.onIgnoreTagAttr=s,t.safeAttrValue=c,t.escapeHtml=l,t.escapeQuote=u,t.unescapeQuote=p,t.escapeHtmlEntities=d,t.escapeDangerHtml5Entities=h,t.clearNonPrintableCharacter=f,t.friendlyAttrValue=g,t.escapeAttrValue=v,t.onIgnoreTagStripAll=m,t.StripTagBody=b,t.stripCommentTag=x,t.stripBlankChar=w,t.cssFilter=S,t.getDefaultCSSWhiteList=k},function(e,t,n){function r(e){var t=p.spaceIndex(e);if(-1===t)var n=e.slice(1,-1);else var n=e.slice(1,t+1);return n=p.trim(n).toLowerCase(),"/"===n.slice(0,1)&&(n=n.slice(1)),"/"===n.slice(-1)&&(n=n.slice(0,-1)),n}function i(e){return""===h){o+=n(e.slice(a,s)),d=e.slice(s,c+1),p=r(d),o+=t(s,o.length,p,d,i(d)),a=c+1,s=!1;continue}if(('"'===h||"'"===h)&&"="===e.charAt(c-1)){l=h;continue}}else if(h===l){l=!1;continue}}return a0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function c(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}function u(e){return c(e)?e.substr(1,e.length-2):e}var p=n(1),d=/[^a-zA-Z0-9_:\.\-]/gim;t.parseTag=o,t.parseAttr=a},function(e,t,n){var r;!function(i){"use strict";function o(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function a(e,t){return e<>>32-t}function s(e,t,n,r,i,s){return o(a(o(o(t,e),o(r,s)),i),n)}function l(e,t,n,r,i,o,a){return s(t&n|~t&r,e,t,i,o,a)}function c(e,t,n,r,i,o,a){return s(t&r|n&~r,e,t,i,o,a)}function u(e,t,n,r,i,o,a){return s(t^n^r,e,t,i,o,a)}function p(e,t,n,r,i,o,a){return s(n^(t|~r),e,t,i,o,a)}function d(e,t){e[t>>5]|=128<>>9<<4)]=t;var n,r,i,a,s,d=1732584193,h=-271733879,f=-1732584194,g=271733878;for(n=0;n>5]>>>t%32&255);return n}function f(e){var t,n=[];for(n[(e.length>>2)-1]=void 0,t=0;t>5]|=(255&e.charCodeAt(t/8))<16&&(i=d(i,8*e.length)),n=0;n<16;n+=1)o[n]=909522486^i[n],a[n]=1549556828^i[n];return r=d(o.concat(f(t)),512+8*t.length),h(d(a.concat(r),640))}function m(e){var t,n,r="0123456789abcdef",i="";for(n=0;n>>4&15)+r.charAt(15&t);return i}function b(e){return unescape(encodeURIComponent(e))}function x(e){return g(b(e))}function w(e){return m(x(e))}function y(e,t){return v(b(e),b(t))}function k(e,t){return m(y(e,t))}function A(e,t,n){return t?n?y(t,e):k(t,e):n?x(e):w(e)}void 0!==(r=function(){return A}.call(t,n,t,e))&&(e.exports=r)}()},function(e,t,n){(function(t){!function(t){"use strict";function n(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||b.defaults,this.rules=x.normal,this.options.pedantic?this.rules=x.pedantic:this.options.gfm&&(this.options.tables?this.rules=x.tables:this.rules=x.gfm)}function r(e,t){if(this.options=t||b.defaults,this.links=e,this.rules=w.normal,this.renderer=this.options.renderer||new i,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.pedantic?this.rules=w.pedantic:this.options.gfm&&(this.options.breaks?this.rules=w.breaks:this.rules=w.gfm)}function i(e){this.options=e||b.defaults}function o(){}function a(e){this.tokens=[],this.token=null,this.options=e||b.defaults,this.options.renderer=this.options.renderer||new i,this.renderer=this.options.renderer,this.renderer.options=this.options,this.slugger=new s}function s(){this.seen={}}function l(e,t){if(t){if(l.escapeTest.test(e))return e.replace(l.escapeReplace,function(e){return l.replacements[e]})}else if(l.escapeTestNoEncode.test(e))return e.replace(l.escapeReplaceNoEncode,function(e){return l.replacements[e]});return e}function c(e){return e.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,function(e,t){return t=t.toLowerCase(),"colon"===t?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}function u(e,t){return e=e.source||e,t=t||"",{replace:function(t,n){return n=n.source||n,n=n.replace(/(^|[^\[])\^/g,"$1"),e=e.replace(t,n),this},getRegex:function(){return new RegExp(e,t)}}}function p(e,t,n){if(e){try{var r=decodeURIComponent(c(n)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return null}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return null}t&&!k.test(n)&&(n=d(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n}function d(e,t){return y[" "+e]||(/^[^:]+:\/*[^\/]*$/.test(e)?y[" "+e]=e+"/":y[" "+e]=v(e,"/",!0)),e=y[" "+e],"//"===t.slice(0,2)?e.replace(/:[\s\S]*/,":")+t:"/"===t.charAt(0)?e.replace(/(:\/*[^\/]*)[\s\S]*/,"$1")+t:e+t}function h(){}function f(e){for(var t,n,r=1;r=0&&"\\"===n[i];)r=!r;return r?"|":" |"}),r=n.split(/ \|/),i=0;if(r.length>t)r.splice(t);else for(;r.lengthAn error occurred:

"+l(e.message+"",!0)+"
";throw e}}var x={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:h,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,nptable:h,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|\\n*|\\n*|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)|(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,table:h,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading| {0,3}>|<\/?(?:tag)(?: +|\n|\/?>)|<(?:script|pre|style|!--))[^\n]+)*)/,text:/^[^\n]+/};x._label=/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,x._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,x.def=u(x.def).replace("label",x._label).replace("title",x._title).getRegex(),x.bullet=/(?:[*+-]|\d{1,9}\.)/,x.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,x.item=u(x.item,"gm").replace(/bull/g,x.bullet).getRegex(),x.list=u(x.list).replace(/bull/g,x.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+x.def.source+")").getRegex(),x._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",x._comment=//,x.html=u(x.html,"i").replace("comment",x._comment).replace("tag",x._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),x.paragraph=u(x.paragraph).replace("hr",x.hr).replace("heading",x.heading).replace("lheading",x.lheading).replace("tag",x._tag).getRegex(),x.blockquote=u(x.blockquote).replace("paragraph",x.paragraph).getRegex(),x.normal=f({},x),x.gfm=f({},x.normal,{fences:/^ {0,3}(`{3,}|~{3,})([^`\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),x.gfm.paragraph=u(x.paragraph).replace("(?!","(?!"+x.gfm.fences.source.replace("\\1","\\2")+"|"+x.list.source.replace("\\1","\\3")+"|").getRegex(),x.tables=f({},x.gfm,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),x.pedantic=f({},x.normal,{html:u("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",x._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/}),n.rules=x,n.lex=function(e,t){return new n(t).lex(e)},n.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},n.prototype.token=function(e,t){e=e.replace(/^ +$/gm,"");for(var n,r,i,o,a,s,l,c,u,p,d,h,f,m,b,w;e;)if((i=this.rules.newline.exec(e))&&(e=e.substring(i[0].length),i[0].length>1&&this.tokens.push({type:"space"})),i=this.rules.code.exec(e))e=e.substring(i[0].length),i=i[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?i:v(i,"\n")});else if(i=this.rules.fences.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"code",lang:i[2]?i[2].trim():i[2],text:i[3]||""});else if(i=this.rules.heading.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"heading",depth:i[1].length,text:i[2]});else if(t&&(i=this.rules.nptable.exec(e))&&(s={type:"table",header:g(i[1].replace(/^ *| *\| *$/g,"")),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3]?i[3].replace(/\n$/,"").split("\n"):[]},s.header.length===s.align.length)){for(e=e.substring(i[0].length),d=0;d ?/gm,""),this.token(i,t),this.tokens.push({type:"blockquote_end"});else if(i=this.rules.list.exec(e)){for(e=e.substring(i[0].length),o=i[2],m=o.length>1,l={type:"list_start",ordered:m,start:m?+o:"",loose:!1},this.tokens.push(l),i=i[0].match(this.rules.item),c=[],n=!1,f=i.length,d=0;d1?1===a.length:a.length>1||this.options.smartLists&&a!==o)&&(e=i.slice(d+1).join("\n")+e,d=f-1)),r=n||/\n\n(?!\s*$)/.test(s),d!==f-1&&(n="\n"===s.charAt(s.length-1),r||(r=n)),r&&(l.loose=!0),b=/^\[[ xX]\] /.test(s),w=void 0,b&&(w=" "!==s[1],s=s.replace(/^\[[ xX]\] +/,"")),u={type:"list_item_start",task:b,checked:w,loose:r},c.push(u),this.tokens.push(u),this.token(s,!1),this.tokens.push({type:"list_item_end"});if(l.loose)for(f=c.length,d=0;d?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:h,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(href(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*"<\[])\*(?!\*)|^_([^\s][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s"<\[][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:h,text:/^(`+|[^`])[\s\S]*?(?=[\\?@\\[^_{|}~",w.em=u(w.em).replace(/punctuation/g,w._punctuation).getRegex(),w._escapes=/\\([!"#$%&'()*+,\-.\/:;<=>?@\[\]\\^_`{|}~])/g,w._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,w._email=/[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,w.autolink=u(w.autolink).replace("scheme",w._scheme).replace("email",w._email).getRegex(),w._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,w.tag=u(w.tag).replace("comment",x._comment).replace("attribute",w._attribute).getRegex(),w._label=/(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|[^\[\]\\])*?/,w._href=/\s*(<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*)/,w._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,w.link=u(w.link).replace("label",w._label).replace("href",w._href).replace("title",w._title).getRegex(),w.reflink=u(w.reflink).replace("label",w._label).getRegex(),w.normal=f({},w),w.pedantic=f({},w.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:u(/^!?\[(label)\]\((.*?)\)/).replace("label",w._label).getRegex(),reflink:u(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",w._label).getRegex()}),w.gfm=f({},w.normal,{escape:u(w.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:u(w.text).replace("]|","~]|").replace("|$","|https?://|ftp://|www\\.|[a-zA-Z0-9.!#$%&'*+/=?^_`{\\|}~-]+@|$").getRegex()}),w.gfm.url=u(w.gfm.url,"i").replace("email",w.gfm._extended_email).getRegex(),w.breaks=f({},w.gfm,{br:u(w.br).replace("{2,}","*").getRegex(),text:u(w.gfm.text).replace("{2,}","*").getRegex()}),r.rules=w,r.output=function(e,t,n){return new r(t,n).output(e)},r.prototype.output=function(e){for(var t,n,i,o,a,s,c="";e;)if(a=this.rules.escape.exec(e))e=e.substring(a[0].length),c+=l(a[1]);else if(a=this.rules.tag.exec(e))!this.inLink&&/^/i.test(a[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(a[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(a[0])&&(this.inRawBlock=!1),e=e.substring(a[0].length),c+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(a[0]):l(a[0]):a[0];else if(a=this.rules.link.exec(e)){var u=m(a[2],"()");if(u>-1){var p=a[2].length-u;a[2]=a[2].substring(0,u),a[0]=a[0].substring(0,a[0].length-p)}e=e.substring(a[0].length),this.inLink=!0,i=a[2],this.options.pedantic?(t=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(i),t?(i=t[1],o=t[3]):o=""):o=a[3]?a[3].slice(1,-1):"",i=i.trim().replace(/^<([\s\S]*)>$/,"$1"),c+=this.outputLink(a,{href:r.escapes(i),title:r.escapes(o)}),this.inLink=!1}else if((a=this.rules.reflink.exec(e))||(a=this.rules.nolink.exec(e))){if(e=e.substring(a[0].length),t=(a[2]||a[1]).replace(/\s+/g," "),!(t=this.links[t.toLowerCase()])||!t.href){c+=a[0].charAt(0),e=a[0].substring(1)+e;continue}this.inLink=!0,c+=this.outputLink(a,t),this.inLink=!1}else if(a=this.rules.strong.exec(e))e=e.substring(a[0].length),c+=this.renderer.strong(this.output(a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.em.exec(e))e=e.substring(a[0].length),c+=this.renderer.em(this.output(a[6]||a[5]||a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.code.exec(e))e=e.substring(a[0].length),c+=this.renderer.codespan(l(a[2].trim(),!0));else if(a=this.rules.br.exec(e))e=e.substring(a[0].length),c+=this.renderer.br();else if(a=this.rules.del.exec(e))e=e.substring(a[0].length),c+=this.renderer.del(this.output(a[1]));else if(a=this.rules.autolink.exec(e))e=e.substring(a[0].length),"@"===a[2]?(n=l(this.mangle(a[1])),i="mailto:"+n):(n=l(a[1]),i=n),c+=this.renderer.link(i,null,n);else if(this.inLink||!(a=this.rules.url.exec(e))){if(a=this.rules.text.exec(e))e=e.substring(a[0].length),this.inRawBlock?c+=this.renderer.text(a[0]):c+=this.renderer.text(l(this.smartypants(a[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else{if("@"===a[2])n=l(a[0]),i="mailto:"+n;else{do{s=a[0],a[0]=this.rules._backpedal.exec(a[0])[0]}while(s!==a[0]);n=l(a[0]),i="www."===a[1]?"http://"+n:n}e=e.substring(a[0].length),c+=this.renderer.link(i,null,n)}return c},r.escapes=function(e){return e?e.replace(r.rules._escapes,"$1"):e},r.prototype.outputLink=function(e,t){var n=t.href,r=t.title?l(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,l(e[1]))},r.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},r.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,i=0;i.5&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},i.prototype.code=function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,r);null!=i&&i!==e&&(n=!0,e=i)}return r?'
'+(n?e:l(e,!0))+"
\n":"
"+(n?e:l(e,!0))+"
"},i.prototype.blockquote=function(e){return"
\n"+e+"
\n"},i.prototype.html=function(e){return e},i.prototype.heading=function(e,t,n,r){return this.options.headerIds?"'+e+"\n":""+e+"\n"},i.prototype.hr=function(){return this.options.xhtml?"
\n":"
\n"},i.prototype.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"},i.prototype.listitem=function(e){return"
  • "+e+"
  • \n"},i.prototype.checkbox=function(e){return" "},i.prototype.paragraph=function(e){return"

    "+e+"

    \n"},i.prototype.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},i.prototype.tablerow=function(e){return"\n"+e+"\n"},i.prototype.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"\n"},i.prototype.strong=function(e){return""+e+""},i.prototype.em=function(e){return""+e+""},i.prototype.codespan=function(e){return""+e+""},i.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},i.prototype.del=function(e){return""+e+""},i.prototype.link=function(e,t,n){if(null===(e=p(this.options.sanitize,this.options.baseUrl,e)))return n;var r='
    "},i.prototype.image=function(e,t,n){if(null===(e=p(this.options.sanitize,this.options.baseUrl,e)))return n;var r=''+n+'":">"},i.prototype.text=function(e){return e},o.prototype.strong=o.prototype.em=o.prototype.codespan=o.prototype.del=o.prototype.text=function(e){return e},o.prototype.link=o.prototype.image=function(e,t,n){return""+n},o.prototype.br=function(){return""},a.parse=function(e,t){return new a(t).parse(e)},a.prototype.parse=function(e){this.inline=new r(e.links,this.options),this.inlineText=new r(e.links,f({},this.options,{renderer:new o})),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},a.prototype.next=function(){return this.token=this.tokens.pop()},a.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},a.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},a.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,c(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,i="",o="";for(n="",e=0;e?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t)){var n=t;do{this.seen[n]++,t=n+"-"+this.seen[n]}while(this.seen.hasOwnProperty(t))}return this.seen[t]=0,t},l.escapeTest=/[&<>"']/,l.escapeReplace=/[&<>"']/g,l.replacements={"&":"&","<":"<",">":">",'"':""","'":"'"},l.escapeTestNoEncode=/[<>"']|&(?!#?\w+;)/,l.escapeReplaceNoEncode=/[<>"']|&(?!#?\w+;)/g;var y={},k=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;h.exec=h,b.options=b.setOptions=function(e){return f(b.defaults,e),b},b.getDefaults=function(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:new i,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tables:!0,xhtml:!1}},b.defaults=b.getDefaults(),b.Parser=a,b.parser=a.parse,b.Renderer=i,b.TextRenderer=o,b.Lexer=n,b.lexer=n.lex,b.InlineLexer=r,b.inlineLexer=r.output,b.Slugger=s,b.parse=b,e.exports=b}(this||"undefined"!=typeof window&&window)}).call(t,n(17))},function(e,t,n){var r=n(11);"string"==typeof r&&(r=[[e.i,r,""]]);var i={};i.transform=void 0;n(15)(r,i);r.locals&&(e.exports=r.locals)},function(e,t,n){function r(e,t){return new a(t).process(e)}var i=n(4),o=n(5),a=n(18);t=e.exports=r,t.FilterXSS=a;for(var s in i)t[s]=i[s];for(var s in o)t[s]=o[s];"undefined"!=typeof window&&(window.filterXSS=e.exports),function(){return"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope}()&&(self.filterXSS=e.exports)},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=function(){function e(e,t){for(var n=0;n\n
    \n
    \n
    \n
    '+i+'
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n \n
    \n \n
    \n
    \n
    ';t.el.innerHTML=o;var a=t.el.querySelector(".vempty");t.nodata={show:function(e){a.innerHTML=e||"还没有评论哦,快来抢沙发吧!",a.setAttribute("style","display:block;")},hide:function(){a.setAttribute("style","display:none;")}},t.nodata.show();var s=t.el.querySelector(".vsmile-icons"),p=e.emoticon_list||[];for(var d in p){var f=document.createElement("img");f.setAttribute("src",e.emoticon_url+"/"+p[d]),s.appendChild(f)}c||(n.init({appId:e.app_id||e.appId,appKey:e.app_key||e.appKey}),c=!0),t.v=n}catch(e){var g="https://github.com/DesertsP/Valine/issues";return void(t.el?t.nodata.show('
    '+e+"
    Valine:"+t.version+"
    反馈:"+g+"
    "):console&&console.log("%c"+e+"\n%cValine%c"+t.version+" "+g,"color:red;","background:#000;padding:5px;line-height:30px;color:#fff;","background:#456;line-height:30px;padding:5px;color:#fff;"))}var v='
    ',m=t.el.querySelector(".vloading");m.innerHTML=v,t.loading={show:function(){m.setAttribute("style","display:block;"),t.nodata.hide()},hide:function(){m.setAttribute("style","display:none;"),0===t.el.querySelectorAll(".vcard").length&&t.nodata.show()}};var b=t.el.querySelector(".vsubmitting");b.innerHTML=v,t.submitting={show:function(){b.setAttribute("style","display:block;")},hide:function(){b.setAttribute("style","display:none;"),t.nodata.hide()}};var x=t.el.querySelector(".vmark");t.alert={show:function(e){x.innerHTML='
    '+e.text+'
    ';var n=x.querySelector(".vbtns"),r='",i='";if(n.innerHTML=""+r+(e.type&&i),x.querySelector(".vcancel").addEventListener("click",function(e){t.alert.hide()}),x.setAttribute("style","display:block;"),e&&e.type){var o=x.querySelector(".vsure");h.on("click",o,function(n){t.alert.hide(),e.cb&&e.cb()})}},hide:function(){x.setAttribute("style","display:none;")}},t.loading.show();var w=new t.v.Query("Comment");w.equalTo("url",l.url),w.count().then(function(n){t.el.querySelector(".count").innerHTML=""+n,t.bind(e)},function(e){console.log(e)})}},{key:"bind",value:function(e){var t=this,n=t.el.querySelector(".vsmile-icons");h.on("click",n,function(e){var n=t.el.querySelector(".veditor"),r=e.target.src;if(void 0!==r){var i="!(:"+decodeURI(r).replace(/^.*\/(.*)$/,"$1")+":)";if(document.selection)n.focus(),sel=document.selection.createRange(),sel.text=i,n.focus();else if(n.selectionStart||"0"==n.selectionStart){var o=n.selectionStart,a=n.selectionEnd,s=a;n.value=n.value.substring(0,o)+i+n.value.substring(a,n.value.length),s+=i.length,n.focus(),n.selectionStart=s,n.selectionEnd=s}else n.value+=i,n.focus();l.comment=n.value;var c=t.el.querySelector(".vsubmit");c.getAttribute("disabled")&&c.removeAttribute("disabled")}});var r=t.el.querySelector(".comment_trigger");h.on("click",r,function(e){r.setAttribute("style","display:none"),t.el.querySelector(".auth-section").removeAttribute("style"),t.el.querySelector(".veditor").focus()});var i=function(e){e.offsetHeight>180&&(e.classList.add("expand"),h.on("click",e,function(t){e.setAttribute("class","vcomment")}))},c=function(){var e=new t.v.Query("Comment");return e.select(["nick","comment","link","rid","emailHash"]),e.notEqualTo("isSpam",!0),e.equalTo("url",l.url),e.addDescending("createdAt"),e},u=1;!function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;t.loading.show();var r=Number(t.el.querySelector(".count").innerText),i=c();i.limit(10),i.skip(10*(n-1)),i.find().then(function(i){var o=i.length;if(o){for(var a=0;a加载更多评论(剩余'+(r-10*n)+"/"+r+"条)":"";var l=s.querySelector("#vmore");l&&h.on("click",l,function(t){s.innerHTML="",e(++u)})}t.loading.hide()}).catch(function(e){console.log(e),t.loading.hide()})}();var d=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=document.createElement("li");r.setAttribute("class","vcard"),r.setAttribute("id",e.id);var o=e.get("emailHash"),a="https://gravatar.loli.net/avatar/"+o+"?size=80&d=https%3a%2f%2fgravatar.loli.net%2favatar%2f9e63c80900d106cbbec5a9f4ea433a3e.jpg%3fsize%3d80";r.innerHTML='\n
    \n
    \n '+(e.get("link")?' '+e.get("nick")+"":''+e.get("nick")+"")+'\n \n '+g(e.get("createdAt"))+"\n 回复\n
    \n
    '+e.get("comment")+"
    \n
    ";for(var s=t.el.querySelector(".vlist"),l=s.querySelectorAll("li"),c=r.querySelector(".vat"),u=r.querySelectorAll("a"),p=0,d=u.length;p')),{onIgnoreTagAttr:function(e,t,n,r){if("class"===t)return t+'="'+a.escapeAttrValue(n)+'"'}}),l.comment.indexOf(l.at)>-1&&""!=l.at){var r='"+l.at+"";l.comment=l.comment.replace(l.at,r)}var i=f.mail(l.mail),s=f.link(l.link);l.mail=i.k?i.v:"",l.link=s.k?s.v:"",i.k||s.k?i.k?s.k?T():t.alert.show({type:0,text:"您的网址格式不正确,请修正后提交!",ctxt:"返回修改"}):t.alert.show({type:0,text:'请认真评论并填写正确的邮箱地址!
    已开启隐私防护不会泄露您的个人信息,了解反垃圾系统如何处理您的数据。',ctxt:"返回修改"}):t.alert.show({type:0,text:"您的网址和邮箱格式不正确,请修正后提交!",ctxt:"返回修改"})},k=t.el.querySelector(".vemoji-btn"),A=t.el.querySelector(".vsmile-icons");h.on("click",k,function(e){_.getAttribute("triggered")&&(_.setAttribute("style","display:none;"),_.removeAttribute("triggered")),A.getAttribute("triggered")?(A.setAttribute("style","display:none;"),A.removeAttribute("triggered")):(A.removeAttribute("style"),A.setAttribute("triggered",1))});var S=t.el.querySelector(".vpreview-btn"),_=t.el.querySelector(".vpreview-text");h.on("click",S,function(t){if(A.getAttribute("triggered")&&(A.setAttribute("style","display:none;"),A.removeAttribute("triggered")),_.getAttribute("triggered"))_.setAttribute("style","display:none;"),_.removeAttribute("triggered");else{if(""==l.comment)return void m.comment.focus();_.innerHTML=a(o(l.comment.replace(/!\(:(.*?\.\w+):\)/g,'$1')),{onIgnoreTagAttr:function(e,t,n,r){if("class"===t)return t+'="'+a.escapeAttrValue(n)+'"'}}),_.removeAttribute("style"),_.setAttribute("triggered",1)}});var z=function(){var e=new t.v.ACL;return e.setPublicReadAccess(!0),e.setPublicWriteAccess(!1),e},T=function(){w.setAttribute("disabled",!0),t.submitting.show();var e=t.v.Object.extend("Comment"),n=new e;for(var r in l)if(l.hasOwnProperty(r)){if("at"===r)continue;var i=l[r];n.set(r,i)}n.set("emailHash",s(l.mail.toLowerCase().trim())),n.setACL(z()),n.save().then(function(e){p&&p.setItem("ValineCache",JSON.stringify({nick:l.nick,link:l.link,mail:l.mail}));var n=t.el.querySelector(".count");n.innerText=Number(n.innerText)+1,d(e,!0),w.removeAttribute("disabled"),t.submitting.hide(),t.nodata.hide(),t.reset()}).catch(function(e){t.submitting.hide()})},L=function(e){h.on("click",e,function(n){var r=e.getAttribute("at"),i=e.getAttribute("rid");l.rid=i,l.at=r,m.comment.value=r+" ,"+m.comment.value,m.comment.focus(),t.el.querySelector(".comment_trigger").setAttribute("style","display:none"),t.el.querySelector(".auth-section").removeAttribute("style"),t.el.querySelector(".veditor").focus()})};h.off("click",w,y),h.on("click",w,y)}}]),e}(),h={on:function(e,t,n,r){t.addEventListener?t.addEventListener(e,n,r||!1):t.attachEvent?t.attachEvent("on"+e,n):t["on"+e]=n},off:function(e,t,n,r){t.removeEventListener?t.removeEventListener(e,n,r||!1):t.detachEvent?t.detachEvent("on"+e,n):t["on"+e]=null}},f={mail:function(e){return{k:/\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/.test(e),v:e}},link:function(e){return e.length>0&&(e=/^(http|https)/.test(e)?e:"http://"+e),{k:!(e.length>0)||/(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?/.test(e),v:e}}},g=function(e){try{var t=e.getTime(),n=(new Date).getTime(),r=n-t,i=Math.floor(r/864e5);if(0===i){var o=r%864e5,a=Math.floor(o/36e5);if(0===a){var s=o%36e5,l=Math.floor(s/6e4);if(0===l){var c=s%6e4;return Math.round(c/1e3)+" 秒前"}return l+" 分钟前"}return a+" 小时前"}return i<0?"刚刚":i<30?i+" 天前":i<365?Math.floor(i/30)+" 月前":Math.floor(i/365)+" 年前"}catch(e){console.log(e)}},v=function(){$.getJSON("https://api.ipify.org/?format=json",function(e){l.ip=e.ip})};e.exports=d},function(e,t,n){t=e.exports=n(12)(!1),t.push([e.i,'@charset "UTF-8";\n.valine {\n /************ Loading ************/ }\n .valine * {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n color: #3c484e;\n -webkit-transition: all .3s ease;\n transition: all .3s ease;\n margin: initial;\n padding: initial; }\n .valine .vemoticon-img {\n display: inline-block;\n max-height: 32px;\n margin: 0 2px; }\n .valine .vwrap {\n overflow: hidden;\n position: relative;\n border: 1px solid #ededed; }\n .valine .vwrap .veditor-area {\n position: inherit; }\n .valine .vwrap .btn-wrap {\n position: absolute !important;\n right: 1.5em;\n bottom: 0; }\n .valine .vwrap .btn-wrap .vfunction-btn {\n display: inline-block; }\n .valine .vwrap .btn-wrap .vfunction-btn svg {\n fill: #bbb;\n cursor: pointer; }\n .valine .vwrap .btn-wrap .vfunction-btn svg:hover {\n fill: #777777; }\n .valine .vwrap .btn-wrap .vfunction-btn svg:active {\n fill: #777777; }\n .valine .vwrap .vextra-area {\n margin: .4em 0 .4em .5em; }\n .valine .vwrap .vextra-area .vsmile-icons {\n padding: .2em 0;\n border-top: 1px solid #ededed;\n border-radius: 0;\n margin: .3em 0;\n max-height: 64px;\n overflow: auto; }\n .valine .vwrap .vextra-area .vsmile-icons img {\n display: inline-block;\n width: auto !important;\n height: 28px !important;\n margin-right: 4px;\n cursor: pointer; }\n .valine .vwrap .vextra-area .vpreview-text {\n border-top: 1px solid #ededed;\n border-radius: 0;\n padding: .5em .5em;\n margin: .3em 0;\n max-height: 10em;\n overflow: auto; }\n .valine .vwrap .textarea-wrapper {\n color: #4b5b62;\n width: 100%;\n height: 100%;\n background: #fff;\n position: relative;\n border-radius: 0; }\n .valine .vwrap .textarea-wrapper .comment_trigger {\n position: absolute;\n z-index: 10;\n width: 100%;\n height: 100%;\n background-color: #fff;\n padding: 0 1em; }\n .valine .vwrap .textarea-wrapper .comment_trigger .avatar {\n position: absolute;\n width: 3em;\n height: 3em;\n position: absolute;\n top: 50%;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%); }\n .valine .vwrap .textarea-wrapper .comment_trigger .avatar img {\n border-radius: 100%;\n width: 3em;\n height: 3em; }\n .valine .vwrap .textarea-wrapper .comment_trigger .trigger_title {\n position: absolute;\n top: 50%;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n color: #aaa;\n font-size: 1.4em;\n margin-left: 3.5em; }\n .valine .vwrap .textarea-wrapper textarea {\n padding: 1em 1em 0;\n color: #4b5b62;\n width: 100%;\n background: #fff;\n border: none;\n resize: none;\n min-height: 6em;\n margin: 0; }\n .valine .vwrap .textarea-wrapper textarea:focus {\n border-color: #c4c8cb;\n outline: 0; }\n .valine .vwrap .trigger-section {\n display: none; }\n .valine .vwrap .auth-section {\n display: -webkit-box;\n display: flex;\n display: -ms-flexbox;\n background: #fbfbfb;\n padding: .3em .6em; }\n .valine .vwrap .auth-section .input-wrapper {\n -ms-flex: 1 1 27%;\n -webkit-box-flex: 1;\n flex: 1 1 27%;\n width: 27%; }\n .valine .vwrap .auth-section .input-wrapper input {\n color: #4b5b62;\n background: #fafafa;\n border: none;\n border-radius: 0;\n padding: .6em;\n margin: 0;\n line-height: 2;\n font-size: 1em !important; }\n .valine .vwrap .auth-section .input-wrapper input:focus {\n border-color: #c4c8cb;\n outline: 0; }\n .valine .vwrap .auth-section input {\n width: 100%; }\n .valine .vwrap .auth-section .post-action {\n -ms-flex: 1 1 19%;\n -webkit-box-flex: 1;\n flex: 1 1 19%;\n width: 19%;\n margin: 0;\n padding: 2px 0 0; }\n .valine .vwrap .auth-section .post-action button {\n color: #fff;\n width: 100%;\n line-height: 2;\n font-weight: bolder;\n border-radius: 30px;\n border: 1px solid #e9eff3;\n background-color: #111;\n padding: .4em .5em;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n font-size: 1em !important; }\n .valine .vwrap .auth-section .post-action button:hover {\n background-color: #444; }\n @media screen and (max-width: 720px) {\n .valine .vwrap .auth-section {\n display: block; }\n .valine .vwrap .auth-section .input-wrapper, .valine .vwrap .auth-section .post-action {\n -ms-flex: 1 1 100%;\n -webkit-box-flex: 1;\n flex: 1 1 100%;\n padding-right: 0;\n width: 100%; } }\n .valine .vwrap .vmark {\n position: absolute;\n background: rgba(0, 0, 0, 0.65);\n width: 100%;\n height: 100%;\n left: 0;\n top: 0; }\n .valine .vwrap .vmark .valert {\n padding: 2em 0 0 0; }\n .valine .vwrap .vmark .valert .vtext {\n color: #fff;\n padding: 15px; }\n .valine .vwrap .vmark .valert .vcode {\n width: 75px;\n border-radius: 5px;\n background: #dedede; }\n .valine .vwrap .vmark .valert .vcode:focus {\n border-color: #3090e4;\n background-color: #fff; }\n @media screen and (max-width: 720px) {\n .valine .vwrap .vmark .valert {\n padding: 8em 0; }\n .valine .vwrap .vmark .valert .vtext {\n color: #fff;\n padding: 10px; } }\n .valine .info {\n padding: 5px;\n margin: .5em 0; }\n .valine .info .col {\n display: inline-block;\n vertical-align: middle; }\n .valine .info svg {\n margin-right: 2px;\n overflow: hidden;\n fill: currentColor; }\n .valine .power {\n color: #999;\n font-size: 0.625em !important;\n position: relative; }\n .valine a {\n text-decoration: none;\n color: #3eb0ef;\n border: none; }\n .valine .txt-center {\n text-align: center; }\n .valine .float-right {\n float: right !important; }\n .valine .pd5 {\n padding: 5px; }\n .valine .pd10 {\n padding: 10px; }\n .valine .vbtn {\n display: inline-block;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border: 1px solid #e9eff3;\n background-color: #333;\n border-radius: .1em;\n color: #fff;\n padding: .5em 1.5em;\n cursor: pointer;\n white-space: nowrap;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n outline: none;\n min-width: 60px;\n max-width: 100%;\n margin: 0 1em; }\n .valine .vbtn:active,\n .valine .vbtn:hover {\n border-color: #666; }\n .valine .vpage {\n margin: 1.5em 0; }\n .valine .vpage .more {\n width: 100%;\n height: 2.5em;\n line-height: 2.5em;\n text-align: center;\n cursor: pointer;\n color: #666;\n background: #fafafa;\n border-radius: 1.25em; }\n .valine .vlist {\n width: 100%;\n list-style: none;\n margin: 0;\n padding: 0; }\n .valine .vlist .vcard {\n display: -webkit-box;\n display: flex;\n display: -ms-flexbox;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n padding: 2em 1em 1.5em;\n border: 1px solid rgba(150, 150, 150, 0.18);\n margin: 2em 0 0;\n list-style: none;\n border-radius: 5px;\n word-break: break-all; }\n .valine .vlist .vcard:hover {\n border: 1px solid rgba(150, 150, 150, 0.25); }\n .valine .vlist .vcard:hover .vat {\n background: #111 !important; }\n .valine .vlist .vcard .vat {\n margin: -2.1em 0 0;\n float: right;\n background: transparent;\n color: #ffffff;\n padding: .2em 1em;\n line-height: 1.2;\n cursor: pointer;\n word-break: keep-all;\n white-space: nowrap;\n text-transform: uppercase; }\n .valine .vlist .vcard .vavatar {\n -webkit-box-flex: 0;\n flex: 0 0 auto;\n -ms-flex: 0 0 auto;\n margin-right: 1em;\n margin-top: 0.1em;\n display: inline-block;\n height: 3em;\n width: 3em;\n position: relative;\n border-radius: 50%; }\n .valine .vlist .vcard .text-wrapper {\n overflow: visible;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 100%; }\n .valine .vlist .vcard .text-wrapper .vhead {\n line-height: 1;\n margin-bottom: 1em; }\n .valine .vlist .vcard .text-wrapper .vhead .vname {\n font-weight: bolder;\n font-size: 1em;\n color: rgba(0, 0, 0, 0.7); }\n .valine .vlist .vcard .text-wrapper .vhead .spacer {\n color: #ccc;\n margin-left: 0.3em;\n margin-right: 0.3em; }\n .valine .vlist .vcard .text-wrapper .vhead .vtime {\n color: #a9a4a4;\n display: inline-block;\n font-weight: normal; }\n .valine .vlist .vcard .text-wrapper .vcomment {\n position: relative; }\n .valine .vlist .vcard .text-wrapper .vcomment blockquote p {\n padding-left: 12px; }\n .valine .vlist .vcard .text-wrapper .vcomment p {\n word-wrap: break-word;\n white-space: pre-wrap;\n word-break: break-all;\n text-align: justify;\n line-height: 1.8; }\n .valine .vlist .vcard .text-wrapper .vcomment pre {\n overflow: auto;\n padding: 6px 10px;\n word-wrap: break-word;\n color: #555;\n background: #f5f2f2;\n border-radius: 3px;\n font-size: .875rem;\n margin: 5px 0; }\n .valine .vlist .vcard .text-wrapper .vcomment.expand {\n cursor: pointer;\n max-height: 11.25rem;\n overflow: hidden; }\n .valine .vlist .vcard .text-wrapper .vcomment.expand:before {\n display: block;\n content: "";\n position: absolute;\n width: 100%;\n left: 0;\n top: 0;\n bottom: 3.15rem;\n pointer-events: none;\n background: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0)), to(rgba(255, 255, 255, 0.8)));\n background: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.8)); }\n .valine .vlist .vcard .text-wrapper .vcomment.expand:after {\n display: block;\n content: "\\5C55\\5F00 ";\n text-align: center;\n color: #828586;\n position: absolute;\n width: 100%;\n height: 3.15rem;\n line-height: 3.15rem;\n left: 0;\n bottom: 0;\n pointer-events: none;\n background: rgba(255, 255, 255, 0.9); }\n .valine .vlist .vempty {\n padding: 20px;\n text-align: center;\n color: #999; }\n .valine .spinner {\n margin: 10px auto;\n width: 50px;\n height: 30px;\n text-align: center;\n font-size: 10px; }\n .valine .spinner > div {\n background-color: #9c9c9c;\n height: 100%;\n width: 6px;\n margin-right: 3px;\n display: inline-block;\n -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;\n animation: sk-stretchdelay 1.2s infinite ease-in-out; }\n .valine .spinner .r2 {\n -webkit-animation-delay: -1.1s;\n animation-delay: -1.1s; }\n .valine .spinner .r3 {\n -webkit-animation-delay: -1.0s;\n animation-delay: -1.0s; }\n .valine .spinner .r4 {\n -webkit-animation-delay: -0.9s;\n animation-delay: -0.9s; }\n .valine .spinner .r5 {\n -webkit-animation-delay: -0.8s;\n animation-delay: -0.8s; }\n\n@-webkit-keyframes sk-stretchdelay {\n 0%,\n 40%,\n 100% {\n -webkit-transform: scaleY(0.4); }\n 20% {\n -webkit-transform: scaleY(1); } }\n\n@keyframes sk-stretchdelay {\n 0%,\n 40%,\n 100% {\n transform: scaleY(0.4);\n -webkit-transform: scaleY(0.4); }\n 20% {\n transform: scaleY(1);\n -webkit-transform: scaleY(1); } }\n',""])},function(e,t){function n(e,t){var n=e[1]||"",i=e[3];if(!i)return n;if(t&&"function"==typeof btoa){var o=r(i);return[n].concat(i.sources.map(function(e){return"/*# sourceURL="+i.sourceRoot+e+" */"})).concat([o]).join("\n")}return[n].join("\n")}function r(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var r=n(t,e);return t[2]?"@media "+t[2]+"{"+r+"}":r}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},i=0;i=0&&x.splice(t,1)}function s(e){var t=document.createElement("style");return e.attrs.type="text/css",c(t,e.attrs),o(e,t),t}function l(e){var t=document.createElement("link");return e.attrs.type="text/css",e.attrs.rel="stylesheet",c(t,e.attrs),o(e,t),t}function c(e,t){Object.keys(t).forEach(function(n){e.setAttribute(n,t[n])})}function u(e,t){var n,r,i,o;if(t.transform&&e.css){if(!(o=t.transform(e.css)))return function(){};e.css=o}if(t.singleton){var c=b++;n=m||(m=s(t)),r=p.bind(null,n,c,!1),i=p.bind(null,n,c,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=l(t),r=h.bind(null,n,t),i=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(t),r=d.bind(null,n),i=function(){a(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else i()}}function p(e,t,n,r){var i=n?"":r.css;if(e.styleSheet)e.styleSheet.cssText=y(t,i);else{var o=document.createTextNode(i),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(o,a[t]):e.appendChild(o)}}function d(e,t){var n=t.css,r=t.media;if(r&&e.setAttribute("media",r),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}function h(e,t,n){var r=n.css,i=n.sourceMap,o=void 0===t.convertToAbsoluteUrls&&i;(t.convertToAbsoluteUrls||o)&&(r=w(r)),i&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */");var a=new Blob([r],{type:"text/css"}),s=e.href;e.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var f={},g=function(e){var t;return function(){return void 0===t&&(t=e.apply(this,arguments)),t}}(function(){return window&&document&&document.all&&!window.atob}),v=function(e){var t={};return function(n){return void 0===t[n]&&(t[n]=e.call(this,n)),t[n]}}(function(e){return document.querySelector(e)}),m=null,b=0,x=[],w=n(16);e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");t=t||{},t.attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||(t.singleton=g()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=i(e,t);return r(n,t),function(e){for(var o=[],a=0;a";var x=i(l),w=o[n],y=p(x.html,function(e,t){var i=-1!==d.indexOf(w,e),o=c(n,e,t,i);if(!r(o))return o;if(i)return t=f(n,e,t,v),t?e+'="'+t+'"':e;var o=h(n,e,t,i);return r(o)?void 0:o}),l="<"+n;return y&&(l+=" "+y),x.closing&&(l+=" /"),l+=">"}var b=s(n,l,m);return r(b)?g(l):b},g);return m&&(b=m.remove(b)),b},e.exports=a}])}); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Valine",[],t):"object"==typeof exports?exports.Valine=t():e.Valine=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/dist/",t(t.s=10)}([function(e,t,n){function r(e,t){return new o(t).process(e)}var i=n(2),o=n(13);t=e.exports=r,t.FilterCSS=o;for(var a in i)t[a]=i[a];"undefined"!=typeof window&&(window.filterCSS=e.exports)},function(e,t){e.exports={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n/g,z=/"/g,L=/"/g,C=/&#([a-zA-Z0-9]*);?/gim,$=/:?/gim,q=/&newline;?/gim,R=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,I=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,E=/u\s*r\s*l\s*\(.*/gi,j=//g;t.whiteList=r(),t.getDefaultWhiteList=r,t.onTag=i,t.onIgnoreTag=o,t.onTagAttr=a,t.onIgnoreTagAttr=s,t.safeAttrValue=c,t.escapeHtml=l,t.escapeQuote=u,t.unescapeQuote=p,t.escapeHtmlEntities=d,t.escapeDangerHtml5Entities=h,t.clearNonPrintableCharacter=f,t.friendlyAttrValue=g,t.escapeAttrValue=v,t.onIgnoreTagStripAll=m,t.StripTagBody=b,t.stripCommentTag=x,t.stripBlankChar=w,t.cssFilter=S,t.getDefaultCSSWhiteList=k},function(e,t,n){function r(e){var t=p.spaceIndex(e);if(-1===t)var n=e.slice(1,-1);else var n=e.slice(1,t+1);return n=p.trim(n).toLowerCase(),"/"===n.slice(0,1)&&(n=n.slice(1)),"/"===n.slice(-1)&&(n=n.slice(0,-1)),n}function i(e){return""===h){o+=n(e.slice(a,s)),d=e.slice(s,c+1),p=r(d),o+=t(s,o.length,p,d,i(d)),a=c+1,s=!1;continue}if(('"'===h||"'"===h)&&"="===e.charAt(c-1)){l=h;continue}}else if(h===l){l=!1;continue}}return a0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function c(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}function u(e){return c(e)?e.substr(1,e.length-2):e}var p=n(1),d=/[^a-zA-Z0-9_:\.\-]/gim;t.parseTag=o,t.parseAttr=a},function(e,t,n){var r;!function(i){"use strict";function o(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function a(e,t){return e<>>32-t}function s(e,t,n,r,i,s){return o(a(o(o(t,e),o(r,s)),i),n)}function l(e,t,n,r,i,o,a){return s(t&n|~t&r,e,t,i,o,a)}function c(e,t,n,r,i,o,a){return s(t&r|n&~r,e,t,i,o,a)}function u(e,t,n,r,i,o,a){return s(t^n^r,e,t,i,o,a)}function p(e,t,n,r,i,o,a){return s(n^(t|~r),e,t,i,o,a)}function d(e,t){e[t>>5]|=128<>>9<<4)]=t;var n,r,i,a,s,d=1732584193,h=-271733879,f=-1732584194,g=271733878;for(n=0;n>5]>>>t%32&255);return n}function f(e){var t,n=[];for(n[(e.length>>2)-1]=void 0,t=0;t>5]|=(255&e.charCodeAt(t/8))<16&&(i=d(i,8*e.length)),n=0;n<16;n+=1)o[n]=909522486^i[n],a[n]=1549556828^i[n];return r=d(o.concat(f(t)),512+8*t.length),h(d(a.concat(r),640))}function m(e){var t,n,r="0123456789abcdef",i="";for(n=0;n>>4&15)+r.charAt(15&t);return i}function b(e){return unescape(encodeURIComponent(e))}function x(e){return g(b(e))}function w(e){return m(x(e))}function y(e,t){return v(b(e),b(t))}function k(e,t){return m(y(e,t))}function A(e,t,n){return t?n?y(t,e):k(t,e):n?x(e):w(e)}void 0!==(r=function(){return A}.call(t,n,t,e))&&(e.exports=r)}()},function(e,t,n){(function(t){!function(t){"use strict";function n(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||b.defaults,this.rules=x.normal,this.options.pedantic?this.rules=x.pedantic:this.options.gfm&&(this.options.tables?this.rules=x.tables:this.rules=x.gfm)}function r(e,t){if(this.options=t||b.defaults,this.links=e,this.rules=w.normal,this.renderer=this.options.renderer||new i,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.pedantic?this.rules=w.pedantic:this.options.gfm&&(this.options.breaks?this.rules=w.breaks:this.rules=w.gfm)}function i(e){this.options=e||b.defaults}function o(){}function a(e){this.tokens=[],this.token=null,this.options=e||b.defaults,this.options.renderer=this.options.renderer||new i,this.renderer=this.options.renderer,this.renderer.options=this.options,this.slugger=new s}function s(){this.seen={}}function l(e,t){if(t){if(l.escapeTest.test(e))return e.replace(l.escapeReplace,function(e){return l.replacements[e]})}else if(l.escapeTestNoEncode.test(e))return e.replace(l.escapeReplaceNoEncode,function(e){return l.replacements[e]});return e}function c(e){return e.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,function(e,t){return t=t.toLowerCase(),"colon"===t?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}function u(e,t){return e=e.source||e,t=t||"",{replace:function(t,n){return n=n.source||n,n=n.replace(/(^|[^\[])\^/g,"$1"),e=e.replace(t,n),this},getRegex:function(){return new RegExp(e,t)}}}function p(e,t,n){if(e){try{var r=decodeURIComponent(c(n)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return null}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return null}t&&!k.test(n)&&(n=d(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n}function d(e,t){return y[" "+e]||(/^[^:]+:\/*[^\/]*$/.test(e)?y[" "+e]=e+"/":y[" "+e]=v(e,"/",!0)),e=y[" "+e],"//"===t.slice(0,2)?e.replace(/:[\s\S]*/,":")+t:"/"===t.charAt(0)?e.replace(/(:\/*[^\/]*)[\s\S]*/,"$1")+t:e+t}function h(){}function f(e){for(var t,n,r=1;r=0&&"\\"===n[i];)r=!r;return r?"|":" |"}),r=n.split(/ \|/),i=0;if(r.length>t)r.splice(t);else for(;r.lengthAn error occurred:

    "+l(e.message+"",!0)+"
    ";throw e}}var x={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:h,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,nptable:h,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|\\n*|\\n*|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)|(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,table:h,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading| {0,3}>|<\/?(?:tag)(?: +|\n|\/?>)|<(?:script|pre|style|!--))[^\n]+)*)/,text:/^[^\n]+/};x._label=/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,x._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,x.def=u(x.def).replace("label",x._label).replace("title",x._title).getRegex(),x.bullet=/(?:[*+-]|\d{1,9}\.)/,x.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,x.item=u(x.item,"gm").replace(/bull/g,x.bullet).getRegex(),x.list=u(x.list).replace(/bull/g,x.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+x.def.source+")").getRegex(),x._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",x._comment=//,x.html=u(x.html,"i").replace("comment",x._comment).replace("tag",x._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),x.paragraph=u(x.paragraph).replace("hr",x.hr).replace("heading",x.heading).replace("lheading",x.lheading).replace("tag",x._tag).getRegex(),x.blockquote=u(x.blockquote).replace("paragraph",x.paragraph).getRegex(),x.normal=f({},x),x.gfm=f({},x.normal,{fences:/^ {0,3}(`{3,}|~{3,})([^`\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),x.gfm.paragraph=u(x.paragraph).replace("(?!","(?!"+x.gfm.fences.source.replace("\\1","\\2")+"|"+x.list.source.replace("\\1","\\3")+"|").getRegex(),x.tables=f({},x.gfm,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),x.pedantic=f({},x.normal,{html:u("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",x._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/}),n.rules=x,n.lex=function(e,t){return new n(t).lex(e)},n.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},n.prototype.token=function(e,t){e=e.replace(/^ +$/gm,"");for(var n,r,i,o,a,s,l,c,u,p,d,h,f,m,b,w;e;)if((i=this.rules.newline.exec(e))&&(e=e.substring(i[0].length),i[0].length>1&&this.tokens.push({type:"space"})),i=this.rules.code.exec(e))e=e.substring(i[0].length),i=i[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?i:v(i,"\n")});else if(i=this.rules.fences.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"code",lang:i[2]?i[2].trim():i[2],text:i[3]||""});else if(i=this.rules.heading.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"heading",depth:i[1].length,text:i[2]});else if(t&&(i=this.rules.nptable.exec(e))&&(s={type:"table",header:g(i[1].replace(/^ *| *\| *$/g,"")),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3]?i[3].replace(/\n$/,"").split("\n"):[]},s.header.length===s.align.length)){for(e=e.substring(i[0].length),d=0;d ?/gm,""),this.token(i,t),this.tokens.push({type:"blockquote_end"});else if(i=this.rules.list.exec(e)){for(e=e.substring(i[0].length),o=i[2],m=o.length>1,l={type:"list_start",ordered:m,start:m?+o:"",loose:!1},this.tokens.push(l),i=i[0].match(this.rules.item),c=[],n=!1,f=i.length,d=0;d1?1===a.length:a.length>1||this.options.smartLists&&a!==o)&&(e=i.slice(d+1).join("\n")+e,d=f-1)),r=n||/\n\n(?!\s*$)/.test(s),d!==f-1&&(n="\n"===s.charAt(s.length-1),r||(r=n)),r&&(l.loose=!0),b=/^\[[ xX]\] /.test(s),w=void 0,b&&(w=" "!==s[1],s=s.replace(/^\[[ xX]\] +/,"")),u={type:"list_item_start",task:b,checked:w,loose:r},c.push(u),this.tokens.push(u),this.token(s,!1),this.tokens.push({type:"list_item_end"});if(l.loose)for(f=c.length,d=0;d?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:h,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(href(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*"<\[])\*(?!\*)|^_([^\s][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s"<\[][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:h,text:/^(`+|[^`])[\s\S]*?(?=[\\?@\\[^_{|}~",w.em=u(w.em).replace(/punctuation/g,w._punctuation).getRegex(),w._escapes=/\\([!"#$%&'()*+,\-.\/:;<=>?@\[\]\\^_`{|}~])/g,w._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,w._email=/[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,w.autolink=u(w.autolink).replace("scheme",w._scheme).replace("email",w._email).getRegex(),w._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,w.tag=u(w.tag).replace("comment",x._comment).replace("attribute",w._attribute).getRegex(),w._label=/(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|[^\[\]\\])*?/,w._href=/\s*(<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*)/,w._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,w.link=u(w.link).replace("label",w._label).replace("href",w._href).replace("title",w._title).getRegex(),w.reflink=u(w.reflink).replace("label",w._label).getRegex(),w.normal=f({},w),w.pedantic=f({},w.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:u(/^!?\[(label)\]\((.*?)\)/).replace("label",w._label).getRegex(),reflink:u(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",w._label).getRegex()}),w.gfm=f({},w.normal,{escape:u(w.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:u(w.text).replace("]|","~]|").replace("|$","|https?://|ftp://|www\\.|[a-zA-Z0-9.!#$%&'*+/=?^_`{\\|}~-]+@|$").getRegex()}),w.gfm.url=u(w.gfm.url,"i").replace("email",w.gfm._extended_email).getRegex(),w.breaks=f({},w.gfm,{br:u(w.br).replace("{2,}","*").getRegex(),text:u(w.gfm.text).replace("{2,}","*").getRegex()}),r.rules=w,r.output=function(e,t,n){return new r(t,n).output(e)},r.prototype.output=function(e){for(var t,n,i,o,a,s,c="";e;)if(a=this.rules.escape.exec(e))e=e.substring(a[0].length),c+=l(a[1]);else if(a=this.rules.tag.exec(e))!this.inLink&&/^/i.test(a[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(a[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(a[0])&&(this.inRawBlock=!1),e=e.substring(a[0].length),c+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(a[0]):l(a[0]):a[0];else if(a=this.rules.link.exec(e)){var u=m(a[2],"()");if(u>-1){var p=a[2].length-u;a[2]=a[2].substring(0,u),a[0]=a[0].substring(0,a[0].length-p)}e=e.substring(a[0].length),this.inLink=!0,i=a[2],this.options.pedantic?(t=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(i),t?(i=t[1],o=t[3]):o=""):o=a[3]?a[3].slice(1,-1):"",i=i.trim().replace(/^<([\s\S]*)>$/,"$1"),c+=this.outputLink(a,{href:r.escapes(i),title:r.escapes(o)}),this.inLink=!1}else if((a=this.rules.reflink.exec(e))||(a=this.rules.nolink.exec(e))){if(e=e.substring(a[0].length),t=(a[2]||a[1]).replace(/\s+/g," "),!(t=this.links[t.toLowerCase()])||!t.href){c+=a[0].charAt(0),e=a[0].substring(1)+e;continue}this.inLink=!0,c+=this.outputLink(a,t),this.inLink=!1}else if(a=this.rules.strong.exec(e))e=e.substring(a[0].length),c+=this.renderer.strong(this.output(a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.em.exec(e))e=e.substring(a[0].length),c+=this.renderer.em(this.output(a[6]||a[5]||a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.code.exec(e))e=e.substring(a[0].length),c+=this.renderer.codespan(l(a[2].trim(),!0));else if(a=this.rules.br.exec(e))e=e.substring(a[0].length),c+=this.renderer.br();else if(a=this.rules.del.exec(e))e=e.substring(a[0].length),c+=this.renderer.del(this.output(a[1]));else if(a=this.rules.autolink.exec(e))e=e.substring(a[0].length),"@"===a[2]?(n=l(this.mangle(a[1])),i="mailto:"+n):(n=l(a[1]),i=n),c+=this.renderer.link(i,null,n);else if(this.inLink||!(a=this.rules.url.exec(e))){if(a=this.rules.text.exec(e))e=e.substring(a[0].length),this.inRawBlock?c+=this.renderer.text(a[0]):c+=this.renderer.text(l(this.smartypants(a[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else{if("@"===a[2])n=l(a[0]),i="mailto:"+n;else{do{s=a[0],a[0]=this.rules._backpedal.exec(a[0])[0]}while(s!==a[0]);n=l(a[0]),i="www."===a[1]?"http://"+n:n}e=e.substring(a[0].length),c+=this.renderer.link(i,null,n)}return c},r.escapes=function(e){return e?e.replace(r.rules._escapes,"$1"):e},r.prototype.outputLink=function(e,t){var n=t.href,r=t.title?l(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,l(e[1]))},r.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},r.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,i=0;i.5&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},i.prototype.code=function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,r);null!=i&&i!==e&&(n=!0,e=i)}return r?'
    '+(n?e:l(e,!0))+"
    \n":"
    "+(n?e:l(e,!0))+"
    "},i.prototype.blockquote=function(e){return"
    \n"+e+"
    \n"},i.prototype.html=function(e){return e},i.prototype.heading=function(e,t,n,r){return this.options.headerIds?"'+e+"\n":""+e+"\n"},i.prototype.hr=function(){return this.options.xhtml?"
    \n":"
    \n"},i.prototype.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"},i.prototype.listitem=function(e){return"
  • "+e+"
  • \n"},i.prototype.checkbox=function(e){return" "},i.prototype.paragraph=function(e){return"

    "+e+"

    \n"},i.prototype.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},i.prototype.tablerow=function(e){return"\n"+e+"\n"},i.prototype.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"\n"},i.prototype.strong=function(e){return""+e+""},i.prototype.em=function(e){return""+e+""},i.prototype.codespan=function(e){return""+e+""},i.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},i.prototype.del=function(e){return""+e+""},i.prototype.link=function(e,t,n){if(null===(e=p(this.options.sanitize,this.options.baseUrl,e)))return n;var r='
    "},i.prototype.image=function(e,t,n){if(null===(e=p(this.options.sanitize,this.options.baseUrl,e)))return n;var r=''+n+'":">"},i.prototype.text=function(e){return e},o.prototype.strong=o.prototype.em=o.prototype.codespan=o.prototype.del=o.prototype.text=function(e){return e},o.prototype.link=o.prototype.image=function(e,t,n){return""+n},o.prototype.br=function(){return""},a.parse=function(e,t){return new a(t).parse(e)},a.prototype.parse=function(e){this.inline=new r(e.links,this.options),this.inlineText=new r(e.links,f({},this.options,{renderer:new o})),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},a.prototype.next=function(){return this.token=this.tokens.pop()},a.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},a.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},a.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,c(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,i="",o="";for(n="",e=0;e?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t)){var n=t;do{this.seen[n]++,t=n+"-"+this.seen[n]}while(this.seen.hasOwnProperty(t))}return this.seen[t]=0,t},l.escapeTest=/[&<>"']/,l.escapeReplace=/[&<>"']/g,l.replacements={"&":"&","<":"<",">":">",'"':""","'":"'"},l.escapeTestNoEncode=/[<>"']|&(?!#?\w+;)/,l.escapeReplaceNoEncode=/[<>"']|&(?!#?\w+;)/g;var y={},k=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;h.exec=h,b.options=b.setOptions=function(e){return f(b.defaults,e),b},b.getDefaults=function(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:new i,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tables:!0,xhtml:!1}},b.defaults=b.getDefaults(),b.Parser=a,b.parser=a.parse,b.Renderer=i,b.TextRenderer=o,b.Lexer=n,b.lexer=n.lex,b.InlineLexer=r,b.inlineLexer=r.output,b.Slugger=s,b.parse=b,e.exports=b}(this||"undefined"!=typeof window&&window)}).call(t,n(17))},function(e,t,n){var r=n(11);"string"==typeof r&&(r=[[e.i,r,""]]);var i={};i.transform=void 0;n(15)(r,i);r.locals&&(e.exports=r.locals)},function(e,t,n){function r(e,t){return new a(t).process(e)}var i=n(4),o=n(5),a=n(18);t=e.exports=r,t.FilterXSS=a;for(var s in i)t[s]=i[s];for(var s in o)t[s]=o[s];"undefined"!=typeof window&&(window.filterXSS=e.exports),function(){return"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope}()&&(self.filterXSS=e.exports)},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=function(){function e(e,t){for(var n=0;n\n
    \n
    \n
    \n
    '+i+'
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n \n
    \n \n
    \n
    \n
    ';t.el.innerHTML=o;var a=t.el.querySelector(".vempty");t.nodata={show:function(e){a.innerHTML=e||"还没有评论哦,快来抢沙发吧!",a.setAttribute("style","display:block;")},hide:function(){a.setAttribute("style","display:none;")}},t.nodata.show();var s=t.el.querySelector(".vsmile-icons"),p=e.emoticon_list||[];for(var d in p){var f=document.createElement("img");f.setAttribute("src",e.emoticon_url+"/"+p[d]),s.appendChild(f)}c||(n.init({appId:e.app_id||e.appId,appKey:e.app_key||e.appKey}),c=!0),t.v=n}catch(e){var g="https://github.com/DesertsP/Valine/issues";return void(t.el?t.nodata.show('
    '+e+"
    Valine:"+t.version+"
    反馈:"+g+"
    "):console&&console.log("%c"+e+"\n%cValine%c"+t.version+" "+g,"color:red;","background:#000;padding:5px;line-height:30px;color:#fff;","background:#456;line-height:30px;padding:5px;color:#fff;"))}var v='
    ',m=t.el.querySelector(".vloading");m.innerHTML=v,t.loading={show:function(){m.setAttribute("style","display:block;"),t.nodata.hide()},hide:function(){m.setAttribute("style","display:none;"),0===t.el.querySelectorAll(".vcard").length&&t.nodata.show()}};var b=t.el.querySelector(".vsubmitting");b.innerHTML=v,t.submitting={show:function(){b.setAttribute("style","display:block;")},hide:function(){b.setAttribute("style","display:none;"),t.nodata.hide()}};var x=t.el.querySelector(".vmark");t.alert={show:function(e){x.innerHTML='
    '+e.text+'
    ';var n=x.querySelector(".vbtns"),r='",i='";if(n.innerHTML=""+r+(e.type&&i),x.querySelector(".vcancel").addEventListener("click",function(e){t.alert.hide()}),x.setAttribute("style","display:block;"),e&&e.type){var o=x.querySelector(".vsure");h.on("click",o,function(n){t.alert.hide(),e.cb&&e.cb()})}},hide:function(){x.setAttribute("style","display:none;")}},t.loading.show();var w=new t.v.Query("Comment");w.equalTo("url",l.url);var y=new t.v.Query("Comment");y.equalTo("url",l.url+"/"),AV.Query.or(w,y).count().then(function(n){t.el.querySelector(".count").innerHTML=""+n,t.bind(e)},function(e){console.log(e)})}},{key:"bind",value:function(e){var t=this,n=t.el.querySelector(".vsmile-icons");h.on("click",n,function(e){var n=t.el.querySelector(".veditor"),r=e.target.src;if(void 0!==r){var i="!(:"+decodeURI(r).replace(/^.*\/(.*)$/,"$1")+":)";if(document.selection)n.focus(),sel=document.selection.createRange(),sel.text=i,n.focus();else if(n.selectionStart||"0"==n.selectionStart){var o=n.selectionStart,a=n.selectionEnd,s=a;n.value=n.value.substring(0,o)+i+n.value.substring(a,n.value.length),s+=i.length,n.focus(),n.selectionStart=s,n.selectionEnd=s}else n.value+=i,n.focus();l.comment=n.value;var c=t.el.querySelector(".vsubmit");c.getAttribute("disabled")&&c.removeAttribute("disabled")}});var r=t.el.querySelector(".comment_trigger");h.on("click",r,function(e){r.setAttribute("style","display:none"),t.el.querySelector(".auth-section").removeAttribute("style"),t.el.querySelector(".veditor").focus()});var i=function(e){e.offsetHeight>180&&(e.classList.add("expand"),h.on("click",e,function(t){e.setAttribute("class","vcomment")}))},c=function(){var e=new t.v.Query("Comment");e.equalTo("url",l.url);var n=new t.v.Query("Comment");n.equalTo("url",l.url+"/");var r=AV.Query.or(e,n);return r.notEqualTo("isSpam",!0),r.select(["nick","comment","link","rid","emailHash"]),r.addDescending("createdAt"),r},u=1;!function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;t.loading.show();var r=Number(t.el.querySelector(".count").innerText),i=c();i.limit(10),i.skip(10*(n-1)),i.find().then(function(i){var o=i.length;if(o){for(var a=0;a加载更多评论(剩余'+(r-10*n)+"/"+r+"条)":"";var l=s.querySelector("#vmore");l&&h.on("click",l,function(t){s.innerHTML="",e(++u)})}t.loading.hide()}).catch(function(e){console.log(e),t.loading.hide()})}();var d=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=document.createElement("li");r.setAttribute("class","vcard"),r.setAttribute("id",e.id);var o=e.get("emailHash"),a="https://gravatar.loli.net/avatar/"+o+"?size=80&d=https%3a%2f%2fgravatar.loli.net%2favatar%2f9e63c80900d106cbbec5a9f4ea433a3e.jpg%3fsize%3d80";r.innerHTML='\n
    \n
    \n '+(e.get("link")?' '+e.get("nick")+"":''+e.get("nick")+"")+'\n \n '+g(e.get("createdAt"))+"\n 回复\n
    \n
    '+e.get("comment")+"
    \n
    ";for(var s=t.el.querySelector(".vlist"),l=s.querySelectorAll("li"),c=r.querySelector(".vat"),u=r.querySelectorAll("a"),p=0,d=u.length;p')),{onIgnoreTagAttr:function(e,t,n,r){if("class"===t)return t+'="'+a.escapeAttrValue(n)+'"'}}),l.comment.indexOf(l.at)>-1&&""!=l.at){var r='"+l.at+"";l.comment=l.comment.replace(l.at,r)}var i=f.mail(l.mail),s=f.link(l.link);l.mail=i.k?i.v:"",l.link=s.k?s.v:"",i.k||s.k?i.k?s.k?z():t.alert.show({type:0,text:"您的网址格式不正确,请修正后提交!",ctxt:"返回修改"}):t.alert.show({type:0,text:'请认真评论并填写正确的邮箱地址!
    已开启隐私防护不会泄露您的个人信息,了解反垃圾系统如何处理您的数据。',ctxt:"返回修改"}):t.alert.show({type:0,text:"您的网址和邮箱格式不正确,请修正后提交!",ctxt:"返回修改"})},k=t.el.querySelector(".vemoji-btn"),A=t.el.querySelector(".vsmile-icons");h.on("click",k,function(e){_.getAttribute("triggered")&&(_.setAttribute("style","display:none;"),_.removeAttribute("triggered")),A.getAttribute("triggered")?(A.setAttribute("style","display:none;"),A.removeAttribute("triggered")):(A.removeAttribute("style"),A.setAttribute("triggered",1))});var S=t.el.querySelector(".vpreview-btn"),_=t.el.querySelector(".vpreview-text");h.on("click",S,function(t){if(A.getAttribute("triggered")&&(A.setAttribute("style","display:none;"),A.removeAttribute("triggered")),_.getAttribute("triggered"))_.setAttribute("style","display:none;"),_.removeAttribute("triggered");else{if(""==l.comment)return void m.comment.focus();_.innerHTML=a(o(l.comment.replace(/!\(:(.*?\.\w+):\)/g,'$1')),{onIgnoreTagAttr:function(e,t,n,r){if("class"===t)return t+'="'+a.escapeAttrValue(n)+'"'}}),_.removeAttribute("style"),_.setAttribute("triggered",1)}});var T=function(){var e=new t.v.ACL;return e.setPublicReadAccess(!0),e.setPublicWriteAccess(!1),e},z=function(){w.setAttribute("disabled",!0),t.submitting.show();var e=t.v.Object.extend("Comment"),n=new e;for(var r in l)if(l.hasOwnProperty(r)){if("at"===r)continue;var i=l[r];n.set(r,i)}n.set("emailHash",s(l.mail.toLowerCase().trim())),n.setACL(T()),n.save().then(function(e){p&&p.setItem("ValineCache",JSON.stringify({nick:l.nick,link:l.link,mail:l.mail}));var n=t.el.querySelector(".count");n.innerText=Number(n.innerText)+1,d(e,!0),w.removeAttribute("disabled"),t.submitting.hide(),t.nodata.hide(),t.reset()}).catch(function(e){t.submitting.hide()})},L=function(e){h.on("click",e,function(n){var r=e.getAttribute("at"),i=e.getAttribute("rid");l.rid=i,l.at=r,m.comment.value=r+" ,"+m.comment.value,m.comment.focus(),t.el.querySelector(".comment_trigger").setAttribute("style","display:none"),t.el.querySelector(".auth-section").removeAttribute("style"),t.el.querySelector(".veditor").focus()})};h.off("click",w,y),h.on("click",w,y)}}]),e}(),h={on:function(e,t,n,r){t.addEventListener?t.addEventListener(e,n,r||!1):t.attachEvent?t.attachEvent("on"+e,n):t["on"+e]=n},off:function(e,t,n,r){t.removeEventListener?t.removeEventListener(e,n,r||!1):t.detachEvent?t.detachEvent("on"+e,n):t["on"+e]=null}},f={mail:function(e){return{k:/\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/.test(e),v:e}},link:function(e){return e.length>0&&(e=/^(http|https)/.test(e)?e:"http://"+e),{k:!(e.length>0)||/(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?/.test(e),v:e}}},g=function(e){try{var t=e.getTime(),n=(new Date).getTime(),r=n-t,i=Math.floor(r/864e5);if(0===i){var o=r%864e5,a=Math.floor(o/36e5);if(0===a){var s=o%36e5,l=Math.floor(s/6e4);if(0===l){var c=s%6e4;return Math.round(c/1e3)+" 秒前"}return l+" 分钟前"}return a+" 小时前"}return i<0?"刚刚":i<30?i+" 天前":i<365?Math.floor(i/30)+" 月前":Math.floor(i/365)+" 年前"}catch(e){console.log(e)}},v=function(){$.getJSON("https://api.ipify.org/?format=json",function(e){l.ip=e.ip})};e.exports=d},function(e,t,n){t=e.exports=n(12)(!1),t.push([e.i,'@charset "UTF-8";\n.valine {\n /************ Loading ************/ }\n .valine * {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n color: #3c484e;\n -webkit-transition: all .3s ease;\n transition: all .3s ease;\n margin: initial;\n padding: initial; }\n .valine .vemoticon-img {\n display: inline-block;\n max-height: 32px;\n margin: 0 2px; }\n .valine .vwrap {\n overflow: hidden;\n position: relative;\n border: 1px solid #ededed; }\n .valine .vwrap .veditor-area {\n position: inherit; }\n .valine .vwrap .btn-wrap {\n position: absolute !important;\n right: 1.5em;\n bottom: 0; }\n .valine .vwrap .btn-wrap .vfunction-btn {\n display: inline-block; }\n .valine .vwrap .btn-wrap .vfunction-btn svg {\n fill: #bbb;\n cursor: pointer; }\n .valine .vwrap .btn-wrap .vfunction-btn svg:hover {\n fill: #777777; }\n .valine .vwrap .btn-wrap .vfunction-btn svg:active {\n fill: #777777; }\n .valine .vwrap .vextra-area {\n margin: .4em 0 .4em .5em; }\n .valine .vwrap .vextra-area .vsmile-icons {\n padding: .2em 0;\n border-top: 1px solid #ededed;\n border-radius: 0;\n margin: .3em 0;\n max-height: 64px;\n overflow: auto; }\n .valine .vwrap .vextra-area .vsmile-icons img {\n display: inline-block;\n width: auto !important;\n height: 28px !important;\n margin-right: 4px;\n cursor: pointer; }\n .valine .vwrap .vextra-area .vpreview-text {\n border-top: 1px solid #ededed;\n border-radius: 0;\n padding: .5em .5em;\n margin: .3em 0;\n max-height: 10em;\n overflow: auto; }\n .valine .vwrap .textarea-wrapper {\n color: #4b5b62;\n width: 100%;\n height: 100%;\n background: #fff;\n position: relative;\n border-radius: 0; }\n .valine .vwrap .textarea-wrapper .comment_trigger {\n position: absolute;\n z-index: 10;\n width: 100%;\n height: 100%;\n background-color: #fff;\n padding: 0 1em; }\n .valine .vwrap .textarea-wrapper .comment_trigger .avatar {\n position: absolute;\n width: 3em;\n height: 3em;\n position: absolute;\n top: 50%;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%); }\n .valine .vwrap .textarea-wrapper .comment_trigger .avatar img {\n border-radius: 100%;\n width: 3em;\n height: 3em; }\n .valine .vwrap .textarea-wrapper .comment_trigger .trigger_title {\n position: absolute;\n top: 50%;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n color: #aaa;\n font-size: 1.4em;\n margin-left: 3.5em; }\n .valine .vwrap .textarea-wrapper textarea {\n padding: 1em 1em 0;\n color: #4b5b62;\n width: 100%;\n background: #fff;\n border: none;\n resize: none;\n min-height: 6em;\n margin: 0; }\n .valine .vwrap .textarea-wrapper textarea:focus {\n border-color: #c4c8cb;\n outline: 0; }\n .valine .vwrap .trigger-section {\n display: none; }\n .valine .vwrap .auth-section {\n display: -webkit-box;\n display: flex;\n display: -ms-flexbox;\n background: #fbfbfb;\n padding: .3em .6em; }\n .valine .vwrap .auth-section .input-wrapper {\n -ms-flex: 1 1 27%;\n -webkit-box-flex: 1;\n flex: 1 1 27%;\n width: 27%; }\n .valine .vwrap .auth-section .input-wrapper input {\n color: #4b5b62;\n background: #fafafa;\n border: none;\n border-radius: 0;\n padding: .6em;\n margin: 0;\n line-height: 2;\n font-size: 1em !important; }\n .valine .vwrap .auth-section .input-wrapper input:focus {\n border-color: #c4c8cb;\n outline: 0; }\n .valine .vwrap .auth-section input {\n width: 100%; }\n .valine .vwrap .auth-section .post-action {\n -ms-flex: 1 1 19%;\n -webkit-box-flex: 1;\n flex: 1 1 19%;\n width: 19%;\n margin: 0;\n padding: 2px 0 0; }\n .valine .vwrap .auth-section .post-action button {\n color: #fff;\n width: 100%;\n line-height: 2;\n font-weight: bolder;\n border-radius: 30px;\n border: 1px solid #e9eff3;\n background-color: #111;\n padding: .4em .5em;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n font-size: 1em !important; }\n .valine .vwrap .auth-section .post-action button:hover {\n background-color: #444; }\n @media screen and (max-width: 720px) {\n .valine .vwrap .auth-section {\n display: block; }\n .valine .vwrap .auth-section .input-wrapper, .valine .vwrap .auth-section .post-action {\n -ms-flex: 1 1 100%;\n -webkit-box-flex: 1;\n flex: 1 1 100%;\n padding-right: 0;\n width: 100%; } }\n .valine .vwrap .vmark {\n position: absolute;\n background: rgba(0, 0, 0, 0.65);\n width: 100%;\n height: 100%;\n left: 0;\n top: 0; }\n .valine .vwrap .vmark .valert {\n padding: 2em 0 0 0; }\n .valine .vwrap .vmark .valert .vtext {\n color: #fff;\n padding: 15px; }\n .valine .vwrap .vmark .valert .vcode {\n width: 75px;\n border-radius: 5px;\n background: #dedede; }\n .valine .vwrap .vmark .valert .vcode:focus {\n border-color: #3090e4;\n background-color: #fff; }\n @media screen and (max-width: 720px) {\n .valine .vwrap .vmark .valert {\n padding: 8em 0; }\n .valine .vwrap .vmark .valert .vtext {\n color: #fff;\n padding: 10px; } }\n .valine .info {\n padding: 5px;\n margin: .5em 0; }\n .valine .info .col {\n display: inline-block;\n vertical-align: middle; }\n .valine .info svg {\n margin-right: 2px;\n overflow: hidden;\n fill: currentColor; }\n .valine .power {\n color: #999;\n font-size: 0.625em !important;\n position: relative; }\n .valine a {\n text-decoration: none;\n color: #3eb0ef;\n border: none; }\n .valine .txt-center {\n text-align: center; }\n .valine .float-right {\n float: right !important; }\n .valine .pd5 {\n padding: 5px; }\n .valine .pd10 {\n padding: 10px; }\n .valine .vbtn {\n display: inline-block;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border: 1px solid #e9eff3;\n background-color: #333;\n border-radius: .1em;\n color: #fff;\n padding: .5em 1.5em;\n cursor: pointer;\n white-space: nowrap;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n outline: none;\n min-width: 60px;\n max-width: 100%;\n margin: 0 1em; }\n .valine .vbtn:active,\n .valine .vbtn:hover {\n border-color: #666; }\n .valine .vpage {\n margin: 1.5em 0; }\n .valine .vpage .more {\n width: 100%;\n height: 2.5em;\n line-height: 2.5em;\n text-align: center;\n cursor: pointer;\n color: #666;\n background: #fafafa;\n border-radius: 1.25em; }\n .valine .vlist {\n width: 100%;\n list-style: none;\n margin: 0;\n padding: 0; }\n .valine .vlist .vcard {\n display: -webkit-box;\n display: flex;\n display: -ms-flexbox;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n padding: 2em 1em 1.5em;\n border: 1px solid rgba(150, 150, 150, 0.18);\n margin: 2em 0 0;\n list-style: none;\n border-radius: 5px;\n word-break: break-all; }\n .valine .vlist .vcard:hover {\n border: 1px solid rgba(150, 150, 150, 0.25); }\n .valine .vlist .vcard:hover .vat {\n background: #111 !important; }\n .valine .vlist .vcard .vat {\n margin: -2.1em 0 0;\n float: right;\n background: transparent;\n color: #ffffff;\n padding: .2em 1em;\n line-height: 1.2;\n cursor: pointer;\n word-break: keep-all;\n white-space: nowrap;\n text-transform: uppercase; }\n .valine .vlist .vcard .vavatar {\n -webkit-box-flex: 0;\n flex: 0 0 auto;\n -ms-flex: 0 0 auto;\n margin-right: 1em;\n margin-top: 0.1em;\n display: inline-block;\n height: 3em;\n width: 3em;\n position: relative;\n border-radius: 50%; }\n .valine .vlist .vcard .text-wrapper {\n overflow: visible;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 100%; }\n .valine .vlist .vcard .text-wrapper .vhead {\n line-height: 1;\n margin-bottom: 1em; }\n .valine .vlist .vcard .text-wrapper .vhead .vname {\n font-weight: bolder;\n font-size: 1em;\n color: rgba(0, 0, 0, 0.7); }\n .valine .vlist .vcard .text-wrapper .vhead .spacer {\n color: #ccc;\n margin-left: 0.3em;\n margin-right: 0.3em; }\n .valine .vlist .vcard .text-wrapper .vhead .vtime {\n color: #a9a4a4;\n display: inline-block;\n font-weight: normal; }\n .valine .vlist .vcard .text-wrapper .vcomment {\n position: relative; }\n .valine .vlist .vcard .text-wrapper .vcomment blockquote p {\n padding-left: 12px; }\n .valine .vlist .vcard .text-wrapper .vcomment p {\n word-wrap: break-word;\n white-space: pre-wrap;\n word-break: break-all;\n text-align: justify;\n line-height: 1.8; }\n .valine .vlist .vcard .text-wrapper .vcomment pre {\n overflow: auto;\n padding: 6px 10px;\n word-wrap: break-word;\n color: #555;\n background: #f5f2f2;\n border-radius: 3px;\n font-size: .875rem;\n margin: 5px 0; }\n .valine .vlist .vcard .text-wrapper .vcomment.expand {\n cursor: pointer;\n max-height: 11.25rem;\n overflow: hidden; }\n .valine .vlist .vcard .text-wrapper .vcomment.expand:before {\n display: block;\n content: "";\n position: absolute;\n width: 100%;\n left: 0;\n top: 0;\n bottom: 3.15rem;\n pointer-events: none;\n background: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0)), to(rgba(255, 255, 255, 0.8)));\n background: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.8)); }\n .valine .vlist .vcard .text-wrapper .vcomment.expand:after {\n display: block;\n content: "\\5C55\\5F00 ";\n text-align: center;\n color: #828586;\n position: absolute;\n width: 100%;\n height: 3.15rem;\n line-height: 3.15rem;\n left: 0;\n bottom: 0;\n pointer-events: none;\n background: rgba(255, 255, 255, 0.9); }\n .valine .vlist .vempty {\n padding: 20px;\n text-align: center;\n color: #999; }\n .valine .spinner {\n margin: 10px auto;\n width: 50px;\n height: 30px;\n text-align: center;\n font-size: 10px; }\n .valine .spinner > div {\n background-color: #9c9c9c;\n height: 100%;\n width: 6px;\n margin-right: 3px;\n display: inline-block;\n -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;\n animation: sk-stretchdelay 1.2s infinite ease-in-out; }\n .valine .spinner .r2 {\n -webkit-animation-delay: -1.1s;\n animation-delay: -1.1s; }\n .valine .spinner .r3 {\n -webkit-animation-delay: -1.0s;\n animation-delay: -1.0s; }\n .valine .spinner .r4 {\n -webkit-animation-delay: -0.9s;\n animation-delay: -0.9s; }\n .valine .spinner .r5 {\n -webkit-animation-delay: -0.8s;\n animation-delay: -0.8s; }\n\n@-webkit-keyframes sk-stretchdelay {\n 0%,\n 40%,\n 100% {\n -webkit-transform: scaleY(0.4); }\n 20% {\n -webkit-transform: scaleY(1); } }\n\n@keyframes sk-stretchdelay {\n 0%,\n 40%,\n 100% {\n transform: scaleY(0.4);\n -webkit-transform: scaleY(0.4); }\n 20% {\n transform: scaleY(1);\n -webkit-transform: scaleY(1); } }\n',""])},function(e,t){function n(e,t){var n=e[1]||"",i=e[3];if(!i)return n;if(t&&"function"==typeof btoa){var o=r(i);return[n].concat(i.sources.map(function(e){return"/*# sourceURL="+i.sourceRoot+e+" */"})).concat([o]).join("\n")}return[n].join("\n")}function r(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var r=n(t,e);return t[2]?"@media "+t[2]+"{"+r+"}":r}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},i=0;i=0&&x.splice(t,1)}function s(e){var t=document.createElement("style");return e.attrs.type="text/css",c(t,e.attrs),o(e,t),t}function l(e){var t=document.createElement("link");return e.attrs.type="text/css",e.attrs.rel="stylesheet",c(t,e.attrs),o(e,t),t}function c(e,t){Object.keys(t).forEach(function(n){e.setAttribute(n,t[n])})}function u(e,t){var n,r,i,o;if(t.transform&&e.css){if(!(o=t.transform(e.css)))return function(){};e.css=o}if(t.singleton){var c=b++;n=m||(m=s(t)),r=p.bind(null,n,c,!1),i=p.bind(null,n,c,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=l(t),r=h.bind(null,n,t),i=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(t),r=d.bind(null,n),i=function(){a(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else i()}}function p(e,t,n,r){var i=n?"":r.css;if(e.styleSheet)e.styleSheet.cssText=y(t,i);else{var o=document.createTextNode(i),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(o,a[t]):e.appendChild(o)}}function d(e,t){var n=t.css,r=t.media;if(r&&e.setAttribute("media",r),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}function h(e,t,n){var r=n.css,i=n.sourceMap,o=void 0===t.convertToAbsoluteUrls&&i;(t.convertToAbsoluteUrls||o)&&(r=w(r)),i&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */");var a=new Blob([r],{type:"text/css"}),s=e.href;e.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var f={},g=function(e){var t;return function(){return void 0===t&&(t=e.apply(this,arguments)),t}}(function(){return window&&document&&document.all&&!window.atob}),v=function(e){var t={};return function(n){return void 0===t[n]&&(t[n]=e.call(this,n)),t[n]}}(function(e){return document.querySelector(e)}),m=null,b=0,x=[],w=n(16);e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");t=t||{},t.attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||(t.singleton=g()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=i(e,t);return r(n,t),function(e){for(var o=[],a=0;a";var x=i(l),w=o[n],y=p(x.html,function(e,t){var i=-1!==d.indexOf(w,e),o=c(n,e,t,i);if(!r(o))return o;if(i)return t=f(n,e,t,v),t?e+'="'+t+'"':e;var o=h(n,e,t,i);return r(o)?void 0:o}),l="<"+n;return y&&(l+=" "+y),x.closing&&(l+=" /"),l+=">"}var b=s(n,l,m);return r(b)?g(l):b},g);return m&&(b=m.remove(b)),b},e.exports=a}])}); //# sourceMappingURL=Valine.min.js.map \ No newline at end of file diff --git a/dist/Valine.min.js.map b/dist/Valine.min.js.map index 51790d9e..cd12bcf3 100644 --- a/dist/Valine.min.js.map +++ b/dist/Valine.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///Valine.min.js","webpack:///webpack/bootstrap ac1f9efefecc4feac5fe","webpack:///./~/cssfilter/lib/index.js","webpack:///./~/xss/lib/util.js","webpack:///./~/cssfilter/lib/default.js","webpack:///./~/cssfilter/lib/util.js","webpack:///./~/xss/lib/default.js","webpack:///./~/xss/lib/parser.js","webpack:///./~/blueimp-md5/js/md5.js","webpack:///./~/marked/lib/marked.js","webpack:///./src/Valine.scss?0329","webpack:///./~/xss/lib/index.js","webpack:///./src/Valine.js","webpack:///./src/Valine.scss","webpack:///./~/css-loader/lib/css-base.js","webpack:///./~/cssfilter/lib/css.js","webpack:///./~/cssfilter/lib/parser.js","webpack:///./~/style-loader/lib/addStyles.js","webpack:///./~/style-loader/lib/urls.js","webpack:///(webpack)/buildin/global.js","webpack:///./~/xss/lib/xss.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","filterCSS","html","options","FilterCSS","process","DEFAULT","window","indexOf","arr","item","j","Array","length","forEach","fn","scope","trim","str","String","replace","spaceIndex","reg","match","exec","index","getDefaultWhiteList","whiteList","onAttr","onIgnoreAttr","safeAttrValue","REGEXP_URL_JAVASCRIPT","test","trimRight","a","abbr","address","area","article","aside","audio","b","bdi","bdo","big","blockquote","br","caption","center","cite","code","col","colgroup","dd","del","details","div","dl","dt","em","font","footer","h1","h2","h3","h4","h5","h6","header","hr","img","ins","li","mark","nav","ol","pre","section","small","span","sub","sup","strong","table","tbody","td","tfoot","th","thead","tr","tt","u","ul","video","onTag","tag","onIgnoreTag","onTagAttr","onIgnoreTagAttr","escapeHtml","REGEXP_LT","REGEXP_GT","cssFilter","friendlyAttrValue","_","substr","REGEXP_DEFAULT_ON_TAG_ATTR_4","lastIndex","REGEXP_DEFAULT_ON_TAG_ATTR_7","REGEXP_DEFAULT_ON_TAG_ATTR_8","defaultCSSFilter","escapeAttrValue","escapeQuote","REGEXP_QUOTE","unescapeQuote","REGEXP_QUOTE_2","escapeHtmlEntities","REGEXP_ATTR_VALUE_1","fromCharCode","parseInt","escapeDangerHtml5Entities","REGEXP_ATTR_VALUE_COLON","REGEXP_ATTR_VALUE_NEWLINE","clearNonPrintableCharacter","str2","len","charCodeAt","charAt","onIgnoreTagStripAll","StripTagBody","tags","next","isRemoveTag","isRemoveAllTag","isArray","removeList","posStart","isClosing","ret","end","position","push","remove","rethtml","lastPos","pos","slice","stripCommentTag","STRIP_COMMENT_TAG_REGEXP","stripBlankChar","chars","split","filter","char","join","getDefaultCSSWhiteList","getTagName","tagName","toLowerCase","parseTag","tagStart","quoteStart","currentPos","currentTagName","currentHtml","parseAttr","addAttr","REGEXP_ILLEGAL_ATTR_NAME","retAttrs","tmpName","v","findNextEqual","findBeforeEqual","stripQuoteWrap","isQuoteWrapString","text","__WEBPACK_AMD_DEFINE_RESULT__","$","safeAdd","x","y","lsw","bitRotateLeft","num","cnt","md5cmn","q","t","md5ff","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","input","output","length32","rstr2binl","undefined","length8","rstrMD5","rstrHMACMD5","key","data","hash","bkey","ipad","opad","concat","rstr2hex","hexTab","str2rstrUTF8","unescape","encodeURIComponent","rawMD5","hexMD5","rawHMACMD5","k","hexHMACMD5","md5","string","raw","global","Lexer","tokens","links","create","marked","defaults","rules","block","normal","pedantic","gfm","tables","InlineLexer","inline","renderer","Renderer","Error","breaks","TextRenderer","Parser","token","slugger","Slugger","seen","escape","encode","escapeTest","escapeReplace","ch","replacements","escapeTestNoEncode","escapeReplaceNoEncode","substring","edit","regex","opt","source","val","getRegex","RegExp","cleanUrl","sanitize","base","href","prot","decodeURIComponent","e","originIndependentUrl","resolveUrl","encodeURI","baseUrls","rtrim","noop","merge","obj","target","arguments","splitCells","tableRow","count","row","offset","escaped","curr","cells","splice","invert","suffLen","currChar","findClosingBracket","level","src","callback","toString","pending","highlight","lex","done","err","out","parse","type","lang","message","silent","newline","fences","heading","nptable","list","def","lheading","paragraph","_label","_title","bullet","_tag","_comment","top","loose","cap","bull","listStart","listItems","space","isordered","istask","ischecked","depth","align","ordered","start","smartLists","task","checked","sanitizer","title","autolink","url","link","reflink","nolink","_punctuation","_escapes","_scheme","_email","_attribute","_href","_extended_email","_backpedal","prevCapZero","inLink","inRawBlock","lastParenIndex","removeChars","outputLink","escapes","codespan","mangle","smartypants","image","Math","random","infostring","langPrefix","quote","headerIds","headerPrefix","slug","xhtml","body","listitem","checkbox","tablerow","content","tablecell","flags","baseUrl","inlineText","reverse","tok","pop","peek","parseText","cell","errMsg","console","log","originalSlug","&","<",">","\"","'","setOptions","getDefaults","parser","lexer","inlineLexer","transform","locals","filterXSS","FilterXSS","self","DedicatedWorkerGlobalScope","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","props","descriptor","writable","protoProps","staticProps","md","xss","crypto","defaultComment","ip","comment","rid","at","nick","mail","ua","navigator","userAgent","location","pathname","pin","disable_av_init","store","localStorage","Valine","option","_root","version","getIp","init","av","AV","el","document","querySelectorAll","classList","add","placeholder","eleHTML","innerHTML","vempty","querySelector","nodata","show","txt","setAttribute","hide","_smile_wrapper","smile_names","emoticon_list","createElement","emoticon_url","appendChild","appId","app_id","appKey","app_key","ex","issue","_spinner","vloading","loading","vsubmitting","submitting","_mark","alert","_vbtns","_cBtn","ctxt","_oBtn","otxt","addEventListener","_ok","Event","on","cb","query","Query","equalTo","then","bind","error","vsmiles","textField","imgSrc","decodeURI","selection","focus","sel","createRange","selectionStart","startPos","endPos","selectionEnd","cursorPos","submitBtn","getAttribute","removeAttribute","comment_trigger","expandEvt","offsetHeight","commonQuery","select","notEqualTo","addDescending","Number","innerText","cq","limit","skip","find","rets","insertComment","_vpage","_vmore","catch","_vcard","id","emailHash","gravatar_url","timeAgo","_vlist","_vlis","_vat","_as","insertBefore","_vcontent","bindAtEvt","mapping","veditor","vnick","vlink","vmail","inputs","_v","_el","getCache","getItem","JSON","reset","smile_icons","preview_text","submitEvt","isWhiteAttr","mailRet","check","linkRet","commitEvt","smile_btn","preview_btn","getAcl","acl","ACL","setPublicReadAccess","setPublicWriteAccess","Ct","extend","set","setACL","save","commentItem","setItem","stringify","_count","off","handler","capture","attachEvent","removeEventListener","detachEvent","date","oldTime","getTime","currTime","Date","diffValue","days","floor","leave1","hours","leave2","minutes","leave3","round","getJSON","json","cssWithMappingToString","useSourceMap","cssMapping","btoa","sourceMapping","toComment","sources","map","sourceRoot","sourceMap","mediaQuery","alreadyImportedModules","isNull","shallowCopyObject","parseStyle","css","me","sourcePosition","isWhite","opts","addNewAttr","isParenthesisOpen","retCSS","cssLength","addStylesToDom","styles","domStyle","stylesInDom","refs","parts","addStyle","listToStyles","newStyles","media","part","insertStyleElement","style","getElement","insertInto","lastStyleElementInsertedAtTop","stylesInsertedAtTop","insertAt","nextSibling","firstChild","removeStyleElement","parentNode","removeChild","idx","createStyleElement","attrs","addAttrs","createLinkElement","rel","keys","update","result","singleton","styleIndex","singletonCounter","applyToSingletonTag","URL","createObjectURL","revokeObjectURL","Blob","updateLink","applyToTag","newObj","styleSheet","cssText","replaceText","cssNode","createTextNode","childNodes","autoFixUrls","convertToAbsoluteUrls","fixUrls","blob","oldSrc","isOldIE","memo","apply","all","atob","selector","DEBUG","newList","mayRemove","textStore","replacement","Boolean","protocol","host","currentDir","fullMatch","origUrl","unquotedOrigUrl","$1","newUrl","g","Function","eval","getAttrs","closing","stripIgnoreTag","allowCommentTag","stripIgnoreTagBody","retHtml","info","whiteAttrList","attrsHtml"],"mappings":"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","file":"Valine.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Valine\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Valine\"] = factory();\n\telse\n\t\troot[\"Valine\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Valine\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Valine\"] = factory();\n\telse\n\t\troot[\"Valine\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 10);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar DEFAULT = __webpack_require__(2);\nvar FilterCSS = __webpack_require__(13);\n\n\n/**\n * XSS过滤\n *\n * @param {String} css 要过滤的CSS代码\n * @param {Object} options 选项:whiteList, onAttr, onIgnoreAttr\n * @return {String}\n */\nfunction filterCSS (html, options) {\n var xss = new FilterCSS(options);\n return xss.process(html);\n}\n\n\n// 输出\nexports = module.exports = filterCSS;\nexports.FilterCSS = FilterCSS;\nfor (var i in DEFAULT) exports[i] = DEFAULT[i];\n\n// 在浏览器端使用\nif (typeof window !== 'undefined') {\n window.filterCSS = module.exports;\n}\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\n indexOf: function(arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function(arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function(str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, \"\");\n },\n spaceIndex: function(str) {\n var reg = /\\s|\\n|\\t/;\n var match = reg.exec(str);\n return match ? match.index : -1;\n }\n};\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n/**\n * cssfilter\n *\n * @author 老雷\n */\n\nfunction getDefaultWhiteList () {\n // 白名单值说明:\n // true: 允许该属性\n // Function: function (val) { } 返回true表示允许该属性,其他值均表示不允许\n // RegExp: regexp.test(val) 返回true表示允许该属性,其他值均表示不允许\n // 除上面列出的值外均表示不允许\n var whiteList = {};\n\n whiteList['align-content'] = false; // default: auto\n whiteList['align-items'] = false; // default: auto\n whiteList['align-self'] = false; // default: auto\n whiteList['alignment-adjust'] = false; // default: auto\n whiteList['alignment-baseline'] = false; // default: baseline\n whiteList['all'] = false; // default: depending on individual properties\n whiteList['anchor-point'] = false; // default: none\n whiteList['animation'] = false; // default: depending on individual properties\n whiteList['animation-delay'] = false; // default: 0\n whiteList['animation-direction'] = false; // default: normal\n whiteList['animation-duration'] = false; // default: 0\n whiteList['animation-fill-mode'] = false; // default: none\n whiteList['animation-iteration-count'] = false; // default: 1\n whiteList['animation-name'] = false; // default: none\n whiteList['animation-play-state'] = false; // default: running\n whiteList['animation-timing-function'] = false; // default: ease\n whiteList['azimuth'] = false; // default: center\n whiteList['backface-visibility'] = false; // default: visible\n whiteList['background'] = true; // default: depending on individual properties\n whiteList['background-attachment'] = true; // default: scroll\n whiteList['background-clip'] = true; // default: border-box\n whiteList['background-color'] = true; // default: transparent\n whiteList['background-image'] = true; // default: none\n whiteList['background-origin'] = true; // default: padding-box\n whiteList['background-position'] = true; // default: 0% 0%\n whiteList['background-repeat'] = true; // default: repeat\n whiteList['background-size'] = true; // default: auto\n whiteList['baseline-shift'] = false; // default: baseline\n whiteList['binding'] = false; // default: none\n whiteList['bleed'] = false; // default: 6pt\n whiteList['bookmark-label'] = false; // default: content()\n whiteList['bookmark-level'] = false; // default: none\n whiteList['bookmark-state'] = false; // default: open\n whiteList['border'] = true; // default: depending on individual properties\n whiteList['border-bottom'] = true; // default: depending on individual properties\n whiteList['border-bottom-color'] = true; // default: current color\n whiteList['border-bottom-left-radius'] = true; // default: 0\n whiteList['border-bottom-right-radius'] = true; // default: 0\n whiteList['border-bottom-style'] = true; // default: none\n whiteList['border-bottom-width'] = true; // default: medium\n whiteList['border-collapse'] = true; // default: separate\n whiteList['border-color'] = true; // default: depending on individual properties\n whiteList['border-image'] = true; // default: none\n whiteList['border-image-outset'] = true; // default: 0\n whiteList['border-image-repeat'] = true; // default: stretch\n whiteList['border-image-slice'] = true; // default: 100%\n whiteList['border-image-source'] = true; // default: none\n whiteList['border-image-width'] = true; // default: 1\n whiteList['border-left'] = true; // default: depending on individual properties\n whiteList['border-left-color'] = true; // default: current color\n whiteList['border-left-style'] = true; // default: none\n whiteList['border-left-width'] = true; // default: medium\n whiteList['border-radius'] = true; // default: 0\n whiteList['border-right'] = true; // default: depending on individual properties\n whiteList['border-right-color'] = true; // default: current color\n whiteList['border-right-style'] = true; // default: none\n whiteList['border-right-width'] = true; // default: medium\n whiteList['border-spacing'] = true; // default: 0\n whiteList['border-style'] = true; // default: depending on individual properties\n whiteList['border-top'] = true; // default: depending on individual properties\n whiteList['border-top-color'] = true; // default: current color\n whiteList['border-top-left-radius'] = true; // default: 0\n whiteList['border-top-right-radius'] = true; // default: 0\n whiteList['border-top-style'] = true; // default: none\n whiteList['border-top-width'] = true; // default: medium\n whiteList['border-width'] = true; // default: depending on individual properties\n whiteList['bottom'] = false; // default: auto\n whiteList['box-decoration-break'] = true; // default: slice\n whiteList['box-shadow'] = true; // default: none\n whiteList['box-sizing'] = true; // default: content-box\n whiteList['box-snap'] = true; // default: none\n whiteList['box-suppress'] = true; // default: show\n whiteList['break-after'] = true; // default: auto\n whiteList['break-before'] = true; // default: auto\n whiteList['break-inside'] = true; // default: auto\n whiteList['caption-side'] = false; // default: top\n whiteList['chains'] = false; // default: none\n whiteList['clear'] = true; // default: none\n whiteList['clip'] = false; // default: auto\n whiteList['clip-path'] = false; // default: none\n whiteList['clip-rule'] = false; // default: nonzero\n whiteList['color'] = true; // default: implementation dependent\n whiteList['color-interpolation-filters'] = true; // default: auto\n whiteList['column-count'] = false; // default: auto\n whiteList['column-fill'] = false; // default: balance\n whiteList['column-gap'] = false; // default: normal\n whiteList['column-rule'] = false; // default: depending on individual properties\n whiteList['column-rule-color'] = false; // default: current color\n whiteList['column-rule-style'] = false; // default: medium\n whiteList['column-rule-width'] = false; // default: medium\n whiteList['column-span'] = false; // default: none\n whiteList['column-width'] = false; // default: auto\n whiteList['columns'] = false; // default: depending on individual properties\n whiteList['contain'] = false; // default: none\n whiteList['content'] = false; // default: normal\n whiteList['counter-increment'] = false; // default: none\n whiteList['counter-reset'] = false; // default: none\n whiteList['counter-set'] = false; // default: none\n whiteList['crop'] = false; // default: auto\n whiteList['cue'] = false; // default: depending on individual properties\n whiteList['cue-after'] = false; // default: none\n whiteList['cue-before'] = false; // default: none\n whiteList['cursor'] = false; // default: auto\n whiteList['direction'] = false; // default: ltr\n whiteList['display'] = true; // default: depending on individual properties\n whiteList['display-inside'] = true; // default: auto\n whiteList['display-list'] = true; // default: none\n whiteList['display-outside'] = true; // default: inline-level\n whiteList['dominant-baseline'] = false; // default: auto\n whiteList['elevation'] = false; // default: level\n whiteList['empty-cells'] = false; // default: show\n whiteList['filter'] = false; // default: none\n whiteList['flex'] = false; // default: depending on individual properties\n whiteList['flex-basis'] = false; // default: auto\n whiteList['flex-direction'] = false; // default: row\n whiteList['flex-flow'] = false; // default: depending on individual properties\n whiteList['flex-grow'] = false; // default: 0\n whiteList['flex-shrink'] = false; // default: 1\n whiteList['flex-wrap'] = false; // default: nowrap\n whiteList['float'] = false; // default: none\n whiteList['float-offset'] = false; // default: 0 0\n whiteList['flood-color'] = false; // default: black\n whiteList['flood-opacity'] = false; // default: 1\n whiteList['flow-from'] = false; // default: none\n whiteList['flow-into'] = false; // default: none\n whiteList['font'] = true; // default: depending on individual properties\n whiteList['font-family'] = true; // default: implementation dependent\n whiteList['font-feature-settings'] = true; // default: normal\n whiteList['font-kerning'] = true; // default: auto\n whiteList['font-language-override'] = true; // default: normal\n whiteList['font-size'] = true; // default: medium\n whiteList['font-size-adjust'] = true; // default: none\n whiteList['font-stretch'] = true; // default: normal\n whiteList['font-style'] = true; // default: normal\n whiteList['font-synthesis'] = true; // default: weight style\n whiteList['font-variant'] = true; // default: normal\n whiteList['font-variant-alternates'] = true; // default: normal\n whiteList['font-variant-caps'] = true; // default: normal\n whiteList['font-variant-east-asian'] = true; // default: normal\n whiteList['font-variant-ligatures'] = true; // default: normal\n whiteList['font-variant-numeric'] = true; // default: normal\n whiteList['font-variant-position'] = true; // default: normal\n whiteList['font-weight'] = true; // default: normal\n whiteList['grid'] = false; // default: depending on individual properties\n whiteList['grid-area'] = false; // default: depending on individual properties\n whiteList['grid-auto-columns'] = false; // default: auto\n whiteList['grid-auto-flow'] = false; // default: none\n whiteList['grid-auto-rows'] = false; // default: auto\n whiteList['grid-column'] = false; // default: depending on individual properties\n whiteList['grid-column-end'] = false; // default: auto\n whiteList['grid-column-start'] = false; // default: auto\n whiteList['grid-row'] = false; // default: depending on individual properties\n whiteList['grid-row-end'] = false; // default: auto\n whiteList['grid-row-start'] = false; // default: auto\n whiteList['grid-template'] = false; // default: depending on individual properties\n whiteList['grid-template-areas'] = false; // default: none\n whiteList['grid-template-columns'] = false; // default: none\n whiteList['grid-template-rows'] = false; // default: none\n whiteList['hanging-punctuation'] = false; // default: none\n whiteList['height'] = true; // default: auto\n whiteList['hyphens'] = false; // default: manual\n whiteList['icon'] = false; // default: auto\n whiteList['image-orientation'] = false; // default: auto\n whiteList['image-resolution'] = false; // default: normal\n whiteList['ime-mode'] = false; // default: auto\n whiteList['initial-letters'] = false; // default: normal\n whiteList['inline-box-align'] = false; // default: last\n whiteList['justify-content'] = false; // default: auto\n whiteList['justify-items'] = false; // default: auto\n whiteList['justify-self'] = false; // default: auto\n whiteList['left'] = false; // default: auto\n whiteList['letter-spacing'] = true; // default: normal\n whiteList['lighting-color'] = true; // default: white\n whiteList['line-box-contain'] = false; // default: block inline replaced\n whiteList['line-break'] = false; // default: auto\n whiteList['line-grid'] = false; // default: match-parent\n whiteList['line-height'] = false; // default: normal\n whiteList['line-snap'] = false; // default: none\n whiteList['line-stacking'] = false; // default: depending on individual properties\n whiteList['line-stacking-ruby'] = false; // default: exclude-ruby\n whiteList['line-stacking-shift'] = false; // default: consider-shifts\n whiteList['line-stacking-strategy'] = false; // default: inline-line-height\n whiteList['list-style'] = true; // default: depending on individual properties\n whiteList['list-style-image'] = true; // default: none\n whiteList['list-style-position'] = true; // default: outside\n whiteList['list-style-type'] = true; // default: disc\n whiteList['margin'] = true; // default: depending on individual properties\n whiteList['margin-bottom'] = true; // default: 0\n whiteList['margin-left'] = true; // default: 0\n whiteList['margin-right'] = true; // default: 0\n whiteList['margin-top'] = true; // default: 0\n whiteList['marker-offset'] = false; // default: auto\n whiteList['marker-side'] = false; // default: list-item\n whiteList['marks'] = false; // default: none\n whiteList['mask'] = false; // default: border-box\n whiteList['mask-box'] = false; // default: see individual properties\n whiteList['mask-box-outset'] = false; // default: 0\n whiteList['mask-box-repeat'] = false; // default: stretch\n whiteList['mask-box-slice'] = false; // default: 0 fill\n whiteList['mask-box-source'] = false; // default: none\n whiteList['mask-box-width'] = false; // default: auto\n whiteList['mask-clip'] = false; // default: border-box\n whiteList['mask-image'] = false; // default: none\n whiteList['mask-origin'] = false; // default: border-box\n whiteList['mask-position'] = false; // default: center\n whiteList['mask-repeat'] = false; // default: no-repeat\n whiteList['mask-size'] = false; // default: border-box\n whiteList['mask-source-type'] = false; // default: auto\n whiteList['mask-type'] = false; // default: luminance\n whiteList['max-height'] = true; // default: none\n whiteList['max-lines'] = false; // default: none\n whiteList['max-width'] = true; // default: none\n whiteList['min-height'] = true; // default: 0\n whiteList['min-width'] = true; // default: 0\n whiteList['move-to'] = false; // default: normal\n whiteList['nav-down'] = false; // default: auto\n whiteList['nav-index'] = false; // default: auto\n whiteList['nav-left'] = false; // default: auto\n whiteList['nav-right'] = false; // default: auto\n whiteList['nav-up'] = false; // default: auto\n whiteList['object-fit'] = false; // default: fill\n whiteList['object-position'] = false; // default: 50% 50%\n whiteList['opacity'] = false; // default: 1\n whiteList['order'] = false; // default: 0\n whiteList['orphans'] = false; // default: 2\n whiteList['outline'] = false; // default: depending on individual properties\n whiteList['outline-color'] = false; // default: invert\n whiteList['outline-offset'] = false; // default: 0\n whiteList['outline-style'] = false; // default: none\n whiteList['outline-width'] = false; // default: medium\n whiteList['overflow'] = false; // default: depending on individual properties\n whiteList['overflow-wrap'] = false; // default: normal\n whiteList['overflow-x'] = false; // default: visible\n whiteList['overflow-y'] = false; // default: visible\n whiteList['padding'] = true; // default: depending on individual properties\n whiteList['padding-bottom'] = true; // default: 0\n whiteList['padding-left'] = true; // default: 0\n whiteList['padding-right'] = true; // default: 0\n whiteList['padding-top'] = true; // default: 0\n whiteList['page'] = false; // default: auto\n whiteList['page-break-after'] = false; // default: auto\n whiteList['page-break-before'] = false; // default: auto\n whiteList['page-break-inside'] = false; // default: auto\n whiteList['page-policy'] = false; // default: start\n whiteList['pause'] = false; // default: implementation dependent\n whiteList['pause-after'] = false; // default: implementation dependent\n whiteList['pause-before'] = false; // default: implementation dependent\n whiteList['perspective'] = false; // default: none\n whiteList['perspective-origin'] = false; // default: 50% 50%\n whiteList['pitch'] = false; // default: medium\n whiteList['pitch-range'] = false; // default: 50\n whiteList['play-during'] = false; // default: auto\n whiteList['position'] = false; // default: static\n whiteList['presentation-level'] = false; // default: 0\n whiteList['quotes'] = false; // default: text\n whiteList['region-fragment'] = false; // default: auto\n whiteList['resize'] = false; // default: none\n whiteList['rest'] = false; // default: depending on individual properties\n whiteList['rest-after'] = false; // default: none\n whiteList['rest-before'] = false; // default: none\n whiteList['richness'] = false; // default: 50\n whiteList['right'] = false; // default: auto\n whiteList['rotation'] = false; // default: 0\n whiteList['rotation-point'] = false; // default: 50% 50%\n whiteList['ruby-align'] = false; // default: auto\n whiteList['ruby-merge'] = false; // default: separate\n whiteList['ruby-position'] = false; // default: before\n whiteList['shape-image-threshold'] = false; // default: 0.0\n whiteList['shape-outside'] = false; // default: none\n whiteList['shape-margin'] = false; // default: 0\n whiteList['size'] = false; // default: auto\n whiteList['speak'] = false; // default: auto\n whiteList['speak-as'] = false; // default: normal\n whiteList['speak-header'] = false; // default: once\n whiteList['speak-numeral'] = false; // default: continuous\n whiteList['speak-punctuation'] = false; // default: none\n whiteList['speech-rate'] = false; // default: medium\n whiteList['stress'] = false; // default: 50\n whiteList['string-set'] = false; // default: none\n whiteList['tab-size'] = false; // default: 8\n whiteList['table-layout'] = false; // default: auto\n whiteList['text-align'] = true; // default: start\n whiteList['text-align-last'] = true; // default: auto\n whiteList['text-combine-upright'] = true; // default: none\n whiteList['text-decoration'] = true; // default: none\n whiteList['text-decoration-color'] = true; // default: currentColor\n whiteList['text-decoration-line'] = true; // default: none\n whiteList['text-decoration-skip'] = true; // default: objects\n whiteList['text-decoration-style'] = true; // default: solid\n whiteList['text-emphasis'] = true; // default: depending on individual properties\n whiteList['text-emphasis-color'] = true; // default: currentColor\n whiteList['text-emphasis-position'] = true; // default: over right\n whiteList['text-emphasis-style'] = true; // default: none\n whiteList['text-height'] = true; // default: auto\n whiteList['text-indent'] = true; // default: 0\n whiteList['text-justify'] = true; // default: auto\n whiteList['text-orientation'] = true; // default: mixed\n whiteList['text-overflow'] = true; // default: clip\n whiteList['text-shadow'] = true; // default: none\n whiteList['text-space-collapse'] = true; // default: collapse\n whiteList['text-transform'] = true; // default: none\n whiteList['text-underline-position'] = true; // default: auto\n whiteList['text-wrap'] = true; // default: normal\n whiteList['top'] = false; // default: auto\n whiteList['transform'] = false; // default: none\n whiteList['transform-origin'] = false; // default: 50% 50% 0\n whiteList['transform-style'] = false; // default: flat\n whiteList['transition'] = false; // default: depending on individual properties\n whiteList['transition-delay'] = false; // default: 0s\n whiteList['transition-duration'] = false; // default: 0s\n whiteList['transition-property'] = false; // default: all\n whiteList['transition-timing-function'] = false; // default: ease\n whiteList['unicode-bidi'] = false; // default: normal\n whiteList['vertical-align'] = false; // default: baseline\n whiteList['visibility'] = false; // default: visible\n whiteList['voice-balance'] = false; // default: center\n whiteList['voice-duration'] = false; // default: auto\n whiteList['voice-family'] = false; // default: implementation dependent\n whiteList['voice-pitch'] = false; // default: medium\n whiteList['voice-range'] = false; // default: medium\n whiteList['voice-rate'] = false; // default: normal\n whiteList['voice-stress'] = false; // default: normal\n whiteList['voice-volume'] = false; // default: medium\n whiteList['volume'] = false; // default: medium\n whiteList['white-space'] = false; // default: normal\n whiteList['widows'] = false; // default: 2\n whiteList['width'] = true; // default: auto\n whiteList['will-change'] = false; // default: auto\n whiteList['word-break'] = true; // default: normal\n whiteList['word-spacing'] = true; // default: normal\n whiteList['word-wrap'] = true; // default: normal\n whiteList['wrap-flow'] = false; // default: auto\n whiteList['wrap-through'] = false; // default: wrap\n whiteList['writing-mode'] = false; // default: horizontal-tb\n whiteList['z-index'] = false; // default: auto\n\n return whiteList;\n}\n\n\n/**\n * 匹配到白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onAttr (name, value, options) {\n // do nothing\n}\n\n/**\n * 匹配到不在白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreAttr (name, value, options) {\n // do nothing\n}\n\nvar REGEXP_URL_JAVASCRIPT = /javascript\\s*\\:/img;\n\n/**\n * 过滤属性值\n *\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction safeAttrValue(name, value) {\n if (REGEXP_URL_JAVASCRIPT.test(value)) return '';\n return value;\n}\n\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onAttr = onAttr;\nexports.onIgnoreAttr = onIgnoreAttr;\nexports.safeAttrValue = safeAttrValue;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\n indexOf: function (arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function (arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function (str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, '');\n },\n trimRight: function (str) {\n if (String.prototype.trimRight) {\n return str.trimRight();\n }\n return str.replace(/(\\s*$)/g, '');\n }\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * default settings\n *\n * @author Zongmin Lei\n */\n\nvar FilterCSS = __webpack_require__(0).FilterCSS;\nvar getDefaultCSSWhiteList = __webpack_require__(0).getDefaultWhiteList;\nvar _ = __webpack_require__(1);\n\nfunction getDefaultWhiteList() {\n return {\n a: [\"target\", \"href\", \"title\"],\n abbr: [\"title\"],\n address: [],\n area: [\"shape\", \"coords\", \"href\", \"alt\"],\n article: [],\n aside: [],\n audio: [\"autoplay\", \"controls\", \"loop\", \"preload\", \"src\"],\n b: [],\n bdi: [\"dir\"],\n bdo: [\"dir\"],\n big: [],\n blockquote: [\"cite\"],\n br: [],\n caption: [],\n center: [],\n cite: [],\n code: [],\n col: [\"align\", \"valign\", \"span\", \"width\"],\n colgroup: [\"align\", \"valign\", \"span\", \"width\"],\n dd: [],\n del: [\"datetime\"],\n details: [\"open\"],\n div: [],\n dl: [],\n dt: [],\n em: [],\n font: [\"color\", \"size\", \"face\"],\n footer: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n header: [],\n hr: [],\n i: [],\n img: [\"src\", \"alt\", \"title\", \"width\", \"height\"],\n ins: [\"datetime\"],\n li: [],\n mark: [],\n nav: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n section: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n table: [\"width\", \"border\", \"align\", \"valign\"],\n tbody: [\"align\", \"valign\"],\n td: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n tfoot: [\"align\", \"valign\"],\n th: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n thead: [\"align\", \"valign\"],\n tr: [\"rowspan\", \"align\", \"valign\"],\n tt: [],\n u: [],\n ul: [],\n video: [\"autoplay\", \"controls\", \"loop\", \"preload\", \"src\", \"height\", \"width\"]\n };\n}\n\nvar defaultCSSFilter = new FilterCSS();\n\n/**\n * default onTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onIgnoreTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default onIgnoreTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onIgnoreTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default escapeHtml function\n *\n * @param {String} html\n */\nfunction escapeHtml(html) {\n return html.replace(REGEXP_LT, \"<\").replace(REGEXP_GT, \">\");\n}\n\n/**\n * default safeAttrValue function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @param {Object} cssFilter\n * @return {String}\n */\nfunction safeAttrValue(tag, name, value, cssFilter) {\n // unescape attribute value firstly\n value = friendlyAttrValue(value);\n\n if (name === \"href\" || name === \"src\") {\n // filter `href` and `src` attribute\n // only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#`\n value = _.trim(value);\n if (value === \"#\") return \"#\";\n if (\n !(\n value.substr(0, 7) === \"http://\" ||\n value.substr(0, 8) === \"https://\" ||\n value.substr(0, 7) === \"mailto:\" ||\n value.substr(0, 4) === \"tel:\" ||\n value[0] === \"#\" ||\n value[0] === \"/\"\n )\n ) {\n return \"\";\n }\n } else if (name === \"background\") {\n // filter `background` attribute (maybe no use)\n // `javascript:`\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n } else if (name === \"style\") {\n // `expression()`\n REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) {\n return \"\";\n }\n // `url()`\n REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n }\n if (cssFilter !== false) {\n cssFilter = cssFilter || defaultCSSFilter;\n value = cssFilter.process(value);\n }\n }\n\n // escape `<>\"` before returns\n value = escapeAttrValue(value);\n return value;\n}\n\n// RegExp list\nvar REGEXP_LT = //g;\nvar REGEXP_QUOTE = /\"/g;\nvar REGEXP_QUOTE_2 = /"/g;\nvar REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;\nvar REGEXP_ATTR_VALUE_COLON = /:?/gim;\nvar REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\\/\\*|\\*\\//gm;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_4 = /((j\\s*a\\s*v\\s*a|v\\s*b|l\\s*i\\s*v\\s*e)\\s*s\\s*c\\s*r\\s*i\\s*p\\s*t\\s*|m\\s*o\\s*c\\s*h\\s*a)\\:/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:\\s*image\\//gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_7 = /e\\s*x\\s*p\\s*r\\s*e\\s*s\\s*s\\s*i\\s*o\\s*n\\s*\\(.*/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\\s*r\\s*l\\s*\\(.*/gi;\n\n/**\n * escape doube quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction escapeQuote(str) {\n return str.replace(REGEXP_QUOTE, \""\");\n}\n\n/**\n * unescape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction unescapeQuote(str) {\n return str.replace(REGEXP_QUOTE_2, '\"');\n}\n\n/**\n * escape html entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeHtmlEntities(str) {\n return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) {\n return code[0] === \"x\" || code[0] === \"X\"\n ? String.fromCharCode(parseInt(code.substr(1), 16))\n : String.fromCharCode(parseInt(code, 10));\n });\n}\n\n/**\n * escape html5 new danger entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeDangerHtml5Entities(str) {\n return str\n .replace(REGEXP_ATTR_VALUE_COLON, \":\")\n .replace(REGEXP_ATTR_VALUE_NEWLINE, \" \");\n}\n\n/**\n * clear nonprintable characters\n *\n * @param {String} str\n * @return {String}\n */\nfunction clearNonPrintableCharacter(str) {\n var str2 = \"\";\n for (var i = 0, len = str.length; i < len; i++) {\n str2 += str.charCodeAt(i) < 32 ? \" \" : str.charAt(i);\n }\n return _.trim(str2);\n}\n\n/**\n * get friendly attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction friendlyAttrValue(str) {\n str = unescapeQuote(str);\n str = escapeHtmlEntities(str);\n str = escapeDangerHtml5Entities(str);\n str = clearNonPrintableCharacter(str);\n return str;\n}\n\n/**\n * unescape attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeAttrValue(str) {\n str = escapeQuote(str);\n str = escapeHtml(str);\n return str;\n}\n\n/**\n * `onIgnoreTag` function for removing all the tags that are not in whitelist\n */\nfunction onIgnoreTagStripAll() {\n return \"\";\n}\n\n/**\n * remove tag body\n * specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional)\n *\n * @param {array} tags\n * @param {function} next\n */\nfunction StripTagBody(tags, next) {\n if (typeof next !== \"function\") {\n next = function() {};\n }\n\n var isRemoveAllTag = !Array.isArray(tags);\n function isRemoveTag(tag) {\n if (isRemoveAllTag) return true;\n return _.indexOf(tags, tag) !== -1;\n }\n\n var removeList = [];\n var posStart = false;\n\n return {\n onIgnoreTag: function(tag, html, options) {\n if (isRemoveTag(tag)) {\n if (options.isClosing) {\n var ret = \"[/removed]\";\n var end = options.position + ret.length;\n removeList.push([\n posStart !== false ? posStart : options.position,\n end\n ]);\n posStart = false;\n return ret;\n } else {\n if (!posStart) {\n posStart = options.position;\n }\n return \"[removed]\";\n }\n } else {\n return next(tag, html, options);\n }\n },\n remove: function(html) {\n var rethtml = \"\";\n var lastPos = 0;\n _.forEach(removeList, function(pos) {\n rethtml += html.slice(lastPos, pos[0]);\n lastPos = pos[1];\n });\n rethtml += html.slice(lastPos);\n return rethtml;\n }\n };\n}\n\n/**\n * remove html comments\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripCommentTag(html) {\n return html.replace(STRIP_COMMENT_TAG_REGEXP, \"\");\n}\nvar STRIP_COMMENT_TAG_REGEXP = //g;\n\n/**\n * remove invisible characters\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripBlankChar(html) {\n var chars = html.split(\"\");\n chars = chars.filter(function(char) {\n var c = char.charCodeAt(0);\n if (c === 127) return false;\n if (c <= 31) {\n if (c === 10 || c === 13) return true;\n return false;\n }\n return true;\n });\n return chars.join(\"\");\n}\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onTag = onTag;\nexports.onIgnoreTag = onIgnoreTag;\nexports.onTagAttr = onTagAttr;\nexports.onIgnoreTagAttr = onIgnoreTagAttr;\nexports.safeAttrValue = safeAttrValue;\nexports.escapeHtml = escapeHtml;\nexports.escapeQuote = escapeQuote;\nexports.unescapeQuote = unescapeQuote;\nexports.escapeHtmlEntities = escapeHtmlEntities;\nexports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;\nexports.clearNonPrintableCharacter = clearNonPrintableCharacter;\nexports.friendlyAttrValue = friendlyAttrValue;\nexports.escapeAttrValue = escapeAttrValue;\nexports.onIgnoreTagStripAll = onIgnoreTagStripAll;\nexports.StripTagBody = StripTagBody;\nexports.stripCommentTag = stripCommentTag;\nexports.stripBlankChar = stripBlankChar;\nexports.cssFilter = defaultCSSFilter;\nexports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Simple HTML Parser\n *\n * @author Zongmin Lei\n */\n\nvar _ = __webpack_require__(1);\n\n/**\n * get tag name\n *\n * @param {String} html e.g. ''\n * @return {String}\n */\nfunction getTagName(html) {\n var i = _.spaceIndex(html);\n if (i === -1) {\n var tagName = html.slice(1, -1);\n } else {\n var tagName = html.slice(1, i + 1);\n }\n tagName = _.trim(tagName).toLowerCase();\n if (tagName.slice(0, 1) === \"/\") tagName = tagName.slice(1);\n if (tagName.slice(-1) === \"/\") tagName = tagName.slice(0, -1);\n return tagName;\n}\n\n/**\n * is close tag?\n *\n * @param {String} html 如:''\n * @return {Boolean}\n */\nfunction isClosing(html) {\n return html.slice(0, 2) === \"\") {\n rethtml += escapeHtml(html.slice(lastPos, tagStart));\n currentHtml = html.slice(tagStart, currentPos + 1);\n currentTagName = getTagName(currentHtml);\n rethtml += onTag(\n tagStart,\n rethtml.length,\n currentTagName,\n currentHtml,\n isClosing(currentHtml)\n );\n lastPos = currentPos + 1;\n tagStart = false;\n continue;\n }\n if ((c === '\"' || c === \"'\") && html.charAt(currentPos - 1) === \"=\") {\n quoteStart = c;\n continue;\n }\n } else {\n if (c === quoteStart) {\n quoteStart = false;\n continue;\n }\n }\n }\n }\n if (lastPos < html.length) {\n rethtml += escapeHtml(html.substr(lastPos));\n }\n\n return rethtml;\n}\n\nvar REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9_:\\.\\-]/gim;\n\n/**\n * parse input attributes and returns processed attributes\n *\n * @param {String} html e.g. `href=\"#\" target=\"_blank\"`\n * @param {Function} onAttr e.g. `function (name, value)`\n * @return {String}\n */\nfunction parseAttr(html, onAttr) {\n \"user strict\";\n\n var lastPos = 0;\n var retAttrs = [];\n var tmpName = false;\n var len = html.length;\n\n function addAttr(name, value) {\n name = _.trim(name);\n name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, \"\").toLowerCase();\n if (name.length < 1) return;\n var ret = onAttr(name, value || \"\");\n if (ret) retAttrs.push(ret);\n }\n\n // 逐个分析字符\n for (var i = 0; i < len; i++) {\n var c = html.charAt(i);\n var v, j;\n if (tmpName === false && c === \"=\") {\n tmpName = html.slice(lastPos, i);\n lastPos = i + 1;\n continue;\n }\n if (tmpName !== false) {\n if (\n i === lastPos &&\n (c === '\"' || c === \"'\") &&\n html.charAt(i - 1) === \"=\"\n ) {\n j = html.indexOf(c, i + 1);\n if (j === -1) {\n break;\n } else {\n v = _.trim(html.slice(lastPos + 1, j));\n addAttr(tmpName, v);\n tmpName = false;\n i = j;\n lastPos = i + 1;\n continue;\n }\n }\n }\n if (/\\s|\\n|\\t/.test(c)) {\n html = html.replace(/\\s|\\n|\\t/g, \" \");\n if (tmpName === false) {\n j = findNextEqual(html, i);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n addAttr(v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n i = j - 1;\n continue;\n }\n } else {\n j = findBeforeEqual(html, i - 1);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n v = stripQuoteWrap(v);\n addAttr(tmpName, v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n continue;\n }\n }\n }\n }\n\n if (lastPos < html.length) {\n if (tmpName === false) {\n addAttr(html.slice(lastPos));\n } else {\n addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos))));\n }\n }\n\n return _.trim(retAttrs.join(\" \"));\n}\n\nfunction findNextEqual(str, i) {\n for (; i < str.length; i++) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction findBeforeEqual(str, i) {\n for (; i > 0; i--) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction isQuoteWrapString(text) {\n if (\n (text[0] === '\"' && text[text.length - 1] === '\"') ||\n (text[0] === \"'\" && text[text.length - 1] === \"'\")\n ) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction stripQuoteWrap(text) {\n if (isQuoteWrapString(text)) {\n return text.substr(1, text.length - 2);\n } else {\n return text;\n }\n}\n\nexports.parseTag = parseTag;\nexports.parseAttr = parseAttr;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_RESULT__;/*\n * JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\n\n/* global define */\n\n;(function ($) {\n 'use strict'\n\n /*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n function safeAdd (x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff)\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16)\n return (msw << 16) | (lsw & 0xffff)\n }\n\n /*\n * Bitwise rotate a 32-bit number to the left.\n */\n function bitRotateLeft (num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt))\n }\n\n /*\n * These functions implement the four basic operations the algorithm uses.\n */\n function md5cmn (q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b)\n }\n function md5ff (a, b, c, d, x, s, t) {\n return md5cmn((b & c) | (~b & d), a, b, x, s, t)\n }\n function md5gg (a, b, c, d, x, s, t) {\n return md5cmn((b & d) | (c & ~d), a, b, x, s, t)\n }\n function md5hh (a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t)\n }\n function md5ii (a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t)\n }\n\n /*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n function binlMD5 (x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << (len % 32)\n x[((len + 64) >>> 9 << 4) + 14] = len\n\n var i\n var olda\n var oldb\n var oldc\n var oldd\n var a = 1732584193\n var b = -271733879\n var c = -1732584194\n var d = 271733878\n\n for (i = 0; i < x.length; i += 16) {\n olda = a\n oldb = b\n oldc = c\n oldd = d\n\n a = md5ff(a, b, c, d, x[i], 7, -680876936)\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586)\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819)\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330)\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897)\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426)\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341)\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983)\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416)\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417)\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063)\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162)\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682)\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101)\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290)\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329)\n\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510)\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632)\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713)\n b = md5gg(b, c, d, a, x[i], 20, -373897302)\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691)\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083)\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335)\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848)\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438)\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690)\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961)\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501)\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467)\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784)\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473)\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734)\n\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558)\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463)\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562)\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556)\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060)\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353)\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632)\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640)\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174)\n d = md5hh(d, a, b, c, x[i], 11, -358537222)\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979)\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189)\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487)\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835)\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520)\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651)\n\n a = md5ii(a, b, c, d, x[i], 6, -198630844)\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415)\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905)\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055)\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571)\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606)\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523)\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799)\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359)\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744)\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380)\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649)\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070)\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379)\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259)\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551)\n\n a = safeAdd(a, olda)\n b = safeAdd(b, oldb)\n c = safeAdd(c, oldc)\n d = safeAdd(d, oldd)\n }\n return [a, b, c, d]\n }\n\n /*\n * Convert an array of little-endian words to a string\n */\n function binl2rstr (input) {\n var i\n var output = ''\n var length32 = input.length * 32\n for (i = 0; i < length32; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff)\n }\n return output\n }\n\n /*\n * Convert a raw string to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n function rstr2binl (input) {\n var i\n var output = []\n output[(input.length >> 2) - 1] = undefined\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0\n }\n var length8 = input.length * 8\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32)\n }\n return output\n }\n\n /*\n * Calculate the MD5 of a raw string\n */\n function rstrMD5 (s) {\n return binl2rstr(binlMD5(rstr2binl(s), s.length * 8))\n }\n\n /*\n * Calculate the HMAC-MD5, of a key and some data (raw strings)\n */\n function rstrHMACMD5 (key, data) {\n var i\n var bkey = rstr2binl(key)\n var ipad = []\n var opad = []\n var hash\n ipad[15] = opad[15] = undefined\n if (bkey.length > 16) {\n bkey = binlMD5(bkey, key.length * 8)\n }\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636\n opad[i] = bkey[i] ^ 0x5c5c5c5c\n }\n hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8)\n return binl2rstr(binlMD5(opad.concat(hash), 512 + 128))\n }\n\n /*\n * Convert a raw string to a hex string\n */\n function rstr2hex (input) {\n var hexTab = '0123456789abcdef'\n var output = ''\n var x\n var i\n for (i = 0; i < input.length; i += 1) {\n x = input.charCodeAt(i)\n output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f)\n }\n return output\n }\n\n /*\n * Encode a string as utf-8\n */\n function str2rstrUTF8 (input) {\n return unescape(encodeURIComponent(input))\n }\n\n /*\n * Take string arguments and return either raw or hex encoded strings\n */\n function rawMD5 (s) {\n return rstrMD5(str2rstrUTF8(s))\n }\n function hexMD5 (s) {\n return rstr2hex(rawMD5(s))\n }\n function rawHMACMD5 (k, d) {\n return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d))\n }\n function hexHMACMD5 (k, d) {\n return rstr2hex(rawHMACMD5(k, d))\n }\n\n function md5 (string, key, raw) {\n if (!key) {\n if (!raw) {\n return hexMD5(string)\n }\n return rawMD5(string)\n }\n if (!raw) {\n return hexHMACMD5(key, string)\n }\n return rawHMACMD5(key, string)\n }\n\n if (true) {\n !(__WEBPACK_AMD_DEFINE_RESULT__ = function () {\n return md5\n }.call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))\n } else if (typeof module === 'object' && module.exports) {\n module.exports = md5\n } else {\n $.md5 = md5\n }\n})(this)\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * marked - a markdown parser\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n;(function(root) {\n'use strict';\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *(?:#+ *)?(?:\\n+|$)/,\n nptable: noop,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?\\\\?>\\\\n*' // (3)\n + '|\\\\n*' // (4)\n + '|\\\\n*' // (5)\n + '|)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=\\\\h*\\\\n)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) open tag\n + '|(?=\\\\h*\\\\n)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n table: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading| {0,3}>|<\\/?(?:tag)(?: +|\\n|\\/?>)|<(?:script|pre|style|!--))[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}\\.)/;\nblock.item = /^( *)(bull) ?[^\\n]*(?:\\n(?!\\1bull ?)[^\\n]*)*/;\nblock.item = edit(block.item, 'gm')\n .replace(/bull/g, block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = //;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block.paragraph)\n .replace('hr', block.hr)\n .replace('heading', block.heading)\n .replace('lheading', block.lheading)\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ {0,3}(`{3,}|~{3,})([^`\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = edit(block.paragraph)\n .replace('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n .getRegex();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *([^|\\n ].*\\|.*)\\n *([-:]+ *\\|[-| :]*)(?:\\n((?:.*[^>\\n ].*(?:\\n|$))*)\\n*|$)/,\n table: /^ *\\|(.+)\\n *\\|?( *[-:]+[-| :]*)(?:\\n((?: *[^>\\n ].*(?:\\n|$))*)\\n*|$)/\n});\n\n/**\n * Pedantic grammar\n */\n\nblock.pedantic = merge({}, block.normal, {\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.pedantic) {\n this.rules = block.pedantic;\n } else if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top) {\n src = src.replace(/^ +$/gm, '');\n var next,\n loose,\n cap,\n bull,\n b,\n item,\n listStart,\n listItems,\n t,\n space,\n i,\n tag,\n l,\n isordered,\n istask,\n ischecked;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? rtrim(cap, '\\n')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(item.cells[i], item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n isordered = bull.length > 1;\n\n listStart = {\n type: 'list_start',\n ordered: isordered,\n start: isordered ? +bull : '',\n loose: false\n };\n\n this.tokens.push(listStart);\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n listItems = [];\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) */, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull.length > 1 ? b.length === 1\n : (b.length > 1 || (this.options.smartLists && b !== bull))) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n listStart.loose = true;\n }\n\n // Check for task list items\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n\n t = {\n type: 'list_item_start',\n task: istask,\n checked: ischecked,\n loose: loose\n };\n\n listItems.push(t);\n this.tokens.push(t);\n\n // Recurse.\n this.token(item, false);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n if (listStart.loose) {\n l = listItems.length;\n i = 0;\n for (; i < l; i++) {\n listItems[i].loose = true;\n }\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if (top && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n if (!this.tokens.links[tag]) {\n this.tokens.links[tag] = {\n href: cap[2],\n title: cap[3]\n };\n }\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(\n item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''),\n item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noop,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(href(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n strong: /^__([^\\s_])__(?!_)|^\\*\\*([^\\s*])\\*\\*(?!\\*)|^__([^\\s][\\s\\S]*?[^\\s])__(?!_)|^\\*\\*([^\\s][\\s\\S]*?[^\\s])\\*\\*(?!\\*)/,\n em: /^_([^\\s_])_(?!_)|^\\*([^\\s*\"<\\[])\\*(?!\\*)|^_([^\\s][\\s\\S]*?[^\\s_])_(?!_|[^\\spunctuation])|^_([^\\s_][\\s\\S]*?[^\\s])_(?!_|[^\\spunctuation])|^\\*([^\\s\"<\\[][\\s\\S]*?[^\\s*])\\*(?!\\*)|^\\*([^\\s*\"<\\[][\\s\\S]*?[^\\s])\\*(?!\\*)/,\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noop,\n text: /^(`+|[^`])[\\s\\S]*?(?=[\\\\?@\\\\[^_{|}~';\ninline.em = edit(inline.em).replace(/punctuation/g, inline._punctuation).getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', block._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]?|`[^`]*`|[^\\[\\]\\\\])*?/;\ninline._href = /\\s*(<(?:\\\\[<>]?|[^\\s<>\\\\])*>|[^\\s\\x00-\\x1f]*)/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^~+(?=\\S)([\\s\\S]*?\\S)~+/,\n text: edit(inline.text)\n .replace(']|', '~]|')\n .replace('|$', '|https?://|ftp://|www\\\\.|[a-zA-Z0-9.!#$%&\\'*+/=?^_`{\\\\|}~-]+@|$')\n .getRegex()\n});\n\ninline.gfm.url = edit(inline.gfm.url, 'i')\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text).replace('{2,}', '*').getRegex()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer();\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.pedantic) {\n this.rules = inline.pedantic;\n } else if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = '',\n link,\n text,\n href,\n title,\n cap,\n prevCapZero;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += escape(cap[1]);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n if (!this.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = true;\n } else if (this.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = false;\n }\n\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0];\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n var lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n var removeChars = cap[2].length - lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, cap[0].length - removeChars);\n }\n src = src.substring(cap[0].length);\n this.inLink = true;\n href = cap[2];\n if (this.options.pedantic) {\n link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n } else {\n title = '';\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim().replace(/^<([\\s\\S]*)>$/, '$1');\n out += this.outputLink(cap, {\n href: InlineLexer.escapes(href),\n title: InlineLexer.escapes(title)\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2].trim(), true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = escape(this.mangle(cap[1]));\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n src = src.substring(cap[0].length);\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n if (this.inRawBlock) {\n out += this.renderer.text(cap[0]);\n } else {\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n }\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\nInlineLexer.escapes = function(text) {\n return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = link.href,\n title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = '',\n l = text.length,\n i = 0,\n ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || marked.defaults;\n}\n\nRenderer.prototype.code = function(code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return ''\n + text\n + '\\n';\n }\n // ignore IDs\n return '' + text + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.checkbox = function(checked) {\n return ' ';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n if (body) body = '' + body + '';\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' align=\"' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\n\nfunction TextRenderer() {}\n\n// no need for block level renderers\n\nTextRenderer.prototype.strong =\nTextRenderer.prototype.em =\nTextRenderer.prototype.codespan =\nTextRenderer.prototype.del =\nTextRenderer.prototype.text = function (text) {\n return text;\n};\n\nTextRenderer.prototype.link =\nTextRenderer.prototype.image = function(href, title, text) {\n return '' + text;\n};\n\nTextRenderer.prototype.br = function() {\n return '';\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.slugger = new Slugger();\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options) {\n var parser = new Parser(options);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options);\n // use an InlineLexer with a TextRenderer to extract pure text\n this.inlineText = new InlineLexer(\n src.links,\n merge({}, this.options, {renderer: new TextRenderer()})\n );\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n unescape(this.inlineText.output(this.token.text)),\n this.slugger);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = '',\n body = '',\n i,\n row,\n cell,\n j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n body = '';\n var ordered = this.token.ordered,\n start = this.token.start;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered, start);\n }\n case 'list_item_start': {\n body = '';\n var loose = this.token.loose;\n\n if (this.token.task) {\n body += this.renderer.checkbox(this.token.checked);\n }\n\n while (this.next().type !== 'list_item_end') {\n body += !loose && this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n return this.renderer.html(this.token.text);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n default: {\n var errMsg = 'Token with \"' + this.token.type + '\" type was not found.';\n if (this.options.silent) {\n console.log(errMsg);\n } else {\n throw new Error(errMsg);\n }\n }\n }\n};\n\n/**\n * Slugger generates header id\n */\n\nfunction Slugger () {\n this.seen = {};\n}\n\n/**\n * Convert string to unique id\n */\n\nSlugger.prototype.slug = function (value) {\n var slug = value\n .toLowerCase()\n .trim()\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n\n if (this.seen.hasOwnProperty(slug)) {\n var originalSlug = slug;\n do {\n this.seen[originalSlug]++;\n slug = originalSlug + '-' + this.seen[originalSlug];\n } while (this.seen.hasOwnProperty(slug));\n }\n this.seen[slug] = 0;\n\n return slug;\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n if (encode) {\n if (escape.escapeTest.test(html)) {\n return html.replace(escape.escapeReplace, function (ch) { return escape.replacements[ch]; });\n }\n } else {\n if (escape.escapeTestNoEncode.test(html)) {\n return html.replace(escape.escapeReplaceNoEncode, function (ch) { return escape.replacements[ch]; });\n }\n }\n\n return html;\n}\n\nescape.escapeTest = /[&<>\"']/;\nescape.escapeReplace = /[&<>\"']/g;\nescape.replacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\nescape.escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nescape.escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction edit(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n return {\n replace: function(name, val) {\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return this;\n },\n getRegex: function() {\n return new RegExp(regex, opt);\n }\n };\n}\n\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (/^[^:]+:\\/*[^/]*$/.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n\n if (href.slice(0, 2) === '//') {\n return base.replace(/:[\\s\\S]*/, ':') + href;\n } else if (href.charAt(0) === '/') {\n return base.replace(/(:\\/*[^/]*)[\\s\\S]*/, '$1') + href;\n } else {\n return base + href;\n }\n}\nvar baseUrls = {};\nvar originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/),\n i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n// /c*$/ is vulnerable to REDOS.\n// invert: Remove suffix of non-c chars instead. Default falsey.\nfunction rtrim(str, c, invert) {\n if (str.length === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n var suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < str.length) {\n var currChar = str.charAt(str.length - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, str.length - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n var level = 0;\n for (var i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight,\n tokens,\n pending,\n i = 0;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occurred:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.getDefaults = function () {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: new Renderer(),\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tables: true,\n xhtml: false\n };\n};\n\nmarked.defaults = marked.getDefaults();\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.Slugger = Slugger;\n\nmarked.parse = marked;\n\nif (true) {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n root.marked = marked;\n}\n})(this || (typeof window !== 'undefined' ? window : global));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(17)))\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// style-loader: Adds some css to the DOM by adding a \\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n
    ';\n _root.el.innerHTML = eleHTML;\n // Empty Data\n var vempty = _root.el.querySelector('.vempty');\n _root.nodata = {\n show: function show(txt) {\n vempty.innerHTML = txt || '\\u8FD8\\u6CA1\\u6709\\u8BC4\\u8BBA\\u54E6\\uFF0C\\u5FEB\\u6765\\u62A2\\u6C99\\u53D1\\u5427!';\n vempty.setAttribute('style', 'display:block;');\n },\n hide: function hide() {\n vempty.setAttribute('style', 'display:none;');\n }\n };\n _root.nodata.show();\n\n // load smiles image\n var _smile_wrapper = _root.el.querySelector('.vsmile-icons');\n var smile_names = option.emoticon_list || [];\n for (var i in smile_names) {\n var img = document.createElement('img');\n img.setAttribute('src', option.emoticon_url + '/' + smile_names[i]);\n _smile_wrapper.appendChild(img);\n }\n if (!disable_av_init) {\n av.init({\n appId: option.app_id || option.appId,\n appKey: option.app_key || option.appKey\n });\n disable_av_init = true;\n }\n _root.v = av;\n } catch (ex) {\n var issue = 'https://github.com/DesertsP/Valine/issues';\n if (_root.el) _root.nodata.show('
    ' + ex + '
    Valine:' + _root.version + '
    \\u53CD\\u9988\\uFF1A' + issue + '
    ');else console && console.log('%c' + ex + '\\n%cValine%c' + _root.version + ' ' + issue, 'color:red;', 'background:#000;padding:5px;line-height:30px;color:#fff;', 'background:#456;line-height:30px;padding:5px;color:#fff;');\n return;\n }\n\n // loading\n var _spinner = '
    ';\n var vloading = _root.el.querySelector('.vloading');\n vloading.innerHTML = _spinner;\n // loading control\n _root.loading = {\n show: function show() {\n vloading.setAttribute('style', 'display:block;');\n _root.nodata.hide();\n },\n hide: function hide() {\n vloading.setAttribute('style', 'display:none;');\n _root.el.querySelectorAll('.vcard').length === 0 && _root.nodata.show();\n }\n };\n\n var vsubmitting = _root.el.querySelector('.vsubmitting');\n vsubmitting.innerHTML = _spinner;\n _root.submitting = {\n show: function show() {\n vsubmitting.setAttribute('style', 'display:block;');\n },\n hide: function hide() {\n vsubmitting.setAttribute('style', 'display:none;');\n _root.nodata.hide();\n }\n };\n\n var _mark = _root.el.querySelector('.vmark');\n // alert\n _root.alert = {\n /**\n * {\n * type:0/1,\n * text:'',\n * ctxt:'',\n * otxt:'',\n * cb:fn\n * }\n *\n * @param {Object} o\n */\n show: function show(o) {\n _mark.innerHTML = '
    ' + o.text + '
    ';\n var _vbtns = _mark.querySelector('.vbtns');\n var _cBtn = '';\n var _oBtn = '';\n _vbtns.innerHTML = '' + _cBtn + (o.type && _oBtn);\n _mark.querySelector('.vcancel').addEventListener('click', function (e) {\n _root.alert.hide();\n });\n _mark.setAttribute('style', 'display:block;');\n if (o && o.type) {\n var _ok = _mark.querySelector('.vsure');\n Event.on('click', _ok, function (e) {\n _root.alert.hide();\n o.cb && o.cb();\n });\n }\n },\n hide: function hide() {\n _mark.setAttribute('style', 'display:none;');\n }\n };\n\n _root.loading.show();\n var query = new _root.v.Query('Comment');\n query.equalTo('url', defaultComment['url']);\n query.count().then(function (count) {\n _root.el.querySelector('.count').innerHTML = '' + count;\n _root.bind(option);\n }, function (error) {\n console.log(error);\n });\n }\n\n /**\n * Bind Event\n */\n\n }, {\n key: 'bind',\n value: function bind(option) {\n var _root = this;\n // Smile pictures\n var vsmiles = _root.el.querySelector('.vsmile-icons');\n Event.on('click', vsmiles, function (e) {\n var textField = _root.el.querySelector('.veditor');\n var imgSrc = e.target.src;\n if (typeof imgSrc == 'undefined') return;\n // var tag = \" ![](/\" + imgSrc.replace(/^.*\\/(.*\\.gif)$/, '$1') + \") \";\n var tag = \"!(:\" + decodeURI(imgSrc).replace(/^.*\\/(.*)$/, '$1') + \":)\";\n if (document.selection) {\n textField.focus();\n sel = document.selection.createRange();\n sel.text = tag;\n textField.focus();\n } else if (textField.selectionStart || textField.selectionStart == '0') {\n var startPos = textField.selectionStart;\n var endPos = textField.selectionEnd;\n var cursorPos = endPos;\n textField.value = textField.value.substring(0, startPos) + tag + textField.value.substring(endPos, textField.value.length);\n cursorPos += tag.length;\n textField.focus();\n textField.selectionStart = cursorPos;\n textField.selectionEnd = cursorPos;\n } else {\n textField.value += tag;\n textField.focus();\n }\n defaultComment[\"comment\"] = textField.value;\n var submitBtn = _root.el.querySelector('.vsubmit');\n if (submitBtn.getAttribute('disabled')) submitBtn.removeAttribute('disabled');\n });\n var comment_trigger = _root.el.querySelector('.comment_trigger');\n Event.on('click', comment_trigger, function (e) {\n comment_trigger.setAttribute('style', 'display:none');\n _root.el.querySelector('.auth-section').removeAttribute('style');\n _root.el.querySelector('.veditor').focus();\n });\n\n // Query && show comment list\n\n var expandEvt = function expandEvt(el) {\n if (el.offsetHeight > 180) {\n el.classList.add('expand');\n Event.on('click', el, function (e) {\n el.setAttribute('class', 'vcomment');\n });\n }\n };\n\n var commonQuery = function commonQuery() {\n var query = new _root.v.Query('Comment');\n query.select(['nick', 'comment', 'link', 'rid', 'emailHash']);\n query.notEqualTo('isSpam', true);\n query.equalTo('url', defaultComment['url']);\n query.addDescending('createdAt');\n return query;\n };\n\n var num = 1;\n var query = function query() {\n var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n\n _root.loading.show();\n var size = 10;\n var count = Number(_root.el.querySelector('.count').innerText);\n var cq = commonQuery();\n cq.limit(size);\n cq.skip((n - 1) * size);\n cq.find().then(function (rets) {\n var len = rets.length;\n if (len) {\n // _root.el.querySelector('.vlist').innerHTML = '';\n for (var i = 0; i < len; i++) {\n insertComment(rets[i], false);\n }\n var _vpage = _root.el.querySelector('.vpage');\n _vpage.innerHTML = size * n < count ? '
    \\u52A0\\u8F7D\\u66F4\\u591A\\u8BC4\\u8BBA\\uFF08\\u5269\\u4F59' + (count - size * n) + '/' + count + '\\u6761\\uFF09
    ' : '';\n var _vmore = _vpage.querySelector('#vmore');\n if (_vmore) {\n Event.on('click', _vmore, function (e) {\n _vpage.innerHTML = '';\n query(++num);\n });\n }\n }\n _root.loading.hide();\n }).catch(function (ex) {\n console.log(ex);\n _root.loading.hide();\n });\n };\n query();\n\n var insertComment = function insertComment(ret) {\n var top = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var _vcard = document.createElement('li');\n _vcard.setAttribute('class', 'vcard');\n _vcard.setAttribute('id', ret.id);\n var emailHash = ret.get('emailHash');\n var gravatar_url = GRAVATAR_BASE_URL + emailHash + '?size=80&d=https%3a%2f%2fgravatar.loli.net%2favatar%2f9e63c80900d106cbbec5a9f4ea433a3e.jpg%3fsize%3d80';\n // language=HTML\n _vcard.innerHTML = '\\n
    \\n
    \\n ' + (ret.get('link') ? ' ' + ret.get(\"nick\") + '' : '' + ret.get(\"nick\") + '') + '\\n \\u2022\\n ' + timeAgo(ret.get(\"createdAt\")) + '\\n \\u56DE\\u590D\\n
    \\n
    ' + ret.get('comment') + '
    \\n
    ';\n var _vlist = _root.el.querySelector('.vlist');\n var _vlis = _vlist.querySelectorAll('li');\n var _vat = _vcard.querySelector('.vat');\n var _as = _vcard.querySelectorAll('a');\n for (var i = 0, len = _as.length; i < len; i++) {\n var item = _as[i];\n if (item && item.getAttribute('class') != 'at') {\n item.setAttribute('target', '_blank');\n item.setAttribute('rel', 'nofollow');\n }\n }\n if (!top) _vlist.appendChild(_vcard);else _vlist.insertBefore(_vcard, _vlis[0]);\n var _vcontent = _vcard.querySelector('.vcomment');\n expandEvt(_vcontent);\n bindAtEvt(_vat);\n };\n\n var mapping = {\n veditor: \"comment\",\n vnick: \"nick\",\n vlink: \"link\",\n vmail: 'mail'\n };\n var inputs = {};\n for (var i in mapping) {\n if (mapping.hasOwnProperty(i)) {\n (function () {\n var _v = mapping[i];\n var _el = _root.el.querySelector('.' + i);\n inputs[_v] = _el;\n Event.on('input', _el, function (e) {\n // defaultComment[_v] = HtmlUtil.encode(_el.value.replace(/(^\\s*)|(\\s*$)/g, \"\"));\n defaultComment[_v] = _el.value;\n });\n })();\n }\n }\n\n // cache\n var getCache = function getCache() {\n var s = store && store.getItem('ValineCache');\n if (!!s) {\n s = JSON.parse(s);\n var m = ['nick', 'link', 'mail'];\n for (var _i in m) {\n var k = m[_i];\n _root.el.querySelector('.v' + k).value = s[k];\n defaultComment[k] = s[k];\n }\n if (s['mail'] != '') {\n var el = _root.el.querySelector('.visitor_avatar');\n el.setAttribute('src', GRAVATAR_BASE_URL + crypto(s['mail'].toLowerCase().trim()) + '?size=80&d=https%3a%2f%2fgravatar.loli.net%2favatar%2f9e63c80900d106cbbec5a9f4ea433a3e.jpg%3fsize%3d80');\n }\n }\n };\n getCache();\n\n // reset form\n _root.reset = function () {\n for (var _i2 in mapping) {\n if (mapping.hasOwnProperty(_i2)) {\n var _v = mapping[_i2];\n var _el = _root.el.querySelector('.' + _i2);\n _el.value = \"\";\n defaultComment[_v] = \"\";\n }\n }\n defaultComment['rid'] = '';\n defaultComment['nick'] = '';\n getCache();\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n }\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n }\n };\n\n // submit\n var submitBtn = _root.el.querySelector('.vsubmit');\n var submitEvt = function submitEvt(e) {\n if (submitBtn.getAttribute('disabled')) {\n _root.alert.show({\n type: 0,\n text: '再等等,评论正在提交中ヾ(๑╹◡╹)ノ\"',\n ctxt: '好的'\n });\n return;\n }\n if (defaultComment.comment == '') {\n inputs['comment'].focus();\n return;\n }\n if (defaultComment.nick == '') {\n inputs['nick'].focus();\n return;\n }\n // render markdown\n defaultComment.comment = xss(md(defaultComment.comment.replace(/!\\(:(.*?\\.\\w+):\\)/g, '\"$1\"')), {\n onIgnoreTagAttr: function onIgnoreTagAttr(tag, name, value, isWhiteAttr) {\n if (name === 'class') {\n return name + '=\"' + xss.escapeAttrValue(value) + '\"';\n }\n }\n });\n var idx = defaultComment.comment.indexOf(defaultComment.at);\n if (idx > -1 && defaultComment.at != '') {\n var at = '' + defaultComment.at + '';\n defaultComment.comment = defaultComment.comment.replace(defaultComment.at, at);\n }\n // veirfy\n var mailRet = check.mail(defaultComment.mail);\n var linkRet = check.link(defaultComment.link);\n defaultComment['mail'] = mailRet.k ? mailRet.v : '';\n defaultComment['link'] = linkRet.k ? linkRet.v : '';\n\n if (!mailRet.k && !linkRet.k) {\n _root.alert.show({\n type: 0,\n text: '您的网址和邮箱格式不正确,请修正后提交!',\n ctxt: '返回修改'\n });\n } else if (!mailRet.k) {\n _root.alert.show({\n type: 0,\n text: '请认真评论并填写正确的邮箱地址!
    已开启隐私防护不会泄露您的个人信息,了解反垃圾系统如何处理您的数据。',\n ctxt: '返回修改'\n });\n } else if (!linkRet.k) {\n _root.alert.show({\n type: 0,\n text: '您的网址格式不正确,请修正后提交!',\n ctxt: '返回修改'\n });\n } else {\n commitEvt();\n }\n };\n\n var smile_btn = _root.el.querySelector('.vemoji-btn');\n var smile_icons = _root.el.querySelector('.vsmile-icons');\n Event.on('click', smile_btn, function (e) {\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n }\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n } else {\n smile_icons.removeAttribute('style');\n smile_icons.setAttribute('triggered', 1);\n }\n });\n\n var preview_btn = _root.el.querySelector('.vpreview-btn');\n var preview_text = _root.el.querySelector('.vpreview-text');\n Event.on('click', preview_btn, function (e) {\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n }\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n } else {\n if (defaultComment.comment == '') {\n inputs['comment'].focus();\n return;\n }\n // render markdown\n preview_text.innerHTML = xss(md(defaultComment.comment.replace(/!\\(:(.*?\\.\\w+):\\)/g, '\"$1\"')), {\n onIgnoreTagAttr: function onIgnoreTagAttr(tag, name, value, isWhiteAttr) {\n if (name === 'class') {\n return name + '=\"' + xss.escapeAttrValue(value) + '\"';\n }\n }\n });\n preview_text.removeAttribute('style');\n preview_text.setAttribute('triggered', 1);\n }\n });\n\n // setting access\n var getAcl = function getAcl() {\n var acl = new _root.v.ACL();\n acl.setPublicReadAccess(true);\n acl.setPublicWriteAccess(false);\n return acl;\n };\n\n var commitEvt = function commitEvt() {\n submitBtn.setAttribute('disabled', true);\n _root.submitting.show();\n // 声明类型\n var Ct = _root.v.Object.extend('Comment');\n // 新建对象\n var comment = new Ct();\n for (var _i3 in defaultComment) {\n if (defaultComment.hasOwnProperty(_i3)) {\n if (_i3 === 'at') continue;\n var _v = defaultComment[_i3];\n comment.set(_i3, _v);\n }\n }\n comment.set('emailHash', crypto(defaultComment.mail.toLowerCase().trim()));\n comment.setACL(getAcl());\n comment.save().then(function (commentItem) {\n store && store.setItem('ValineCache', JSON.stringify({\n nick: defaultComment['nick'],\n link: defaultComment['link'],\n mail: defaultComment['mail']\n }));\n var _count = _root.el.querySelector('.count');\n _count.innerText = Number(_count.innerText) + 1;\n insertComment(commentItem, true);\n submitBtn.removeAttribute('disabled');\n _root.submitting.hide();\n _root.nodata.hide();\n _root.reset();\n }).catch(function (ex) {\n _root.submitting.hide();\n });\n };\n\n // at event\n var bindAtEvt = function bindAtEvt(el) {\n Event.on('click', el, function (e) {\n var at = el.getAttribute('at');\n var rid = el.getAttribute('rid');\n defaultComment['rid'] = rid;\n defaultComment['at'] = at;\n inputs['comment'].value = at + ' \\uFF0C' + inputs['comment'].value;\n inputs['comment'].focus();\n // remove comment trigger\n _root.el.querySelector('.comment_trigger').setAttribute('style', 'display:none');\n _root.el.querySelector('.auth-section').removeAttribute('style');\n _root.el.querySelector('.veditor').focus();\n });\n };\n\n Event.off('click', submitBtn, submitEvt);\n Event.on('click', submitBtn, submitEvt);\n }\n }]);\n\n return Valine;\n}();\n\nvar Event = {\n on: function on(type, el, handler, capture) {\n if (el.addEventListener) el.addEventListener(type, handler, capture || false);else if (el.attachEvent) el.attachEvent('on' + type, handler);else el['on' + type] = handler;\n },\n off: function off(type, el, handler, capture) {\n if (el.removeEventListener) el.removeEventListener(type, handler, capture || false);else if (el.detachEvent) el.detachEvent('on' + type, handler);else el['on' + type] = null;\n }\n};\n\nvar check = {\n mail: function mail(m) {\n return {\n k: /\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}/.test(m),\n v: m\n };\n },\n link: function link(l) {\n if (l.length > 0) {\n l = /^(http|https)/.test(l) ? l : 'http://' + l;\n }\n return {\n k: l.length > 0 ? /(http|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/.test(l) : true,\n v: l\n };\n }\n};\n\nvar HtmlUtil = {\n\n // /**\n // *\n // * 将str中的链接转换成a标签形式\n // * @param {String} str\n // * @returns\n // */\n // transUrl(str) {\n // let reg = /(http:\\/\\/|https:\\/\\/)((\\w|=|\\?|\\.|\\/|&|-)+)/g;\n // return str.replace(reg, '$1$2');\n // },\n /**\n * HTML转码\n * @param {String} str\n * @return {String} result\n */\n encode: function encode(str) {\n return !!str ? str.replace(/&/g, \"&\").replace(//g, \">\").replace(/ /g, \" \").replace(/\\'/g, \"'\").replace(/\\\"/g, \""\") : '';\n },\n\n /**\n * HTML解码\n * @param {String} str\n * @return {String} result\n */\n decode: function decode(str) {\n return !!str ? str.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/ /g, \" \").replace(/'/g, \"\\'\").replace(/"/g, \"\\\"\") : '';\n }\n};\n\nvar dateFormat = function dateFormat(date) {\n var vDay = padWithZeros(date.getDate(), 2);\n var vMonth = padWithZeros(date.getMonth() + 1, 2);\n var vYear = padWithZeros(date.getFullYear(), 2);\n // var vHour = padWithZeros(date.getHours(), 2);\n // var vMinute = padWithZeros(date.getMinutes(), 2);\n // var vSecond = padWithZeros(date.getSeconds(), 2);\n return vYear + '-' + vMonth + '-' + vDay;\n // return `${vYear}-${vMonth}-${vDay} ${vHour}:${vMinute}:${vSecond}`;\n};\n\nvar timeAgo = function timeAgo(date) {\n try {\n var oldTime = date.getTime();\n var currTime = new Date().getTime();\n var diffValue = currTime - oldTime;\n\n var days = Math.floor(diffValue / (24 * 3600 * 1000));\n if (days === 0) {\n //计算相差小时数\n var leave1 = diffValue % (24 * 3600 * 1000); //计算天数后剩余的毫秒数\n var hours = Math.floor(leave1 / (3600 * 1000));\n if (hours === 0) {\n //计算相差分钟数\n var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数\n var minutes = Math.floor(leave2 / (60 * 1000));\n if (minutes === 0) {\n //计算相差秒数\n var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数\n var seconds = Math.round(leave3 / 1000);\n return seconds + ' 秒前';\n }\n return minutes + ' 分钟前';\n }\n return hours + ' 小时前';\n }\n if (days < 0) return '刚刚';else if (days < 30) return days + ' 天前';else if (days < 365) return Math.floor(days / 30) + ' 月前';else return Math.floor(days / 365) + ' 年前';\n return dateFormat(date);\n } catch (error) {\n console.log(error);\n }\n};\n\nvar padWithZeros = function padWithZeros(vNumber, width) {\n var numAsString = vNumber.toString();\n while (numAsString.length < width) {\n numAsString = '0' + numAsString;\n }\n return numAsString;\n};\n\nvar loadJS = function loadJS(url, success) {\n var domScript = document.createElement('script');\n domScript.src = url;\n success = success || function () {};\n domScript.onload = domScript.onreadystatechange = function () {\n if (!this.readyState || 'loaded' === this.readyState || 'complete' === this.readyState) {\n success();\n this.onload = this.onreadystatechange = null;\n // this.parentNode.removeChild(this);\n }\n };\n document.getElementsByTagName('head')[0].appendChild(domScript);\n};\n\nvar getIp = function getIp() {\n $.getJSON(\"https://api.ipify.org/?format=json\", function (json) {\n defaultComment['ip'] = json.ip;\n });\n};\n\nmodule.exports = Valine;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(12)(false);\n// imports\n\n\n// module\nexports.push([module.i, \"@charset \\\"UTF-8\\\";\\n.valine {\\n /************ Loading ************/ }\\n .valine * {\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n font-size: 14px;\\n font-weight: normal;\\n line-height: 1.42857143;\\n color: #3c484e;\\n -webkit-transition: all .3s ease;\\n transition: all .3s ease;\\n margin: initial;\\n padding: initial; }\\n .valine .vemoticon-img {\\n display: inline-block;\\n max-height: 32px;\\n margin: 0 2px; }\\n .valine .vwrap {\\n overflow: hidden;\\n position: relative;\\n border: 1px solid #ededed; }\\n .valine .vwrap .veditor-area {\\n position: inherit; }\\n .valine .vwrap .btn-wrap {\\n position: absolute !important;\\n right: 1.5em;\\n bottom: 0; }\\n .valine .vwrap .btn-wrap .vfunction-btn {\\n display: inline-block; }\\n .valine .vwrap .btn-wrap .vfunction-btn svg {\\n fill: #bbb;\\n cursor: pointer; }\\n .valine .vwrap .btn-wrap .vfunction-btn svg:hover {\\n fill: #777777; }\\n .valine .vwrap .btn-wrap .vfunction-btn svg:active {\\n fill: #777777; }\\n .valine .vwrap .vextra-area {\\n margin: .4em 0 .4em .5em; }\\n .valine .vwrap .vextra-area .vsmile-icons {\\n padding: .2em 0;\\n border-top: 1px solid #ededed;\\n border-radius: 0;\\n margin: .3em 0;\\n max-height: 64px;\\n overflow: auto; }\\n .valine .vwrap .vextra-area .vsmile-icons img {\\n display: inline-block;\\n width: auto !important;\\n height: 28px !important;\\n margin-right: 4px;\\n cursor: pointer; }\\n .valine .vwrap .vextra-area .vpreview-text {\\n border-top: 1px solid #ededed;\\n border-radius: 0;\\n padding: .5em .5em;\\n margin: .3em 0;\\n max-height: 10em;\\n overflow: auto; }\\n .valine .vwrap .textarea-wrapper {\\n color: #4b5b62;\\n width: 100%;\\n height: 100%;\\n background: #fff;\\n position: relative;\\n border-radius: 0; }\\n .valine .vwrap .textarea-wrapper .comment_trigger {\\n position: absolute;\\n z-index: 10;\\n width: 100%;\\n height: 100%;\\n background-color: #fff;\\n padding: 0 1em; }\\n .valine .vwrap .textarea-wrapper .comment_trigger .avatar {\\n position: absolute;\\n width: 3em;\\n height: 3em;\\n position: absolute;\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%); }\\n .valine .vwrap .textarea-wrapper .comment_trigger .avatar img {\\n border-radius: 100%;\\n width: 3em;\\n height: 3em; }\\n .valine .vwrap .textarea-wrapper .comment_trigger .trigger_title {\\n position: absolute;\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%);\\n color: #aaa;\\n font-size: 1.4em;\\n margin-left: 3.5em; }\\n .valine .vwrap .textarea-wrapper textarea {\\n padding: 1em 1em 0;\\n color: #4b5b62;\\n width: 100%;\\n background: #fff;\\n border: none;\\n resize: none;\\n min-height: 6em;\\n margin: 0; }\\n .valine .vwrap .textarea-wrapper textarea:focus {\\n border-color: #c4c8cb;\\n outline: 0; }\\n .valine .vwrap .trigger-section {\\n display: none; }\\n .valine .vwrap .auth-section {\\n display: -webkit-box;\\n display: flex;\\n display: -ms-flexbox;\\n background: #fbfbfb;\\n padding: .3em .6em; }\\n .valine .vwrap .auth-section .input-wrapper {\\n -ms-flex: 1 1 27%;\\n -webkit-box-flex: 1;\\n flex: 1 1 27%;\\n width: 27%; }\\n .valine .vwrap .auth-section .input-wrapper input {\\n color: #4b5b62;\\n background: #fafafa;\\n border: none;\\n border-radius: 0;\\n padding: .6em;\\n margin: 0;\\n line-height: 2;\\n font-size: 1em !important; }\\n .valine .vwrap .auth-section .input-wrapper input:focus {\\n border-color: #c4c8cb;\\n outline: 0; }\\n .valine .vwrap .auth-section input {\\n width: 100%; }\\n .valine .vwrap .auth-section .post-action {\\n -ms-flex: 1 1 19%;\\n -webkit-box-flex: 1;\\n flex: 1 1 19%;\\n width: 19%;\\n margin: 0;\\n padding: 2px 0 0; }\\n .valine .vwrap .auth-section .post-action button {\\n color: #fff;\\n width: 100%;\\n line-height: 2;\\n font-weight: bolder;\\n border-radius: 30px;\\n border: 1px solid #e9eff3;\\n background-color: #111;\\n padding: .4em .5em;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n font-size: 1em !important; }\\n .valine .vwrap .auth-section .post-action button:hover {\\n background-color: #444; }\\n @media screen and (max-width: 720px) {\\n .valine .vwrap .auth-section {\\n display: block; }\\n .valine .vwrap .auth-section .input-wrapper, .valine .vwrap .auth-section .post-action {\\n -ms-flex: 1 1 100%;\\n -webkit-box-flex: 1;\\n flex: 1 1 100%;\\n padding-right: 0;\\n width: 100%; } }\\n .valine .vwrap .vmark {\\n position: absolute;\\n background: rgba(0, 0, 0, 0.65);\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0; }\\n .valine .vwrap .vmark .valert {\\n padding: 2em 0 0 0; }\\n .valine .vwrap .vmark .valert .vtext {\\n color: #fff;\\n padding: 15px; }\\n .valine .vwrap .vmark .valert .vcode {\\n width: 75px;\\n border-radius: 5px;\\n background: #dedede; }\\n .valine .vwrap .vmark .valert .vcode:focus {\\n border-color: #3090e4;\\n background-color: #fff; }\\n @media screen and (max-width: 720px) {\\n .valine .vwrap .vmark .valert {\\n padding: 8em 0; }\\n .valine .vwrap .vmark .valert .vtext {\\n color: #fff;\\n padding: 10px; } }\\n .valine .info {\\n padding: 5px;\\n margin: .5em 0; }\\n .valine .info .col {\\n display: inline-block;\\n vertical-align: middle; }\\n .valine .info svg {\\n margin-right: 2px;\\n overflow: hidden;\\n fill: currentColor; }\\n .valine .power {\\n color: #999;\\n font-size: 0.625em !important;\\n position: relative; }\\n .valine a {\\n text-decoration: none;\\n color: #3eb0ef;\\n border: none; }\\n .valine .txt-center {\\n text-align: center; }\\n .valine .float-right {\\n float: right !important; }\\n .valine .pd5 {\\n padding: 5px; }\\n .valine .pd10 {\\n padding: 10px; }\\n .valine .vbtn {\\n display: inline-block;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n border: 1px solid #e9eff3;\\n background-color: #333;\\n border-radius: .1em;\\n color: #fff;\\n padding: .5em 1.5em;\\n cursor: pointer;\\n white-space: nowrap;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n outline: none;\\n min-width: 60px;\\n max-width: 100%;\\n margin: 0 1em; }\\n .valine .vbtn:active,\\n .valine .vbtn:hover {\\n border-color: #666; }\\n .valine .vpage {\\n margin: 1.5em 0; }\\n .valine .vpage .more {\\n width: 100%;\\n height: 2.5em;\\n line-height: 2.5em;\\n text-align: center;\\n cursor: pointer;\\n color: #666;\\n background: #fafafa;\\n border-radius: 1.25em; }\\n .valine .vlist {\\n width: 100%;\\n list-style: none;\\n margin: 0;\\n padding: 0; }\\n .valine .vlist .vcard {\\n display: -webkit-box;\\n display: flex;\\n display: -ms-flexbox;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row;\\n padding: 2em 1em 1.5em;\\n border: 1px solid rgba(150, 150, 150, 0.18);\\n margin: 2em 0 0;\\n list-style: none;\\n border-radius: 5px;\\n word-break: break-all; }\\n .valine .vlist .vcard:hover {\\n border: 1px solid rgba(150, 150, 150, 0.25); }\\n .valine .vlist .vcard:hover .vat {\\n background: #111 !important; }\\n .valine .vlist .vcard .vat {\\n margin: -2.1em 0 0;\\n float: right;\\n background: transparent;\\n color: #ffffff;\\n padding: .2em 1em;\\n line-height: 1.2;\\n cursor: pointer;\\n word-break: keep-all;\\n white-space: nowrap;\\n text-transform: uppercase; }\\n .valine .vlist .vcard .vavatar {\\n -webkit-box-flex: 0;\\n flex: 0 0 auto;\\n -ms-flex: 0 0 auto;\\n margin-right: 1em;\\n margin-top: 0.1em;\\n display: inline-block;\\n height: 3em;\\n width: 3em;\\n position: relative;\\n border-radius: 50%; }\\n .valine .vlist .vcard .text-wrapper {\\n overflow: visible;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n width: 100%; }\\n .valine .vlist .vcard .text-wrapper .vhead {\\n line-height: 1;\\n margin-bottom: 1em; }\\n .valine .vlist .vcard .text-wrapper .vhead .vname {\\n font-weight: bolder;\\n font-size: 1em;\\n color: rgba(0, 0, 0, 0.7); }\\n .valine .vlist .vcard .text-wrapper .vhead .spacer {\\n color: #ccc;\\n margin-left: 0.3em;\\n margin-right: 0.3em; }\\n .valine .vlist .vcard .text-wrapper .vhead .vtime {\\n color: #a9a4a4;\\n display: inline-block;\\n font-weight: normal; }\\n .valine .vlist .vcard .text-wrapper .vcomment {\\n position: relative; }\\n .valine .vlist .vcard .text-wrapper .vcomment blockquote p {\\n padding-left: 12px; }\\n .valine .vlist .vcard .text-wrapper .vcomment p {\\n word-wrap: break-word;\\n white-space: pre-wrap;\\n word-break: break-all;\\n text-align: justify;\\n line-height: 1.8; }\\n .valine .vlist .vcard .text-wrapper .vcomment pre {\\n overflow: auto;\\n padding: 6px 10px;\\n word-wrap: break-word;\\n color: #555;\\n background: #f5f2f2;\\n border-radius: 3px;\\n font-size: .875rem;\\n margin: 5px 0; }\\n .valine .vlist .vcard .text-wrapper .vcomment.expand {\\n cursor: pointer;\\n max-height: 11.25rem;\\n overflow: hidden; }\\n .valine .vlist .vcard .text-wrapper .vcomment.expand:before {\\n display: block;\\n content: \\\"\\\";\\n position: absolute;\\n width: 100%;\\n left: 0;\\n top: 0;\\n bottom: 3.15rem;\\n pointer-events: none;\\n background: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0)), to(rgba(255, 255, 255, 0.8)));\\n background: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.8)); }\\n .valine .vlist .vcard .text-wrapper .vcomment.expand:after {\\n display: block;\\n content: \\\"\\\\5C55\\\\5F00 \\\";\\n text-align: center;\\n color: #828586;\\n position: absolute;\\n width: 100%;\\n height: 3.15rem;\\n line-height: 3.15rem;\\n left: 0;\\n bottom: 0;\\n pointer-events: none;\\n background: rgba(255, 255, 255, 0.9); }\\n .valine .vlist .vempty {\\n padding: 20px;\\n text-align: center;\\n color: #999; }\\n .valine .spinner {\\n margin: 10px auto;\\n width: 50px;\\n height: 30px;\\n text-align: center;\\n font-size: 10px; }\\n .valine .spinner > div {\\n background-color: #9c9c9c;\\n height: 100%;\\n width: 6px;\\n margin-right: 3px;\\n display: inline-block;\\n -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;\\n animation: sk-stretchdelay 1.2s infinite ease-in-out; }\\n .valine .spinner .r2 {\\n -webkit-animation-delay: -1.1s;\\n animation-delay: -1.1s; }\\n .valine .spinner .r3 {\\n -webkit-animation-delay: -1.0s;\\n animation-delay: -1.0s; }\\n .valine .spinner .r4 {\\n -webkit-animation-delay: -0.9s;\\n animation-delay: -0.9s; }\\n .valine .spinner .r5 {\\n -webkit-animation-delay: -0.8s;\\n animation-delay: -0.8s; }\\n\\n@-webkit-keyframes sk-stretchdelay {\\n 0%,\\n 40%,\\n 100% {\\n -webkit-transform: scaleY(0.4); }\\n 20% {\\n -webkit-transform: scaleY(1); } }\\n\\n@keyframes sk-stretchdelay {\\n 0%,\\n 40%,\\n 100% {\\n transform: scaleY(0.4);\\n -webkit-transform: scaleY(0.4); }\\n 20% {\\n transform: scaleY(1);\\n -webkit-transform: scaleY(1); } }\\n\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar DEFAULT = __webpack_require__(2);\nvar parseStyle = __webpack_require__(14);\nvar _ = __webpack_require__(3);\n\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull (obj) {\n return (obj === undefined || obj === null);\n}\n\n/**\n * 浅拷贝对象\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject (obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n * - {Object} whiteList\n * - {Function} onAttr\n * - {Function} onIgnoreAttr\n * - {Function} safeAttrValue\n */\nfunction FilterCSS (options) {\n options = shallowCopyObject(options || {});\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onAttr = options.onAttr || DEFAULT.onAttr;\n options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n this.options = options;\n}\n\nFilterCSS.prototype.process = function (css) {\n // 兼容各种奇葩输入\n css = css || '';\n css = css.toString();\n if (!css) return '';\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onAttr = options.onAttr;\n var onIgnoreAttr = options.onIgnoreAttr;\n var safeAttrValue = options.safeAttrValue;\n\n var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n\n var check = whiteList[name];\n var isWhite = false;\n if (check === true) isWhite = check;\n else if (typeof check === 'function') isWhite = check(value);\n else if (check instanceof RegExp) isWhite = check.test(value);\n if (isWhite !== true) isWhite = false;\n\n // 如果过滤后 value 为空则直接忽略\n value = safeAttrValue(name, value);\n if (!value) return;\n\n var opts = {\n position: position,\n sourcePosition: sourcePosition,\n source: source,\n isWhite: isWhite\n };\n\n if (isWhite) {\n\n var ret = onAttr(name, value, opts);\n if (isNull(ret)) {\n return name + ':' + value;\n } else {\n return ret;\n }\n\n } else {\n\n var ret = onIgnoreAttr(name, value, opts);\n if (!isNull(ret)) {\n return ret;\n }\n\n }\n });\n\n return retCSS;\n};\n\n\nmodule.exports = FilterCSS;\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar _ = __webpack_require__(3);\n\n\n/**\n * 解析style\n *\n * @param {String} css\n * @param {Function} onAttr 处理属性的函数\n * 参数格式: function (sourcePosition, position, name, value, source)\n * @return {String}\n */\nfunction parseStyle (css, onAttr) {\n css = _.trimRight(css);\n if (css[css.length - 1] !== ';') css += ';';\n var cssLength = css.length;\n var isParenthesisOpen = false;\n var lastPos = 0;\n var i = 0;\n var retCSS = '';\n\n function addNewAttr () {\n // 如果没有正常的闭合圆括号,则直接忽略当前属性\n if (!isParenthesisOpen) {\n var source = _.trim(css.slice(lastPos, i));\n var j = source.indexOf(':');\n if (j !== -1) {\n var name = _.trim(source.slice(0, j));\n var value = _.trim(source.slice(j + 1));\n // 必须有属性名称\n if (name) {\n var ret = onAttr(lastPos, retCSS.length, name, value, source);\n if (ret) retCSS += ret + '; ';\n }\n }\n }\n lastPos = i + 1;\n }\n\n for (; i < cssLength; i++) {\n var c = css[i];\n if (c === '/' && css[i + 1] === '*') {\n // 备注开始\n var j = css.indexOf('*/', i + 2);\n // 如果没有正常的备注结束,则后面的部分全部跳过\n if (j === -1) break;\n // 直接将当前位置调到备注结尾,并且初始化状态\n i = j + 1;\n lastPos = i + 1;\n isParenthesisOpen = false;\n } else if (c === '(') {\n isParenthesisOpen = true;\n } else if (c === ')') {\n isParenthesisOpen = false;\n } else if (c === ';') {\n if (isParenthesisOpen) {\n // 在圆括号里面,忽略\n } else {\n addNewAttr();\n }\n } else if (c === '\\n') {\n addNewAttr();\n }\n }\n\n return _.trim(retCSS);\n}\n\nmodule.exports = parseStyle;\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(selector) {\n\t\tif (typeof memo[selector] === \"undefined\") {\n\t\t\tmemo[selector] = fn.call(this, selector);\n\t\t}\n\n\t\treturn memo[selector]\n\t};\n})(function (target) {\n\treturn document.querySelector(target)\n});\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = __webpack_require__(16);\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of \n
    \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    已有 0 条评论
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    `;\n _root.el.innerHTML = eleHTML;\n // Empty Data\n let vempty = _root.el.querySelector('.vempty');\n _root.nodata = {\n show(txt) {\n vempty.innerHTML = txt || `还没有评论哦,快来抢沙发吧!`;\n vempty.setAttribute('style', 'display:block;');\n },\n hide() {\n vempty.setAttribute('style', 'display:none;');\n }\n }\n _root.nodata.show();\n\n // load smiles image\n let _smile_wrapper = _root.el.querySelector('.vsmile-icons'); \n let smile_names = option.emoticon_list || [];\n for(let i in smile_names) {\n let img = document.createElement('img');\n img.setAttribute('src', `${option.emoticon_url}/${smile_names[i]}`);\n _smile_wrapper.appendChild(img) ;\n }\n if (!disable_av_init) {\n av.init({\n appId: option.app_id || option.appId,\n appKey: option.app_key || option.appKey\n });\n disable_av_init = true;\n }\n _root.v = av;\n\n } catch (ex) {\n let issue = 'https://github.com/DesertsP/Valine/issues';\n if (_root.el) _root.nodata.show(`
    ${ex}
    Valine:${_root.version}
    反馈:${issue}
    `);\n else console && console.log(`%c${ex}\\n%cValine%c${_root.version} ${issue}`, 'color:red;', 'background:#000;padding:5px;line-height:30px;color:#fff;', 'background:#456;line-height:30px;padding:5px;color:#fff;');\n return;\n }\n\n // loading\n let _spinner = `
    `;\n let vloading = _root.el.querySelector('.vloading');\n vloading.innerHTML = _spinner;\n // loading control\n _root.loading = {\n show() {\n vloading.setAttribute('style', 'display:block;');\n _root.nodata.hide();\n },\n hide() {\n vloading.setAttribute('style', 'display:none;');\n _root.el.querySelectorAll('.vcard').length === 0 && _root.nodata.show();\n }\n };\n\n let vsubmitting = _root.el.querySelector('.vsubmitting');\n vsubmitting.innerHTML = _spinner;\n _root.submitting = {\n show() {\n vsubmitting.setAttribute('style', 'display:block;');\n },\n hide() {\n vsubmitting.setAttribute('style', 'display:none;');\n _root.nodata.hide();\n }\n };\n\n let _mark = _root.el.querySelector('.vmark');\n // alert\n _root.alert = {\n /**\n * {\n * type:0/1,\n * text:'',\n * ctxt:'',\n * otxt:'',\n * cb:fn\n * }\n *\n * @param {Object} o\n */\n show(o) {\n _mark.innerHTML = `
    ${o.text}
    `;\n let _vbtns = _mark.querySelector('.vbtns');\n let _cBtn = ``;\n let _oBtn = ``;\n _vbtns.innerHTML = `${_cBtn}${o.type && _oBtn}`;\n _mark.querySelector('.vcancel').addEventListener('click', function (e) {\n _root.alert.hide();\n });\n _mark.setAttribute('style', 'display:block;');\n if (o && o.type) {\n let _ok = _mark.querySelector('.vsure');\n Event.on('click', _ok, (e) => {\n _root.alert.hide();\n o.cb && o.cb();\n });\n }\n },\n hide() {\n _mark.setAttribute('style', 'display:none;');\n }\n }\n\n _root.loading.show();\n var query = new _root.v.Query('Comment');\n query.equalTo('url', defaultComment['url']);\n query.count().then(function (count) {\n _root.el.querySelector('.count').innerHTML = `${count}`;\n _root.bind(option);\n }, function (error) {\n console.log(error);\n });\n }\n\n /**\n * Bind Event\n */\n bind(option) {\n let _root = this;\n // Smile pictures\n let vsmiles = _root.el.querySelector('.vsmile-icons');\n Event.on('click', vsmiles, (e) => {\n var textField = _root.el.querySelector('.veditor');\n let imgSrc = e.target.src;\n if ( typeof imgSrc == 'undefined' ) return;\n // var tag = \" ![](/\" + imgSrc.replace(/^.*\\/(.*\\.gif)$/, '$1') + \") \";\n var tag = \"!(:\" + decodeURI(imgSrc).replace(/^.*\\/(.*)$/, '$1') + \":)\";\n if (document.selection) {\n textField.focus();\n sel = document.selection.createRange();\n sel.text = tag;\n textField.focus();\n } else if (textField.selectionStart || textField.selectionStart == '0') {\n var startPos = textField.selectionStart;\n var endPos = textField.selectionEnd;\n var cursorPos = endPos;\n textField.value = textField.value.substring(0, startPos) + tag + textField.value.substring(endPos, textField.value.length);\n cursorPos += tag.length;\n textField.focus();\n textField.selectionStart = cursorPos;\n textField.selectionEnd = cursorPos\n } else {\n textField.value += tag;\n textField.focus()\n }\n defaultComment[\"comment\"] = textField.value;\n let submitBtn = _root.el.querySelector('.vsubmit');\n if (submitBtn.getAttribute('disabled')) submitBtn.removeAttribute('disabled');\n })\n let comment_trigger = _root.el.querySelector('.comment_trigger');\n Event.on('click', comment_trigger, (e) => {\n comment_trigger.setAttribute('style', 'display:none');\n _root.el.querySelector('.auth-section').removeAttribute('style');\n _root.el.querySelector('.veditor').focus();\n })\n\n // Query && show comment list\n\n let expandEvt = (el) => {\n if (el.offsetHeight > 180) {\n el.classList.add('expand');\n Event.on('click', el, (e) => {\n el.setAttribute('class', 'vcomment');\n })\n }\n };\n\n let commonQuery = () => {\n let query = new _root.v.Query('Comment');\n query.select(['nick', 'comment', 'link', 'rid', 'emailHash']);\n query.notEqualTo('isSpam', true);\n query.equalTo('url', defaultComment['url']);\n query.addDescending('createdAt');\n return query;\n };\n\n var num = 1;\n let query = (n = 1) => {\n _root.loading.show();\n var size = 10;\n var count = Number(_root.el.querySelector('.count').innerText);\n let cq = commonQuery();\n cq.limit(size);\n cq.skip((n - 1) * size);\n cq.find().then(rets => {\n let len = rets.length;\n if (len) {\n // _root.el.querySelector('.vlist').innerHTML = '';\n for (let i = 0; i < len; i++) {\n insertComment(rets[i], false)\n }\n var _vpage = _root.el.querySelector('.vpage');\n _vpage.innerHTML = size * n < count ? `
    加载更多评论(剩余${count - size * n}/${count}条)
    ` : '';\n var _vmore = _vpage.querySelector('#vmore');\n if (_vmore) {\n Event.on('click', _vmore, (e) => {\n _vpage.innerHTML = '';\n query(++num)\n })\n }\n }\n _root.loading.hide();\n }).catch(ex => {\n console.log(ex);\n _root.loading.hide();\n })\n }\n query();\n\n let insertComment = (ret, top=true) => {\n let _vcard = document.createElement('li');\n _vcard.setAttribute('class', 'vcard');\n _vcard.setAttribute('id', ret.id);\n let emailHash = ret.get('emailHash')\n let gravatar_url = GRAVATAR_BASE_URL + emailHash + '?size=80&d=https%3a%2f%2fgravatar.loli.net%2favatar%2f9e63c80900d106cbbec5a9f4ea433a3e.jpg%3fsize%3d80';\n // language=HTML\n _vcard.innerHTML = `\n
    \n
    \n ${ret.get('link') ? ` ${ret.get(\"nick\")}` : `${ret.get(\"nick\")}`}\n \n ${timeAgo(ret.get(\"createdAt\"))}\n 回复\n
    \n
    ${ret.get('comment')}
    \n
    `;\n let _vlist = _root.el.querySelector('.vlist');\n let _vlis = _vlist.querySelectorAll('li');\n let _vat = _vcard.querySelector('.vat');\n let _as = _vcard.querySelectorAll('a');\n for (let i = 0, len = _as.length; i < len; i++) {\n let item = _as[i];\n if (item && item.getAttribute('class') != 'at') {\n item.setAttribute('target', '_blank');\n item.setAttribute('rel', 'nofollow');\n }\n }\n if (!top) _vlist.appendChild(_vcard);\n else _vlist.insertBefore(_vcard, _vlis[0]);\n let _vcontent = _vcard.querySelector('.vcomment');\n expandEvt(_vcontent);\n bindAtEvt(_vat);\n }\n\n let mapping = {\n veditor: \"comment\",\n vnick: \"nick\",\n vlink: \"link\",\n vmail: 'mail'\n };\n let inputs = {};\n for (let i in mapping) {\n if (mapping.hasOwnProperty(i)) {\n let _v = mapping[i];\n let _el = _root.el.querySelector(`.${i}`);\n inputs[_v] = _el;\n Event.on('input', _el, (e) => {\n // defaultComment[_v] = HtmlUtil.encode(_el.value.replace(/(^\\s*)|(\\s*$)/g, \"\"));\n defaultComment[_v] = _el.value;\n });\n }\n }\n\n // cache\n let getCache = () => {\n let s = store && store.getItem('ValineCache');\n if (!!s) {\n s = JSON.parse(s);\n let m = ['nick', 'link', 'mail'];\n for (let i in m) {\n let k = m[i];\n _root.el.querySelector(`.v${k}`).value = s[k];\n defaultComment[k] = s[k];\n }\n if (s['mail'] != '') {\n let el = _root.el.querySelector('.visitor_avatar');\n el.setAttribute('src', GRAVATAR_BASE_URL + crypto(s['mail'].toLowerCase().trim()) + '?size=80&d=https%3a%2f%2fgravatar.loli.net%2favatar%2f9e63c80900d106cbbec5a9f4ea433a3e.jpg%3fsize%3d80');\n }\n }\n }\n getCache();\n\n // reset form\n _root.reset = () => {\n for (let i in mapping) {\n if (mapping.hasOwnProperty(i)) {\n let _v = mapping[i];\n let _el = _root.el.querySelector(`.${i}`);\n _el.value = \"\";\n defaultComment[_v] = \"\";\n }\n }\n defaultComment['rid'] = '';\n defaultComment['nick'] = '';\n getCache();\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n }\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n }\n }\n\n // submit\n let submitBtn = _root.el.querySelector('.vsubmit');\n let submitEvt = (e) => {\n if (submitBtn.getAttribute('disabled')) {\n _root.alert.show({\n type: 0,\n text: '再等等,评论正在提交中ヾ(๑╹◡╹)ノ\"',\n ctxt: '好的'\n })\n return;\n }\n if (defaultComment.comment == '') {\n inputs['comment'].focus();\n return;\n }\n if (defaultComment.nick == '') {\n inputs['nick'].focus();\n return;\n }\n // render markdown\n defaultComment.comment = xss(md(defaultComment.comment.replace(/!\\(:(.*?\\.\\w+):\\)/g, \n `\"$1\"`)),\n {\n onIgnoreTagAttr: function (tag, name, value, isWhiteAttr) {\n if (name === 'class') {\n return name + '=\"' + xss.escapeAttrValue(value) + '\"';\n }\n }\n });\n let idx = defaultComment.comment.indexOf(defaultComment.at);\n if (idx > -1 && defaultComment.at != '') {\n let at = `${defaultComment.at}`;\n defaultComment.comment = defaultComment.comment.replace(defaultComment.at, at);\n }\n // veirfy\n let mailRet = check.mail(defaultComment.mail);\n let linkRet = check.link(defaultComment.link);\n defaultComment['mail'] = mailRet.k ? mailRet.v : '';\n defaultComment['link'] = linkRet.k ? linkRet.v : '';\n\n if (!mailRet.k && !linkRet.k) {\n _root.alert.show({\n type: 0,\n text: '您的网址和邮箱格式不正确,请修正后提交!',\n ctxt: '返回修改'\n })\n } else if (!mailRet.k) {\n _root.alert.show({\n type: 0,\n text: '请认真评论并填写正确的邮箱地址!
    已开启隐私防护不会泄露您的个人信息,了解反垃圾系统如何处理您的数据。',\n ctxt: '返回修改'\n })\n } else if (!linkRet.k) {\n _root.alert.show({\n type: 0,\n text: '您的网址格式不正确,请修正后提交!',\n ctxt: '返回修改'\n })\n } else {\n commitEvt();\n }\n }\n\n let smile_btn = _root.el.querySelector('.vemoji-btn');\n let smile_icons = _root.el.querySelector('.vsmile-icons');\n Event.on('click', smile_btn, (e)=>{\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n }\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n }\n else {\n smile_icons.removeAttribute('style');\n smile_icons.setAttribute('triggered', 1);\n }\n });\n\n let preview_btn = _root.el.querySelector('.vpreview-btn');\n let preview_text = _root.el.querySelector('.vpreview-text');\n Event.on('click', preview_btn, (e)=>{\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n }\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n }\n else {\n if (defaultComment.comment == '') {\n inputs['comment'].focus();\n return;\n }\n // render markdown\n preview_text.innerHTML = xss(md(defaultComment.comment.replace(/!\\(:(.*?\\.\\w+):\\)/g, \n `\"$1\"`)),\n {\n onIgnoreTagAttr: function (tag, name, value, isWhiteAttr) {\n if (name === 'class') {\n return name + '=\"' + xss.escapeAttrValue(value) + '\"';\n }\n }\n });\n preview_text.removeAttribute('style');\n preview_text.setAttribute('triggered', 1);\n }\n });\n\n // setting access\n let getAcl = () => {\n let acl = new _root.v.ACL();\n acl.setPublicReadAccess(true);\n acl.setPublicWriteAccess(false);\n return acl;\n }\n\n let commitEvt = () => {\n submitBtn.setAttribute('disabled', true);\n _root.submitting.show();\n // 声明类型\n let Ct = _root.v.Object.extend('Comment');\n // 新建对象\n let comment = new Ct();\n for (let i in defaultComment) {\n if (defaultComment.hasOwnProperty(i)) {\n if (i === 'at')\n continue;\n let _v = defaultComment[i];\n comment.set(i, _v);\n }\n }\n comment.set('emailHash', crypto(defaultComment.mail.toLowerCase().trim()));\n comment.setACL(getAcl());\n comment.save().then((commentItem) => {\n store && store.setItem('ValineCache', JSON.stringify({\n nick: defaultComment['nick'],\n link: defaultComment['link'],\n mail: defaultComment['mail']\n }));\n let _count = _root.el.querySelector('.count');\n _count.innerText = Number(_count.innerText) + 1;\n insertComment(commentItem, true);\n submitBtn.removeAttribute('disabled');\n _root.submitting.hide();\n _root.nodata.hide();\n _root.reset();\n }).catch(ex => {\n _root.submitting.hide();\n })\n }\n\n // at event\n let bindAtEvt = (el) => {\n Event.on('click', el, (e) => {\n let at = el.getAttribute('at');\n let rid = el.getAttribute('rid');\n defaultComment['rid'] = rid;\n defaultComment['at'] = at;\n inputs['comment'].value = `${at} ,` + inputs['comment'].value;\n inputs['comment'].focus();\n // remove comment trigger\n _root.el.querySelector('.comment_trigger').setAttribute('style', 'display:none');\n _root.el.querySelector('.auth-section').removeAttribute('style');\n _root.el.querySelector('.veditor').focus();\n })\n }\n\n Event.off('click', submitBtn, submitEvt);\n Event.on('click', submitBtn, submitEvt);\n }\n}\n\nconst Event = {\n on(type, el, handler, capture) {\n if (el.addEventListener) el.addEventListener(type, handler, capture || false);\n else if (el.attachEvent) el.attachEvent(`on${type}`, handler);\n else el[`on${type}`] = handler;\n },\n off(type, el, handler, capture) {\n if (el.removeEventListener) el.removeEventListener(type, handler, capture || false);\n else if (el.detachEvent) el.detachEvent(`on${type}`, handler);\n else el[`on${type}`] = null;\n }\n}\n\nconst check = {\n mail(m) {\n return {\n k: /\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}/.test(m),\n v: m\n };\n },\n link(l) {\n if (l.length > 0) {\n l = /^(http|https)/.test(l) ? l : `http://${l}`;\n }\n return {\n k: l.length > 0 ? /(http|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/.test(l) : true,\n v: l\n };\n }\n}\n\nconst HtmlUtil = {\n\n // /**\n // *\n // * 将str中的链接转换成a标签形式\n // * @param {String} str\n // * @returns\n // */\n // transUrl(str) {\n // let reg = /(http:\\/\\/|https:\\/\\/)((\\w|=|\\?|\\.|\\/|&|-)+)/g;\n // return str.replace(reg, '$1$2');\n // },\n /**\n * HTML转码\n * @param {String} str\n * @return {String} result\n */\n encode(str) {\n return !!str ? str.replace(/&/g, \"&\").replace(//g, \">\").replace(/ /g, \" \").replace(/\\'/g, \"'\").replace(/\\\"/g, \""\") : '';\n },\n /**\n * HTML解码\n * @param {String} str\n * @return {String} result\n */\n decode(str) {\n return !!str ? str.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/ /g, \" \").replace(/'/g, \"\\'\").replace(/"/g, \"\\\"\") : '';\n }\n};\n\nconst dateFormat = (date) => {\n var vDay = padWithZeros(date.getDate(), 2);\n var vMonth = padWithZeros(date.getMonth() + 1, 2);\n var vYear = padWithZeros(date.getFullYear(), 2);\n // var vHour = padWithZeros(date.getHours(), 2);\n // var vMinute = padWithZeros(date.getMinutes(), 2);\n // var vSecond = padWithZeros(date.getSeconds(), 2);\n return `${vYear}-${vMonth}-${vDay}`;\n // return `${vYear}-${vMonth}-${vDay} ${vHour}:${vMinute}:${vSecond}`;\n}\n\nconst timeAgo = (date) => {\n try {\n var oldTime = date.getTime();\n var currTime = new Date().getTime();\n var diffValue = currTime - oldTime;\n\n var days = Math.floor(diffValue / (24 * 3600 * 1000));\n if (days === 0) {\n //计算相差小时数\n var leave1 = diffValue % (24 * 3600 * 1000); //计算天数后剩余的毫秒数\n var hours = Math.floor(leave1 / (3600 * 1000));\n if (hours === 0) {\n //计算相差分钟数\n var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数\n var minutes = Math.floor(leave2 / (60 * 1000));\n if (minutes === 0) {\n //计算相差秒数\n var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数\n var seconds = Math.round(leave3 / 1000);\n return seconds + ' 秒前';\n }\n return minutes + ' 分钟前';\n }\n return hours + ' 小时前';\n }\n if (days < 0) return '刚刚';\n else if (days < 30) return days + ' 天前';\n else if (days < 365) return Math.floor(days / 30) + ' 月前';\n else return Math.floor(days / 365) + ' 年前';\n return dateFormat(date);\n } catch (error) {\n console.log(error)\n }\n}\n\nconst padWithZeros = (vNumber, width) => {\n var numAsString = vNumber.toString();\n while (numAsString.length < width) {\n numAsString = '0' + numAsString;\n }\n return numAsString;\n}\n\nconst loadJS = function (url, success) {\n var domScript = document.createElement('script');\n domScript.src = url;\n success = success || function () {\n };\n domScript.onload = domScript.onreadystatechange = function () {\n if (!this.readyState || 'loaded' === this.readyState || 'complete' === this.readyState) {\n success();\n this.onload = this.onreadystatechange = null;\n // this.parentNode.removeChild(this);\n }\n };\n document.getElementsByTagName('head')[0].appendChild(domScript);\n};\n\nconst getIp = function(){\n $.getJSON(\"https://api.ipify.org/?format=json\",\n function(json) {\n defaultComment['ip'] = json.ip;\n }\n );\n};\n\nmodule.exports = Valine;\n\n\n\n// WEBPACK FOOTER //\n// ./src/Valine.js","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"@charset \\\"UTF-8\\\";\\n.valine {\\n /************ Loading ************/ }\\n .valine * {\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n font-size: 14px;\\n font-weight: normal;\\n line-height: 1.42857143;\\n color: #3c484e;\\n -webkit-transition: all .3s ease;\\n transition: all .3s ease;\\n margin: initial;\\n padding: initial; }\\n .valine .vemoticon-img {\\n display: inline-block;\\n max-height: 32px;\\n margin: 0 2px; }\\n .valine .vwrap {\\n overflow: hidden;\\n position: relative;\\n border: 1px solid #ededed; }\\n .valine .vwrap .veditor-area {\\n position: inherit; }\\n .valine .vwrap .btn-wrap {\\n position: absolute !important;\\n right: 1.5em;\\n bottom: 0; }\\n .valine .vwrap .btn-wrap .vfunction-btn {\\n display: inline-block; }\\n .valine .vwrap .btn-wrap .vfunction-btn svg {\\n fill: #bbb;\\n cursor: pointer; }\\n .valine .vwrap .btn-wrap .vfunction-btn svg:hover {\\n fill: #777777; }\\n .valine .vwrap .btn-wrap .vfunction-btn svg:active {\\n fill: #777777; }\\n .valine .vwrap .vextra-area {\\n margin: .4em 0 .4em .5em; }\\n .valine .vwrap .vextra-area .vsmile-icons {\\n padding: .2em 0;\\n border-top: 1px solid #ededed;\\n border-radius: 0;\\n margin: .3em 0;\\n max-height: 64px;\\n overflow: auto; }\\n .valine .vwrap .vextra-area .vsmile-icons img {\\n display: inline-block;\\n width: auto !important;\\n height: 28px !important;\\n margin-right: 4px;\\n cursor: pointer; }\\n .valine .vwrap .vextra-area .vpreview-text {\\n border-top: 1px solid #ededed;\\n border-radius: 0;\\n padding: .5em .5em;\\n margin: .3em 0;\\n max-height: 10em;\\n overflow: auto; }\\n .valine .vwrap .textarea-wrapper {\\n color: #4b5b62;\\n width: 100%;\\n height: 100%;\\n background: #fff;\\n position: relative;\\n border-radius: 0; }\\n .valine .vwrap .textarea-wrapper .comment_trigger {\\n position: absolute;\\n z-index: 10;\\n width: 100%;\\n height: 100%;\\n background-color: #fff;\\n padding: 0 1em; }\\n .valine .vwrap .textarea-wrapper .comment_trigger .avatar {\\n position: absolute;\\n width: 3em;\\n height: 3em;\\n position: absolute;\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%); }\\n .valine .vwrap .textarea-wrapper .comment_trigger .avatar img {\\n border-radius: 100%;\\n width: 3em;\\n height: 3em; }\\n .valine .vwrap .textarea-wrapper .comment_trigger .trigger_title {\\n position: absolute;\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%);\\n color: #aaa;\\n font-size: 1.4em;\\n margin-left: 3.5em; }\\n .valine .vwrap .textarea-wrapper textarea {\\n padding: 1em 1em 0;\\n color: #4b5b62;\\n width: 100%;\\n background: #fff;\\n border: none;\\n resize: none;\\n min-height: 6em;\\n margin: 0; }\\n .valine .vwrap .textarea-wrapper textarea:focus {\\n border-color: #c4c8cb;\\n outline: 0; }\\n .valine .vwrap .trigger-section {\\n display: none; }\\n .valine .vwrap .auth-section {\\n display: -webkit-box;\\n display: flex;\\n display: -ms-flexbox;\\n background: #fbfbfb;\\n padding: .3em .6em; }\\n .valine .vwrap .auth-section .input-wrapper {\\n -ms-flex: 1 1 27%;\\n -webkit-box-flex: 1;\\n flex: 1 1 27%;\\n width: 27%; }\\n .valine .vwrap .auth-section .input-wrapper input {\\n color: #4b5b62;\\n background: #fafafa;\\n border: none;\\n border-radius: 0;\\n padding: .6em;\\n margin: 0;\\n line-height: 2;\\n font-size: 1em !important; }\\n .valine .vwrap .auth-section .input-wrapper input:focus {\\n border-color: #c4c8cb;\\n outline: 0; }\\n .valine .vwrap .auth-section input {\\n width: 100%; }\\n .valine .vwrap .auth-section .post-action {\\n -ms-flex: 1 1 19%;\\n -webkit-box-flex: 1;\\n flex: 1 1 19%;\\n width: 19%;\\n margin: 0;\\n padding: 2px 0 0; }\\n .valine .vwrap .auth-section .post-action button {\\n color: #fff;\\n width: 100%;\\n line-height: 2;\\n font-weight: bolder;\\n border-radius: 30px;\\n border: 1px solid #e9eff3;\\n background-color: #111;\\n padding: .4em .5em;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n font-size: 1em !important; }\\n .valine .vwrap .auth-section .post-action button:hover {\\n background-color: #444; }\\n @media screen and (max-width: 720px) {\\n .valine .vwrap .auth-section {\\n display: block; }\\n .valine .vwrap .auth-section .input-wrapper, .valine .vwrap .auth-section .post-action {\\n -ms-flex: 1 1 100%;\\n -webkit-box-flex: 1;\\n flex: 1 1 100%;\\n padding-right: 0;\\n width: 100%; } }\\n .valine .vwrap .vmark {\\n position: absolute;\\n background: rgba(0, 0, 0, 0.65);\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0; }\\n .valine .vwrap .vmark .valert {\\n padding: 2em 0 0 0; }\\n .valine .vwrap .vmark .valert .vtext {\\n color: #fff;\\n padding: 15px; }\\n .valine .vwrap .vmark .valert .vcode {\\n width: 75px;\\n border-radius: 5px;\\n background: #dedede; }\\n .valine .vwrap .vmark .valert .vcode:focus {\\n border-color: #3090e4;\\n background-color: #fff; }\\n @media screen and (max-width: 720px) {\\n .valine .vwrap .vmark .valert {\\n padding: 8em 0; }\\n .valine .vwrap .vmark .valert .vtext {\\n color: #fff;\\n padding: 10px; } }\\n .valine .info {\\n padding: 5px;\\n margin: .5em 0; }\\n .valine .info .col {\\n display: inline-block;\\n vertical-align: middle; }\\n .valine .info svg {\\n margin-right: 2px;\\n overflow: hidden;\\n fill: currentColor; }\\n .valine .power {\\n color: #999;\\n font-size: 0.625em !important;\\n position: relative; }\\n .valine a {\\n text-decoration: none;\\n color: #3eb0ef;\\n border: none; }\\n .valine .txt-center {\\n text-align: center; }\\n .valine .float-right {\\n float: right !important; }\\n .valine .pd5 {\\n padding: 5px; }\\n .valine .pd10 {\\n padding: 10px; }\\n .valine .vbtn {\\n display: inline-block;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n border: 1px solid #e9eff3;\\n background-color: #333;\\n border-radius: .1em;\\n color: #fff;\\n padding: .5em 1.5em;\\n cursor: pointer;\\n white-space: nowrap;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n outline: none;\\n min-width: 60px;\\n max-width: 100%;\\n margin: 0 1em; }\\n .valine .vbtn:active,\\n .valine .vbtn:hover {\\n border-color: #666; }\\n .valine .vpage {\\n margin: 1.5em 0; }\\n .valine .vpage .more {\\n width: 100%;\\n height: 2.5em;\\n line-height: 2.5em;\\n text-align: center;\\n cursor: pointer;\\n color: #666;\\n background: #fafafa;\\n border-radius: 1.25em; }\\n .valine .vlist {\\n width: 100%;\\n list-style: none;\\n margin: 0;\\n padding: 0; }\\n .valine .vlist .vcard {\\n display: -webkit-box;\\n display: flex;\\n display: -ms-flexbox;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row;\\n padding: 2em 1em 1.5em;\\n border: 1px solid rgba(150, 150, 150, 0.18);\\n margin: 2em 0 0;\\n list-style: none;\\n border-radius: 5px;\\n word-break: break-all; }\\n .valine .vlist .vcard:hover {\\n border: 1px solid rgba(150, 150, 150, 0.25); }\\n .valine .vlist .vcard:hover .vat {\\n background: #111 !important; }\\n .valine .vlist .vcard .vat {\\n margin: -2.1em 0 0;\\n float: right;\\n background: transparent;\\n color: #ffffff;\\n padding: .2em 1em;\\n line-height: 1.2;\\n cursor: pointer;\\n word-break: keep-all;\\n white-space: nowrap;\\n text-transform: uppercase; }\\n .valine .vlist .vcard .vavatar {\\n -webkit-box-flex: 0;\\n flex: 0 0 auto;\\n -ms-flex: 0 0 auto;\\n margin-right: 1em;\\n margin-top: 0.1em;\\n display: inline-block;\\n height: 3em;\\n width: 3em;\\n position: relative;\\n border-radius: 50%; }\\n .valine .vlist .vcard .text-wrapper {\\n overflow: visible;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n width: 100%; }\\n .valine .vlist .vcard .text-wrapper .vhead {\\n line-height: 1;\\n margin-bottom: 1em; }\\n .valine .vlist .vcard .text-wrapper .vhead .vname {\\n font-weight: bolder;\\n font-size: 1em;\\n color: rgba(0, 0, 0, 0.7); }\\n .valine .vlist .vcard .text-wrapper .vhead .spacer {\\n color: #ccc;\\n margin-left: 0.3em;\\n margin-right: 0.3em; }\\n .valine .vlist .vcard .text-wrapper .vhead .vtime {\\n color: #a9a4a4;\\n display: inline-block;\\n font-weight: normal; }\\n .valine .vlist .vcard .text-wrapper .vcomment {\\n position: relative; }\\n .valine .vlist .vcard .text-wrapper .vcomment blockquote p {\\n padding-left: 12px; }\\n .valine .vlist .vcard .text-wrapper .vcomment p {\\n word-wrap: break-word;\\n white-space: pre-wrap;\\n word-break: break-all;\\n text-align: justify;\\n line-height: 1.8; }\\n .valine .vlist .vcard .text-wrapper .vcomment pre {\\n overflow: auto;\\n padding: 6px 10px;\\n word-wrap: break-word;\\n color: #555;\\n background: #f5f2f2;\\n border-radius: 3px;\\n font-size: .875rem;\\n margin: 5px 0; }\\n .valine .vlist .vcard .text-wrapper .vcomment.expand {\\n cursor: pointer;\\n max-height: 11.25rem;\\n overflow: hidden; }\\n .valine .vlist .vcard .text-wrapper .vcomment.expand:before {\\n display: block;\\n content: \\\"\\\";\\n position: absolute;\\n width: 100%;\\n left: 0;\\n top: 0;\\n bottom: 3.15rem;\\n pointer-events: none;\\n background: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0)), to(rgba(255, 255, 255, 0.8)));\\n background: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.8)); }\\n .valine .vlist .vcard .text-wrapper .vcomment.expand:after {\\n display: block;\\n content: \\\"\\\\5C55\\\\5F00 \\\";\\n text-align: center;\\n color: #828586;\\n position: absolute;\\n width: 100%;\\n height: 3.15rem;\\n line-height: 3.15rem;\\n left: 0;\\n bottom: 0;\\n pointer-events: none;\\n background: rgba(255, 255, 255, 0.9); }\\n .valine .vlist .vempty {\\n padding: 20px;\\n text-align: center;\\n color: #999; }\\n .valine .spinner {\\n margin: 10px auto;\\n width: 50px;\\n height: 30px;\\n text-align: center;\\n font-size: 10px; }\\n .valine .spinner > div {\\n background-color: #9c9c9c;\\n height: 100%;\\n width: 6px;\\n margin-right: 3px;\\n display: inline-block;\\n -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;\\n animation: sk-stretchdelay 1.2s infinite ease-in-out; }\\n .valine .spinner .r2 {\\n -webkit-animation-delay: -1.1s;\\n animation-delay: -1.1s; }\\n .valine .spinner .r3 {\\n -webkit-animation-delay: -1.0s;\\n animation-delay: -1.0s; }\\n .valine .spinner .r4 {\\n -webkit-animation-delay: -0.9s;\\n animation-delay: -0.9s; }\\n .valine .spinner .r5 {\\n -webkit-animation-delay: -0.8s;\\n animation-delay: -0.8s; }\\n\\n@-webkit-keyframes sk-stretchdelay {\\n 0%,\\n 40%,\\n 100% {\\n -webkit-transform: scaleY(0.4); }\\n 20% {\\n -webkit-transform: scaleY(1); } }\\n\\n@keyframes sk-stretchdelay {\\n 0%,\\n 40%,\\n 100% {\\n transform: scaleY(0.4);\\n -webkit-transform: scaleY(0.4); }\\n 20% {\\n transform: scaleY(1);\\n -webkit-transform: scaleY(1); } }\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/postcss-loader/lib!./~/sass-loader/lib/loader.js!./src/Valine.scss\n// module id = 11\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader/lib/css-base.js\n// module id = 12\n// module chunks = 0","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar DEFAULT = require('./default');\nvar parseStyle = require('./parser');\nvar _ = require('./util');\n\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull (obj) {\n return (obj === undefined || obj === null);\n}\n\n/**\n * 浅拷贝对象\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject (obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n * - {Object} whiteList\n * - {Function} onAttr\n * - {Function} onIgnoreAttr\n * - {Function} safeAttrValue\n */\nfunction FilterCSS (options) {\n options = shallowCopyObject(options || {});\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onAttr = options.onAttr || DEFAULT.onAttr;\n options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n this.options = options;\n}\n\nFilterCSS.prototype.process = function (css) {\n // 兼容各种奇葩输入\n css = css || '';\n css = css.toString();\n if (!css) return '';\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onAttr = options.onAttr;\n var onIgnoreAttr = options.onIgnoreAttr;\n var safeAttrValue = options.safeAttrValue;\n\n var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n\n var check = whiteList[name];\n var isWhite = false;\n if (check === true) isWhite = check;\n else if (typeof check === 'function') isWhite = check(value);\n else if (check instanceof RegExp) isWhite = check.test(value);\n if (isWhite !== true) isWhite = false;\n\n // 如果过滤后 value 为空则直接忽略\n value = safeAttrValue(name, value);\n if (!value) return;\n\n var opts = {\n position: position,\n sourcePosition: sourcePosition,\n source: source,\n isWhite: isWhite\n };\n\n if (isWhite) {\n\n var ret = onAttr(name, value, opts);\n if (isNull(ret)) {\n return name + ':' + value;\n } else {\n return ret;\n }\n\n } else {\n\n var ret = onIgnoreAttr(name, value, opts);\n if (!isNull(ret)) {\n return ret;\n }\n\n }\n });\n\n return retCSS;\n};\n\n\nmodule.exports = FilterCSS;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/cssfilter/lib/css.js\n// module id = 13\n// module chunks = 0","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar _ = require('./util');\n\n\n/**\n * 解析style\n *\n * @param {String} css\n * @param {Function} onAttr 处理属性的函数\n * 参数格式: function (sourcePosition, position, name, value, source)\n * @return {String}\n */\nfunction parseStyle (css, onAttr) {\n css = _.trimRight(css);\n if (css[css.length - 1] !== ';') css += ';';\n var cssLength = css.length;\n var isParenthesisOpen = false;\n var lastPos = 0;\n var i = 0;\n var retCSS = '';\n\n function addNewAttr () {\n // 如果没有正常的闭合圆括号,则直接忽略当前属性\n if (!isParenthesisOpen) {\n var source = _.trim(css.slice(lastPos, i));\n var j = source.indexOf(':');\n if (j !== -1) {\n var name = _.trim(source.slice(0, j));\n var value = _.trim(source.slice(j + 1));\n // 必须有属性名称\n if (name) {\n var ret = onAttr(lastPos, retCSS.length, name, value, source);\n if (ret) retCSS += ret + '; ';\n }\n }\n }\n lastPos = i + 1;\n }\n\n for (; i < cssLength; i++) {\n var c = css[i];\n if (c === '/' && css[i + 1] === '*') {\n // 备注开始\n var j = css.indexOf('*/', i + 2);\n // 如果没有正常的备注结束,则后面的部分全部跳过\n if (j === -1) break;\n // 直接将当前位置调到备注结尾,并且初始化状态\n i = j + 1;\n lastPos = i + 1;\n isParenthesisOpen = false;\n } else if (c === '(') {\n isParenthesisOpen = true;\n } else if (c === ')') {\n isParenthesisOpen = false;\n } else if (c === ';') {\n if (isParenthesisOpen) {\n // 在圆括号里面,忽略\n } else {\n addNewAttr();\n }\n } else if (c === '\\n') {\n addNewAttr();\n }\n }\n\n return _.trim(retCSS);\n}\n\nmodule.exports = parseStyle;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/cssfilter/lib/parser.js\n// module id = 14\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(selector) {\n\t\tif (typeof memo[selector] === \"undefined\") {\n\t\t\tmemo[selector] = fn.call(this, selector);\n\t\t}\n\n\t\treturn memo[selector]\n\t};\n})(function (target) {\n\treturn document.querySelector(target)\n});\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of \\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\u5DF2\\u6709 0 \\u6761\\u8BC4\\u8BBA
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    ';\n _root.el.innerHTML = eleHTML;\n // Empty Data\n var vempty = _root.el.querySelector('.vempty');\n _root.nodata = {\n show: function show(txt) {\n vempty.innerHTML = txt || '\\u8FD8\\u6CA1\\u6709\\u8BC4\\u8BBA\\u54E6\\uFF0C\\u5FEB\\u6765\\u62A2\\u6C99\\u53D1\\u5427!';\n vempty.setAttribute('style', 'display:block;');\n },\n hide: function hide() {\n vempty.setAttribute('style', 'display:none;');\n }\n };\n _root.nodata.show();\n\n // load smiles image\n var _smile_wrapper = _root.el.querySelector('.vsmile-icons');\n var smile_names = option.emoticon_list || [];\n for (var i in smile_names) {\n var img = document.createElement('img');\n img.setAttribute('src', option.emoticon_url + '/' + smile_names[i]);\n _smile_wrapper.appendChild(img);\n }\n if (!disable_av_init) {\n av.init({\n appId: option.app_id || option.appId,\n appKey: option.app_key || option.appKey\n });\n disable_av_init = true;\n }\n _root.v = av;\n } catch (ex) {\n var issue = 'https://github.com/DesertsP/Valine/issues';\n if (_root.el) _root.nodata.show('
    ' + ex + '
    Valine:' + _root.version + '
    \\u53CD\\u9988\\uFF1A' + issue + '
    ');else console && console.log('%c' + ex + '\\n%cValine%c' + _root.version + ' ' + issue, 'color:red;', 'background:#000;padding:5px;line-height:30px;color:#fff;', 'background:#456;line-height:30px;padding:5px;color:#fff;');\n return;\n }\n\n // loading\n var _spinner = '
    ';\n var vloading = _root.el.querySelector('.vloading');\n vloading.innerHTML = _spinner;\n // loading control\n _root.loading = {\n show: function show() {\n vloading.setAttribute('style', 'display:block;');\n _root.nodata.hide();\n },\n hide: function hide() {\n vloading.setAttribute('style', 'display:none;');\n _root.el.querySelectorAll('.vcard').length === 0 && _root.nodata.show();\n }\n };\n\n var vsubmitting = _root.el.querySelector('.vsubmitting');\n vsubmitting.innerHTML = _spinner;\n _root.submitting = {\n show: function show() {\n vsubmitting.setAttribute('style', 'display:block;');\n },\n hide: function hide() {\n vsubmitting.setAttribute('style', 'display:none;');\n _root.nodata.hide();\n }\n };\n\n var _mark = _root.el.querySelector('.vmark');\n // alert\n _root.alert = {\n /**\n * {\n * type:0/1,\n * text:'',\n * ctxt:'',\n * otxt:'',\n * cb:fn\n * }\n *\n * @param {Object} o\n */\n show: function show(o) {\n _mark.innerHTML = '
    ' + o.text + '
    ';\n var _vbtns = _mark.querySelector('.vbtns');\n var _cBtn = '';\n var _oBtn = '';\n _vbtns.innerHTML = '' + _cBtn + (o.type && _oBtn);\n _mark.querySelector('.vcancel').addEventListener('click', function (e) {\n _root.alert.hide();\n });\n _mark.setAttribute('style', 'display:block;');\n if (o && o.type) {\n var _ok = _mark.querySelector('.vsure');\n Event.on('click', _ok, function (e) {\n _root.alert.hide();\n o.cb && o.cb();\n });\n }\n },\n hide: function hide() {\n _mark.setAttribute('style', 'display:none;');\n }\n };\n\n _root.loading.show();\n var query1 = new _root.v.Query('Comment');\n query1.equalTo('url', defaultComment['url']);\n var query2 = new _root.v.Query('Comment');\n query2.equalTo('url', defaultComment['url'] + '/');\n var query = AV.Query.or(query1, query2);\n query.count().then(function (count) {\n _root.el.querySelector('.count').innerHTML = '' + count;\n _root.bind(option);\n }, function (error) {\n console.log(error);\n });\n }\n\n /**\n * Bind Event\n */\n\n }, {\n key: 'bind',\n value: function bind(option) {\n var _root = this;\n // Smile pictures\n var vsmiles = _root.el.querySelector('.vsmile-icons');\n Event.on('click', vsmiles, function (e) {\n var textField = _root.el.querySelector('.veditor');\n var imgSrc = e.target.src;\n if (typeof imgSrc == 'undefined') return;\n // var tag = \" ![](/\" + imgSrc.replace(/^.*\\/(.*\\.gif)$/, '$1') + \") \";\n var tag = \"!(:\" + decodeURI(imgSrc).replace(/^.*\\/(.*)$/, '$1') + \":)\";\n if (document.selection) {\n textField.focus();\n sel = document.selection.createRange();\n sel.text = tag;\n textField.focus();\n } else if (textField.selectionStart || textField.selectionStart == '0') {\n var startPos = textField.selectionStart;\n var endPos = textField.selectionEnd;\n var cursorPos = endPos;\n textField.value = textField.value.substring(0, startPos) + tag + textField.value.substring(endPos, textField.value.length);\n cursorPos += tag.length;\n textField.focus();\n textField.selectionStart = cursorPos;\n textField.selectionEnd = cursorPos;\n } else {\n textField.value += tag;\n textField.focus();\n }\n defaultComment[\"comment\"] = textField.value;\n var submitBtn = _root.el.querySelector('.vsubmit');\n if (submitBtn.getAttribute('disabled')) submitBtn.removeAttribute('disabled');\n });\n var comment_trigger = _root.el.querySelector('.comment_trigger');\n Event.on('click', comment_trigger, function (e) {\n comment_trigger.setAttribute('style', 'display:none');\n _root.el.querySelector('.auth-section').removeAttribute('style');\n _root.el.querySelector('.veditor').focus();\n });\n\n // Query && show comment list\n\n var expandEvt = function expandEvt(el) {\n if (el.offsetHeight > 180) {\n el.classList.add('expand');\n Event.on('click', el, function (e) {\n el.setAttribute('class', 'vcomment');\n });\n }\n };\n\n var commonQuery = function commonQuery() {\n var query1 = new _root.v.Query('Comment');\n query1.equalTo('url', defaultComment['url']);\n var query2 = new _root.v.Query('Comment');\n query2.equalTo('url', defaultComment['url'] + '/');\n var query = AV.Query.or(query1, query2);\n query.notEqualTo('isSpam', true);\n query.select(['nick', 'comment', 'link', 'rid', 'emailHash']);\n query.addDescending('createdAt');\n return query;\n };\n\n var num = 1;\n var query = function query() {\n var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n\n _root.loading.show();\n var size = 10;\n var count = Number(_root.el.querySelector('.count').innerText);\n var cq = commonQuery();\n cq.limit(size);\n cq.skip((n - 1) * size);\n cq.find().then(function (rets) {\n var len = rets.length;\n if (len) {\n // _root.el.querySelector('.vlist').innerHTML = '';\n for (var i = 0; i < len; i++) {\n insertComment(rets[i], false);\n }\n var _vpage = _root.el.querySelector('.vpage');\n _vpage.innerHTML = size * n < count ? '
    \\u52A0\\u8F7D\\u66F4\\u591A\\u8BC4\\u8BBA\\uFF08\\u5269\\u4F59' + (count - size * n) + '/' + count + '\\u6761\\uFF09
    ' : '';\n var _vmore = _vpage.querySelector('#vmore');\n if (_vmore) {\n Event.on('click', _vmore, function (e) {\n _vpage.innerHTML = '';\n query(++num);\n });\n }\n }\n _root.loading.hide();\n }).catch(function (ex) {\n console.log(ex);\n _root.loading.hide();\n });\n };\n query();\n\n var insertComment = function insertComment(ret) {\n var top = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var _vcard = document.createElement('li');\n _vcard.setAttribute('class', 'vcard');\n _vcard.setAttribute('id', ret.id);\n var emailHash = ret.get('emailHash');\n var gravatar_url = GRAVATAR_BASE_URL + emailHash + '?size=80&d=https%3a%2f%2fgravatar.loli.net%2favatar%2f9e63c80900d106cbbec5a9f4ea433a3e.jpg%3fsize%3d80';\n // language=HTML\n _vcard.innerHTML = '\\n
    \\n
    \\n ' + (ret.get('link') ? ' ' + ret.get(\"nick\") + '' : '' + ret.get(\"nick\") + '') + '\\n \\u2022\\n ' + timeAgo(ret.get(\"createdAt\")) + '\\n \\u56DE\\u590D\\n
    \\n
    ' + ret.get('comment') + '
    \\n
    ';\n var _vlist = _root.el.querySelector('.vlist');\n var _vlis = _vlist.querySelectorAll('li');\n var _vat = _vcard.querySelector('.vat');\n var _as = _vcard.querySelectorAll('a');\n for (var i = 0, len = _as.length; i < len; i++) {\n var item = _as[i];\n if (item && item.getAttribute('class') != 'at') {\n item.setAttribute('target', '_blank');\n item.setAttribute('rel', 'nofollow');\n }\n }\n if (!top) _vlist.appendChild(_vcard);else _vlist.insertBefore(_vcard, _vlis[0]);\n var _vcontent = _vcard.querySelector('.vcomment');\n expandEvt(_vcontent);\n bindAtEvt(_vat);\n };\n\n var mapping = {\n veditor: \"comment\",\n vnick: \"nick\",\n vlink: \"link\",\n vmail: 'mail'\n };\n var inputs = {};\n for (var i in mapping) {\n if (mapping.hasOwnProperty(i)) {\n (function () {\n var _v = mapping[i];\n var _el = _root.el.querySelector('.' + i);\n inputs[_v] = _el;\n Event.on('input', _el, function (e) {\n // defaultComment[_v] = HtmlUtil.encode(_el.value.replace(/(^\\s*)|(\\s*$)/g, \"\"));\n defaultComment[_v] = _el.value;\n });\n })();\n }\n }\n\n // cache\n var getCache = function getCache() {\n var s = store && store.getItem('ValineCache');\n if (!!s) {\n s = JSON.parse(s);\n var m = ['nick', 'link', 'mail'];\n for (var _i in m) {\n var k = m[_i];\n _root.el.querySelector('.v' + k).value = s[k];\n defaultComment[k] = s[k];\n }\n if (s['mail'] != '') {\n var el = _root.el.querySelector('.visitor_avatar');\n el.setAttribute('src', GRAVATAR_BASE_URL + crypto(s['mail'].toLowerCase().trim()) + '?size=80&d=https%3a%2f%2fgravatar.loli.net%2favatar%2f9e63c80900d106cbbec5a9f4ea433a3e.jpg%3fsize%3d80');\n }\n }\n };\n getCache();\n\n // reset form\n _root.reset = function () {\n for (var _i2 in mapping) {\n if (mapping.hasOwnProperty(_i2)) {\n var _v = mapping[_i2];\n var _el = _root.el.querySelector('.' + _i2);\n _el.value = \"\";\n defaultComment[_v] = \"\";\n }\n }\n defaultComment['rid'] = '';\n defaultComment['nick'] = '';\n getCache();\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n }\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n }\n };\n\n // submit\n var submitBtn = _root.el.querySelector('.vsubmit');\n var submitEvt = function submitEvt(e) {\n if (submitBtn.getAttribute('disabled')) {\n _root.alert.show({\n type: 0,\n text: '再等等,评论正在提交中ヾ(๑╹◡╹)ノ\"',\n ctxt: '好的'\n });\n return;\n }\n if (defaultComment.comment == '') {\n inputs['comment'].focus();\n return;\n }\n if (defaultComment.nick == '') {\n inputs['nick'].focus();\n return;\n }\n // render markdown\n defaultComment.comment = xss(md(defaultComment.comment.replace(/!\\(:(.*?\\.\\w+):\\)/g, '\"$1\"')), {\n onIgnoreTagAttr: function onIgnoreTagAttr(tag, name, value, isWhiteAttr) {\n if (name === 'class') {\n return name + '=\"' + xss.escapeAttrValue(value) + '\"';\n }\n }\n });\n var idx = defaultComment.comment.indexOf(defaultComment.at);\n if (idx > -1 && defaultComment.at != '') {\n var at = '' + defaultComment.at + '';\n defaultComment.comment = defaultComment.comment.replace(defaultComment.at, at);\n }\n // veirfy\n var mailRet = check.mail(defaultComment.mail);\n var linkRet = check.link(defaultComment.link);\n defaultComment['mail'] = mailRet.k ? mailRet.v : '';\n defaultComment['link'] = linkRet.k ? linkRet.v : '';\n\n if (!mailRet.k && !linkRet.k) {\n _root.alert.show({\n type: 0,\n text: '您的网址和邮箱格式不正确,请修正后提交!',\n ctxt: '返回修改'\n });\n } else if (!mailRet.k) {\n _root.alert.show({\n type: 0,\n text: '请认真评论并填写正确的邮箱地址!
    已开启隐私防护不会泄露您的个人信息,了解反垃圾系统如何处理您的数据。',\n ctxt: '返回修改'\n });\n } else if (!linkRet.k) {\n _root.alert.show({\n type: 0,\n text: '您的网址格式不正确,请修正后提交!',\n ctxt: '返回修改'\n });\n } else {\n commitEvt();\n }\n };\n\n var smile_btn = _root.el.querySelector('.vemoji-btn');\n var smile_icons = _root.el.querySelector('.vsmile-icons');\n Event.on('click', smile_btn, function (e) {\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n }\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n } else {\n smile_icons.removeAttribute('style');\n smile_icons.setAttribute('triggered', 1);\n }\n });\n\n var preview_btn = _root.el.querySelector('.vpreview-btn');\n var preview_text = _root.el.querySelector('.vpreview-text');\n Event.on('click', preview_btn, function (e) {\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n }\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n } else {\n if (defaultComment.comment == '') {\n inputs['comment'].focus();\n return;\n }\n // render markdown\n preview_text.innerHTML = xss(md(defaultComment.comment.replace(/!\\(:(.*?\\.\\w+):\\)/g, '\"$1\"')), {\n onIgnoreTagAttr: function onIgnoreTagAttr(tag, name, value, isWhiteAttr) {\n if (name === 'class') {\n return name + '=\"' + xss.escapeAttrValue(value) + '\"';\n }\n }\n });\n preview_text.removeAttribute('style');\n preview_text.setAttribute('triggered', 1);\n }\n });\n\n // setting access\n var getAcl = function getAcl() {\n var acl = new _root.v.ACL();\n acl.setPublicReadAccess(true);\n acl.setPublicWriteAccess(false);\n return acl;\n };\n\n var commitEvt = function commitEvt() {\n submitBtn.setAttribute('disabled', true);\n _root.submitting.show();\n // 声明类型\n var Ct = _root.v.Object.extend('Comment');\n // 新建对象\n var comment = new Ct();\n for (var _i3 in defaultComment) {\n if (defaultComment.hasOwnProperty(_i3)) {\n if (_i3 === 'at') continue;\n var _v = defaultComment[_i3];\n comment.set(_i3, _v);\n }\n }\n comment.set('emailHash', crypto(defaultComment.mail.toLowerCase().trim()));\n comment.setACL(getAcl());\n comment.save().then(function (commentItem) {\n store && store.setItem('ValineCache', JSON.stringify({\n nick: defaultComment['nick'],\n link: defaultComment['link'],\n mail: defaultComment['mail']\n }));\n var _count = _root.el.querySelector('.count');\n _count.innerText = Number(_count.innerText) + 1;\n insertComment(commentItem, true);\n submitBtn.removeAttribute('disabled');\n _root.submitting.hide();\n _root.nodata.hide();\n _root.reset();\n }).catch(function (ex) {\n _root.submitting.hide();\n });\n };\n\n // at event\n var bindAtEvt = function bindAtEvt(el) {\n Event.on('click', el, function (e) {\n var at = el.getAttribute('at');\n var rid = el.getAttribute('rid');\n defaultComment['rid'] = rid;\n defaultComment['at'] = at;\n inputs['comment'].value = at + ' \\uFF0C' + inputs['comment'].value;\n inputs['comment'].focus();\n // remove comment trigger\n _root.el.querySelector('.comment_trigger').setAttribute('style', 'display:none');\n _root.el.querySelector('.auth-section').removeAttribute('style');\n _root.el.querySelector('.veditor').focus();\n });\n };\n\n Event.off('click', submitBtn, submitEvt);\n Event.on('click', submitBtn, submitEvt);\n }\n }]);\n\n return Valine;\n}();\n\nvar Event = {\n on: function on(type, el, handler, capture) {\n if (el.addEventListener) el.addEventListener(type, handler, capture || false);else if (el.attachEvent) el.attachEvent('on' + type, handler);else el['on' + type] = handler;\n },\n off: function off(type, el, handler, capture) {\n if (el.removeEventListener) el.removeEventListener(type, handler, capture || false);else if (el.detachEvent) el.detachEvent('on' + type, handler);else el['on' + type] = null;\n }\n};\n\nvar check = {\n mail: function mail(m) {\n return {\n k: /\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}/.test(m),\n v: m\n };\n },\n link: function link(l) {\n if (l.length > 0) {\n l = /^(http|https)/.test(l) ? l : 'http://' + l;\n }\n return {\n k: l.length > 0 ? /(http|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/.test(l) : true,\n v: l\n };\n }\n};\n\nvar HtmlUtil = {\n\n // /**\n // *\n // * 将str中的链接转换成a标签形式\n // * @param {String} str\n // * @returns\n // */\n // transUrl(str) {\n // let reg = /(http:\\/\\/|https:\\/\\/)((\\w|=|\\?|\\.|\\/|&|-)+)/g;\n // return str.replace(reg, '$1$2');\n // },\n /**\n * HTML转码\n * @param {String} str\n * @return {String} result\n */\n encode: function encode(str) {\n return !!str ? str.replace(/&/g, \"&\").replace(//g, \">\").replace(/ /g, \" \").replace(/\\'/g, \"'\").replace(/\\\"/g, \""\") : '';\n },\n\n /**\n * HTML解码\n * @param {String} str\n * @return {String} result\n */\n decode: function decode(str) {\n return !!str ? str.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/ /g, \" \").replace(/'/g, \"\\'\").replace(/"/g, \"\\\"\") : '';\n }\n};\n\nvar dateFormat = function dateFormat(date) {\n var vDay = padWithZeros(date.getDate(), 2);\n var vMonth = padWithZeros(date.getMonth() + 1, 2);\n var vYear = padWithZeros(date.getFullYear(), 2);\n // var vHour = padWithZeros(date.getHours(), 2);\n // var vMinute = padWithZeros(date.getMinutes(), 2);\n // var vSecond = padWithZeros(date.getSeconds(), 2);\n return vYear + '-' + vMonth + '-' + vDay;\n // return `${vYear}-${vMonth}-${vDay} ${vHour}:${vMinute}:${vSecond}`;\n};\n\nvar timeAgo = function timeAgo(date) {\n try {\n var oldTime = date.getTime();\n var currTime = new Date().getTime();\n var diffValue = currTime - oldTime;\n\n var days = Math.floor(diffValue / (24 * 3600 * 1000));\n if (days === 0) {\n //计算相差小时数\n var leave1 = diffValue % (24 * 3600 * 1000); //计算天数后剩余的毫秒数\n var hours = Math.floor(leave1 / (3600 * 1000));\n if (hours === 0) {\n //计算相差分钟数\n var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数\n var minutes = Math.floor(leave2 / (60 * 1000));\n if (minutes === 0) {\n //计算相差秒数\n var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数\n var seconds = Math.round(leave3 / 1000);\n return seconds + ' 秒前';\n }\n return minutes + ' 分钟前';\n }\n return hours + ' 小时前';\n }\n if (days < 0) return '刚刚';else if (days < 30) return days + ' 天前';else if (days < 365) return Math.floor(days / 30) + ' 月前';else return Math.floor(days / 365) + ' 年前';\n return dateFormat(date);\n } catch (error) {\n console.log(error);\n }\n};\n\nvar padWithZeros = function padWithZeros(vNumber, width) {\n var numAsString = vNumber.toString();\n while (numAsString.length < width) {\n numAsString = '0' + numAsString;\n }\n return numAsString;\n};\n\nvar loadJS = function loadJS(url, success) {\n var domScript = document.createElement('script');\n domScript.src = url;\n success = success || function () {};\n domScript.onload = domScript.onreadystatechange = function () {\n if (!this.readyState || 'loaded' === this.readyState || 'complete' === this.readyState) {\n success();\n this.onload = this.onreadystatechange = null;\n // this.parentNode.removeChild(this);\n }\n };\n document.getElementsByTagName('head')[0].appendChild(domScript);\n};\n\nvar getIp = function getIp() {\n $.getJSON(\"https://api.ipify.org/?format=json\", function (json) {\n defaultComment['ip'] = json.ip;\n });\n};\n\nmodule.exports = Valine;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(12)(false);\n// imports\n\n\n// module\nexports.push([module.i, \"@charset \\\"UTF-8\\\";\\n.valine {\\n /************ Loading ************/ }\\n .valine * {\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n font-size: 14px;\\n font-weight: normal;\\n line-height: 1.42857143;\\n color: #3c484e;\\n -webkit-transition: all .3s ease;\\n transition: all .3s ease;\\n margin: initial;\\n padding: initial; }\\n .valine .vemoticon-img {\\n display: inline-block;\\n max-height: 32px;\\n margin: 0 2px; }\\n .valine .vwrap {\\n overflow: hidden;\\n position: relative;\\n border: 1px solid #ededed; }\\n .valine .vwrap .veditor-area {\\n position: inherit; }\\n .valine .vwrap .btn-wrap {\\n position: absolute !important;\\n right: 1.5em;\\n bottom: 0; }\\n .valine .vwrap .btn-wrap .vfunction-btn {\\n display: inline-block; }\\n .valine .vwrap .btn-wrap .vfunction-btn svg {\\n fill: #bbb;\\n cursor: pointer; }\\n .valine .vwrap .btn-wrap .vfunction-btn svg:hover {\\n fill: #777777; }\\n .valine .vwrap .btn-wrap .vfunction-btn svg:active {\\n fill: #777777; }\\n .valine .vwrap .vextra-area {\\n margin: .4em 0 .4em .5em; }\\n .valine .vwrap .vextra-area .vsmile-icons {\\n padding: .2em 0;\\n border-top: 1px solid #ededed;\\n border-radius: 0;\\n margin: .3em 0;\\n max-height: 64px;\\n overflow: auto; }\\n .valine .vwrap .vextra-area .vsmile-icons img {\\n display: inline-block;\\n width: auto !important;\\n height: 28px !important;\\n margin-right: 4px;\\n cursor: pointer; }\\n .valine .vwrap .vextra-area .vpreview-text {\\n border-top: 1px solid #ededed;\\n border-radius: 0;\\n padding: .5em .5em;\\n margin: .3em 0;\\n max-height: 10em;\\n overflow: auto; }\\n .valine .vwrap .textarea-wrapper {\\n color: #4b5b62;\\n width: 100%;\\n height: 100%;\\n background: #fff;\\n position: relative;\\n border-radius: 0; }\\n .valine .vwrap .textarea-wrapper .comment_trigger {\\n position: absolute;\\n z-index: 10;\\n width: 100%;\\n height: 100%;\\n background-color: #fff;\\n padding: 0 1em; }\\n .valine .vwrap .textarea-wrapper .comment_trigger .avatar {\\n position: absolute;\\n width: 3em;\\n height: 3em;\\n position: absolute;\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%); }\\n .valine .vwrap .textarea-wrapper .comment_trigger .avatar img {\\n border-radius: 100%;\\n width: 3em;\\n height: 3em; }\\n .valine .vwrap .textarea-wrapper .comment_trigger .trigger_title {\\n position: absolute;\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%);\\n color: #aaa;\\n font-size: 1.4em;\\n margin-left: 3.5em; }\\n .valine .vwrap .textarea-wrapper textarea {\\n padding: 1em 1em 0;\\n color: #4b5b62;\\n width: 100%;\\n background: #fff;\\n border: none;\\n resize: none;\\n min-height: 6em;\\n margin: 0; }\\n .valine .vwrap .textarea-wrapper textarea:focus {\\n border-color: #c4c8cb;\\n outline: 0; }\\n .valine .vwrap .trigger-section {\\n display: none; }\\n .valine .vwrap .auth-section {\\n display: -webkit-box;\\n display: flex;\\n display: -ms-flexbox;\\n background: #fbfbfb;\\n padding: .3em .6em; }\\n .valine .vwrap .auth-section .input-wrapper {\\n -ms-flex: 1 1 27%;\\n -webkit-box-flex: 1;\\n flex: 1 1 27%;\\n width: 27%; }\\n .valine .vwrap .auth-section .input-wrapper input {\\n color: #4b5b62;\\n background: #fafafa;\\n border: none;\\n border-radius: 0;\\n padding: .6em;\\n margin: 0;\\n line-height: 2;\\n font-size: 1em !important; }\\n .valine .vwrap .auth-section .input-wrapper input:focus {\\n border-color: #c4c8cb;\\n outline: 0; }\\n .valine .vwrap .auth-section input {\\n width: 100%; }\\n .valine .vwrap .auth-section .post-action {\\n -ms-flex: 1 1 19%;\\n -webkit-box-flex: 1;\\n flex: 1 1 19%;\\n width: 19%;\\n margin: 0;\\n padding: 2px 0 0; }\\n .valine .vwrap .auth-section .post-action button {\\n color: #fff;\\n width: 100%;\\n line-height: 2;\\n font-weight: bolder;\\n border-radius: 30px;\\n border: 1px solid #e9eff3;\\n background-color: #111;\\n padding: .4em .5em;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n font-size: 1em !important; }\\n .valine .vwrap .auth-section .post-action button:hover {\\n background-color: #444; }\\n @media screen and (max-width: 720px) {\\n .valine .vwrap .auth-section {\\n display: block; }\\n .valine .vwrap .auth-section .input-wrapper, .valine .vwrap .auth-section .post-action {\\n -ms-flex: 1 1 100%;\\n -webkit-box-flex: 1;\\n flex: 1 1 100%;\\n padding-right: 0;\\n width: 100%; } }\\n .valine .vwrap .vmark {\\n position: absolute;\\n background: rgba(0, 0, 0, 0.65);\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0; }\\n .valine .vwrap .vmark .valert {\\n padding: 2em 0 0 0; }\\n .valine .vwrap .vmark .valert .vtext {\\n color: #fff;\\n padding: 15px; }\\n .valine .vwrap .vmark .valert .vcode {\\n width: 75px;\\n border-radius: 5px;\\n background: #dedede; }\\n .valine .vwrap .vmark .valert .vcode:focus {\\n border-color: #3090e4;\\n background-color: #fff; }\\n @media screen and (max-width: 720px) {\\n .valine .vwrap .vmark .valert {\\n padding: 8em 0; }\\n .valine .vwrap .vmark .valert .vtext {\\n color: #fff;\\n padding: 10px; } }\\n .valine .info {\\n padding: 5px;\\n margin: .5em 0; }\\n .valine .info .col {\\n display: inline-block;\\n vertical-align: middle; }\\n .valine .info svg {\\n margin-right: 2px;\\n overflow: hidden;\\n fill: currentColor; }\\n .valine .power {\\n color: #999;\\n font-size: 0.625em !important;\\n position: relative; }\\n .valine a {\\n text-decoration: none;\\n color: #3eb0ef;\\n border: none; }\\n .valine .txt-center {\\n text-align: center; }\\n .valine .float-right {\\n float: right !important; }\\n .valine .pd5 {\\n padding: 5px; }\\n .valine .pd10 {\\n padding: 10px; }\\n .valine .vbtn {\\n display: inline-block;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n border: 1px solid #e9eff3;\\n background-color: #333;\\n border-radius: .1em;\\n color: #fff;\\n padding: .5em 1.5em;\\n cursor: pointer;\\n white-space: nowrap;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n outline: none;\\n min-width: 60px;\\n max-width: 100%;\\n margin: 0 1em; }\\n .valine .vbtn:active,\\n .valine .vbtn:hover {\\n border-color: #666; }\\n .valine .vpage {\\n margin: 1.5em 0; }\\n .valine .vpage .more {\\n width: 100%;\\n height: 2.5em;\\n line-height: 2.5em;\\n text-align: center;\\n cursor: pointer;\\n color: #666;\\n background: #fafafa;\\n border-radius: 1.25em; }\\n .valine .vlist {\\n width: 100%;\\n list-style: none;\\n margin: 0;\\n padding: 0; }\\n .valine .vlist .vcard {\\n display: -webkit-box;\\n display: flex;\\n display: -ms-flexbox;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row;\\n padding: 2em 1em 1.5em;\\n border: 1px solid rgba(150, 150, 150, 0.18);\\n margin: 2em 0 0;\\n list-style: none;\\n border-radius: 5px;\\n word-break: break-all; }\\n .valine .vlist .vcard:hover {\\n border: 1px solid rgba(150, 150, 150, 0.25); }\\n .valine .vlist .vcard:hover .vat {\\n background: #111 !important; }\\n .valine .vlist .vcard .vat {\\n margin: -2.1em 0 0;\\n float: right;\\n background: transparent;\\n color: #ffffff;\\n padding: .2em 1em;\\n line-height: 1.2;\\n cursor: pointer;\\n word-break: keep-all;\\n white-space: nowrap;\\n text-transform: uppercase; }\\n .valine .vlist .vcard .vavatar {\\n -webkit-box-flex: 0;\\n flex: 0 0 auto;\\n -ms-flex: 0 0 auto;\\n margin-right: 1em;\\n margin-top: 0.1em;\\n display: inline-block;\\n height: 3em;\\n width: 3em;\\n position: relative;\\n border-radius: 50%; }\\n .valine .vlist .vcard .text-wrapper {\\n overflow: visible;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n width: 100%; }\\n .valine .vlist .vcard .text-wrapper .vhead {\\n line-height: 1;\\n margin-bottom: 1em; }\\n .valine .vlist .vcard .text-wrapper .vhead .vname {\\n font-weight: bolder;\\n font-size: 1em;\\n color: rgba(0, 0, 0, 0.7); }\\n .valine .vlist .vcard .text-wrapper .vhead .spacer {\\n color: #ccc;\\n margin-left: 0.3em;\\n margin-right: 0.3em; }\\n .valine .vlist .vcard .text-wrapper .vhead .vtime {\\n color: #a9a4a4;\\n display: inline-block;\\n font-weight: normal; }\\n .valine .vlist .vcard .text-wrapper .vcomment {\\n position: relative; }\\n .valine .vlist .vcard .text-wrapper .vcomment blockquote p {\\n padding-left: 12px; }\\n .valine .vlist .vcard .text-wrapper .vcomment p {\\n word-wrap: break-word;\\n white-space: pre-wrap;\\n word-break: break-all;\\n text-align: justify;\\n line-height: 1.8; }\\n .valine .vlist .vcard .text-wrapper .vcomment pre {\\n overflow: auto;\\n padding: 6px 10px;\\n word-wrap: break-word;\\n color: #555;\\n background: #f5f2f2;\\n border-radius: 3px;\\n font-size: .875rem;\\n margin: 5px 0; }\\n .valine .vlist .vcard .text-wrapper .vcomment.expand {\\n cursor: pointer;\\n max-height: 11.25rem;\\n overflow: hidden; }\\n .valine .vlist .vcard .text-wrapper .vcomment.expand:before {\\n display: block;\\n content: \\\"\\\";\\n position: absolute;\\n width: 100%;\\n left: 0;\\n top: 0;\\n bottom: 3.15rem;\\n pointer-events: none;\\n background: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0)), to(rgba(255, 255, 255, 0.8)));\\n background: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.8)); }\\n .valine .vlist .vcard .text-wrapper .vcomment.expand:after {\\n display: block;\\n content: \\\"\\\\5C55\\\\5F00 \\\";\\n text-align: center;\\n color: #828586;\\n position: absolute;\\n width: 100%;\\n height: 3.15rem;\\n line-height: 3.15rem;\\n left: 0;\\n bottom: 0;\\n pointer-events: none;\\n background: rgba(255, 255, 255, 0.9); }\\n .valine .vlist .vempty {\\n padding: 20px;\\n text-align: center;\\n color: #999; }\\n .valine .spinner {\\n margin: 10px auto;\\n width: 50px;\\n height: 30px;\\n text-align: center;\\n font-size: 10px; }\\n .valine .spinner > div {\\n background-color: #9c9c9c;\\n height: 100%;\\n width: 6px;\\n margin-right: 3px;\\n display: inline-block;\\n -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;\\n animation: sk-stretchdelay 1.2s infinite ease-in-out; }\\n .valine .spinner .r2 {\\n -webkit-animation-delay: -1.1s;\\n animation-delay: -1.1s; }\\n .valine .spinner .r3 {\\n -webkit-animation-delay: -1.0s;\\n animation-delay: -1.0s; }\\n .valine .spinner .r4 {\\n -webkit-animation-delay: -0.9s;\\n animation-delay: -0.9s; }\\n .valine .spinner .r5 {\\n -webkit-animation-delay: -0.8s;\\n animation-delay: -0.8s; }\\n\\n@-webkit-keyframes sk-stretchdelay {\\n 0%,\\n 40%,\\n 100% {\\n -webkit-transform: scaleY(0.4); }\\n 20% {\\n -webkit-transform: scaleY(1); } }\\n\\n@keyframes sk-stretchdelay {\\n 0%,\\n 40%,\\n 100% {\\n transform: scaleY(0.4);\\n -webkit-transform: scaleY(0.4); }\\n 20% {\\n transform: scaleY(1);\\n -webkit-transform: scaleY(1); } }\\n\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar DEFAULT = __webpack_require__(2);\nvar parseStyle = __webpack_require__(14);\nvar _ = __webpack_require__(3);\n\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull (obj) {\n return (obj === undefined || obj === null);\n}\n\n/**\n * 浅拷贝对象\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject (obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n * - {Object} whiteList\n * - {Function} onAttr\n * - {Function} onIgnoreAttr\n * - {Function} safeAttrValue\n */\nfunction FilterCSS (options) {\n options = shallowCopyObject(options || {});\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onAttr = options.onAttr || DEFAULT.onAttr;\n options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n this.options = options;\n}\n\nFilterCSS.prototype.process = function (css) {\n // 兼容各种奇葩输入\n css = css || '';\n css = css.toString();\n if (!css) return '';\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onAttr = options.onAttr;\n var onIgnoreAttr = options.onIgnoreAttr;\n var safeAttrValue = options.safeAttrValue;\n\n var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n\n var check = whiteList[name];\n var isWhite = false;\n if (check === true) isWhite = check;\n else if (typeof check === 'function') isWhite = check(value);\n else if (check instanceof RegExp) isWhite = check.test(value);\n if (isWhite !== true) isWhite = false;\n\n // 如果过滤后 value 为空则直接忽略\n value = safeAttrValue(name, value);\n if (!value) return;\n\n var opts = {\n position: position,\n sourcePosition: sourcePosition,\n source: source,\n isWhite: isWhite\n };\n\n if (isWhite) {\n\n var ret = onAttr(name, value, opts);\n if (isNull(ret)) {\n return name + ':' + value;\n } else {\n return ret;\n }\n\n } else {\n\n var ret = onIgnoreAttr(name, value, opts);\n if (!isNull(ret)) {\n return ret;\n }\n\n }\n });\n\n return retCSS;\n};\n\n\nmodule.exports = FilterCSS;\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar _ = __webpack_require__(3);\n\n\n/**\n * 解析style\n *\n * @param {String} css\n * @param {Function} onAttr 处理属性的函数\n * 参数格式: function (sourcePosition, position, name, value, source)\n * @return {String}\n */\nfunction parseStyle (css, onAttr) {\n css = _.trimRight(css);\n if (css[css.length - 1] !== ';') css += ';';\n var cssLength = css.length;\n var isParenthesisOpen = false;\n var lastPos = 0;\n var i = 0;\n var retCSS = '';\n\n function addNewAttr () {\n // 如果没有正常的闭合圆括号,则直接忽略当前属性\n if (!isParenthesisOpen) {\n var source = _.trim(css.slice(lastPos, i));\n var j = source.indexOf(':');\n if (j !== -1) {\n var name = _.trim(source.slice(0, j));\n var value = _.trim(source.slice(j + 1));\n // 必须有属性名称\n if (name) {\n var ret = onAttr(lastPos, retCSS.length, name, value, source);\n if (ret) retCSS += ret + '; ';\n }\n }\n }\n lastPos = i + 1;\n }\n\n for (; i < cssLength; i++) {\n var c = css[i];\n if (c === '/' && css[i + 1] === '*') {\n // 备注开始\n var j = css.indexOf('*/', i + 2);\n // 如果没有正常的备注结束,则后面的部分全部跳过\n if (j === -1) break;\n // 直接将当前位置调到备注结尾,并且初始化状态\n i = j + 1;\n lastPos = i + 1;\n isParenthesisOpen = false;\n } else if (c === '(') {\n isParenthesisOpen = true;\n } else if (c === ')') {\n isParenthesisOpen = false;\n } else if (c === ';') {\n if (isParenthesisOpen) {\n // 在圆括号里面,忽略\n } else {\n addNewAttr();\n }\n } else if (c === '\\n') {\n addNewAttr();\n }\n }\n\n return _.trim(retCSS);\n}\n\nmodule.exports = parseStyle;\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(selector) {\n\t\tif (typeof memo[selector] === \"undefined\") {\n\t\t\tmemo[selector] = fn.call(this, selector);\n\t\t}\n\n\t\treturn memo[selector]\n\t};\n})(function (target) {\n\treturn document.querySelector(target)\n});\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = __webpack_require__(16);\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of \n
    \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    已有 0 条评论
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    `;\n _root.el.innerHTML = eleHTML;\n // Empty Data\n let vempty = _root.el.querySelector('.vempty');\n _root.nodata = {\n show(txt) {\n vempty.innerHTML = txt || `还没有评论哦,快来抢沙发吧!`;\n vempty.setAttribute('style', 'display:block;');\n },\n hide() {\n vempty.setAttribute('style', 'display:none;');\n }\n }\n _root.nodata.show();\n\n // load smiles image\n let _smile_wrapper = _root.el.querySelector('.vsmile-icons'); \n let smile_names = option.emoticon_list || [];\n for(let i in smile_names) {\n let img = document.createElement('img');\n img.setAttribute('src', `${option.emoticon_url}/${smile_names[i]}`);\n _smile_wrapper.appendChild(img) ;\n }\n if (!disable_av_init) {\n av.init({\n appId: option.app_id || option.appId,\n appKey: option.app_key || option.appKey\n });\n disable_av_init = true;\n }\n _root.v = av;\n\n } catch (ex) {\n let issue = 'https://github.com/DesertsP/Valine/issues';\n if (_root.el) _root.nodata.show(`
    ${ex}
    Valine:${_root.version}
    反馈:${issue}
    `);\n else console && console.log(`%c${ex}\\n%cValine%c${_root.version} ${issue}`, 'color:red;', 'background:#000;padding:5px;line-height:30px;color:#fff;', 'background:#456;line-height:30px;padding:5px;color:#fff;');\n return;\n }\n\n // loading\n let _spinner = `
    `;\n let vloading = _root.el.querySelector('.vloading');\n vloading.innerHTML = _spinner;\n // loading control\n _root.loading = {\n show() {\n vloading.setAttribute('style', 'display:block;');\n _root.nodata.hide();\n },\n hide() {\n vloading.setAttribute('style', 'display:none;');\n _root.el.querySelectorAll('.vcard').length === 0 && _root.nodata.show();\n }\n };\n\n let vsubmitting = _root.el.querySelector('.vsubmitting');\n vsubmitting.innerHTML = _spinner;\n _root.submitting = {\n show() {\n vsubmitting.setAttribute('style', 'display:block;');\n },\n hide() {\n vsubmitting.setAttribute('style', 'display:none;');\n _root.nodata.hide();\n }\n };\n\n let _mark = _root.el.querySelector('.vmark');\n // alert\n _root.alert = {\n /**\n * {\n * type:0/1,\n * text:'',\n * ctxt:'',\n * otxt:'',\n * cb:fn\n * }\n *\n * @param {Object} o\n */\n show(o) {\n _mark.innerHTML = `
    ${o.text}
    `;\n let _vbtns = _mark.querySelector('.vbtns');\n let _cBtn = ``;\n let _oBtn = ``;\n _vbtns.innerHTML = `${_cBtn}${o.type && _oBtn}`;\n _mark.querySelector('.vcancel').addEventListener('click', function (e) {\n _root.alert.hide();\n });\n _mark.setAttribute('style', 'display:block;');\n if (o && o.type) {\n let _ok = _mark.querySelector('.vsure');\n Event.on('click', _ok, (e) => {\n _root.alert.hide();\n o.cb && o.cb();\n });\n }\n },\n hide() {\n _mark.setAttribute('style', 'display:none;');\n }\n }\n\n _root.loading.show();\n let query1 = new _root.v.Query('Comment');\n query1.equalTo('url', defaultComment['url']);\n let query2 = new _root.v.Query('Comment');\n query2.equalTo('url', defaultComment['url'] + '/');\n let query = AV.Query.or(query1, query2);\n query.count().then(function (count) {\n _root.el.querySelector('.count').innerHTML = `${count}`;\n _root.bind(option);\n }, function (error) {\n console.log(error);\n });\n }\n\n /**\n * Bind Event\n */\n bind(option) {\n let _root = this;\n // Smile pictures\n let vsmiles = _root.el.querySelector('.vsmile-icons');\n Event.on('click', vsmiles, (e) => {\n var textField = _root.el.querySelector('.veditor');\n let imgSrc = e.target.src;\n if ( typeof imgSrc == 'undefined' ) return;\n // var tag = \" ![](/\" + imgSrc.replace(/^.*\\/(.*\\.gif)$/, '$1') + \") \";\n var tag = \"!(:\" + decodeURI(imgSrc).replace(/^.*\\/(.*)$/, '$1') + \":)\";\n if (document.selection) {\n textField.focus();\n sel = document.selection.createRange();\n sel.text = tag;\n textField.focus();\n } else if (textField.selectionStart || textField.selectionStart == '0') {\n var startPos = textField.selectionStart;\n var endPos = textField.selectionEnd;\n var cursorPos = endPos;\n textField.value = textField.value.substring(0, startPos) + tag + textField.value.substring(endPos, textField.value.length);\n cursorPos += tag.length;\n textField.focus();\n textField.selectionStart = cursorPos;\n textField.selectionEnd = cursorPos\n } else {\n textField.value += tag;\n textField.focus()\n }\n defaultComment[\"comment\"] = textField.value;\n let submitBtn = _root.el.querySelector('.vsubmit');\n if (submitBtn.getAttribute('disabled')) submitBtn.removeAttribute('disabled');\n })\n let comment_trigger = _root.el.querySelector('.comment_trigger');\n Event.on('click', comment_trigger, (e) => {\n comment_trigger.setAttribute('style', 'display:none');\n _root.el.querySelector('.auth-section').removeAttribute('style');\n _root.el.querySelector('.veditor').focus();\n })\n\n // Query && show comment list\n\n let expandEvt = (el) => {\n if (el.offsetHeight > 180) {\n el.classList.add('expand');\n Event.on('click', el, (e) => {\n el.setAttribute('class', 'vcomment');\n })\n }\n };\n\n let commonQuery = () => {\n let query1 = new _root.v.Query('Comment');\n query1.equalTo('url', defaultComment['url']);\n let query2 = new _root.v.Query('Comment');\n query2.equalTo('url', defaultComment['url'] + '/');\n let query = AV.Query.or(query1, query2);\n query.notEqualTo('isSpam', true);\n query.select(['nick', 'comment', 'link', 'rid', 'emailHash']);\n query.addDescending('createdAt');\n return query;\n };\n\n var num = 1;\n let query = (n = 1) => {\n _root.loading.show();\n var size = 10;\n var count = Number(_root.el.querySelector('.count').innerText);\n let cq = commonQuery();\n cq.limit(size);\n cq.skip((n - 1) * size);\n cq.find().then(rets => {\n let len = rets.length;\n if (len) {\n // _root.el.querySelector('.vlist').innerHTML = '';\n for (let i = 0; i < len; i++) {\n insertComment(rets[i], false)\n }\n var _vpage = _root.el.querySelector('.vpage');\n _vpage.innerHTML = size * n < count ? `
    加载更多评论(剩余${count - size * n}/${count}条)
    ` : '';\n var _vmore = _vpage.querySelector('#vmore');\n if (_vmore) {\n Event.on('click', _vmore, (e) => {\n _vpage.innerHTML = '';\n query(++num)\n })\n }\n }\n _root.loading.hide();\n }).catch(ex => {\n console.log(ex);\n _root.loading.hide();\n })\n }\n query();\n\n let insertComment = (ret, top=true) => {\n let _vcard = document.createElement('li');\n _vcard.setAttribute('class', 'vcard');\n _vcard.setAttribute('id', ret.id);\n let emailHash = ret.get('emailHash')\n let gravatar_url = GRAVATAR_BASE_URL + emailHash + '?size=80&d=https%3a%2f%2fgravatar.loli.net%2favatar%2f9e63c80900d106cbbec5a9f4ea433a3e.jpg%3fsize%3d80';\n // language=HTML\n _vcard.innerHTML = `\n
    \n
    \n ${ret.get('link') ? ` ${ret.get(\"nick\")}` : `${ret.get(\"nick\")}`}\n \n ${timeAgo(ret.get(\"createdAt\"))}\n 回复\n
    \n
    ${ret.get('comment')}
    \n
    `;\n let _vlist = _root.el.querySelector('.vlist');\n let _vlis = _vlist.querySelectorAll('li');\n let _vat = _vcard.querySelector('.vat');\n let _as = _vcard.querySelectorAll('a');\n for (let i = 0, len = _as.length; i < len; i++) {\n let item = _as[i];\n if (item && item.getAttribute('class') != 'at') {\n item.setAttribute('target', '_blank');\n item.setAttribute('rel', 'nofollow');\n }\n }\n if (!top) _vlist.appendChild(_vcard);\n else _vlist.insertBefore(_vcard, _vlis[0]);\n let _vcontent = _vcard.querySelector('.vcomment');\n expandEvt(_vcontent);\n bindAtEvt(_vat);\n }\n\n let mapping = {\n veditor: \"comment\",\n vnick: \"nick\",\n vlink: \"link\",\n vmail: 'mail'\n };\n let inputs = {};\n for (let i in mapping) {\n if (mapping.hasOwnProperty(i)) {\n let _v = mapping[i];\n let _el = _root.el.querySelector(`.${i}`);\n inputs[_v] = _el;\n Event.on('input', _el, (e) => {\n // defaultComment[_v] = HtmlUtil.encode(_el.value.replace(/(^\\s*)|(\\s*$)/g, \"\"));\n defaultComment[_v] = _el.value;\n });\n }\n }\n\n // cache\n let getCache = () => {\n let s = store && store.getItem('ValineCache');\n if (!!s) {\n s = JSON.parse(s);\n let m = ['nick', 'link', 'mail'];\n for (let i in m) {\n let k = m[i];\n _root.el.querySelector(`.v${k}`).value = s[k];\n defaultComment[k] = s[k];\n }\n if (s['mail'] != '') {\n let el = _root.el.querySelector('.visitor_avatar');\n el.setAttribute('src', GRAVATAR_BASE_URL + crypto(s['mail'].toLowerCase().trim()) + '?size=80&d=https%3a%2f%2fgravatar.loli.net%2favatar%2f9e63c80900d106cbbec5a9f4ea433a3e.jpg%3fsize%3d80');\n }\n }\n }\n getCache();\n\n // reset form\n _root.reset = () => {\n for (let i in mapping) {\n if (mapping.hasOwnProperty(i)) {\n let _v = mapping[i];\n let _el = _root.el.querySelector(`.${i}`);\n _el.value = \"\";\n defaultComment[_v] = \"\";\n }\n }\n defaultComment['rid'] = '';\n defaultComment['nick'] = '';\n getCache();\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n }\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n }\n }\n\n // submit\n let submitBtn = _root.el.querySelector('.vsubmit');\n let submitEvt = (e) => {\n if (submitBtn.getAttribute('disabled')) {\n _root.alert.show({\n type: 0,\n text: '再等等,评论正在提交中ヾ(๑╹◡╹)ノ\"',\n ctxt: '好的'\n })\n return;\n }\n if (defaultComment.comment == '') {\n inputs['comment'].focus();\n return;\n }\n if (defaultComment.nick == '') {\n inputs['nick'].focus();\n return;\n }\n // render markdown\n defaultComment.comment = xss(md(defaultComment.comment.replace(/!\\(:(.*?\\.\\w+):\\)/g, \n `\"$1\"`)),\n {\n onIgnoreTagAttr: function (tag, name, value, isWhiteAttr) {\n if (name === 'class') {\n return name + '=\"' + xss.escapeAttrValue(value) + '\"';\n }\n }\n });\n let idx = defaultComment.comment.indexOf(defaultComment.at);\n if (idx > -1 && defaultComment.at != '') {\n let at = `${defaultComment.at}`;\n defaultComment.comment = defaultComment.comment.replace(defaultComment.at, at);\n }\n // veirfy\n let mailRet = check.mail(defaultComment.mail);\n let linkRet = check.link(defaultComment.link);\n defaultComment['mail'] = mailRet.k ? mailRet.v : '';\n defaultComment['link'] = linkRet.k ? linkRet.v : '';\n\n if (!mailRet.k && !linkRet.k) {\n _root.alert.show({\n type: 0,\n text: '您的网址和邮箱格式不正确,请修正后提交!',\n ctxt: '返回修改'\n })\n } else if (!mailRet.k) {\n _root.alert.show({\n type: 0,\n text: '请认真评论并填写正确的邮箱地址!
    已开启隐私防护不会泄露您的个人信息,了解反垃圾系统如何处理您的数据。',\n ctxt: '返回修改'\n })\n } else if (!linkRet.k) {\n _root.alert.show({\n type: 0,\n text: '您的网址格式不正确,请修正后提交!',\n ctxt: '返回修改'\n })\n } else {\n commitEvt();\n }\n }\n\n let smile_btn = _root.el.querySelector('.vemoji-btn');\n let smile_icons = _root.el.querySelector('.vsmile-icons');\n Event.on('click', smile_btn, (e)=>{\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n }\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n }\n else {\n smile_icons.removeAttribute('style');\n smile_icons.setAttribute('triggered', 1);\n }\n });\n\n let preview_btn = _root.el.querySelector('.vpreview-btn');\n let preview_text = _root.el.querySelector('.vpreview-text');\n Event.on('click', preview_btn, (e)=>{\n if (smile_icons.getAttribute('triggered')) {\n smile_icons.setAttribute('style', 'display:none;');\n smile_icons.removeAttribute('triggered');\n }\n if (preview_text.getAttribute('triggered')) {\n preview_text.setAttribute('style', 'display:none;');\n preview_text.removeAttribute('triggered');\n }\n else {\n if (defaultComment.comment == '') {\n inputs['comment'].focus();\n return;\n }\n // render markdown\n preview_text.innerHTML = xss(md(defaultComment.comment.replace(/!\\(:(.*?\\.\\w+):\\)/g, \n `\"$1\"`)),\n {\n onIgnoreTagAttr: function (tag, name, value, isWhiteAttr) {\n if (name === 'class') {\n return name + '=\"' + xss.escapeAttrValue(value) + '\"';\n }\n }\n });\n preview_text.removeAttribute('style');\n preview_text.setAttribute('triggered', 1);\n }\n });\n\n // setting access\n let getAcl = () => {\n let acl = new _root.v.ACL();\n acl.setPublicReadAccess(true);\n acl.setPublicWriteAccess(false);\n return acl;\n }\n\n let commitEvt = () => {\n submitBtn.setAttribute('disabled', true);\n _root.submitting.show();\n // 声明类型\n let Ct = _root.v.Object.extend('Comment');\n // 新建对象\n let comment = new Ct();\n for (let i in defaultComment) {\n if (defaultComment.hasOwnProperty(i)) {\n if (i === 'at')\n continue;\n let _v = defaultComment[i];\n comment.set(i, _v);\n }\n }\n comment.set('emailHash', crypto(defaultComment.mail.toLowerCase().trim()));\n comment.setACL(getAcl());\n comment.save().then((commentItem) => {\n store && store.setItem('ValineCache', JSON.stringify({\n nick: defaultComment['nick'],\n link: defaultComment['link'],\n mail: defaultComment['mail']\n }));\n let _count = _root.el.querySelector('.count');\n _count.innerText = Number(_count.innerText) + 1;\n insertComment(commentItem, true);\n submitBtn.removeAttribute('disabled');\n _root.submitting.hide();\n _root.nodata.hide();\n _root.reset();\n }).catch(ex => {\n _root.submitting.hide();\n })\n }\n\n // at event\n let bindAtEvt = (el) => {\n Event.on('click', el, (e) => {\n let at = el.getAttribute('at');\n let rid = el.getAttribute('rid');\n defaultComment['rid'] = rid;\n defaultComment['at'] = at;\n inputs['comment'].value = `${at} ,` + inputs['comment'].value;\n inputs['comment'].focus();\n // remove comment trigger\n _root.el.querySelector('.comment_trigger').setAttribute('style', 'display:none');\n _root.el.querySelector('.auth-section').removeAttribute('style');\n _root.el.querySelector('.veditor').focus();\n })\n }\n\n Event.off('click', submitBtn, submitEvt);\n Event.on('click', submitBtn, submitEvt);\n }\n}\n\nconst Event = {\n on(type, el, handler, capture) {\n if (el.addEventListener) el.addEventListener(type, handler, capture || false);\n else if (el.attachEvent) el.attachEvent(`on${type}`, handler);\n else el[`on${type}`] = handler;\n },\n off(type, el, handler, capture) {\n if (el.removeEventListener) el.removeEventListener(type, handler, capture || false);\n else if (el.detachEvent) el.detachEvent(`on${type}`, handler);\n else el[`on${type}`] = null;\n }\n}\n\nconst check = {\n mail(m) {\n return {\n k: /\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}/.test(m),\n v: m\n };\n },\n link(l) {\n if (l.length > 0) {\n l = /^(http|https)/.test(l) ? l : `http://${l}`;\n }\n return {\n k: l.length > 0 ? /(http|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/.test(l) : true,\n v: l\n };\n }\n}\n\nconst HtmlUtil = {\n\n // /**\n // *\n // * 将str中的链接转换成a标签形式\n // * @param {String} str\n // * @returns\n // */\n // transUrl(str) {\n // let reg = /(http:\\/\\/|https:\\/\\/)((\\w|=|\\?|\\.|\\/|&|-)+)/g;\n // return str.replace(reg, '$1$2');\n // },\n /**\n * HTML转码\n * @param {String} str\n * @return {String} result\n */\n encode(str) {\n return !!str ? str.replace(/&/g, \"&\").replace(//g, \">\").replace(/ /g, \" \").replace(/\\'/g, \"'\").replace(/\\\"/g, \""\") : '';\n },\n /**\n * HTML解码\n * @param {String} str\n * @return {String} result\n */\n decode(str) {\n return !!str ? str.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/ /g, \" \").replace(/'/g, \"\\'\").replace(/"/g, \"\\\"\") : '';\n }\n};\n\nconst dateFormat = (date) => {\n var vDay = padWithZeros(date.getDate(), 2);\n var vMonth = padWithZeros(date.getMonth() + 1, 2);\n var vYear = padWithZeros(date.getFullYear(), 2);\n // var vHour = padWithZeros(date.getHours(), 2);\n // var vMinute = padWithZeros(date.getMinutes(), 2);\n // var vSecond = padWithZeros(date.getSeconds(), 2);\n return `${vYear}-${vMonth}-${vDay}`;\n // return `${vYear}-${vMonth}-${vDay} ${vHour}:${vMinute}:${vSecond}`;\n}\n\nconst timeAgo = (date) => {\n try {\n var oldTime = date.getTime();\n var currTime = new Date().getTime();\n var diffValue = currTime - oldTime;\n\n var days = Math.floor(diffValue / (24 * 3600 * 1000));\n if (days === 0) {\n //计算相差小时数\n var leave1 = diffValue % (24 * 3600 * 1000); //计算天数后剩余的毫秒数\n var hours = Math.floor(leave1 / (3600 * 1000));\n if (hours === 0) {\n //计算相差分钟数\n var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数\n var minutes = Math.floor(leave2 / (60 * 1000));\n if (minutes === 0) {\n //计算相差秒数\n var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数\n var seconds = Math.round(leave3 / 1000);\n return seconds + ' 秒前';\n }\n return minutes + ' 分钟前';\n }\n return hours + ' 小时前';\n }\n if (days < 0) return '刚刚';\n else if (days < 30) return days + ' 天前';\n else if (days < 365) return Math.floor(days / 30) + ' 月前';\n else return Math.floor(days / 365) + ' 年前';\n return dateFormat(date);\n } catch (error) {\n console.log(error)\n }\n}\n\nconst padWithZeros = (vNumber, width) => {\n var numAsString = vNumber.toString();\n while (numAsString.length < width) {\n numAsString = '0' + numAsString;\n }\n return numAsString;\n}\n\nconst loadJS = function (url, success) {\n var domScript = document.createElement('script');\n domScript.src = url;\n success = success || function () {\n };\n domScript.onload = domScript.onreadystatechange = function () {\n if (!this.readyState || 'loaded' === this.readyState || 'complete' === this.readyState) {\n success();\n this.onload = this.onreadystatechange = null;\n // this.parentNode.removeChild(this);\n }\n };\n document.getElementsByTagName('head')[0].appendChild(domScript);\n};\n\nconst getIp = function(){\n $.getJSON(\"https://api.ipify.org/?format=json\",\n function(json) {\n defaultComment['ip'] = json.ip;\n }\n );\n};\n\nmodule.exports = Valine;\n\n\n\n// WEBPACK FOOTER //\n// ./src/Valine.js","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"@charset \\\"UTF-8\\\";\\n.valine {\\n /************ Loading ************/ }\\n .valine * {\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n font-size: 14px;\\n font-weight: normal;\\n line-height: 1.42857143;\\n color: #3c484e;\\n -webkit-transition: all .3s ease;\\n transition: all .3s ease;\\n margin: initial;\\n padding: initial; }\\n .valine .vemoticon-img {\\n display: inline-block;\\n max-height: 32px;\\n margin: 0 2px; }\\n .valine .vwrap {\\n overflow: hidden;\\n position: relative;\\n border: 1px solid #ededed; }\\n .valine .vwrap .veditor-area {\\n position: inherit; }\\n .valine .vwrap .btn-wrap {\\n position: absolute !important;\\n right: 1.5em;\\n bottom: 0; }\\n .valine .vwrap .btn-wrap .vfunction-btn {\\n display: inline-block; }\\n .valine .vwrap .btn-wrap .vfunction-btn svg {\\n fill: #bbb;\\n cursor: pointer; }\\n .valine .vwrap .btn-wrap .vfunction-btn svg:hover {\\n fill: #777777; }\\n .valine .vwrap .btn-wrap .vfunction-btn svg:active {\\n fill: #777777; }\\n .valine .vwrap .vextra-area {\\n margin: .4em 0 .4em .5em; }\\n .valine .vwrap .vextra-area .vsmile-icons {\\n padding: .2em 0;\\n border-top: 1px solid #ededed;\\n border-radius: 0;\\n margin: .3em 0;\\n max-height: 64px;\\n overflow: auto; }\\n .valine .vwrap .vextra-area .vsmile-icons img {\\n display: inline-block;\\n width: auto !important;\\n height: 28px !important;\\n margin-right: 4px;\\n cursor: pointer; }\\n .valine .vwrap .vextra-area .vpreview-text {\\n border-top: 1px solid #ededed;\\n border-radius: 0;\\n padding: .5em .5em;\\n margin: .3em 0;\\n max-height: 10em;\\n overflow: auto; }\\n .valine .vwrap .textarea-wrapper {\\n color: #4b5b62;\\n width: 100%;\\n height: 100%;\\n background: #fff;\\n position: relative;\\n border-radius: 0; }\\n .valine .vwrap .textarea-wrapper .comment_trigger {\\n position: absolute;\\n z-index: 10;\\n width: 100%;\\n height: 100%;\\n background-color: #fff;\\n padding: 0 1em; }\\n .valine .vwrap .textarea-wrapper .comment_trigger .avatar {\\n position: absolute;\\n width: 3em;\\n height: 3em;\\n position: absolute;\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%); }\\n .valine .vwrap .textarea-wrapper .comment_trigger .avatar img {\\n border-radius: 100%;\\n width: 3em;\\n height: 3em; }\\n .valine .vwrap .textarea-wrapper .comment_trigger .trigger_title {\\n position: absolute;\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%);\\n color: #aaa;\\n font-size: 1.4em;\\n margin-left: 3.5em; }\\n .valine .vwrap .textarea-wrapper textarea {\\n padding: 1em 1em 0;\\n color: #4b5b62;\\n width: 100%;\\n background: #fff;\\n border: none;\\n resize: none;\\n min-height: 6em;\\n margin: 0; }\\n .valine .vwrap .textarea-wrapper textarea:focus {\\n border-color: #c4c8cb;\\n outline: 0; }\\n .valine .vwrap .trigger-section {\\n display: none; }\\n .valine .vwrap .auth-section {\\n display: -webkit-box;\\n display: flex;\\n display: -ms-flexbox;\\n background: #fbfbfb;\\n padding: .3em .6em; }\\n .valine .vwrap .auth-section .input-wrapper {\\n -ms-flex: 1 1 27%;\\n -webkit-box-flex: 1;\\n flex: 1 1 27%;\\n width: 27%; }\\n .valine .vwrap .auth-section .input-wrapper input {\\n color: #4b5b62;\\n background: #fafafa;\\n border: none;\\n border-radius: 0;\\n padding: .6em;\\n margin: 0;\\n line-height: 2;\\n font-size: 1em !important; }\\n .valine .vwrap .auth-section .input-wrapper input:focus {\\n border-color: #c4c8cb;\\n outline: 0; }\\n .valine .vwrap .auth-section input {\\n width: 100%; }\\n .valine .vwrap .auth-section .post-action {\\n -ms-flex: 1 1 19%;\\n -webkit-box-flex: 1;\\n flex: 1 1 19%;\\n width: 19%;\\n margin: 0;\\n padding: 2px 0 0; }\\n .valine .vwrap .auth-section .post-action button {\\n color: #fff;\\n width: 100%;\\n line-height: 2;\\n font-weight: bolder;\\n border-radius: 30px;\\n border: 1px solid #e9eff3;\\n background-color: #111;\\n padding: .4em .5em;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n font-size: 1em !important; }\\n .valine .vwrap .auth-section .post-action button:hover {\\n background-color: #444; }\\n @media screen and (max-width: 720px) {\\n .valine .vwrap .auth-section {\\n display: block; }\\n .valine .vwrap .auth-section .input-wrapper, .valine .vwrap .auth-section .post-action {\\n -ms-flex: 1 1 100%;\\n -webkit-box-flex: 1;\\n flex: 1 1 100%;\\n padding-right: 0;\\n width: 100%; } }\\n .valine .vwrap .vmark {\\n position: absolute;\\n background: rgba(0, 0, 0, 0.65);\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0; }\\n .valine .vwrap .vmark .valert {\\n padding: 2em 0 0 0; }\\n .valine .vwrap .vmark .valert .vtext {\\n color: #fff;\\n padding: 15px; }\\n .valine .vwrap .vmark .valert .vcode {\\n width: 75px;\\n border-radius: 5px;\\n background: #dedede; }\\n .valine .vwrap .vmark .valert .vcode:focus {\\n border-color: #3090e4;\\n background-color: #fff; }\\n @media screen and (max-width: 720px) {\\n .valine .vwrap .vmark .valert {\\n padding: 8em 0; }\\n .valine .vwrap .vmark .valert .vtext {\\n color: #fff;\\n padding: 10px; } }\\n .valine .info {\\n padding: 5px;\\n margin: .5em 0; }\\n .valine .info .col {\\n display: inline-block;\\n vertical-align: middle; }\\n .valine .info svg {\\n margin-right: 2px;\\n overflow: hidden;\\n fill: currentColor; }\\n .valine .power {\\n color: #999;\\n font-size: 0.625em !important;\\n position: relative; }\\n .valine a {\\n text-decoration: none;\\n color: #3eb0ef;\\n border: none; }\\n .valine .txt-center {\\n text-align: center; }\\n .valine .float-right {\\n float: right !important; }\\n .valine .pd5 {\\n padding: 5px; }\\n .valine .pd10 {\\n padding: 10px; }\\n .valine .vbtn {\\n display: inline-block;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n border: 1px solid #e9eff3;\\n background-color: #333;\\n border-radius: .1em;\\n color: #fff;\\n padding: .5em 1.5em;\\n cursor: pointer;\\n white-space: nowrap;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n outline: none;\\n min-width: 60px;\\n max-width: 100%;\\n margin: 0 1em; }\\n .valine .vbtn:active,\\n .valine .vbtn:hover {\\n border-color: #666; }\\n .valine .vpage {\\n margin: 1.5em 0; }\\n .valine .vpage .more {\\n width: 100%;\\n height: 2.5em;\\n line-height: 2.5em;\\n text-align: center;\\n cursor: pointer;\\n color: #666;\\n background: #fafafa;\\n border-radius: 1.25em; }\\n .valine .vlist {\\n width: 100%;\\n list-style: none;\\n margin: 0;\\n padding: 0; }\\n .valine .vlist .vcard {\\n display: -webkit-box;\\n display: flex;\\n display: -ms-flexbox;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row;\\n padding: 2em 1em 1.5em;\\n border: 1px solid rgba(150, 150, 150, 0.18);\\n margin: 2em 0 0;\\n list-style: none;\\n border-radius: 5px;\\n word-break: break-all; }\\n .valine .vlist .vcard:hover {\\n border: 1px solid rgba(150, 150, 150, 0.25); }\\n .valine .vlist .vcard:hover .vat {\\n background: #111 !important; }\\n .valine .vlist .vcard .vat {\\n margin: -2.1em 0 0;\\n float: right;\\n background: transparent;\\n color: #ffffff;\\n padding: .2em 1em;\\n line-height: 1.2;\\n cursor: pointer;\\n word-break: keep-all;\\n white-space: nowrap;\\n text-transform: uppercase; }\\n .valine .vlist .vcard .vavatar {\\n -webkit-box-flex: 0;\\n flex: 0 0 auto;\\n -ms-flex: 0 0 auto;\\n margin-right: 1em;\\n margin-top: 0.1em;\\n display: inline-block;\\n height: 3em;\\n width: 3em;\\n position: relative;\\n border-radius: 50%; }\\n .valine .vlist .vcard .text-wrapper {\\n overflow: visible;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n width: 100%; }\\n .valine .vlist .vcard .text-wrapper .vhead {\\n line-height: 1;\\n margin-bottom: 1em; }\\n .valine .vlist .vcard .text-wrapper .vhead .vname {\\n font-weight: bolder;\\n font-size: 1em;\\n color: rgba(0, 0, 0, 0.7); }\\n .valine .vlist .vcard .text-wrapper .vhead .spacer {\\n color: #ccc;\\n margin-left: 0.3em;\\n margin-right: 0.3em; }\\n .valine .vlist .vcard .text-wrapper .vhead .vtime {\\n color: #a9a4a4;\\n display: inline-block;\\n font-weight: normal; }\\n .valine .vlist .vcard .text-wrapper .vcomment {\\n position: relative; }\\n .valine .vlist .vcard .text-wrapper .vcomment blockquote p {\\n padding-left: 12px; }\\n .valine .vlist .vcard .text-wrapper .vcomment p {\\n word-wrap: break-word;\\n white-space: pre-wrap;\\n word-break: break-all;\\n text-align: justify;\\n line-height: 1.8; }\\n .valine .vlist .vcard .text-wrapper .vcomment pre {\\n overflow: auto;\\n padding: 6px 10px;\\n word-wrap: break-word;\\n color: #555;\\n background: #f5f2f2;\\n border-radius: 3px;\\n font-size: .875rem;\\n margin: 5px 0; }\\n .valine .vlist .vcard .text-wrapper .vcomment.expand {\\n cursor: pointer;\\n max-height: 11.25rem;\\n overflow: hidden; }\\n .valine .vlist .vcard .text-wrapper .vcomment.expand:before {\\n display: block;\\n content: \\\"\\\";\\n position: absolute;\\n width: 100%;\\n left: 0;\\n top: 0;\\n bottom: 3.15rem;\\n pointer-events: none;\\n background: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0)), to(rgba(255, 255, 255, 0.8)));\\n background: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.8)); }\\n .valine .vlist .vcard .text-wrapper .vcomment.expand:after {\\n display: block;\\n content: \\\"\\\\5C55\\\\5F00 \\\";\\n text-align: center;\\n color: #828586;\\n position: absolute;\\n width: 100%;\\n height: 3.15rem;\\n line-height: 3.15rem;\\n left: 0;\\n bottom: 0;\\n pointer-events: none;\\n background: rgba(255, 255, 255, 0.9); }\\n .valine .vlist .vempty {\\n padding: 20px;\\n text-align: center;\\n color: #999; }\\n .valine .spinner {\\n margin: 10px auto;\\n width: 50px;\\n height: 30px;\\n text-align: center;\\n font-size: 10px; }\\n .valine .spinner > div {\\n background-color: #9c9c9c;\\n height: 100%;\\n width: 6px;\\n margin-right: 3px;\\n display: inline-block;\\n -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;\\n animation: sk-stretchdelay 1.2s infinite ease-in-out; }\\n .valine .spinner .r2 {\\n -webkit-animation-delay: -1.1s;\\n animation-delay: -1.1s; }\\n .valine .spinner .r3 {\\n -webkit-animation-delay: -1.0s;\\n animation-delay: -1.0s; }\\n .valine .spinner .r4 {\\n -webkit-animation-delay: -0.9s;\\n animation-delay: -0.9s; }\\n .valine .spinner .r5 {\\n -webkit-animation-delay: -0.8s;\\n animation-delay: -0.8s; }\\n\\n@-webkit-keyframes sk-stretchdelay {\\n 0%,\\n 40%,\\n 100% {\\n -webkit-transform: scaleY(0.4); }\\n 20% {\\n -webkit-transform: scaleY(1); } }\\n\\n@keyframes sk-stretchdelay {\\n 0%,\\n 40%,\\n 100% {\\n transform: scaleY(0.4);\\n -webkit-transform: scaleY(0.4); }\\n 20% {\\n transform: scaleY(1);\\n -webkit-transform: scaleY(1); } }\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/postcss-loader/lib!./~/sass-loader/lib/loader.js!./src/Valine.scss\n// module id = 11\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader/lib/css-base.js\n// module id = 12\n// module chunks = 0","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar DEFAULT = require('./default');\nvar parseStyle = require('./parser');\nvar _ = require('./util');\n\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull (obj) {\n return (obj === undefined || obj === null);\n}\n\n/**\n * 浅拷贝对象\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject (obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n * - {Object} whiteList\n * - {Function} onAttr\n * - {Function} onIgnoreAttr\n * - {Function} safeAttrValue\n */\nfunction FilterCSS (options) {\n options = shallowCopyObject(options || {});\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onAttr = options.onAttr || DEFAULT.onAttr;\n options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n this.options = options;\n}\n\nFilterCSS.prototype.process = function (css) {\n // 兼容各种奇葩输入\n css = css || '';\n css = css.toString();\n if (!css) return '';\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onAttr = options.onAttr;\n var onIgnoreAttr = options.onIgnoreAttr;\n var safeAttrValue = options.safeAttrValue;\n\n var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n\n var check = whiteList[name];\n var isWhite = false;\n if (check === true) isWhite = check;\n else if (typeof check === 'function') isWhite = check(value);\n else if (check instanceof RegExp) isWhite = check.test(value);\n if (isWhite !== true) isWhite = false;\n\n // 如果过滤后 value 为空则直接忽略\n value = safeAttrValue(name, value);\n if (!value) return;\n\n var opts = {\n position: position,\n sourcePosition: sourcePosition,\n source: source,\n isWhite: isWhite\n };\n\n if (isWhite) {\n\n var ret = onAttr(name, value, opts);\n if (isNull(ret)) {\n return name + ':' + value;\n } else {\n return ret;\n }\n\n } else {\n\n var ret = onIgnoreAttr(name, value, opts);\n if (!isNull(ret)) {\n return ret;\n }\n\n }\n });\n\n return retCSS;\n};\n\n\nmodule.exports = FilterCSS;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/cssfilter/lib/css.js\n// module id = 13\n// module chunks = 0","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar _ = require('./util');\n\n\n/**\n * 解析style\n *\n * @param {String} css\n * @param {Function} onAttr 处理属性的函数\n * 参数格式: function (sourcePosition, position, name, value, source)\n * @return {String}\n */\nfunction parseStyle (css, onAttr) {\n css = _.trimRight(css);\n if (css[css.length - 1] !== ';') css += ';';\n var cssLength = css.length;\n var isParenthesisOpen = false;\n var lastPos = 0;\n var i = 0;\n var retCSS = '';\n\n function addNewAttr () {\n // 如果没有正常的闭合圆括号,则直接忽略当前属性\n if (!isParenthesisOpen) {\n var source = _.trim(css.slice(lastPos, i));\n var j = source.indexOf(':');\n if (j !== -1) {\n var name = _.trim(source.slice(0, j));\n var value = _.trim(source.slice(j + 1));\n // 必须有属性名称\n if (name) {\n var ret = onAttr(lastPos, retCSS.length, name, value, source);\n if (ret) retCSS += ret + '; ';\n }\n }\n }\n lastPos = i + 1;\n }\n\n for (; i < cssLength; i++) {\n var c = css[i];\n if (c === '/' && css[i + 1] === '*') {\n // 备注开始\n var j = css.indexOf('*/', i + 2);\n // 如果没有正常的备注结束,则后面的部分全部跳过\n if (j === -1) break;\n // 直接将当前位置调到备注结尾,并且初始化状态\n i = j + 1;\n lastPos = i + 1;\n isParenthesisOpen = false;\n } else if (c === '(') {\n isParenthesisOpen = true;\n } else if (c === ')') {\n isParenthesisOpen = false;\n } else if (c === ';') {\n if (isParenthesisOpen) {\n // 在圆括号里面,忽略\n } else {\n addNewAttr();\n }\n } else if (c === '\\n') {\n addNewAttr();\n }\n }\n\n return _.trim(retCSS);\n}\n\nmodule.exports = parseStyle;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/cssfilter/lib/parser.js\n// module id = 14\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(selector) {\n\t\tif (typeof memo[selector] === \"undefined\") {\n\t\t\tmemo[selector] = fn.call(this, selector);\n\t\t}\n\n\t\treturn memo[selector]\n\t};\n})(function (target) {\n\treturn document.querySelector(target)\n});\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of