· 6 years ago · Jun 17, 2019, 07:58 AM
1/**
2 * Minified by jsDelivr using UglifyJS v3.1.10.
3 * Original file: /npm/emmet-codemirror@1.2.5/dist/emmet.js
4 *
5 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
6 */
7!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;"undefined"!=typeof window?t=window:"undefined"!=typeof global?t=global:"undefined"!=typeof self&&(t=self),t.emmetCodeMirror=e()}}(function(){var define,module,exports;return function e(t,n,r){function i(o,s){if(!n[o]){if(!t[o]){var y="function"==typeof require&&require;if(!s&&y)return y(o,!0);if(a)return a(o,!0);var l=new Error("Cannot find module '"+o+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[o]={exports:{}};t[o][0].call(c.exports,function(e){var n=t[o][1][e];return i(n||e)},c,c.exports,e,t,n,r)}return n[o].exports}for(var a="function"==typeof require&&require,o=0;o<r.length;o++)i(r[o]);return i}({1:[function(e,t,n){"use strict";function r(e,t){return arguments.length>2&&"object"!=typeof t&&(t={line:arguments[1],ch:arguments[2]}),e.indexFromPos(t)}function i(e,t){return e.posFromIndex(t)}var a=function(){function e(e,t){for(var n in t){var r=t[n];r.configurable=!0,r.value&&(r.writable=!0)}Object.defineProperties(e,t)}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")};Object.defineProperty(n,"__esModule",{value:!0});var s=function(e){return e&&e.__esModule?e.default:e}(e("./emmet"));n.modeMap={"text/html":"html","application/xml":"xml","text/xsl":"xsl","text/css":"css","text/x-less":"less","text/x-scss":"scss","text/x-sass":"sass"};var y=function(){function e(t){var n=void 0===arguments[1]?0:arguments[1];o(this,e),this.context=t,this.selectionIndex=n||0}return a(e,{selectionList:{value:function(){var e=this.context;return e.listSelections().map(function(t){var n=r(e,t.anchor),i=r(e,t.head);return{start:Math.min(n,i),end:Math.max(n,i)}})}},getCaretPos:{value:function(){return this.getSelectionRange().start}},setCaretPos:{value:function(e){this.createSelection(e)}},getSelectionRange:{value:function(){return this.selectionList()[this.selectionIndex]}},createSelection:{value:function(e,t){void 0===t&&(t=e);var n=this.selectionList(),r=this.context;n[this.selectionIndex]={start:e,end:t},this.context.setSelections(n.map(function(e){return{head:i(r,e.start),anchor:i(r,e.end)}}))}},getSelection:{value:function(){var e=this.getSelectionRange();return e.start=i(this.context,e.start),e.end=i(this.context,e.end),this.context.getRange(e.start,e.end)}},getCurrentLineRange:{value:function(){var e=i(this.context,this.getCaretPos());return{start:r(this.context,e.line,0),end:r(this.context,e.line,this.context.getLine(e.line).length)}}},getCurrentLine:{value:function(){var e=i(this.context,this.getCaretPos());return this.context.getLine(e.line)||""}},replaceContent:{value:function(e,t,n,r){void 0===n&&(n=void 0===t?this.getContent().length:t),void 0===t&&(t=0),e=this.normalize(e),r||(e=s.utils.common.padString(e,s.utils.common.getLinePaddingFromPosition(this.getContent(),t)));var a=s.tabStops.extract(e,{escape:function(e){return e}});e=a.text;var o=a.tabstops[0]||{start:e.length,end:e.length};o.start+=t,o.end+=t,this.context.replaceRange(e,i(this.context,t),i(this.context,n)),this.createSelection(o.start,o.end)}},normalize:{value:function(e){var t="\t",n=this.context;return n.getOption("indentWithTabs")||(t=s.utils.common.repeatString(" ",n.getOption("indentUnit"))),s.utils.editor.normalize(e,{indentation:t})}},getContent:{value:function(){return this.context.getValue()}},getSyntax:{value:function(){var e=this.context,t=(e.posFromIndex(this.getCaretPos()),e.getModeAt(e.getCursor())),n=t.name;return"xml"===n&&t.configuration&&(n=t.configuration),n||s.utils.action.detectSyntax(this,n)}},getProfileName:{value:function(){return this.context.getOption("profile")?this.context.getOption("profile"):s.utils.action.detectProfile(this)}},prompt:{value:function(e){var t=function(t){return e.apply(this,arguments)};return t.toString=function(){return e.toString()},t}(function(e){return prompt(e)})},getFilePath:{value:function(){return location.href}},isValidSyntax:{value:function(){return s.resources.hasSyntax(this.getSyntax())}}}),e}();n.default=y},{"./emmet":2}],2:[function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e.default:e}(e("emmet"));e("emmet/bundles/snippets"),e("emmet/bundles/caniuse"),t.exports=r},{emmet:39,"emmet/bundles/caniuse":3,"emmet/bundles/snippets":4}],3:[function(e,t,n){var r=e("../lib/assets/caniuse"),i=e("../lib/caniuse.json");r.load(i,!0)},{"../lib/assets/caniuse":23,"../lib/caniuse.json":35}],4:[function(e,t,n){var r=e("../lib/assets/resources"),i=e("../lib/snippets.json");r.setVocabulary(i,"system")},{"../lib/assets/resources":31,"../lib/snippets.json":68}],5:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){return e[e.length-1]}function i(e,t){var n;if("string"==typeof e){var i=p.matchEnclosingRule(e,t);i&&(n=c.parse(i.substring(e),{offset:i.start}))}else n=e;if(!n)return null;var a=function(e,t){var n=[e.range(!0)];n.push(e.valueRange(!0));var i=p.nestedSectionsInRule(e),a=e.list();if(a.length||i.length){var o=Number.POSITIVE_INFINITY,s=-1;a.length&&(o=a[0].namePosition(!0),s=r(a).range(!0).end),i.length&&(i[0].start<o&&(o=i[0].start),r(i).end>s&&(s=r(i).end)),n.push(l.create2(o,s))}n=n.concat(i);var y=c.propertyFromPosition(e,t)||a[0];if(y){n.push(y.range(!0));var u=y.valueRange(!0);y.end()||(u._unterminated=!0),n.push(u)}return n}(n,t);return a=a.filter(function(e){return!!e.length}),o.unique(a,function(e){return e.valueOf()})}var a=e("../assets/htmlMatcher"),o=e("../utils/common"),s=e("../utils/editor"),y=e("../utils/action"),l=e("../assets/range"),c=e("../editTree/css"),p=e("../utils/cssSections"),u=null;return{balance:function(e,t){t=String((t||"out").toLowerCase());var n=s.outputInfo(e);return y.isSupportedCSS(n.syntax)?function(e,t){var n=s.outputInfo(e),a=n.content,y=l(e.getSelectionRange()),p=i(n.content,y.start);if(!p&&y.length())try{p=i(c.parse(y.substring(n.content),{offset:y.start}),y.start)}catch(e){}if(!p)return!1;p=l.sort(p,!0);var u=o.find(p,function(e){return e.equal(y)});if(u||(u=o.find(p,function(e){return e._unterminated?e.include(y.start):e.inside(y.start)})),!u)return!1;var f=p.indexOf(u);if(u.equal(y)&&(f+="out"==t?1:-1),f<0||f>=p.length)if(f>=p.length&&"out"==t){pos=u.start-1;var d=i(a,pos);d&&(u=r(d.filter(function(e){return e.inside(pos)})))}else u=null;else u=p[f];return!!u&&(e.createSelection(u.start,u.end),!0)}(e,t):function(e,t){var n=s.outputInfo(e).content,r=l(e.getSelectionRange());if(u&&!u.range.equal(r)&&(u=null),u&&r.length())if("in"==t){if("tag"==u.type&&!u.close)return!1;if(u.range.equal(u.outerRange))u.range=u.innerRange;else{var i=o.narrowToNonSpace(n,u.innerRange);(u=a.find(n,i.start+1))&&u.range.equal(r)&&u.outerRange.equal(r)&&(u.range=u.innerRange)}}else!u.innerRange.equal(u.outerRange)&&u.range.equal(u.innerRange)&&r.equal(u.range)?u.range=u.outerRange:(u=a.find(n,r.start))&&u.range.equal(r)&&u.innerRange.equal(r)&&(u.range=u.outerRange);else u=a.find(n,r.start);return u&&(u.innerRange.equal(r)&&(u.range=u.outerRange),!u.range.equal(r))?(e.createSelection(u.range.start,u.range.end),!0):(u=null,!1)}(e,t)},balanceInwardAction:function(e){return this.balance(e,"in")},balanceOutwardAction:function(e){return this.balance(e,"out")},goToMatchingPairAction:function(e){var t=String(e.getContent()),n=e.getCaretPos();"<"==t.charAt(n)&&n++;var r=a.tag(t,n);return!(!r||!r.close)&&(r.open.range.inside(n)?e.setCaretPos(r.close.range.start):e.setCaretPos(r.open.range.start),!0)}}})},{"../assets/htmlMatcher":26,"../assets/range":30,"../editTree/css":37,"../utils/action":70,"../utils/common":73,"../utils/cssSections":74,"../utils/editor":75}],6:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t,n){return n=n||0,t.charAt(n)==e.charAt(0)&&t.substr(n,e.length)==e}var i=e("../plugin/file"),a=e("../utils/base64"),o=e("../utils/action"),s=e("../utils/editor");return{encodeDecodeDataUrlAction:function(e){var t=String(e.getSelection()),n=e.getCaretPos(),y=s.outputInfo(e);if(!t)for(var l,c=y.content;n-- >=0;){if(r("src=",c,n)){(l=c.substr(n).match(/^(src=(["'])?)([^'"<>\s]+)\1?/))&&(t=l[3],n+=l[1].length);break}if(r("url(",c,n)){(l=c.substr(n).match(/^(url\((['"])?)([^'"\)\s]+)\1?/))&&(t=l[3],n+=l[1].length);break}}return!!t&&(r("data:",t)?function(e,t,n){var r=String(e.prompt("Enter path to file (absolute or relative)"));if(!r)return!1;var o=i.createPath(e.getFilePath(),r);if(!o)throw"Can't save file";return i.save(o,a.decode(t.replace(/^data\:.+?;.+?,/,""))),e.replaceContent("$0"+r,n,n+t.length),!0}(e,t,n):function(e,t,n){var r=e.getFilePath();if(null===r)throw"You should save your file before using this action";var s=i.locateFile(r,t);if(null===s)throw"Can't find "+t+" file";return i.read(s,function(r,y){if(r)throw"Unable to read "+s+": "+r;var l=a.encode(String(y));if(!l)throw"Can't encode file content to base64";l="data:"+(o.mimeTypes[String(i.getExt(s))]||"application/octet-stream")+";base64,"+l,e.replaceContent("$0"+l,n,n+t.length)}),!0}(e,t,n))}}})},{"../plugin/file":63,"../utils/action":70,"../utils/base64":71,"../utils/editor":75}],7:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t,n){function r(e){for(var t=e;t>=0;){var n=a.charAt(t);if("\n"==n||"\r"==n)break;t--}return a.substring(t,e)}t=t||1,n=n||0;for(var i=e.getCaretPos()+n,a=String(e.getContent()),o=a.length,s=-1,y=/^\s+$/;i<=o&&i>=0;){i+=t;var l=a.charAt(i),c=a.charAt(i+1),p=a.charAt(i-1);switch(l){case'"':case"'":c==l&&"="==p&&(s=i+1);break;case">":"<"==c&&(s=i+1);break;case"\n":case"\r":y.test(r(i-1))&&(s=i)}if(-1!=s)break}return s}return{previousEditPointAction:function(e,t,n){var i=e.getCaretPos(),a=r(e,-1);return a==i&&(a=r(e,-1,-2)),-1!=a&&(e.setCaretPos(a),!0)},nextEditPointAction:function(e,t,n){var i=r(e,1);return-1!=i&&(e.setCaretPos(i),!0)}}})},{}],8:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../utils/action"),i=e("../utils/common"),a=e("../utils/math"),o=e("../assets/range");return{evaluateMathAction:function(e){var t=e.getContent(),n=o(e.getSelectionRange());if(n.length()||(n=r.findExpressionBounds(e,function(e){return i.isNumeric(e)||-1!=".+-*/\\".indexOf(e)})),n&&n.length()){var s=n.substring(t);s=s.replace(/([\d\.\-]+)\\([\d\.\-]+)/g,"round($1/$2)");try{var y=i.prettifyNumber(a.evaluate(s));return e.replaceContent(y,n.start,n.end),e.setCaretPos(n.start+y.length),!0}catch(e){}}return!1}}})},{"../assets/range":30,"../utils/action":70,"../utils/common":73,"../utils/math":76}],9:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){var t=a(e.getSelectionRange()),n=String(e.getContent());if(t.length())return t.substring(n);var r=e.getCurrentLineRange();return l.extractAbbreviation(n.substring(r.start,t.start))}var i=e("../assets/handlerList"),a=e("../assets/range"),o=e("../assets/preferences"),s=e("../utils/common"),y=e("../utils/editor"),l=e("../utils/action"),c=e("../resolver/cssGradient"),p=e("../parser/abbreviation"),u=i.create();return u.add(function(e,t,n){var i=e.getSelectionRange().end,a=r(e);if(a){var s=p.expand(a,{syntax:t,profile:n,contextNode:l.captureContext(e)});if(s){var y=i-a.length,c=i,u=o.getArray("css.syntaxes");if(u&&~u.indexOf(t)){";"==e.getContent().charAt(i)&&";"==s.charAt(s.length-1)&&c++}return e.replaceContent(s,y,c),!0}}return!1},{order:-1}),u.add(c.expandAbbreviationHandler.bind(c)),{expandAbbreviationAction:function(e,t,n){var r=s.toArray(arguments),i=y.outputInfo(e,t,n);return r[1]=i.syntax,r[2]=i.profile,u.exec(!1,r)},expandAbbreviationWithTabAction:function(e,t,n){var r=e.getSelection();if(r){var i=a(e.getSelectionRange()),o=s.padString(r,"\t");e.replaceContent("\t${0}",e.getCaretPos());var y=a(e.getCaretPos(),i.length());return e.replaceContent(o,y.start,y.end,!0),e.createSelection(y.start,y.start+o.length),!0}return this.expandAbbreviationAction(e,t,n)||e.replaceContent("\t",e.getCaretPos()),!0},_defaultHandler:function(e,t,n){var r=e.getSelectionRange().end,i=this.findAbbreviation(e);if(i){var a=l.captureContext(e),o=p.expand(i,t,n,a);if(o)return e.replaceContent(o,r-i.length,r),!0}return!1},addHandler:function(e,t){u.add(e,t)},removeHandler:function(e){u.remove(e)},findAbbreviation:r}})},{"../assets/handlerList":25,"../assets/preferences":28,"../assets/range":30,"../parser/abbreviation":55,"../resolver/cssGradient":65,"../utils/action":70,"../utils/common":73,"../utils/editor":75}],10:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../utils/common"),i=e("../utils/action");return{increment01Action:function(e){return this.incrementNumber(e,.1)},increment1Action:function(e){return this.incrementNumber(e,1)},increment10Action:function(e){return this.incrementNumber(e,10)},decrement01Action:function(e){return this.incrementNumber(e,-.1)},decrement1Action:function(e){return this.incrementNumber(e,-1)},decrement10Action:function(e){return this.incrementNumber(e,-10)},incrementNumber:function(e,t){var n=!1,a=!1,o=i.findExpressionBounds(e,function(e,t,i){return!!r.isNumeric(e)||("."==e?!!r.isNumeric(i.charAt(t+1))&&(!a&&(a=!0)):"-"==e&&(!n&&(n=!0)))});if(o&&o.length()){var s=o.substring(String(e.getContent())),y=parseFloat(s);if(!isNaN(y)){if(y=r.prettifyNumber(y+t),/^(\-?)0+[1-9]/.test(s)){var l="";RegExp.$1&&(l="-",y=y.substring(1));var c=y.split(".");c[0]=r.zeroPadString(c[0],function(e){return~(e=e.replace(/^\-/,"")).indexOf(".")?e.split(".")[0].length:e.length}(s)),y=l+c.join(".")}return e.replaceContent(y,o.start,o.end),e.createSelection(o.start,o.start+y.length),!0}}return!1}}})},{"../utils/action":70,"../utils/common":73}],11:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../assets/preferences"),i=e("../utils/common"),a=(e("../assets/resources"),e("../assets/htmlMatcher")),o=e("../utils/editor"),s=["html","xml","xsl"];return r.define("css.closeBraceIndentation","\n","Indentation before closing brace of CSS rule. Some users prefere indented closing brace of CSS rule for better readability. This preference’s value will be automatically inserted before closing brace when user adds newline in newly created CSS rule (e.g. when “Insert formatted linebreak” action will be performed in CSS file). If you’re such user, you may want to write put a value like <code>\\n\\t</code> in this preference."),{insertLineBreakAction:function(e){if(!this.insertLineBreakOnlyAction(e)){for(var t,n=o.getCurrentLinePadding(e),r=String(e.getContent()),i=e.getCaretPos(),a=r.length,s="",y=e.getCurrentLineRange().end+1;y<a&&(" "==(t=r.charAt(y))||"\t"==t);y++)s+=t;s.length>n.length?e.replaceContent("\n"+s,i,i,!0):e.replaceContent("\n",i)}return!0},insertLineBreakOnlyAction:function(e){var t=o.outputInfo(e),n=e.getCaretPos();if(~s.indexOf(t.syntax)){var y=a.tag(t.content,n);if(y&&!y.innerRange.length())return e.replaceContent("\n\t"+i.getCaretPlaceholder()+"\n",n),!0}else if("css"==t.syntax){var l=t.content;if(n&&"{"==l.charAt(n-1)){var c=r.get("css.closeBraceIndentation"),p="}"==l.charAt(n);if(!p)for(var u,f=n,d=l.length;f<d&&"{"!=(u=l.charAt(f));f++)if("}"==u){c="",p=!0;break}p||(c+="}");var h="\n\t"+i.getCaretPlaceholder()+c;return e.replaceContent(h,n),!0}}return!1}}})},{"../assets/htmlMatcher":26,"../assets/preferences":28,"../assets/resources":31,"../utils/common":73,"../utils/editor":75}],12:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t,n){e=e.toLowerCase(),"string"==typeof(n=n||{})&&(n={label:n}),n.label||(n.label=i(e)),o[e]={name:e,fn:t,options:n}}function i(e){return a.trim(e.charAt(0).toUpperCase()+e.substring(1).replace(/_[a-z]/g,function(e){return" "+e.charAt(1).toUpperCase()}))}var a=e("../utils/common"),o={},s={base64:e("./base64"),editPoints:e("./editPoints"),evaluateMath:e("./evaluateMath"),expandAbbreviation:e("./expandAbbreviation"),incrementDecrement:e("./incrementDecrement"),lineBreaks:e("./lineBreaks"),balance:e("./balance"),mergeLines:e("./mergeLines"),reflectCSSValue:e("./reflectCSSValue"),removeTag:e("./removeTag"),selectItem:e("./selectItem"),selectLine:e("./selectLine"),splitJoinTag:e("./splitJoinTag"),toggleComment:e("./toggleComment"),updateImageSize:e("./updateImageSize"),wrapWithAbbreviation:e("./wrapWithAbbreviation"),updateTag:e("./updateTag")},y=function(e,t){var n=s[e];return n[t].bind(n)};return r("encode_decode_data_url",y("base64","encodeDecodeDataUrlAction"),"Encode\\Decode data:URL image"),r("prev_edit_point",y("editPoints","previousEditPointAction"),"Previous Edit Point"),r("next_edit_point",y("editPoints","nextEditPointAction"),"Next Edit Point"),r("evaluate_math_expression",y("evaluateMath","evaluateMathAction"),"Numbers/Evaluate Math Expression"),r("expand_abbreviation_with_tab",y("expandAbbreviation","expandAbbreviationWithTabAction"),{hidden:!0}),r("expand_abbreviation",y("expandAbbreviation","expandAbbreviationAction"),"Expand Abbreviation"),r("insert_formatted_line_break_only",y("lineBreaks","insertLineBreakOnlyAction"),{hidden:!0}),r("insert_formatted_line_break",y("lineBreaks","insertLineBreakAction"),{hidden:!0}),r("balance_inward",y("balance","balanceInwardAction"),"Balance (inward)"),r("balance_outward",y("balance","balanceOutwardAction"),"Balance (outward)"),r("matching_pair",y("balance","goToMatchingPairAction"),"HTML/Go To Matching Tag Pair"),r("merge_lines",y("mergeLines","mergeLinesAction"),"Merge Lines"),r("reflect_css_value",y("reflectCSSValue","reflectCSSValueAction"),"CSS/Reflect Value"),r("remove_tag",y("removeTag","removeTagAction"),"HTML/Remove Tag"),r("select_next_item",y("selectItem","selectNextItemAction"),"Select Next Item"),r("select_previous_item",y("selectItem","selectPreviousItemAction"),"Select Previous Item"),r("split_join_tag",y("splitJoinTag","splitJoinTagAction"),"HTML/Split\\Join Tag Declaration"),r("toggle_comment",y("toggleComment","toggleCommentAction"),"Toggle Comment"),r("update_image_size",y("updateImageSize","updateImageSizeAction"),"Update Image Size"),r("wrap_with_abbreviation",y("wrapWithAbbreviation","wrapWithAbbreviationAction"),"Wrap With Abbreviation"),r("update_tag",y("updateTag","updateTagAction"),"HTML/Update Tag"),[1,-1,10,-10,.1,-.1].forEach(function(e){var t=e>0?"increment":"decrement",n=String(Math.abs(e)).replace(".","").substring(0,2),i=t+"_number_by_"+n,a=t+n+"Action",o="Numbers/"+t.charAt(0).toUpperCase()+t.substring(1)+" number by "+Math.abs(e);r(i,y("incrementDecrement",a),o)}),{add:r,get:function(e){return o[e.toLowerCase()]},run:function(e,t){Array.isArray(t)||(t=a.toArray(arguments,1));var n=this.get(e);if(!n)throw new Error('Action "'+e+'" is not defined');return n.fn.apply(n,t)},getAll:function(){return o},getList:function(){var e=this.getAll();return Object.keys(e).map(function(t){return e[t]})},getMenu:function(e){var t=[];return e=e||[],this.getList().forEach(function(n){if(!n.options.hidden&&!~e.indexOf(n.name)){var r=i(n.name),o=t;if(n.options.label){var s=n.options.label.split("/");r=s.pop();for(var y,l;y=s.shift();)(l=a.find(o,function(e){return"submenu"==e.type&&e.name==y}))||(l={name:y,type:"submenu",items:[]},o.push(l)),o=l.items}o.push({type:"action",name:n.name,label:r})}}),t},getActionNameForMenuTitle:function(e,t){return a.find(t||this.getMenu(),function(t){return"action"!=t.type?this.getActionNameForMenuTitle(e,t.items):t.label==e||t.name==e?t.name:void 0},this)}}})},{"../utils/common":73,"./balance":5,"./base64":6,"./editPoints":7,"./evaluateMath":8,"./expandAbbreviation":9,"./incrementDecrement":10,"./lineBreaks":11,"./mergeLines":13,"./reflectCSSValue":14,"./removeTag":15,"./selectItem":16,"./selectLine":17,"./splitJoinTag":18,"./toggleComment":19,"./updateImageSize":20,"./updateTag":21,"./wrapWithAbbreviation":22}],13:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../assets/htmlMatcher"),i=e("../utils/common"),a=e("../utils/editor"),o=e("../assets/range");return{mergeLinesAction:function(e){var t=a.outputInfo(e),n=o(e.getSelectionRange());if(!n.length()){var s=r.find(t.content,e.getCaretPos());s&&(n=s.outerRange)}if(n.length()){for(var y=n.substring(t.content),l=i.splitByLines(y),c=1;c<l.length;c++)l[c]=l[c].replace(/^\s+/,"");var p=(y=l.join("").replace(/\s{2,}/," ")).length;return y=i.escapeText(y),e.replaceContent(y,n.start,n.end),e.createSelection(n.start,n.start+p),!0}return!1}}})},{"../assets/htmlMatcher":26,"../assets/range":30,"../utils/common":73,"../utils/editor":75}],14:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t){var n=function(e,t,n,r){{if(e=s.baseName(e),n=s.baseName(n),"opacity"==e&&"filter"==n)return r.replace(/opacity=[^)]*/i,"opacity="+Math.floor(100*parseFloat(t)));if("filter"==e&&"opacity"==n){var i=t.match(/opacity=([^)]*)/i);return i?y.prettifyNumber(parseInt(i[1],10)/100):r}}return t}(e.name(),e.value(),t.name(),t.value());n=function(e,t){var n=/^\-(\w+)\-/,r=n.test(e)?RegExp.$1.toLowerCase():"",i=s.findParts(t);return i.reverse(),i.forEach(function(e){var i=e.substring(t).replace(n,""),a=o.vendorPrefixes(i);a&&(r&&~a.indexOf(r)&&(i="-"+r+"-"+i),t=y.replaceSubstring(t,i,e))}),t}(t.name(),n),t.value(n)}var i=e("../assets/handlerList"),a=e("../assets/preferences"),o=e("../resolver/css"),s=e("../editTree/css"),y=e("../utils/common"),l=e("../utils/action"),c=e("../utils/editor"),p=e("../resolver/cssGradient");a.define("css.reflect.oldIEOpacity",!1,"Support IE6/7/8 opacity notation, e.g. <code>filter:alpha(opacity=...)</code>.\t\tNote that CSS3 and SVG also provides <code>filter</code> property so this option is disabled by default.");var u=i.create();return n=n||{},n.exports={reflectCSSValueAction:function(e){return"css"==e.getSyntax()&&l.compoundUpdate(e,function(e){var t=c.outputInfo(e),n=e.getCaretPos(),r=s.parseFromPosition(t.content,n);if(r){var i=r.itemFromPosition(n,!0);if(i){var a=r.source,o=r.options.offset,y=n-o-i.range().start;return u.exec(!1,[i]),a!==r.source?{data:r.source,start:o,end:o+a.length,caret:o+i.range().start+y}:void 0}}}(e))},_defaultHandler:function(e){var t=function(e){var t;return"opacity"!=(e=s.baseName(e))&&"filter"!=e||!a.get("css.reflect.oldIEOpacity")?(t=e.match(/^border-radius-(top|bottom)(left|right)/))?new RegExp("^(?:\\-\\w+\\-)?(?:"+e+"|border-"+t[1]+"-"+t[2]+"-radius)$"):(t=e.match(/^border-(top|bottom)-(left|right)-radius/))?new RegExp("^(?:\\-\\w+\\-)?(?:"+e+"|border-radius-"+t[1]+t[2]+")$"):new RegExp("^(?:\\-\\w+\\-)?"+e+"$"):new RegExp("^(?:\\-\\w+\\-)?(?:opacity|filter)$")}(e.name());e.parent.list().forEach(function(n){t.test(n.name())&&r(e,n)})},addHandler:function(e,t){u.add(e,t)},removeHandler:function(e){u.remove(e)}},u.add(n.exports._defaultHandler.bind(n.exports),{order:-1}),u.add(p.reflectValueHandler.bind(p)),n.exports})},{"../assets/handlerList":25,"../assets/preferences":28,"../editTree/css":37,"../resolver/css":64,"../resolver/cssGradient":65,"../utils/action":70,"../utils/common":73,"../utils/editor":75}],15:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../utils/common"),i=e("../utils/editor"),a=e("../assets/htmlMatcher");return{removeTagAction:function(e){var t=i.outputInfo(e),n=a.tag(t.content,e.getCaretPos());if(n){if(n.close){var o=r.narrowToNonSpace(t.content,n.innerRange),s=r.findNewlineBounds(t.content,o.start),y=r.getLinePadding(s.substring(t.content)),l=o.substring(t.content);l=r.unindentString(l,y),e.replaceContent(r.getCaretPlaceholder()+r.escapeText(l),n.outerRange.start,n.outerRange.end)}else e.replaceContent(r.getCaretPlaceholder(),n.range.start,n.range.end);return!0}return!1}}})},{"../assets/htmlMatcher":26,"../utils/common":73,"../utils/editor":75}],16:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t,n,r){for(var i,a,o=h.outputInfo(e).content,s=o.length,y=f(-1,0),l=f(e.getSelectionRange()),c=l.start,p=1e5;c>=0&&c<s&&--p>0;){if(i=n(o,c,t)){if(y.equal(i))break;if(y=i.clone(),a=r(i.substring(o),i.start,l.clone()))return e.createSelection(a.start,a.end),!0;c=t?i.start:i.end-1}c+=t?-1:1}return!1}function i(e){var t=!0;return r(e,!1,function(e,n){return t?(t=!1,function(e,t){var n;for(;t>=0;){if(n=s(e,t))return n;t--}return null}(e,n)):s(e,n)},function(e,t,n){return o(e,t,n,!1)})}function a(e,t,n){n=n||0;var r,i,a=[],o=-1,s="",l="";return t.forEach(function(t){switch(t.type){case"tag":i=e.substring(t.start,t.end),/^<[\w\:\-]/.test(i)&&a.push(f({start:t.start+1,end:t.end}));break;case"attribute":o=t.start,s=e.substring(t.start,t.end);break;case"string":a.push(f(o,t.end-o)),r=f(t),y((l=r.substring(e)).charAt(0))&&r.start++,y(l.charAt(l.length-1))&&r.end--,a.push(r),"class"==s&&(a=a.concat(function(e,t){t=t||0;var n=[],r=g.create(e);r.eatSpace(),r.start=r.pos;var i;for(;i=r.next();)/[\s\u00a0]/.test(i)&&(n.push(f(r.start+t,r.pos-r.start-1)),r.eatSpace(),r.start=r.pos);return n.push(f(r.start+t,r.pos-r.start)),n}(r.substring(e),r.start)))}}),a=a.filter(function(e){if(e.length())return e.shift(n),!0}),d.unique(a,function(e){return e.toString()})}function o(e,t,n,r){var i=a(e,b.parse(e),t);r&&i.reverse();var o=d.find(i,function(e){return e.equal(n)});if(o){var s=i.indexOf(o);return s<i.length-1?i[s+1]:null}if(r)return d.find(i,function(e){return e.start<n.start});if(!o){var y=i.filter(function(e){return e.inside(n.end)});if(y.length>1)return y[1]}return d.find(i,function(e){return e.end>n.end})}function s(e,t){var n;if("<"==e.charAt(t)&&(n=e.substring(t,e.length).match(v)))return f(t,n[0])}function y(e){return'"'==e||"'"==e}function l(e){var t=[e.nameRange(!0)];return w.nestedSectionsInRule(e).forEach(function(e){t.push(f.create2(e.start,e._selectorEnd))}),e.list().forEach(function(e){t=t.concat(function(e){var t=e.valueRange(!0),n=[e.range(!0),t],r=e.value();return e.valueParts().forEach(function(e){var i=e.clone();n.push(i.shift(t.start));var a=g.create(e.substring(r));if(a.match(/^[\w\-]+\(/,!0)){a.start=a.pos,a.backUp(1),a.skipToPair("(",")"),a.backUp(1);var o=a.current();n.push(f(i.start+a.start,o)),x.findParts(o).forEach(function(e){n.push(f(i.start+a.start+e.start,e.substring(o)))})}}),n}(e))}),t=f.sort(t),t=t.filter(function(e){return!!e.length()}),d.unique(t,function(e){return e.toString()})}function c(e,t,n){var r=l(e);n&&r.reverse();var i=d.find(r,function(e){return e.equal(t)});if(i)return r[r.indexOf(i)+1];var a=r.filter(function(e){return e.inside(t.end)});if(a.length)return a.sort(function(e,t){return e.length()-t.length()})[0];i=d.find(r,n?function(e){return e.end<t.start}:function(e){return e.end>t.start});return i||(i=r[0]),i}function p(e,t,n){return c(x.parse(e,{offset:t}),n,!1)}function u(e,t,n){return c(x.parse(e,{offset:t}),n,!0)}var f=e("../assets/range"),d=e("../utils/common"),h=e("../utils/editor"),m=e("../utils/action"),g=e("../assets/stringStream"),b=e("../parser/xml"),x=e("../editTree/css"),w=e("../utils/cssSections"),v=/^<([\w\:\-]+)((?:\s+[\w\-:]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/;return{selectNextItemAction:function(e){return m.isSupportedCSS(e.getSyntax())?function(e){return r(e,!1,w.locateRule.bind(w),p)}(e):i(e)},selectPreviousItemAction:function(e){return m.isSupportedCSS(e.getSyntax())?function(e){return r(e,!0,w.locateRule.bind(w),u)}(e):function(e){return r(e,!0,s,function(e,t,n){return o(e,t,n,!0)})}(e)}}})},{"../assets/range":30,"../assets/stringStream":32,"../editTree/css":37,"../parser/xml":62,"../utils/action":70,"../utils/common":73,"../utils/cssSections":74,"../utils/editor":75}],17:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){return{selectLineAction:function(e){var t=e.getCurrentLineRange();return e.createSelection(t.start,t.end),!0}}})},{}],18:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../utils/common"),i=(e("../assets/resources"),e("../assets/htmlMatcher")),a=e("../utils/editor"),o=e("../assets/profile");return{splitJoinTagAction:function(e,t){var n=a.outputInfo(e,null,t),s=o.get(n.profile),y=i.tag(n.content,e.getCaretPos());return!!y&&(y.close?function(e,t,n){var i=t.selfClosing()||" /",a=n.open.range.substring(n.source).replace(/\s*>$/,i+">"),o=e.getCaretPos();return a.length+n.outerRange.start<o&&(o=a.length+n.outerRange.start),a=r.escapeText(a),e.replaceContent(a,n.outerRange.start,n.outerRange.end),e.setCaretPos(o),!0}(e,s,y):function(e,t,n){var i=e.getCaretPos(),a=!0===t.tag_nl?"\n\t\n":"",o=n.outerContent().replace(/\s*\/>$/,">");return i=n.outerRange.start+o.length,o+=a+"</"+n.open.name+">",o=r.escapeText(o),e.replaceContent(o,n.outerRange.start,n.outerRange.end),e.setCaretPos(i),!0}(e,s,y))}}})},{"../assets/htmlMatcher":26,"../assets/profile":29,"../assets/resources":31,"../utils/common":73,"../utils/editor":75}],19:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){var t=s(e.getSelectionRange()),n=c.outputInfo(e);if(!t.length()){var r=u.parseFromPosition(n.content,e.getCaretPos());if(r){var i=function(e,t){var n=t-(e.options.offset||0),r=/^[\s\n\r]/;return y.find(e.list(),function(t){return t.range().end===n?r.test(e.source.charAt(n)):t.range().inside(n)})}(r,e.getCaretPos());t=i?i.range(!0):s(r.nameRange(!0).start,r.source)}}return t.length()||(t=s(e.getCurrentLineRange()),y.narrowToNonSpace(n.content,t)),a(e,"/*","*/",t)}function i(e,t,n,r){for(var i=-1,a=-1,o=function(t,n){return e.substr(n,t.length)==t};t--;)if(o(n,t)){i=t;break}if(-1!=i){t=i;for(var y=e.length;y>=t++;)if(o(r,t)){a=t+r.length;break}}return-1!=i&&-1!=a?s(i,a-i):null}function a(e,t,n,r){var a=c.outputInfo(e).content,o=e.getCaretPos(),s=null,l=i(a,o,t,n);return l&&l.overlap(r)?s=function(e){return e.replace(new RegExp("^"+y.escapeForRegexp(t)+"\\s*"),function(e){return o-=e.length,""}).replace(new RegExp("\\s*"+y.escapeForRegexp(n)+"$"),"")}((r=l).substring(a)):(s=t+" "+r.substring(a).replace(new RegExp(y.escapeForRegexp(t)+"\\s*|\\s*"+y.escapeForRegexp(n),"g"),"")+" "+n,o+=t.length+1),null!==s&&(s=y.escapeText(s),e.setCaretPos(r.start),e.replaceContent(c.unindent(e,s),r.start,r.end),e.setCaretPos(o),!0)}var o=e("../assets/preferences"),s=e("../assets/range"),y=e("../utils/common"),l=e("../utils/action"),c=e("../utils/editor"),p=e("../assets/htmlMatcher"),u=e("../editTree/css");return{toggleCommentAction:function(e){var t=c.outputInfo(e);if(l.isSupportedCSS(t.syntax)){var n=e.getCaretPos(),i=p.tag(t.content,n);i&&i.open.range.inside(n)&&(t.syntax="html")}return~o.getArray("css.syntaxes").indexOf(t.syntax)?r(e):function(e){var t=s(e.getSelectionRange()),n=c.outputInfo(e);if(!t.length()){var r=p.tag(n.content,e.getCaretPos());r&&(t=r.outerRange)}return a(e,"\x3c!--","--\x3e",t)}(e)}}})},{"../assets/htmlMatcher":26,"../assets/preferences":28,"../assets/range":30,"../editTree/css":37,"../utils/action":70,"../utils/common":73,"../utils/editor":75}],20:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t,n){var r;if(t){if(/^data:/.test(t))return r=l.decode(t.replace(/^data\:.+?;.+?,/,"")),n(o.getImageSize(r));var i=c.locateFile(e.getFilePath(),t);if(null===i)throw"Can't find "+t+" file";c.read(i,function(e,t){if(e)throw"Unable to read "+i+": "+e;t=String(t),n(o.getImageSize(t))})}}var i=e("../utils/common"),a=e("../utils/editor"),o=e("../utils/action"),s=e("../editTree/xml"),y=e("../editTree/css"),l=e("../utils/base64"),c=e("../plugin/file");return{updateImageSizeAction:function(e){return o.isSupportedCSS(e.getSyntax())?function(e){var t=e.getCaretPos(),n=a.outputInfo(e),s=y.parseFromPosition(n.content,t,!0);if(s){var l,c=s.itemFromPosition(t,!0);c&&(l=/url\((["']?)(.+?)\1\)/i.exec(c.value()||""))&&r(e,l[2],function(n){if(n){var r=s.range(!0);s.value("width",n.width+"px"),s.value("height",n.height+"px",s.indexOf("width")+1),o.compoundUpdate(e,i.extend(r,{data:s.toString(),caret:t}))}})}}(e):function(e){var t=e.getCaretPos(),n=a.outputInfo(e),y=s.parseFromPosition(n.content,t,!0);y&&"img"==(y.name()||"").toLowerCase()&&r(e,y.value("src"),function(n){if(n){var r=y.range(!0);y.value("width",n.width),y.value("height",n.height,y.indexOf("width")+1),o.compoundUpdate(e,i.extend(r,{data:y.toString(),caret:t}))}})}(e),!0}}})},{"../editTree/css":37,"../editTree/xml":38,"../plugin/file":63,"../utils/action":70,"../utils/base64":71,"../utils/common":73,"../utils/editor":75}],21:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../editTree/xml"),i=(e("../utils/editor"),e("../utils/action")),a=e("../utils/common"),o=e("../parser/abbreviation");return{updateTagAction:function(e,t){if(!(t=t||e.prompt("Enter abbreviation")))return!1;var n=e.getContent(),r=i.captureContext(e),a=this.getUpdatedTag(t,r,n);return!!a&&(a.name()!=r.name&&r.match.close&&e.replaceContent("</"+a.name()+">",r.match.close.range.start,r.match.close.range.end,!0),e.replaceContent(a.source,r.match.open.range.start,r.match.open.range.end,!0),!0)},getUpdatedTag:function(e,t,n,i){if(!t)return null;var s=o.parse(e,i||{}),y=r.parse(t.match.open.range.substring(n),{offset:t.match.outerRange.start});s.children.forEach(function(e,t){!function(e,t,n){var r=(t.attribute("class")||"").split(/\s+/g);n&&r.push("+"+t.name());var i=function(e){return a.replaceCounter(e,t.counter)};r.forEach(function(t){if(t){var n=(t=i(t)).charAt(0);"+"==n?e.addClass(t.substr(1)):"-"==n?e.removeClass(t.substr(1)):e.value("class",t)}}),t.attributeList().forEach(function(t){if("class"!=t.name.toLowerCase()){var n=t.name.charAt(0);if("+"==n){var r=t.name.substr(1),a=e.get(r);a?a.value(a.value()+i(t.value)):e.value(r,i(t.value))}else"-"==n?e.remove(t.name.substr(1)):e.value(t.name,i(t.value))}})}(y,e,t)});var l=s.children[0];return l.data("nameResolved")||y.name(l.name()),y}}})},{"../editTree/xml":38,"../parser/abbreviation":55,"../utils/action":70,"../utils/common":73,"../utils/editor":75}],22:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../assets/range"),i=e("../assets/htmlMatcher"),a=e("../utils/common"),o=e("../utils/editor"),s=e("../utils/action"),y=e("../parser/abbreviation");return{wrapWithAbbreviationAction:function(e,t,n,l){var c=o.outputInfo(e,n,l);if(!(t=t||e.prompt("Enter abbreviation")))return null;t=String(t);var p=r(e.getSelectionRange());if(!p.length()){var u=i.tag(c.content,p.start);if(!u)return!1;p=a.narrowToNonSpace(c.content,u.range)}var f=a.escapeText(p.substring(c.content)),d=y.expand(t,{pastedContent:o.unindent(e,f),syntax:c.syntax,profile:c.profile,contextNode:s.captureContext(e)});return!!d&&(e.replaceContent(d,p.start,p.end),!0)}}})},{"../assets/htmlMatcher":26,"../assets/range":30,"../parser/abbreviation":55,"../utils/action":70,"../utils/common":73,"../utils/editor":75}],23:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function i(e,t){"string"==typeof e&&(e=JSON.parse(e)),t||(e=a(e)),c=e.vendors,l=e.css,p=e.era}function a(e){return"string"==typeof e&&(e=JSON.parse(e)),{vendors:function(e){var t={};return Object.keys(e.agents).forEach(function(n){var r=e.agents[n];t[n]={prefix:r.prefix,versions:r.versions}}),t}(e),css:function(e){var t={};e.cats.CSS;return Object.keys(e.data).forEach(function(n){var r=e.data[n];n in y&&y[n].forEach(function(e){t[e]=r.stats})}),t}(e),era:function(e){return Object.keys(e.eras).sort(function(e,t){return parseInt(e.substr(1))-parseInt(t.substr(1))})}(e)}}var o=e("./preferences"),s=e("../utils/common");o.define("caniuse.enabled",!0,"Enable support of Can I Use database. When enabled,\t\tCSS abbreviation resolver will look at Can I Use database first before detecting\t\tCSS properties that should be resolved"),o.define("caniuse.vendors","all","A comma-separated list vendor identifiers\t\t(as described in Can I Use database) that should be supported\t\twhen resolving vendor-prefixed properties. Set value to <code>all</code>\t\tto support all available properties"),o.define("caniuse.era","e-2","Browser era, as defined in Can I Use database.\t\tExamples: <code>e0</code> (current version), <code>e1</code> (near future)\t\t<code>e-2</code> (2 versions back) and so on.");var y={"border-image":["border-image"],"css-boxshadow":["box-shadow"],"css3-boxsizing":["box-sizing"],multicolumn:["column-width","column-count","columns","column-gap","column-rule-color","column-rule-style","column-rule-width","column-rule","column-span","column-fill"],"border-radius":["border-radius","border-top-left-radius","border-top-right-radius","border-bottom-right-radius","border-bottom-left-radius"],transforms2d:["transform"],"css-hyphens":["hyphens"],"css-transitions":["transition","transition-property","transition-duration","transition-timing-function","transition-delay"],"font-feature":["font-feature-settings"],"css-animation":["animation","animation-name","animation-duration","animation-timing-function","animation-iteration-count","animation-direction","animation-play-state","animation-delay","animation-fill-mode","@keyframes"],"css-gradients":["linear-gradient"],"css-masks":["mask-image","mask-source-type","mask-repeat","mask-position","mask-clip","mask-origin","mask-size","mask","mask-type","mask-box-image-source","mask-box-image-slice","mask-box-image-width","mask-box-image-outset","mask-box-image-repeat","mask-box-image","clip-path","clip-rule"],"css-featurequeries":["@supports"],flexbox:["flex","inline-flex","flex-direction","flex-wrap","flex-flow","order","flex"],calc:["calc"],"object-fit":["object-fit","object-position"],"css-grid":["grid","inline-grid","grid-template-rows","grid-template-columns","grid-template-areas","grid-template","grid-auto-rows","grid-auto-columns"," grid-auto-flow","grid-auto-position","grid"," grid-row-start","grid-column-start","grid-row-end","grid-column-end","grid-column","grid-row","grid-area","justify-self","justify-items","align-self","align-items"],"css-repeating-gradients":["repeating-linear-gradient"],"css-filters":["filter"],"user-select-none":["user-select"],"intrinsic-width":["min-content","max-content","fit-content","fill-available"],"css3-tabsize":["tab-size"]},l=null,c=null,p=null,u=null;return function(e){if(void 0===r||!r.amd)try{var t=e("fs"),n=e("path");u=t.readFileSync(n.join(__dirname,"../caniuse.json"),{encoding:"utf8"})}catch(e){}}(e),u&&i(u),{load:i,optimize:a,resolvePrefixes:function(e){if(!(o.get("caniuse.enabled")&&l&&e in l))return null;var t=[],n=l[e],r=function(){var e=o.get("caniuse.era"),t=p.indexOf(e);return~t||(t=p.indexOf("e-2")),t}();return function(){var e=Object.keys(c),t=o.getArray("caniuse.vendors");return t&&"all"!=t[0]?function(e,t){var n=[],r=e,i=t;return r.length>i.length&&(r=t,i=e),i.forEach(function(e){~r.indexOf(e)&&n.push(e)}),n}(e,t):e}().forEach(function(e){for(var i,a=c[e].versions.slice(r),o=0;o<a.length;o++)if((i=a[o])&&~n[e][i].indexOf("x")){t.push(c[e].prefix);break}}),s.unique(t).sort(function(e,t){return t.length-e.length})}}})},{"../utils/common":73,"./preferences":28}],24:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){return{data:e}}var i={},a=/([@\!]?)([\w\-:]+)\s*=\s*(['"])(.*?)\3/g;return n=n||{},n.exports={add:function(e,t){var n=this;i[e]=function(){var r=t.apply(n,arguments);return r&&(r.type=e),r}},get:function(e){return i[e]},create:function(e){var t=[].slice.call(arguments,1),n=this.get(e);return n?n.apply(this,t):null},is:function(e,t){return this.type(e)===t},type:function(e){return e&&e.type}},n.exports.add("element",function(e,t,n){var r={name:e,is_empty:!!n};if(t)if(r.attributes=[],Array.isArray(t))r.attributes=t;else if("string"==typeof t)for(var i;i=a.exec(t);)r.attributes.push({name:i[2],value:i[4],isDefault:"@"==i[1],isImplied:"!"==i[1]});else r.attributes=Object.keys(t).map(function(e){return{name:e,value:t[e]}});return r}),n.exports.add("snippet",r),n.exports.add("reference",r),n.exports.add("empty",function(){return{}}),n.exports})},{}],25:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(){this._list=[]}var i=e("../utils/common");return r.prototype={add:function(e,t){var n=this._list.length;t&&"order"in t&&(n=1e4*t.order),this._list.push(i.extend({},t,{order:n,fn:e}))},remove:function(e){var t=i.find(this._list,function(t){return t.fn===e});t&&this._list.splice(this._list.indexOf(t),1)},list:function(){return this._list.sort(function(e,t){return t.order-e.order})},listFn:function(){return this.list().map(function(e){return e.fn})},exec:function(e,t){t=t||[];var n=null;return i.find(this.list(),function(r){if((n=r.fn.apply(r,t))!==e)return!0}),n}},{create:function(){return new r}}})},{"../utils/common":73}],26:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t){return{range:s(e,"number"==typeof t?t-e:t[0]),type:"comment"}}function i(e){var t,n={};return{open:function(e){var t=this.matches(e);return t&&"open"==t.type?t:null},close:function(e){var t=this.matches(e);return t&&"close"==t.type?t:null},matches:function(r){var i="p"+r;if(!(i in n)&&(n[i]=!1,"<"==e.charAt(r))){var a=e.slice(r);(t=a.match(y))?n[i]=function(e,t){return{name:t[1],selfClose:!!t[3],range:s(e,t[0]),type:"open"}}(r,t):(t=a.match(l))&&(n[i]=function(e,t){return{name:t[1],range:s(e,t[0]),type:"close"}}(r,t))}return n[i]},text:function(){return e},clean:function(){n=e=t=null}}}function a(e,t,n){return e.substring(t,t+n.length)==n}function o(e,t){for(var n=[],r=null,i=t.text(),o=e.range.end,s=i.length;o<s;o++){if(a(i,o,"\x3c!--"))for(var y=o;y<s;y++)if(a(i,y,"--\x3e")){o=y+3;break}if(r=t.matches(o)){if("open"!=r.type||r.selfClose){if("close"==r.type){if(!n.length)return r.name==e.name?r:null;if(n[n.length-1]==r.name)n.pop();else{for(var l=!1;n.length&&!l;){n.pop()==r.name&&(l=!0)}if(!n.length&&!l)return r.name==e.name?r:null}}}else n.push(r.name);o=r.range.end-1}}}var s=e("./range"),y=/^<([\w\:\-]+)((?:\s+[\w\-:]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/,l=/^<\/([\w\:\-]+)[^>]*>/;return{find:function(e,t){for(var n,y,l=i(e),c=null,p=null,u=t;u>=0;u--)if(c=l.open(u)){if(c.selfClose){if(c.range.cmp(t,"lt","gt"))break;continue}if(p=o(c,l)){if(s.create2(c.range.start,p.range.end).contains(t))break}else if(c.range.contains(t))break;c=null}else if(a(e,u,"--\x3e")){for(n=u-1;n>=0&&!a(e,n,"--\x3e");n--)if(a(e,n,"\x3c!--")){u=n;break}}else if(a(e,u,"\x3c!--")){for(n=u+4,y=e.length;n<y;n++)if(a(e,n,"--\x3e")){n+=3;break}c=r(u,n);break}if(l.clean(),c){var f=null,d=null;if(p?(f=s.create2(c.range.start,p.range.end),d=s.create2(c.range.end,p.range.start)):f=d=s.create2(c.range.start,c.range.end),"comment"==c.type){var h=f.substring(e);d.start+=h.length-h.replace(/^<\!--\s*/,"").length,d.end-=h.length-h.replace(/\s*-->$/,"").length}return{open:c,close:p,type:"comment"==c.type?"comment":"tag",innerRange:d,innerContent:function(){return this.innerRange.substring(e)},outerRange:f,outerContent:function(){return this.outerRange.substring(e)},range:d.length()&&d.cmp(t,"lte","gte")?d:f,content:function(){return this.range.substring(e)},source:e}}},tag:function(e,t){var n=this.find(e,t);if(n&&"tag"==n.type)return n}}})},{"./range":30}],27:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){return{log:function(){"undefined"!=typeof console&&console.log&&console.log.apply(console,arguments)}}})},{}],28:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../utils/common"),i={},a={},o=null,s=null;return{define:function(e,t,n){var r=e;"string"==typeof e&&((r={})[e]={value:t,description:n}),Object.keys(r).forEach(function(e){var t=r[e];a[e]=function(e){return"object"==typeof e&&!Array.isArray(e)&&"value"in e&&Object.keys(e).length<3}(t)?t:{value:t}})},set:function(e,t){var n=e;"string"==typeof e&&((n={})[e]=t),Object.keys(n).forEach(function(e){var t=n[e];if(!(e in a))throw new Error('Property "'+e+'" is not defined. You should define it first with `define` method of current module');if(t!==a[e].value){switch(typeof a[e].value){case"boolean":t=function(e){return"string"==typeof e?"yes"==(e=e.toLowerCase())||"true"==e||"1"==e:!!e}(t);break;case"number":t=parseInt(t+"",10)||0;break;default:null!==t&&(t+="")}i[e]=t}else e in i&&delete i[e]})},get:function(e){return e in i?i[e]:e in a?a[e].value:void 0},getArray:function(e){var t=this.get(e);return void 0===t||null===t||""===t?null:(t=t.split(",").map(r.trim)).length?t:null},getDict:function(e){var t={};return this.getArray(e).forEach(function(e){var n=e.split(":");t[n[0]]=n[1]}),t},description:function(e){return e in a?a[e].description:void 0},remove:function(e){Array.isArray(e)||(e=[e]),e.forEach(function(e){e in i&&delete i[e],e in a&&delete a[e]})},list:function(){return Object.keys(a).sort().map(function(e){return{name:e,value:this.get(e),type:typeof a[e].value,description:a[e].description}},this)},load:function(e){Object.keys(e).forEach(function(t){this.set(t,e[t])},this)},exportModified:function(){return r.extend({},i)},reset:function(){i={}},_startTest:function(){o=a,s=i,a={},i={}},_stopTest:function(){a=o,i=s}}})},{"../utils/common":73}],29:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){s.extend(this,p,e)}function i(e,t){switch(String(t||"").toLowerCase()){case"lower":return e.toLowerCase();case"upper":return e.toUpperCase()}return e}function a(e,t){return c[e.toLowerCase()]=new r(t)}function o(){a("xhtml"),a("html",{self_closing_tag:!1,compact_bool:!0}),a("xml",{self_closing_tag:!0,tag_nl:!0}),a("plain",{tag_nl:!1,indent:!1,place_cursor:!1}),a("line",{tag_nl:!1,indent:!1,extraFilters:"s"}),a("css",{tag_nl:!0}),a("css_line",{tag_nl:!1})}var s=e("../utils/common"),y=e("./resources"),l=e("./preferences");l.define("profile.allowCompactBoolean",!0,'This option can be used to globally disable compact form of boolean attribues (attributes where name and value are equal). With compactform enabled, HTML tags can be outputted as <code><div contenteditable></code> instead of <code><div contenteditable="contenteditable"></code>'),l.define("profile.booleanAttributes","^contenteditable|seamless$","A regular expression for attributes that should be boolean by default.If attribute name matches this expression, you don’t have to write dot after attribute name in Emmet abbreviation to mark it as boolean.");var c={},p={tag_case:"asis",attr_case:"asis",attr_quotes:"double",tag_nl:"decide",tag_nl_leaf:!1,place_cursor:!0,indent:!0,inline_break:3,compact_bool:!1,self_closing_tag:"xhtml",filters:"",extraFilters:""};return r.prototype={tagName:function(e){return i(e,this.tag_case)},attributeName:function(e){return i(e,this.attr_case)},attributeQuote:function(){return"single"==this.attr_quotes?"'":'"'},selfClosing:function(){return"xhtml"==this.self_closing_tag?" /":!0===this.self_closing_tag?"/":""},cursor:function(){return this.place_cursor?s.getCaretPlaceholder():""},isBoolean:function(e,t){if(e==t)return!0;var n=l.get("profile.booleanAttributes");return!(t||!n)&&(n=new RegExp(n,"i")).test(e)},allowCompactBoolean:function(){return this.compact_bool&&l.get("profile.allowCompactBoolean")}},o(),{create:function(e,t){return 2==arguments.length?a(e,t):new r(s.defaults(e||{},p))},get:function(e,t){if(!e&&t){var n=y.findItem(t,"profile");n&&(e=n)}return e?e instanceof r?e:"string"==typeof e&&e.toLowerCase()in c?c[e.toLowerCase()]:this.create(e):c.plain},remove:function(e){(e=(e||"").toLowerCase())in c&&delete c[e]},reset:function(){c={},o()},stringCase:i}})},{"../utils/common":73,"./preferences":28,"./resources":31}],30:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t,n){switch(n){case"eq":case"==":return e===t;case"lt":case"<":return e<t;case"lte":case"<=":return e<=t;case"gt":case">":return e>t;case"gte":case">=":return e>=t}}function i(e,t){"object"==typeof e&&"start"in e?(this.start=Math.min(e.start,e.end),this.end=Math.max(e.start,e.end)):Array.isArray(e)?(this.start=e[0],this.end=e[1]):(t="string"==typeof t?t.length:+t,this.start=e,this.end=e+t)}return i.prototype={length:function(){return Math.abs(this.end-this.start)},equal:function(e){return this.cmp(e,"eq","eq")},shift:function(e){return this.start+=e,this.end+=e,this},overlap:function(e){return e.start<=this.end&&e.end>=this.start},intersection:function(e){if(this.overlap(e)){var t=Math.max(e.start,this.start);return new i(t,Math.min(e.end,this.end)-t)}return null},union:function(e){if(this.overlap(e)){var t=Math.min(e.start,this.start);return new i(t,Math.max(e.end,this.end)-t)}return null},inside:function(e){return this.cmp(e,"lte","gt")},contains:function(e){return this.cmp(e,"lt","gt")},include:function(e){return this.cmp(e,"lte","gte")},cmp:function(e,t,n){var a,o;return e instanceof i?(a=e.start,o=e.end):a=o=e,r(this.start,a,t||"<=")&&r(this.end,o,n||">")},substring:function(e){return this.length()>0?e.substring(this.start,this.end):""},clone:function(){return new i(this.start,this.length())},toArray:function(){return[this.start,this.end]},toString:function(){return this.valueOf()},valueOf:function(){return"{"+this.start+", "+this.length()+"}"}},n.exports=function(e,t){return void 0===e||null===e?null:e instanceof i?e:("object"==typeof e&&"start"in e&&"end"in e&&(t=e.end-e.start,e=e.start),new i(e,t))},n.exports.create=n.exports,n.exports.isRange=function(e){return e instanceof i},n.exports.create2=function(e,t){return"number"==typeof e&&"number"==typeof t&&(t-=e),this.create(e,t)},n.exports.sort=function(e,t){return e=e.sort(function(e,t){return e.start===t.start?t.end-e.end:e.start-t.start}),t&&e.reverse(),e},n.exports})},{}],31:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function i(e,t){e&&Object.keys(e).forEach(function(n){t(e[n],n)})}function a(e,t,n){return t=function(e){return y.replaceUnescapedSymbol(e,"|",y.getCaretPlaceholder())}(t),"snippets"==n?l.create("snippet",t):"abbreviations"==n?function(e,t){e=y.trim(e);var n;return(n=f.exec(t))?l.create("element",n[1],n[2],"/"==n[4]):l.create("reference",t)}(e,t):void 0}function o(e){return e.replace(/:$/,"").replace(/:/g,"-")}var s=e("./handlerList"),y=e("../utils/common"),l=e("./elements"),c=(e("../assets/logger"),e("../vendor/stringScore")),p=e("../resolver/css"),u={},f=/^<(\w+\:?[\w\-]*)((?:\s+[@\!]?[\w\:\-]+\s*=\s*(['"]).*?\3)*)\s*(\/?)>/,d={},h={},m=s.create();return y.extend(t,{setVocabulary:function(e,t){u={};var n={};i(e,function(e,t){var r={};i(e,function(e,t){"abbreviations"!=t&&"snippets"!=t||(e=function(e){var t={};return i(e,function(e,n){for(var r=n.split("|"),i=r.length-1;i>=0;i--)t[r[i]]=e}),t}(e)),r[t]=e}),n[t]=r}),"system"==t?d=n:h=n},getVocabulary:function(e){return"system"==e?d:h},getMatchedResource:function(e,t){return m.exec(null,y.toArray(arguments))||this.findSnippet(t,e.name())},getVariable:function(e){return(this.getSection("variables")||{})[e]},setVariable:function(e,t){var n=this.getVocabulary("user")||{};"variables"in n||(n.variables={}),n.variables[e]=t,this.setVocabulary(n,"user")},hasSyntax:function(e){return e in this.getVocabulary("user")||e in this.getVocabulary("system")},addResolver:function(e,t){m.add(e,t)},removeResolver:function(e){m.remove(e)},getSection:function(e){if(!e)return null;e in u||(u[e]=y.deepMerge({},d[e],h[e]));for(var t,n=u[e],r=y.toArray(arguments,1);n&&(t=r.shift());){if(!(t in n))return null;n=n[t]}return n},findItem:function(e,t){for(var n=this.getSection(e);n;){if(t in n)return n[t];n=this.getSection(n.extends)}},findSnippet:function(e,t,n){if(!e||!t)return null;n=n||[];var r=[t];~t.indexOf("-")&&r.push(t.replace(/\-/g,":"));var i=this.getSection(e),o=null;return["snippets","abbreviations"].some(function(t){var n=this.getSection(e,t);if(n)return r.some(function(e){if(n[e])return o=a(e,n[e],t)})},this),n.push(e),o||!i.extends||~n.indexOf(i.extends)?o:this.findSnippet(i.extends,t,n)},fuzzyFindSnippet:function(e,t,n){var r=this.fuzzyFindMatches(e,t,n)[0];if(r)return r.value.parsedValue},fuzzyFindMatches:function(e,t,n){n=n||.3,t=o(t);var r=this.getAllSnippets(e);return Object.keys(r).map(function(e){var n=r[e];return{key:e,score:c.score(n.nk,t,.1),value:n}}).filter(function(e){return e.score>=n}).sort(function(e,t){return e.score-t.score}).reverse()},getAllSnippets:function(e){var t="all-"+e;if(!u[t]){var n=[],r=e,s=[];do{var l=this.getSection(r);if(!l)break;["snippets","abbreviations"].forEach(function(e){var t={};i(l[e]||null,function(n,r){t[r]={nk:o(r),value:n,parsedValue:a(r,n,e),type:e}}),n.push(t)}),s.push(r),r=l.extends}while(r&&!~s.indexOf(r));u[t]=y.extend.apply(y,n.reverse())}return u[t]},getNewline:function(){var e=this.getVariable("newline");return"string"==typeof e?e:"\n"},setNewline:function(e){this.setVariable("newline",e),this.setVariable("nl",e)}}),t.addResolver(p.resolve.bind(p)),function(e){if(void 0===r||!r.amd)try{var n=e("fs"),i=e("path"),a=n.readFileSync(i.join(__dirname,"../snippets.json"),{encoding:"utf8"});t.setVocabulary(JSON.parse(a),"system")}catch(e){}}(e),t})},{"../assets/logger":27,"../resolver/css":64,"../utils/common":73,"../vendor/stringScore":79,"./elements":24,"./handlerList":25}],32:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){this.pos=this.start=0,this.string=e,this._length=e.length}return r.prototype={eol:function(){return this.pos>=this._length},sol:function(){return 0===this.pos},peek:function(){return this.string.charAt(this.pos)},next:function(){if(this.pos<this._length)return this.string.charAt(this.pos++)},eat:function(e){var t=this.string.charAt(this.pos);if("string"==typeof e?t==e:t&&(e.test?e.test(t):e(t)))return++this.pos,t},eatWhile:function(e){for(var t=this.pos;this.eat(e););return this.pos>t},eatSpace:function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},skipToEnd:function(){this.pos=this._length},skipTo:function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},skipToPair:function(e,t,n){for(var r,i=0,a=this.pos,o=this._length;a<o;)if((r=this.string.charAt(a++))==e)i++;else if(r==t){if(--i<1)return this.pos=a,!0}else!n||'"'!=r&&"'"!=r||this.skipString(r);return!1},skipQuoted:function(e){var t=this.string.charAt(e?this.pos:this.pos-1);if('"'===t||"'"===t)return e&&this.pos++,this.skipString(t)},skipString:function(e){for(var t,n=this.pos,r=this._length;n<r;)if("\\"!=(t=this.string.charAt(n++))&&t==e)return this.pos=n,!0;return!1},backUp:function(e){this.pos-=e},match:function(e,t,n){if("string"!=typeof e){var r=this.string.slice(this.pos).match(e);return r&&!1!==t&&(this.pos+=r[0].length),r}var i=n?function(e){return e.toLowerCase()}:function(e){return e};if(i(this.string).indexOf(i(e),this.pos)==this.pos)return!1!==t&&(this.pos+=e.length),!0},current:function(e){return this.string.slice(this.start,this.pos-(e?1:0))}},n.exports=function(e){return new r(e)},n.exports.create=n.exports,n.exports})},{}],33:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../utils/common"),i=e("./stringStream"),a=e("./resources"),o=100,s=0,y={replaceCarets:!1,escape:function(e){return"\\"+e},tabstop:function(e){return e.token},variable:function(e){return e.token}};return{extract:function(e,t){var n={carets:""},i=[];(t=r.extend({},y,t,{tabstop:function(e){var t=e.token,r="";return"cursor"==e.placeholder?i.push({start:e.start,end:e.start+t.length,group:"carets",value:""}):("placeholder"in e&&(n[e.group]=e.placeholder),e.group in n&&(r=n[e.group]),i.push({start:e.start,end:e.start+t.length,group:e.group,value:r})),t}})).replaceCarets&&(e=e.replace(new RegExp(r.escapeForRegexp(r.getCaretPlaceholder()),"g"),"${0:cursor}")),e=this.processText(e,t);var a="",o=0,s=i.map(function(t){var r=(a+=e.substring(o,t.start)).length,i=n[t.group]||"";return a+=i,o=t.end,{group:t.group,start:r,end:r+i.length}});return a+=e.substring(o),{text:a,tabstops:s.sort(function(e,t){return e.start-t.start})}},processText:function(e,t){t=r.extend({},y,t);for(var n,a,o,s="",l=i.create(e);n=l.next();)if("\\"!=n||l.eol()){if(o=n,"$"==n)if(l.start=l.pos-1,a=l.match(/^[0-9]+/))o=t.tabstop({start:s.length,group:l.current().substr(1),token:l.current()});else if(a=l.match(/^\{([a-z_\-][\w\-]*)\}/))o=t.variable({start:s.length,name:a[1],token:l.current()});else if(a=l.match(/^\{([0-9]+)(:.+?)?\}/,!1)){l.skipToPair("{","}");var c={start:s.length,group:a[1],token:l.current()},p=c.token.substring(c.group.length+2,c.token.length-1);p&&(c.placeholder=p.substr(1)),o=t.tabstop(c)}s+=o}else s+=t.escape(l.next());return s},upgrade:function(e,t){var n=0,r={tabstop:function(e){var r=parseInt(e.group,10);return r>n&&(n=r),e.placeholder?"${"+(r+t)+":"+e.placeholder+"}":"${"+(r+t)+"}"}};return["start","end","content"].forEach(function(t){e[t]=this.processText(e[t],r)},this),n},variablesResolver:function(e){var t={};return function(n,i){if("child"==i)return n;if("cursor"==i)return r.getCaretPlaceholder();var s=e.attribute(i);if(void 0!==s&&s!==n)return s;var y=a.getVariable(i);return y||(t[i]||(t[i]=o++),"${"+t[i]+":"+i+"}")}},replaceVariables:function(e,t){var n="function"==typeof(t=t||{})?t:function(e,n){return n in t?t[n]:null};return this.processText(e,{variable:function(e){var t=n(e.token,e.name,e);return null===t&&(t=a.getVariable(e.name)),null!==t&&void 0!==t||(t=e.token),t}})},resetTabstopIndex:function(){s=0,o=100},abbrOutputProcessor:function(e,t,n){var r=0,i=this,a={tabstop:function(e){var t=parseInt(e.group,10);if(0===t)return"${0}";if(t>r&&(r=t),e.placeholder){return"${"+(t+s)+":"+i.processText(e.placeholder,a)+"}"}return"${"+(t+s)+"}"}};return e=this.processText(e,a),e=this.replaceVariables(e,this.variablesResolver(t)),s+=r+1,e}}})},{"../utils/common":73,"./resources":31,"./stringStream":32}],34:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){this.tokens=e,this._position=0,this.reset()}return r.prototype={next:function(){if(this.hasNext()){var e=this.tokens[++this._i];return this._position=e.start,e}return this._i=this._il,null},current:function(){return this.tokens[this._i]},peek:function(){return this.tokens[this._i+i]},position:function(){return this._position},hasNext:function(){return this._i<this._il-1},reset:function(){this._i=0,this._il=this.tokens.length},item:function(){return this.tokens[this._i]},itemNext:function(){return this.tokens[this._i+1]},itemPrev:function(){return this.tokens[this._i-1]},nextUntil:function(e,t){for(var n,r="string"==typeof e?function(t){return t.type==e}:e;(n=this.next())&&(t&&t.call(this,n),!r.call(this,n)););}},{create:function(e){return new r(e)}}})},{}],35:[function(e,t,n){t.exports={eras:{"e-26":"26 versions back","e-25":"25 versions back","e-24":"24 versions back","e-23":"23 versions back","e-22":"22 versions back","e-21":"21 versions back","e-20":"20 versions back","e-19":"19 versions back","e-18":"18 versions back","e-17":"17 versions back","e-16":"16 versions back","e-15":"15 versions back","e-14":"14 versions back","e-13":"13 versions back","e-12":"12 versions back","e-11":"11 versions back","e-10":"10 versions back","e-9":"9 versions back","e-8":"8 versions back","e-7":"7 versions back","e-6":"6 versions back","e-5":"5 versions back","e-4":"4 versions back","e-3":"3 versions back","e-2":"2 versions back","e-1":"Previous version",e0:"Current",e1:"Near future",e2:"Farther future"},agents:{ie:{browser:"IE",abbr:"IE",prefix:"ms",type:"desktop",usage_global:{10:10.7866,11:.114751,5.5:.009298,6:.204912,7:.508182,8:8.31124,9:5.21297},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"5.5","6","7","8","9","10","11",null,null],current_version:""},firefox:{browser:"Firefox",abbr:"FF",prefix:"moz",type:"desktop",usage_global:{10:.112406,11:.088319,12:.208754,13:.096348,14:.096348,15:.136493,16:.264957,17:.192696,18:.112406,19:.128464,2:.016058,20:.16058,21:.216783,22:.256928,23:.907277,24:11.0318,25:.529914,26:.016058,27:.016058,3:.088319,3.5:.040145,3.6:.305102,4:.072261,5:.048174,6:.048174,7:.040145,8:.072261,9:.056203},versions:[null,"2","3","3.5","3.6","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27"],current_version:""},chrome:{browser:"Chrome",abbr:"Chr.",prefix:"webkit",type:"desktop",usage_global:{10:.048174,11:.112406,12:.064232,13:.056203,14:.056203,15:.072261,16:.048174,17:.040145,18:.08029,19:.040145,20:.040145,21:.48174,22:.248899,23:.216783,24:.200725,25:.361305,26:.353276,27:.369334,28:.610204,29:5.08236,30:24.6089,31:.16058,32:.064232,4:.024087,5:.024087,6:.032116,7:.024087,8:.032116,9:.024087},versions:["4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32"],current_version:""},safari:{browser:"Safari",abbr:"Saf.",prefix:"webkit",type:"desktop",usage_global:{3.1:0,3.2:.008692,4:.104377,5:.305102,5.1:1.28464,6:2.04739,6.1:.064232,7:.16058},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"3.1","3.2","4","5","5.1","6","6.1","7",null,null],current_version:""},opera:{browser:"Opera",abbr:"Op.",prefix:"o",type:"desktop",usage_global:{"10.0-10.1":.016058,10.5:.008392,10.6:.008029,11:.008219,11.1:.008219,11.5:.016058,11.6:.032116,12:.040145,12.1:.48174,15:.032116,16:.104377,17:.16058,18:0,"9.5-9.6":.008219},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"9.5-9.6","10.0-10.1","10.5","10.6","11","11.1","11.5","11.6","12","12.1","15","16","17","18",null],current_version:"",prefix_exceptions:{15:"webkit",16:"webkit",17:"webkit",18:"webkit"}},ios_saf:{browser:"iOS Safari",abbr:"iOS",prefix:"webkit",type:"mobile",usage_global:{3.2:.00400113,"4.0-4.1":.00800226,"4.2-4.3":.0280079,"5.0-5.1":.28408,"6.0-6.1":1.15633,"7.0":2.52071},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"3.2","4.0-4.1","4.2-4.3","5.0-5.1","6.0-6.1","7.0",null,null],current_version:""},op_mini:{browser:"Opera Mini",abbr:"O.Mini",prefix:"o",type:"mobile",usage_global:{"5.0-7.0":4.58374},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"5.0-7.0",null,null],current_version:""},android:{browser:"Android Browser",abbr:"And.",prefix:"webkit",type:"mobile",usage_global:{2.1:.0251229,2.2:.0854178,2.3:1.32146,3:.00502458,4:.994867,4.1:1.87417,"4.2-4.3":.743638,4.4:0},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"2.1","2.2","2.3","3","4","4.1","4.2-4.3","4.4",null],current_version:""},op_mob:{browser:"Opera Mobile",abbr:"O.Mob",prefix:"o",type:"mobile",usage_global:{0:0,10:0,11.5:.00726525,12:.0363263,12.1:.101714},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"10",null,null,"11.5","12","12.1","0",null,null],current_version:"16",prefix_exceptions:{0:"webkit"}},bb:{browser:"Blackberry Browser",abbr:"BB",prefix:"webkit",type:"mobile",usage_global:{10:0,7:.141419},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"7","10",null,null],current_version:""},and_chr:{browser:"Chrome for Android",abbr:"Chr/And.",prefix:"webkit",type:"mobile",usage_global:{0:1.38176},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"0",null,null],current_version:"30"},and_ff:{browser:"Firefox for Android",abbr:"FF/And.",prefix:"moz",type:"mobile",usage_global:{0:.070956},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"0",null,null],current_version:"25"},ie_mob:{browser:"IE Mobile",abbr:"IE.Mob",prefix:"ms",type:"mobile",usage_global:{10:.205595},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"10",null,null],current_version:""}},statuses:{rec:"Recommendation",pr:"Proposed Recommendation",cr:"Candidate Recommendation",wd:"Working Draft",other:"Other",unoff:"Unofficial / Note"},cats:{CSS:["CSS","CSS2","CSS3"],HTML5:["Canvas","HTML5"],"JS API":["JS API"],Other:["PNG","Other","DOM"],SVG:["SVG"]},updated:1383587152,data:{"png-alpha":{title:"PNG alpha transparency",description:"Semi-transparent areas in PNG files",spec:"http://www.w3.org/TR/PNG/",status:"rec",links:[{url:"http://dillerdesign.com/experiment/DD_belatedPNG/",title:"Workaround for IE6"},{url:"http://en.wikipedia.org/wiki/Portable_Network_Graphics",title:"Wikipedia"}],categories:["PNG"],stats:{ie:{5.5:"n",6:"p",7:"y",8:"y",9:"y",10:"y",11:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"IE6 does support full transparency in 8-bit PNGs, which can sometimes be an alternative to 24-bit PNGs.",usage_perc_y:94.36,usage_perc_a:0,ucprefix:!1,parent:"",keywords:""},apng:{title:"Animated PNG (APNG)",description:"Like animated GIFs, but allowing 24-bit colors and alpha transparency",spec:"https://wiki.mozilla.org/APNG_Specification",status:"unoff",links:[{url:"http://en.wikipedia.org/wiki/APNG",title:"Wikipedia"},{url:"https://github.com/davidmz/apng-canvas",title:"Polyfill using canvas"},{url:"https://chrome.google.com/webstore/detail/ehkepjiconegkhpodgoaeamnpckdbblp",title:"Chrome extension providing support"},{url:"http://www.truekolor.net/learn-how-to-create-an-animated-png/",title:"APNG tutorial"}],categories:["PNG"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"n",16:"n",17:"n",18:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"n"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"n"},and_chr:{0:"n"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:"Where support for APNG is missing, only the first frame is displayed",usage_perc_y:16.19,usage_perc_a:0,ucprefix:!1,parent:"",keywords:""},video:{title:"Video element",description:"Method of playing videos on webpages (without requiring a plug-in)",spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#video",status:"wd",links:[{url:"https://raw.github.com/phiggins42/has.js/master/detect/video.js#video",title:"has.js test"},{url:"http://webmproject.org",title:"WebM format information"},{url:"http://docs.webplatform.org/wiki/html/elements/video",title:"WebPlatform Docs"},{url:"http://camendesign.co.uk/code/video_for_everybody",title:"Video for Everybody"},{url:"http://diveinto.org/html5/video.html",title:"Video on the Web - includes info on Android support"},{url:"http://dev.opera.com/articles/view/everything-you-need-to-know-about-html5-video-and-audio/",title:"Detailed article on video/audio elements"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"a",2.2:"a",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:'Different browsers have support for different video formats, see sub-features for details. \r\n\r\nThe Android browser (before 2.3) requires <a href="http://www.broken-links.com/2010/07/08/making-html5-video-work-on-android-phones/">specific handling</a> to run the video element.',usage_perc_y:80.71,usage_perc_a:.11,ucprefix:!1,parent:"",keywords:"<video>"},audio:{title:"Audio element",description:"Method of playing sound on webpages (without requiring a plug-in)",spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#audio",status:"wd",links:[{url:"http://html5doctor.com/native-audio-in-the-browser/",title:"HTML5 Doctor article"},{url:"http://textopia.org/androidsoundformats.html",title:"File format test page"},{url:"http://www.jplayer.org/latest/demos/",title:"Demos of audio player that uses <audio>"},{url:"http://www.phoboslab.org/log/2011/03/the-state-of-html5-audio",title:"The State of HTML5 Audio"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/audio.js#audio",title:"has.js test"},{url:"http://dev.opera.com/articles/view/everything-you-need-to-know-about-html5-video-and-audio/",title:"Detailed article on video/audio elements"},{url:"http://docs.webplatform.org/wiki/html/elements/audio",title:"WebPlatform Docs"},{url:"http://24ways.org/2010/the-state-of-html5-audio",title:"Detailed article on support"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"a","10.0-10.1":"a",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:80.7,usage_perc_a:.02,ucprefix:!1,parent:"",keywords:""},contenteditable:{title:"contenteditable attribute (basic support)",description:"Method of making any HTML element editable",spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#contenteditable",status:"wd",links:[{url:"http://accessgarage.wordpress.com/2009/05/08/how-to-hack-your-app-to-make-contenteditable-work/",title:"Blog post on usage problems"},{url:"http://html5demos.com/contenteditable",title:"Demo page"},{url:"http://blog.whatwg.org/the-road-to-html-5-contenteditable",title:"WHATWG blog post"},{url:"http://docs.webplatform.org/wiki/html/attributes/contentEditable",title:"WebPlatform Docs"}],categories:["HTML5"],stats:{ie:{5.5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"a",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"This support only refers to very basic editing capability, implementations vary significantly on how certain elements can be edited.",usage_perc_y:88.37,usage_perc_a:.09,ucprefix:!1,parent:"",keywords:""},dragndrop:{title:"Drag and Drop",description:"Method of easily dragging and dropping elements on a page, requiring minimal JavaScript.",spec:"http://www.w3.org/TR/html5/editing.html#dnd",status:"wd",links:[{url:"http://html5demos.com/drag",title:"Demo with link blocks"},{url:"http://html5doctor.com/native-drag-and-drop/",title:"HTML5 Doctor article"},{url:"http://docs.webplatform.org/wiki/dom/events/drag",title:"WebPlatform Docs"},{url:"http://nettutsplus.s3.amazonaws.com/64_html5dragdrop/demo/index.html",title:"Shopping cart demo"}],categories:["HTML5"],stats:{ie:{5.5:"a",6:"a",7:"a",8:"a",9:"a",10:"y",11:"y"},firefox:{2:"p",3:"p",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"p",10.6:"p",11:"p",11.1:"p",11.5:"p",11.6:"p",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"n"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"y",0:"n"},and_chr:{0:"n"},and_ff:{0:"n"},ie_mob:{10:"y"}},notes:"Partial support in older IE refers to no support for the dataTransfer.files or .types objects and limited supported formats for dataTransfer.setData/getData.",usage_perc_y:64.83,usage_perc_a:14.25,ucprefix:!1,parent:"",keywords:"draganddrop"},queryselector:{title:"querySelector/querySelectorAll",description:"Method of accessing DOM elements using CSS selectors",spec:"http://www.w3.org/TR/selectors-api/",status:"rec",links:[{url:"http://docs.webplatform.org/wiki/css/selectors_api/querySelector",title:"WebPlatform Docs"},{url:"http://cjihrig.com/blog/javascripts-selectors-api/",title:"Blog post"},{url:"https://developer.mozilla.org/En/DOM/Element.querySelectorAll",title:"MDN article on querySelectorAll"},{url:"https://developer.mozilla.org/en/DOM/element.querySelector",title:"MDN article on querySelector"}],categories:["DOM"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"y",9:"y",10:"y",11:"y"},firefox:{2:"p",3:"p",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Only works for the CSS selectors available. Thus the IE8 implementation is limited to the CSS 2.1 selectors",usage_perc_y:93.74,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"query,selectors,selectors api"},getelementsbyclassname:{title:"getElementsByClassName",description:"Method of accessing DOM elements by class name",spec:"http://www.w3.org/TR/dom/#dom-document-getelementsbyclassname",status:"wd",links:[{url:"http://www.quirksmode.org/dom/tests/basics.html#getElementsByClassName",title:"Test page"},{url:"http://docs.webplatform.org/wiki/dom/methods/getElementsByClassName",title:"WebPlatform Docs"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y",10:"y",11:"y"},firefox:{2:"p",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:85.52,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"byclassname"},forms:{title:"HTML5 form features",description:'Expanded form options, including things like date pickers, sliders, validation, placeholders and multiple file uploads. Previously known as "Web forms 2.0".',spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html",status:"wd",links:[{url:"https://github.com/westonruter/webforms2",title:"Cross-browser JS implementation (based on original spec)"},{url:"http://www.miketaylr.com/code/input-type-attr.html",title:"HTML5 inputs and attribute support page"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"p",10:"a",11:"a"},firefox:{2:"p",3:"p",3.5:"p",3.6:"p",4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a"},chrome:{4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a"},safari:{3.1:"p",3.2:"p",4:"a",5:"a",5.1:"a",6:"a",6.1:"a",7:"a"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"a",16:"a",17:"a",18:"a"},ios_saf:{3.2:"n","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"a"},bb:{7:"n",10:"a"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"a"},and_chr:{0:"a"},and_ff:{0:"a"},ie_mob:{10:"a"}},notes:"",usage_perc_y:4.75,usage_perc_a:65.35,ucprefix:!1,parent:"",keywords:"input,datepicker"},html5semantic:{title:"New semantic elements",description:"HTML5 offers some new elements, primarily for semantic purposes. The elements include: section, article, aside, header, footer, nav, figure, figcaption, time, mark.",spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#sections",status:"wd",links:[{url:"http://oli.jp/2009/html5-structure3/",title:"Article on structural elements"},{url:"http://blog.whatwg.org/supporting-new-elements-in-ie",title:"Workaround for IE"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/dom.js#dom-html5-elements",title:"has.js test"},{url:"http://blog.whatwg.org/styling-ie-noscript",title:"Alternate workaround"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"a",3.5:"a",3.6:"a",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"a",5:"a",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"a",3.2:"a",4:"a",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"a","9.5-9.6":"a","10.0-10.1":"a",10.5:"a",10.6:"a",11:"a",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"a","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"a"},android:{2.1:"a",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"a",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Partial support refers to missing the default styling. This is easily taken care of by using display:block for all new elements (except time and mark, these should be display:inline anyway).",usage_perc_y:80.26,usage_perc_a:5.26,ucprefix:!1,parent:"",keywords:""},"offline-apps":{title:"Offline web applications",description:"Method of defining web page files to be cached using a cache manifest file, allowing them to work offline on subsequent visits to the page",spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html",status:"wd",links:[{url:"http://www.sitepoint.com/offline-web-application-tutorial/",title:"Sitepoint tutorial"},{url:"http://diveinto.org/html5/offline.html",title:"Dive Into HTML5 article"},{url:"http://docs.webplatform.org/wiki/apis/appcache/ApplicationCache",title:"WebPlatform Docs"},{url:"http://hacks.mozilla.org/2010/01/offline-web-applications/",title:"Mozilla Hacks article/demo"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"n",10:"y",11:"y"},firefox:{2:"p",3:"a",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"p",3.2:"p",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"p",10.5:"p",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:75.59,usage_perc_a:.09,ucprefix:!1,parent:"",keywords:"appcache,app cache,application cache,online"},webworkers:{title:"Web Workers",description:"Method of running scripts in the background, isolated from the web page",spec:"http://www.w3.org/TR/workers/",status:"cr",links:[{url:"http://code.google.com/p/ie-web-worker/",title:"Polyfill for IE (single threaded)"},{url:"http://net.tutsplus.com/tutorials/javascript-ajax/getting-started-with-web-workers/",title:"Tutorial"},{url:"https://developer.mozilla.org/En/Using_web_workers",title:"MDN article"},{url:"http://nerget.com/rayjs-mt/rayjs.html",title:"Web Worker demo"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"p",10:"y",11:"y"},firefox:{2:"p",3:"p",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"p",3.2:"p",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"p",10.5:"p",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"p",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:70.53,usage_perc_a:0,ucprefix:!1,parent:"",keywords:""},fontface:{title:"@font-face Web fonts",description:"Method of displaying fonts downloaded from websites",spec:"http://www.w3.org/TR/css3-webfonts/",status:"wd",links:[{url:"http://docs.webplatform.org/wiki/css/atrules/@font-face",title:"WebPlatform Docs"},{url:"http://www.css3files.com/font/",title:"Information page"},{url:"http://webfonts.info",title:"News and information site"},{url:"http://en.wikipedia.org/wiki/Web_typography",title:"Wikipedia"}],categories:["CSS3"],stats:{ie:{5.5:"a",6:"a",7:"a",8:"a",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"a",2.3:"a",3:"a",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"a",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Partial support before IE8 refers to only supporting EOT fonts. Safari for iOS 4.1 and below only supports SVG fonts.",usage_perc_y:79.25,usage_perc_a:10.6,ucprefix:!1,parent:"",keywords:"font face"},eot:{title:"EOT - Embedded OpenType fonts",description:"Type of font that can be derived from a regular font, allowing small files and legal use of high-quality fonts. Usage is restricted by the file being tied to the website",spec:"http://www.w3.org/Submission/EOT/",status:"unoff",links:[{url:"http://www.microsoft.com/typography/web/embedding/default.aspx",title:"Example pages"},{url:"http://en.wikipedia.org/wiki/Embedded_OpenType",title:"Wikipedia"}],categories:["Other"],stats:{ie:{5.5:"n",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"n"},and_chr:{0:"n"},and_ff:{0:"n"},ie_mob:{10:"n"}},notes:"Proposal by Microsoft, being considered for W3C standardization.",usage_perc_y:25.14,usage_perc_a:0,ucprefix:!1,parent:"fontface",keywords:""},woff:{title:"WOFF - Web Open Font Format",description:"Compressed TrueType/OpenType font that contains information about the font's source.",spec:"http://www.w3.org/TR/WOFF/",status:"rec",links:[{url:"http://hacks.mozilla.org/2009/10/woff/",title:"Mozilla hacks blog post"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Reported to be supported in some modified versions of the Android 4.0 browser.",usage_perc_y:75.23,usage_perc_a:0,ucprefix:!1,parent:"fontface",keywords:""},multibackgrounds:{title:"CSS3 Multiple backgrounds",description:"Method of using multiple images as a background",spec:"http://www.w3.org/TR/css3-background/",status:"cr",links:[{url:"http://www.css3.info/preview/multiple-backgrounds/",title:"Demo & information page"},{url:"http://www.css3files.com/background/",title:"Information page"},{url:"http://docs.webplatform.org/wiki/css/properties/background-image",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:85.37,usage_perc_a:0,ucprefix:!1,parent:"",keywords:""},"border-image":{title:"CSS3 Border images",description:"Method of using images for borders",spec:"http://www.w3.org/TR/css3-background/#the-border-image",status:"cr",links:[{url:"http://www.css3files.com/border/",title:"Information page"},{url:"http://docs.webplatform.org/wiki/css/properties/border-image",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"y"},firefox:{2:"n",3:"n",3.5:"a x",3.6:"a x",4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"a x",3.2:"a x",4:"a x",5:"a x",5.1:"a x",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"a",10.6:"a",11:"a x",11.1:"a x",11.5:"a x",11.6:"a x",12:"a x",12.1:"a x",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"a x","4.0-4.1":"a x","4.2-4.3":"a x","5.0-5.1":"a x","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"a x",2.2:"a x",2.3:"a x",3:"a x",4:"a x",4.1:"a x","4.2-4.3":"a x",4.4:"y"},bb:{7:"a x",10:"y"},op_mob:{10:"n",11:"a x",11.1:"a x",11.5:"a x",12:"a x",12.1:"a x",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:"In Firefox both the border-style and border-width must be specified for border-images to work. Partial support refers to supporting the shorthand syntax, but not the individual properties (border-image-source, border-image-slice, etc).",usage_perc_y:54.86,usage_perc_a:9.76,ucprefix:!1,parent:"",keywords:""},"background-img-opts":{title:"CSS3 Background-image options",description:"New properties to affect background images, including background-clip, background-origin and background-size",spec:"http://www.w3.org/TR/css3-background/#backgrounds",status:"cr",links:[{url:"https://github.com/louisremi/background-size-polyfill",title:"Polyfill for IE7-8"},{url:"http://www.standardista.com/css3/css3-background-properties",title:"Detailed compatibility tables and demos"},{url:"http://www.css3files.com/background/",title:"Information page"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"a x",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"a",3.2:"a",4:"a",5:"y",5.1:"y",6:"a",6.1:"a",7:"a"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"a x",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"a","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"a"},android:{2.1:"a x",2.2:"y x",2.3:"y x",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Partial support in Opera Mini refers to not supporting background sizing or background attachments. Partial support in Safari 6 refers to not supporting background sizing offset from edges syntax.",usage_perc_y:78.07,usage_perc_a:7.32,ucprefix:!1,parent:"",keywords:""},"css-table":{title:"CSS Table display",description:"Method of displaying elements as tables, rows, and cells",spec:"http://www.w3.org/TR/CSS21/tables.html",status:"rec",links:[{url:"http://blog.12spokes.com/web-design-development/when-to-choose-between-the-html-table-element-and-css-displaytable-property/",title:"Deciding on HTML or CSS tables"},{url:"http://www.onenaught.com/posts/201/use-css-displaytable-for-layout",title:"Blog post on usage"}],categories:["CSS2"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"y",9:"y",10:"y",11:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:93.86,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"display:table, display: table,table-cell,table-row,table-layout"},"css-gencontent":{title:"CSS Generated content",description:"Method of displaying text or images before or after the given element's contents using the :before and :after pseudo-elements",spec:"http://www.w3.org/TR/CSS21/generate.html",status:"rec",links:[{url:"http://www.westciv.com/style_master/academy/css_tutorial/advanced/generated_content.html",title:"Guide on usage"},{url:"http://docs.webplatform.org/wiki/css/generated_and_replaced_content",title:"WebPlatform Docs"},{url:"http://dev.opera.com/articles/view/css-generated-content-techniques/",title:"Dev.Opera article"}],categories:["CSS2","CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"a",9:"y",10:"y",11:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"IE8 only supports the single-colon CSS 2.1 syntax (i.e. pseudo-class). It does not support the double-colon CSS3 syntax (i.e. pseudo-element)",usage_perc_y:85.55,usage_perc_a:8.31,ucprefix:!1,parent:"",keywords:"before,after"},"css-fixed":{title:"CSS position:fixed",description:"Method of keeping an element in a fixed location regardless of scroll position",spec:"http://www.w3.org/TR/CSS21/visuren.html#fixed-positioning",status:"rec",links:[{url:"http://www.css-101.org/fixed-positioning/05.php",title:"Workaround for IE6"},{url:"http://bradfrostweb.com/blog/mobile/fixed-position/",title:"Article on mobile support"},{url:"http://docs.webplatform.org/wiki/css/properties/position",title:"WebPlatform Docs"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"p",7:"y",8:"y",9:"y",10:"y",11:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"a","6.0-6.1":"a","7.0":"a"},op_mini:{"5.0-7.0":"n"},android:{2.1:"a",2.2:"a",2.3:"a",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:'Only works in Android 2.2+ by using the following meta tag: <meta name="viewport" content="width=device-width, user-scalable=no">. Partial support in iOS Safari refers to <a href="http://remysharp.com/2012/05/24/issues-with-position-fixed-scrolling-on-ios/">buggy behavior</a>.',usage_perc_y:84.35,usage_perc_a:5.39,ucprefix:!1,parent:"",keywords:""},hashchange:{title:"Hashchange event",description:"Event triggered in JavaScript when the URL's hash has changed (for example: page.html#foo to page.html#bar) ",spec:"http://www.w3.org/TR/html5/history.html#event-hashchange",status:"cr",links:[{url:"http://www.quirksmode.org/dom/events/tests/hashchange.html",title:"Simple demo"},{url:"http://docs.webplatform.org/wiki/dom/events/hashchange",title:"WebPlatform Docs"},{url:"https://developer.mozilla.org/en/DOM/window.onhashchange",title:"MDN article"},{url:"http://github.com/3nr1c/jUri.js",title:"Polyfill"},{url:"http://msdn.microsoft.com/en-us/library/cc288209(VS.85).aspx",title:"MSDN article"}],categories:["HTML5","JS API"],stats:{ie:{5.5:"p",6:"p",7:"p",8:"y",9:"y",10:"y",11:"y"},firefox:{2:"p",3:"p",3.5:"p",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"p",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"p",3.2:"p",4:"p",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"p",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"p",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:88.92,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"onhashchange,HashChangeEvent"},"css-sel2":{title:"CSS 2.1 selectors",description:"Allows more accurate element selecting, using >, +, [attr], :first-child, etc.",spec:"http://www.w3.org/TR/CSS21/selector.html",status:"rec",links:[{url:"http://www.quirksmode.org/css/contents.html",title:"Detailed support information"},{url:"http://docs.webplatform.org/wiki/css/selectors",title:"WebPlatform Docs"},{url:"http://selectivizr.com",title:"Selectivizr: Polyfill for IE6-8"},{url:"http://www.yourhtmlsource.com/stylesheets/advancedselectors.html",title:"Examples of advanced selectors"}],categories:["CSS2"],stats:{ie:{5.5:"n",6:"p",7:"y",8:"y",9:"y",10:"y",11:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:94.36,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"child selector,:hover,adjacent,sibling,adjacent sibling"},"css-sel3":{title:"CSS3 selectors",description:"Advanced element selection using selectors like :nth-child(), :last-child, :first-of-type, etc.",spec:"http://www.w3.org/TR/css3-selectors/",status:"rec",links:[{url:"http://www.css3.info/selectors-test/",title:"Automated CSS3 selector test"},{url:"http://docs.webplatform.org/wiki/css/selectors",title:"WebPlatform Docs"},{url:"http://www.quirksmode.org/css/contents.html",title:"Detailed support information"},{url:"http://selectivizr.com",title:"Selectivizr: Polyfill for IE6-8"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:85.43,usage_perc_a:0,ucprefix:!1,parent:"",keywords:":target,:not"},"css-textshadow":{title:"CSS3 Text-shadow",description:"Method of applying one or more shadow or blur effects to text",spec:"http://www.w3.org/TR/css-text-decor-3/#text-shadow-property",status:"wd",links:[{url:"http://ie.microsoft.com/testdrive/Graphics/hands-on-css3/hands-on_text-shadow.htm",title:"Live editor"},{url:"http://docs.webplatform.org/wiki/css/properties/text-shadow",title:"WebPlatform Docs"},{url:"http://hacks.mozilla.org/2009/06/text-shadow/",title:"Mozilla hacks article"},{url:"http://www.css3files.com/shadow/#textshadow",title:"Information page"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"a",3.2:"a",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"a"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"a",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:'Opera Mini ignores the blur-radius set, so no blur effect is visible. Text-shadow behavior can be somewhat emulated in older IE versions using the non-standard "dropshadow" or "glow" filters. ',usage_perc_y:75.49,usage_perc_a:4.73,ucprefix:!1,parent:"",keywords:""},"css-boxshadow":{title:"CSS3 Box-shadow",description:"Method of displaying an inner or outer shadow effect to elements",spec:"http://www.w3.org/TR/css3-background/#box-shadow",status:"cr",links:[{url:"http://www.css3files.com/shadow/",title:"Information page"},{url:"https://developer.mozilla.org/En/CSS/-moz-box-shadow",title:"MDN article"},{url:"http://westciv.com/tools/boxshadows/index.html",title:"Live editor"},{url:"http://tests.themasta.com/blogstuff/boxshadowdemo.html",title:"Demo of various effects"},{url:"http://docs.webplatform.org/wiki/css/properties/box-shadow",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"y x",3.6:"y x",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"a x",3.2:"a x",4:"a x",5:"y x",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"a x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"a x",2.2:"a x",2.3:"a x",3:"a x",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y x",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:'Can be partially emulated in older IE versions using the non-standard "shadow" filter. Partial support in Safari, iOS Safari and Android Browser refers to missing "inset" and blur radius value support.',usage_perc_y:79.27,usage_perc_a:1.55,ucprefix:!1,parent:"",keywords:"box-shadows,boxshadows,box shadow,shaow"},"css3-colors":{title:"CSS3 Colors",description:"Method of describing colors using Hue, Saturation and Lightness (hsl()) rather than just RGB, as well as allowing alpha-transparency with rgba() and hsla().",spec:"http://www.w3.org/TR/css3-color/",status:"rec",links:[{url:"http://www.zenelements.com/blog/css3-rgb-rgba-color-opacity/",title:"Guide to RGB & RGBA"},{url:"http://www.css3files.com/color/",title:"Information page"},{url:"http://www.zenelements.com/blog/css3-hsl-hsla-color-opacity/",title:"Guide to HSL & HSLA"},{url:"http://docs.webplatform.org/wiki/css/color#RGBA_Notation",title:"WebPlatform Docs"},{url:"http://dev.opera.com/articles/view/color-in-opera-10-hsl-rgb-and-alpha-transparency/",title:"Dev.Opera article"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"a",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"a","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:85.51,usage_perc_a:.02,ucprefix:!1,parent:"",keywords:"rgb,hsl,rgba,hsla"},"css3-boxsizing":{title:"CSS3 Box-sizing",description:"Method of specifying whether or not an element's borders and padding should be included in size units",spec:"http://www.w3.org/TR/css3-ui/#box-sizing",status:"wd",links:[{url:"http://docs.webplatform.org/wiki/css/properties/box-sizing",title:"WebPlatform Docs"},{url:"http://css-tricks.com/box-sizing/",title:"CSS Tricks"},{url:"https://github.com/Schepp/box-sizing-polyfill",title:"Polyfill for IE"},{url:"https://developer.mozilla.org/En/CSS/Box-sizing",title:"MDN article"},{url:"http://www.456bereastreet.com/archive/201104/controlling_width_with_css3_box-sizing/",title:"Blog post"}],categories:["CSS3"],stats:{ie:{5.5:"p",6:"p",7:"p",8:"a",9:"a",10:"a",11:"a"},firefox:{2:"y x",3:"y x",3.5:"y x",3.6:"y x",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x"},chrome:{4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a"},safari:{3.1:"a x",3.2:"a x",4:"a x",5:"a x",5.1:"a",6:"a",6.1:"a",7:"a"},opera:{9:"n","9.5-9.6":"a","10.0-10.1":"a",10.5:"a",10.6:"a",11:"a",11.1:"a",11.5:"a",11.6:"a",12:"a",12.1:"a",15:"a",16:"a",17:"a",18:"a"},ios_saf:{3.2:"a x","4.0-4.1":"a x","4.2-4.3":"a x","5.0-5.1":"a","6.0-6.1":"a","7.0":"a"},op_mini:{"5.0-7.0":"a"},android:{2.1:"a x",2.2:"a x",2.3:"a x",3:"a x",4:"a",4.1:"a","4.2-4.3":"a",4.4:"a"},bb:{7:"a x",10:"a"},op_mob:{10:"a",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"a",0:"a"},and_chr:{0:"a"},and_ff:{0:"y x"},ie_mob:{10:"a"}},notes:'Partial support refers to supporting only the "border-box" value, not "padding-box" (which was added to the spec later).',usage_perc_y:15.43,usage_perc_a:78.42,ucprefix:!1,parent:"",keywords:"border-box,content-box,padding-box"},"css-mediaqueries":{title:"CSS3 Media Queries",description:"Method of applying styles based on media information. Includes things like page and device dimensions",spec:"http://www.w3.org/TR/css3-mediaqueries/",status:"rec",links:[{url:"http://docs.webplatform.org/wiki/css/atrules/@media",title:"WebPlatform Docs"},{url:"http://ie.microsoft.com/testdrive/HTML5/85CSS3_MediaQueries/",title:"IE demo page with information"},{url:"https://github.com/scottjehl/Respond",title:"Polyfill for IE"},{url:"http://webdesignerwall.com/tutorials/responsive-design-with-css3-media-queries",title:"Media Queries tutorial"}],categories:["CSS3"],stats:{ie:{5.5:"p",6:"p",7:"p",8:"p",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"a",3.2:"a",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Incomplete support by older webkit browsers refers to only acknowledging different media rules on page reload",usage_perc_y:85.42,usage_perc_a:.01,ucprefix:!1,parent:"",keywords:"@media"},multicolumn:{title:"CSS3 Multiple column layout",description:"Method of flowing information in multiple columns",spec:"http://www.w3.org/TR/css3-multicol/",status:"cr",links:[{url:"http://dev.opera.com/articles/view/css3-multi-column-layout/",title:"Dev.Opera article"},{url:"http://docs.webplatform.org/wiki/css/properties/column-width",title:"WebPlatform Docs"},{url:"http://webdesign.tutsplus.com/tutorials/htmlcss-tutorials/an-introduction-to-the-css3-multiple-column-layout-module/",title:"Introduction page"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"a x",3:"a x",3.5:"a x",3.6:"a x",4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"a x",22:"a x",23:"a x",24:"a x",25:"a x",26:"a x",27:"a x"},chrome:{4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"a x",22:"a x",23:"a x",24:"a x",25:"a x",26:"a x",27:"a x",28:"a x",29:"a x",30:"a x",31:"a x",32:"a x"},safari:{3.1:"a x",3.2:"a x",4:"a x",5:"a x",5.1:"a x",6:"a x",6.1:"a x",7:"a x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"a x",16:"a x",17:"a x",18:"a x"},ios_saf:{3.2:"a x","4.0-4.1":"a x","4.2-4.3":"a x","5.0-5.1":"a x","6.0-6.1":"a x","7.0":"a x"},op_mini:{"5.0-7.0":"y"},android:{2.1:"a x",2.2:"a x",2.3:"a x",3:"a x",4:"a x",4.1:"a x","4.2-4.3":"a x",4.4:"a x"},bb:{7:"a x",10:"a x"},op_mob:{10:"n",11:"n",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"a x"},and_chr:{0:"a x"},and_ff:{0:"a x"},ie_mob:{10:"y"}},notes:"Partial support refers to not supporting the break-before, break-after, break-inside properties. Webkit browsers do have equivalent support for the non-standard -webkit-column-break-* properties.",usage_perc_y:16.41,usage_perc_a:63.85,ucprefix:!1,parent:"",keywords:"column-count"},"border-radius":{title:"CSS3 Border-radius (rounded corners)",description:"Method of making the border corners round",spec:"http://www.w3.org/TR/css3-background/#the-border-radius",status:"cr",links:[{url:"http://docs.webplatform.org/wiki/css/properties/border-radius",title:"WebPlatform Docs"},{url:"http://muddledramblings.com/table-of-css3-border-radius-compliance",title:"Detailed compliance table"},{url:"http://www.css3files.com/border/#borderradius",title:"Information page"},{url:"http://css3pie.com/",title:"Polyfill which includes border-radius"},{url:"http://border-radius.com",title:"Border-radius CSS Generator"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"a x",3:"y x",3.5:"y x",3.6:"y x",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y x",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y x",3.2:"y x",4:"y x",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y x","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y x",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:80.91,usage_perc_a:.02,ucprefix:!1,parent:"",keywords:"roundedcorners, border radius,-moz-border-radius"},transforms2d:{title:"CSS3 Transforms",description:"Method of transforming an element including rotating, scaling, etc.",spec:"http://www.w3.org/TR/css3-2d-transforms/",status:"wd",links:[{url:"http://www.westciv.com/tools/transforms/",title:"Live editor"},{url:"http://www.useragentman.com/IETransformsTranslator/",title:"Converter for IE"},{url:"http://docs.webplatform.org/wiki/css/transforms/transform",title:"WebPlatform Docs"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/css.js#css-transform",title:"has.js test"},{url:"https://developer.mozilla.org/en/CSS/-moz-transform",title:"MDN article"},{url:"http://www.webresourcesdepot.com/cross-browser-css-transforms-csssandpaper/",title:"Workaround script for IE"},{url:"http://www.css3files.com/transform/",title:"Information page"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y x",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"y x",3.6:"y x",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x"},safari:{3.1:"y x",3.2:"y x",4:"y x",5:"y x",5.1:"y x",6:"y x",6.1:"y x",7:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y x",10.6:"y x",11:"y x",11.1:"y x",11.5:"y x",11.6:"y x",12:"y x",12.1:"y",15:"y x",16:"y x",17:"y x",18:"y x"},ios_saf:{3.2:"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0":"y x"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y x",2.2:"y x",2.3:"y x",3:"y x",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y x"},bb:{7:"y x",10:"y x"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y x"},and_chr:{0:"y x"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:'The scale transform can be emulated in IE < 9 using Microsoft\'s "zoom" extension, others are (not easily) possible using the MS Matrix filter',usage_perc_y:80.82,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"transformation,translate,rotation,rotate,scale,css-transforms"},"use-strict":{title:"ECMAScript 5 Strict Mode",description:'Method of placing code in a "strict" operating context.',spec:"http://ecma-international.org/ecma-262/5.1/#sec-14.1",status:"other",links:[{url:"http://javascriptweblog.wordpress.com/2011/05/03/javascript-strict-mode/",title:"Article with test suite"},{url:"http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/",title:"Information page"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"a",5.1:"a",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Partial support in older Safari refers to strict mode still accepting a lot of JS that should be considered invalid.",usage_perc_y:71.65,usage_perc_a:1.59,ucprefix:!1,parent:"",keywords:""},transforms3d:{title:"CSS3 3D Transforms",description:"Method of transforming an element in the third dimension",spec:"http://www.w3.org/TR/css3-3d-transforms/",status:"wd",links:[{url:"http://docs.webplatform.org/wiki/css/transforms/transform",title:"WebPlatform Docs"},{url:"http://css3.bradshawenterprises.com/flip/",title:"Multi-browser demo"},{url:"http://thewebrocks.com/demos/3D-css-tester/",title:"3D CSS Tester"},{url:"http://hacks.mozilla.org/2011/10/css-3d-transformations-in-firefox-nightly/",title:"Mozilla hacks article"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/css.js#css-transform",title:"has.js test"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a",11:"a"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x"},safari:{3.1:"n",3.2:"n",4:"y x",5:"y x",5.1:"y x",6:"y x",6.1:"y x",7:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x"},ios_saf:{3.2:"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0":"y x"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y x",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y x"},bb:{7:"y x",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y x"},and_chr:{0:"y x"},and_ff:{0:"y"},ie_mob:{10:"a"}},notes:'Partial support in IE10 refers to not supporting <a href="http://msdn.microsoft.com/en-us/library/ie/hh673529%28v=vs.85%29.aspx#the_ms_transform_style_property">the transform-style: preserve-3d property</a>. This prevents nesting 3D transformed elements.',usage_perc_y:61.31,usage_perc_a:11.11,ucprefix:!1,parent:"",keywords:"css 3d,3dtransforms,translate3d,transform3d"},sharedworkers:{title:"Shared Web Workers",description:"Method of allowing multiple scripts to communicate with a single web worker.",spec:"http://www.w3.org/TR/workers/#shared-workers-introduction",status:"cr",links:[{url:"http://www.sitepoint.com/javascript-shared-web-workers-html5/",title:"Sitepoint article"},{url:"http://greenido.wordpress.com/2011/11/03/web-workers-part-3-out-of-3-shared-wrokers/",title:"Blog post"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"u",27:"u"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"y",10:"y"},op_mob:{10:"u",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"n"},and_chr:{0:"n"},and_ff:{0:"n"},ie_mob:{10:"n"}},notes:"Expected to be supported in Firefox 27.",usage_perc_y:40.07,usage_perc_a:0,ucprefix:!1,parent:"webworkers",keywords:"shared worker"},"css-hyphens":{title:"CSS Hyphenation",description:'Method of controlling when words at the end of lines should be hyphenated using the "hyphens" property.',spec:"http://www.w3.org/TR/css3-text/#hyphenation",status:"wd",links:[{url:"https://developer.mozilla.org/en/CSS/hyphens",title:"MDN article"},{url:"http://docs.webplatform.org/wiki/css/properties/hyphens",title:"WebPlatform Docs"},{url:"http://blog.fontdeck.com/post/9037028497/hyphens",title:"Blog post"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x",11:"y x"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"y x",6:"y x",6.1:"y x",7:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0":"y x"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"n"},and_chr:{0:"n"},and_ff:{0:"y x"},ie_mob:{10:"n"}},notes:'Chrome 29- and Android 4.0 Browser support "-webkit-hyphens: none", but not the "auto" property. Chrome 30+ doesn\'t support it either.',usage_perc_y:33.31,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"hyphen,shy"},"css-transitions":{title:"CSS3 Transitions",description:"Simple method of animating certain properties of an element",spec:"http://www.w3.org/TR/css3-transitions/",status:"wd",links:[{url:"http://docs.webplatform.org/wiki/css/properties/transition",title:"WebPlatform Docs"},{url:"http://www.webdesignerdepot.com/2010/01/css-transitions-101/",title:"Article on usage"},{url:"http://www.opera.com/docs/specs/presto2.12/css/transitions/#anima",title:"Animation of property types support in Opera"},{url:"http://www.css3files.com/transition/",title:"Information page"},{url:"http://www.the-art-of-web.com/css/timing-function/",title:"Examples on timing functions"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y x",3.2:"y x",4:"y x",5:"y x",5.1:"y x",6:"y x",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y x",10.6:"y x",11:"y x",11.1:"y x",11.5:"y x",11.6:"y x",12:"y x",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y x",2.2:"y x",2.3:"y x",3:"y x",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y"},bb:{7:"y x",10:"y x"},op_mob:{10:"y x",11:"y x",11.1:"y x",11.5:"y x",12:"y x",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:75.27,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"css transition"},"font-feature":{title:"Font feature settings",description:"Method of applying advanced typographic and language-specific font features to supported OpenType fonts.",spec:"http://w3.org/TR/css3-fonts/#font-rend-props",status:"wd",links:[{url:"http://docs.webplatform.org/wiki/css/properties/font-feature-settings",title:"WebPlatform Docs"},{url:"http://hacks.mozilla.org/2010/11/firefox-4-font-feature-support/",title:"Mozilla hacks article"},{url:"http://html5accessibility.com/",title:"Detailed tables on accessability support"},{url:"http://ie.microsoft.com/testdrive/Graphics/opentype/",title:"Demo pages (IE/Firefox only)"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x"},safari:{3.1:"n",3.2:"n",4:"a",5:"a",5.1:"a",6:"a",6.1:"y x",7:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0":"y x"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y x"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y x"},and_chr:{0:"y x"},and_ff:{0:"y x"},ie_mob:{10:"n"}},notes:"Partial support in older Firefox versions refers to using an older syntax. Partial support in older Chrome versions refers to lacking support in Mac OS X. ",usage_perc_y:62.13,usage_perc_a:6.41,ucprefix:!1,parent:"",keywords:"font-feature,font-feature-settings,kern,kerning,font-variant-alternates,ligatures,font-variant-ligatures"},"css-animation":{title:"CSS3 Animation",description:"Complex method of animating certain properties of an element",spec:"http://www.w3.org/TR/css3-animations/",status:"wd",links:[{url:"http://docs.webplatform.org/wiki/css/properties/animations",title:"WebPlatform Docs"},{url:"http://www.css3files.com/animation/",title:"Information page"},{url:"http://robertnyman.com/2010/05/06/css3-animations/",title:"Blog post on usage"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x"},safari:{3.1:"n",3.2:"n",4:"y x",5:"y x",5.1:"y x",6:"y x",6.1:"y x",7:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"y x",12.1:"y",15:"y x",16:"y x",17:"y x",18:"y x"},ios_saf:{3.2:"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0":"y x"},op_mini:{"5.0-7.0":"n"},android:{2.1:"a x",2.2:"a x",2.3:"a x",3:"a x",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y x"},bb:{7:"y x",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",0:"y x"},and_chr:{0:"y x"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Partial support in Android browser refers to buggy behavior in different scenarios.",usage_perc_y:73.62,usage_perc_a:1.44,ucprefix:!1,parent:"",keywords:"animations,css-animations,keyframe,keyframes"},"css-gradients":{title:"CSS Gradients",description:"Method of defining a linear or radial color gradient as a CSS image.",spec:"http://www.w3.org/TR/css3-images/",status:"cr",links:[{url:"http://www.colorzilla.com/gradient-editor/",title:"Cross-browser editor"},{url:"http://docs.webplatform.org/wiki/css/functions/linear-gradient",title:"WebPlatform Docs"},{url:"http://www.css3files.com/gradient/",title:"Information page"},{url:"http://css3pie.com/",title:"Tool to emulate support in IE"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y x",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"a x",5:"a x",5.1:"y x",6:"y x",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"a x",11.5:"a x",11.6:"y x",12:"y x",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"a x","4.0-4.1":"a x","4.2-4.3":"a x","5.0-5.1":"y x","6.0-6.1":"y x","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"a x",2.2:"a x",2.3:"a x",3:"a x",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y"},bb:{7:"a x",10:"y x"},op_mob:{10:"n",11:"n",11.1:"a x",11.5:"a x",12:"y x",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:'Partial support in Opera 11.10 and 11.50 also refers to only having support for linear gradients. Support can be somewhat emulated in older IE versions using the non-standard "gradient" filter. Firefox 10+, Opera 11.6+, Chrome 26+ and IE10 also support the new "to (side)" syntax.',usage_perc_y:73.31,usage_perc_a:2.22,ucprefix:!1,parent:"",keywords:"linear,linear-gradient,gradiant"},"css-canvas":{title:"CSS Canvas Drawings",description:"Method of using HTML5 Canvas as a background image",spec:"http://webkit.org/blog/176/css-canvas-drawing/",status:"unoff",links:[{url:"http://webkit.org/blog/176/css-canvas-drawing/",title:"Webkit blog post"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"u",27:"u"},chrome:{4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x"},safari:{3.1:"n",3.2:"n",4:"y x",5:"y x",5.1:"y x",6:"y x",6.1:"y x",7:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x"},ios_saf:{3.2:"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0":"y x"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y x",2.2:"y x",2.3:"y x",3:"y x",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y x"},bb:{7:"y x",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y x"},and_chr:{0:"y x"},and_ff:{0:"n"},ie_mob:{10:"n"}},notes:"Proposal by Webkit, being considered for W3C standardization. A similar effect can be achieved in Firefox 4+ using the -moz-element() background property",usage_perc_y:48.41,usage_perc_a:0,ucprefix:!1,parent:"",keywords:""},"css-reflections":{title:"CSS Reflections",description:"Method of displaying a reflection of an element",spec:"http://webkit.org/blog/182/css-reflections/",status:"unoff",links:[{url:"http://webkit.org/blog/182/css-reflections/",title:"Webkit blog post"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n"},chrome:{4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x"},safari:{3.1:"n",3.2:"n",4:"y x",5:"y x",5.1:"y x",6:"y x",6.1:"y x",7:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x"},ios_saf:{3.2:"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0":"y x"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y x",2.2:"y x",2.3:"y x",3:"y x",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y x"},bb:{7:"y x",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y x"},and_chr:{0:"y x"},and_ff:{0:"n"},ie_mob:{10:"n"}},notes:"Similar effect can be achieved in Firefox 4+ using the -moz-element() background property",usage_perc_y:48.41,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"box-reflect"},"css-masks":{title:"CSS Masks",description:"Method of displaying part of an element, using a selected image as a mask",spec:"http://www.w3.org/TR/css-masking/",status:"wd",links:[{url:"http://docs.webplatform.org/wiki/css/properties/mask",title:"WebPlatform Docs"},{url:"http://www.html5rocks.com/en/tutorials/masking/adobe/",title:"HTML5 Rocks article"},{url:"http://thenittygritty.co/css-masking",title:"Detailed blog post"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"u",27:"u"},chrome:{4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"a x",22:"a x",23:"a x",24:"a x",25:"a x",26:"a x",27:"a x",28:"a x",29:"a x",30:"a x",31:"a x",32:"a x"},safari:{3.1:"n",3.2:"n",4:"a x",5:"a x",5.1:"a x",6:"a x",6.1:"a x",7:"a x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"a x",16:"a x",17:"a x",18:"a x"},ios_saf:{3.2:"a x","4.0-4.1":"a x","4.2-4.3":"a x","5.0-5.1":"a x","6.0-6.1":"a x","7.0":"a x"},op_mini:{"5.0-7.0":"n"},android:{2.1:"a x",2.2:"a x",2.3:"a x",3:"a x",4:"a x",4.1:"a x","4.2-4.3":"a x",4.4:"a x"},bb:{7:"a x",10:"a x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"a x"},and_chr:{0:"a x"},and_ff:{0:"n"},ie_mob:{10:"n"}},notes:"Previously a WebKit-only property, now a W3C specification. Partial support refers to not yet fully supporting the new spec (details currently unknown).",usage_perc_y:0,usage_perc_a:48.41,ucprefix:!1,parent:"",keywords:""},svg:{title:"SVG (basic support)",description:"Method of displaying basic Vector Graphics features using the embed or object elements",spec:"http://www.w3.org/Graphics/SVG/",status:"rec",links:[{url:"http://en.wikipedia.org/wiki/Scalable_Vector_Graphics",title:"Wikipedia"},{url:"http://code.google.com/p/svgweb/",title:"SVG Web: Flash-based polyfill"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/graphics.js#svg",title:"has.js test"},{url:"http://svg-edit.googlecode.com",title:"Web-based SVG editor"},{url:"http://www.alistapart.com/articles/using-svg-for-flexible-scalable-and-fun-backgrounds-part-i",title:"A List Apart article"},{url:"http://svg-wow.org/",title:"SVG showcase site"}],categories:["SVG"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y",10:"y",11:"y"},firefox:{2:"a",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"a",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:84.1,usage_perc_a:.02,ucprefix:!1,parent:"",keywords:""},"svg-css":{title:"SVG in CSS backgrounds",description:"Method of using SVG images as CSS backgrounds",spec:"http://www.w3.org/TR/css3-background/#background-image",status:"cr",links:[{url:"http://designfestival.com/a-farewell-to-css3-gradients/",title:"Tutorial for advanced effects"}],categories:["SVG","CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"a",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"a",4:"a",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"a"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"a",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"a",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Partial support in older Firefox and Opera Mini/Mobile refers to SVG images being blurry when scaled. Partial support in iOS Safari and older Safari versions refers to failing to support tiling or the background-position property.",usage_perc_y:75.45,usage_perc_a:8.2,ucprefix:!1,parent:"",keywords:"svg-in-css,svgincss,css-svg"},"svg-smil":{title:"SVG SMIL animation",description:"Method of using animation elements to animate SVG images",spec:"http://www.w3.org/TR/SVG/animate.html",status:"rec",links:[{url:"https://github.com/madsgraphics/SVGEventListener",title:"Polyfill for SMIL animate events on SVG"},{url:"https://developer.mozilla.org/en/SVG/SVG_animation_with_SMIL",title:"MDN article"},{url:"http://svg-wow.org/blog/category/animation/",title:"Examples on SVG WOW"},{url:"http://leunen.me/fakesmile/",title:"JS library to support SMIL in SVG"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/graphics.js#svg-smil",title:"has.js test"}],categories:["SVG"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p"},firefox:{2:"p",3:"p",3.5:"p",3.6:"p",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"a",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"p",3.2:"p",4:"a",5:"a",5.1:"a",6:"a",6.1:"a",7:"a"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0":"a"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"p"}},notes:"Partial support in Safari refers to not working in HTML files.",usage_perc_y:54.76,usage_perc_a:7.99,ucprefix:!1,parent:"",keywords:""},"svg-fonts":{title:"SVG fonts",description:"Method of using fonts defined as SVG shapes",spec:"http://www.w3.org/TR/SVG/fonts.html",status:"rec",links:[{url:"http://opentype.info/blog/2010/04/13/the-ipad-and-svg-fonts-in-mobile-safari/",title:"Blog post on usage for iPad"},{url:"http://jeremie.patonnier.net/post/2011/02/07/Why-are-SVG-Fonts-so-different",title:"Blog post"}],categories:["SVG"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"n"},ie_mob:{10:"n"}},notes:"Supported in Opera Mini in SVG images only, not in HTML.",usage_perc_y:47.78,usage_perc_a:0,ucprefix:!1,parent:"fontface",keywords:""},"svg-filters":{title:"SVG filters",description:"Method of using photoshop-like effects on SVG objects including blurring and color manipulation.",spec:"http://www.w3.org/TR/SVG/filters.html",status:"rec",links:[{url:"http://electricbeach.org/?p=950",title:"Experiments with filter effects"},{url:"http://svg-wow.org/blog/category/filters/",title:"SVG filter demos"},{url:"http://docs.webplatform.org/wiki/svg/elements/filter",title:"WebPlatform Docs"}],categories:["SVG"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"a",6:"a",7:"a",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"n",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:72.99,usage_perc_a:.08,ucprefix:!1,parent:"",keywords:""},"svg-html":{title:"SVG effects for HTML",description:"Method of using SVG transforms, filters, etc on HTML elements using either CSS or the foreignObject element",spec:"http://www.w3.org/TR/SVG11/extend.html#ForeignObjectElement",status:"wd",links:[{url:"https://developer.mozilla.org/En/Applying_SVG_effects_to_HTML_content",title:"MDN Reference page"},{url:"https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html",title:"Filter Effects draft"},{url:"https://developer.mozilla.org/en/SVG/Tutorial/Other_content_in_SVG",title:"MDN Tutorial"}],categories:["SVG"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a",10:"a",11:"a"},firefox:{2:"n",3:"a",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a"},safari:{3.1:"n",3.2:"n",4:"a",5:"a",5.1:"a",6:"a",6.1:"a",7:"a"},opera:{9:"a","9.5-9.6":"a","10.0-10.1":"a",10.5:"a",10.6:"a",11:"a",11.1:"a",11.5:"a",11.6:"a",12:"a",12.1:"a",15:"a",16:"a",17:"a",18:"a"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0":"a"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"a"},bb:{7:"n",10:"y"},op_mob:{10:"a",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"a",0:"a"},and_chr:{0:"a"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:'Partial support refers to lack of filter support or buggy result from effects. A <a href="https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html">CSS Filter Effects</a> specification is in the works that would replace this method.',usage_perc_y:15.33,usage_perc_a:60.21,ucprefix:!1,parent:"",keywords:""},"svg-html5":{title:"Inline SVG in HTML5",description:"Method of using SVG tags directly in HTML documents. Requires HTML5 parser.",spec:"http://www.w3.org/TR/html5/embedded-content-0.html#svg-0",status:"cr",links:[{url:"http://hacks.mozilla.org/2010/05/firefox-4-the-html5-parser-inline-svg-speed-and-more/",title:"Mozilla Hacks blog post"},{url:"http://samples.msdn.microsoft.com/ietestcenter/html5/svghtml_harness.htm?url=SVG_HTML_Elements_001",title:"Test suite"}],categories:["SVG","HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y",10:"y",11:"y"},firefox:{2:"p",3:"p",3.5:"p",3.6:"p",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"p",5:"p",6:"p",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"p",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:78.45,usage_perc_a:0,ucprefix:!1,parent:"",keywords:""},canvas:{title:"Canvas (basic support)",description:"Method of generating fast, dynamic graphics using JavaScript",spec:"http://www.w3.org/TR/html5/embedded-content-0.html#the-canvas-element",status:"cr",links:[{url:"https://developer.mozilla.org/en/Canvas_tutorial",title:"Tutorial by Mozilla"},{url:"http://explorercanvas.googlecode.com/",title:"Implementation for Internet Explorer"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/graphics.js#canvas",title:"has.js test"},{url:"http://www.diveinto.org/html5/canvas.html",title:"Another tutorial"},{url:"http://glimr.rubyforge.org/cake/canvas.html",title:"Animation kit "},{url:"http://www.canvasdemos.com/",title:"Showcase site"}],categories:["Canvas","HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y",10:"y",11:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"a"},android:{2.1:"a",2.2:"a",2.3:"a",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Opera Mini supports the canvas element, but is unable to play animations or run other more complex applications. Android 2.x supports canvas except the toDataURL() function. See http://code.google.com/p/android/issues/detail?id=7901 Some (slow) workarounds are described here: http://stackoverflow.com/q/10488033/841830",usage_perc_y:79.53,usage_perc_a:6.02,ucprefix:!1,parent:"",keywords:""},"canvas-text":{title:"Text API for Canvas",description:"Method of displaying text on Canvas elements",spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#text-0",status:"wd",links:[{url:"http://code.google.com/p/canvas-text/",title:"Support library"},{url:"http://docs.webplatform.org/wiki/apis/canvas/CanvasRenderingContext2D/fillText",title:"WebPlatform Docs"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/graphics.js#canvas-text",title:"has.js test"},{url:"https://developer.mozilla.org/en/Drawing_text_using_a_canvas#Additional_examples",title:"Examples by Mozilla"}],categories:["Canvas","HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y",10:"y",11:"y"},firefox:{2:"p",3:"p",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"p",3.2:"p",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"p",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:80.82,usage_perc_a:0,ucprefix:!1,parent:"canvas",keywords:""},"namevalue-storage":{title:"Web Storage - name/value pairs",description:"Method of storing data locally like cookies, but for larger amounts of data (sessionStorage and localStorage, used to fall under HTML5).",spec:"http://www.w3.org/TR/webstorage/#storage",status:"rec",links:[{url:"http://html5demos.com/storage",title:"Simple demo"},{url:"http://docs.webplatform.org/wiki/apis/web-storage/Storage/localStorage",title:"WebPlatform Docs"},{url:"https://developer.mozilla.org/En/DOM/Storage",title:"Gecko reference"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-localstorage;native-sessionstorage",title:"has.js test"},{url:"http://code.google.com/p/sessionstorage/",title:"Support library"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"y",9:"y",10:"y",11:"y"},firefox:{2:"a",3:"a",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"In private browsing mode Safari and iOS Safari don't support setting localStorage.",usage_perc_y:89.13,usage_perc_a:.1,ucprefix:!1,parent:"",keywords:"webstorage,local storage"},"sql-storage":{title:"Web SQL Database",description:"Method of storing data client-side, allows Sqlite database queries for access and manipulation",spec:"http://www.w3.org/TR/webdatabase/",status:"unoff",links:[{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-sql-db",title:"has.js test"},{url:"http://html5doctor.com/introducing-web-sql-databases/",title:"HTML5 Doctor article"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"n"},ie_mob:{10:"n"}},notes:"The Web SQL Database specification is no longer being maintained and support may be dropped in future versions.",usage_perc_y:49.18,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"db-storage,websql"},indexeddb:{title:"IndexedDB",description:"Method of storing data client-side, allows indexed database queries. Previously known as WebSimpleDB API.",spec:"http://www.w3.org/TR/IndexedDB/",status:"wd",links:[{url:"http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/",title:"Mozilla Hacks article"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-indexeddb",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/apis/indexedDB",title:"WebPlatform Docs"},{url:"https://github.com/axemclion/IndexedDBShim",title:"Polyfill for browsers supporting WebSQL"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"a x",12:"a x",13:"a x",14:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"a x",22:"a x",23:"y x",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"n",10:"a x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:'Partial support in BB10 refers to an <a href="http://www.w3.org/TR/2011/WD-IndexedDB-20110419/">outdated specification</a> being implemented. Code targeting the <a href="http://www.w3.org/TR/IndexedDB/">current state of the specification</a> might not work.',usage_perc_y:59.46,usage_perc_a:1.68,ucprefix:!1,parent:"",keywords:"indexdb"},eventsource:{title:"Server-sent DOM events",description:"Method of continuously sending data from a server to the browser, rather than repeatedly requesting it (EventSource interface, used to fall under HTML5)",spec:"http://www.w3.org/TR/eventsource/",status:"cr",links:[{url:"http://www.html5rocks.com/tutorials/eventsource/basics/",title:"HTML5 Rocks tutorial"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-eventsource",title:"has.js test"},{url:"http://samshull.blogspot.com/2010/10/ajax-push-in-ios-safari-and-chrome-with.html",title:"Blog post with demo"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"a","9.5-9.6":"a","10.0-10.1":"a",10.5:"a",10.6:"a",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"a",11:"a",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:"",usage_perc_y:58.8,usage_perc_a:.06,ucprefix:!1,parent:"",keywords:"serversent,s-sent-events"},"x-doc-messaging":{title:"Cross-document messaging",description:"Method of sending information from a page on one domain to a page on a different one (using postMessage)",spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages",status:"wd",links:[{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-crosswindowmessaging",title:"has.js test"},{url:"http://html5demos.com/postmessage2",title:"Simple demo"},{url:"https://developer.mozilla.org/en/DOM/window.postMessage",title:"MDN article"},{url:"http://docs.webplatform.org/wiki/apis/web-messaging/methods/postMessage_%28window%29",title:"WebPlatform Docs"},{url:"http://72lions.com/2011/05/cross-origin-communication-with-html5",title:"Article and demo"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"a",9:"a",10:"a",11:"y"},firefox:{2:"n",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"a"}},notes:'Partial support in IE8-9 refers to only working in frames/iframes (not other tabs/windows). Also in IE 9 and below an object cannot be sent using postMessage. Partial support in IE10 refers to <a href="http://stackoverflow.com/questions/16226924/is-cross-origin-postmessage-broken-in-ie10">limitations in certain conditions</a>',usage_perc_y:69.31,usage_perc_a:24.52,ucprefix:!1,parent:"",keywords:""},datauri:{title:"Data URIs",description:"Method of embedding images and other files in webpages as a string of text",spec:"http://www.ietf.org/rfc/rfc2397.txt",status:"other",links:[{url:"http://www.websiteoptimization.com/speed/tweak/inline-images/",title:"Data URL converter"},{url:"http://css-tricks.com/5970-data-uris/",title:"Information page"},{url:"http://en.wikipedia.org/wiki/data_URI_scheme",title:"Wikipedia"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"a",9:"a",10:"a",11:"a"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"a"}},notes:"Support in Internet Explorer 8 is limited to images and linked resources like CSS files, not HTML files. Max URI length in IE8 is 32KB. In IE9+ JavaScript files are supported too and the maximum size limit set to 4GB.",usage_perc_y:69.23,usage_perc_a:24.63,ucprefix:!1,parent:"",keywords:"data url,datauris,data uri,dataurl,dataurls"},mathml:{title:"MathML",description:"An XML language that allows mathematical formulas and notations to be written on web pages.",spec:"http://www.w3.org/TR/MathML/",status:"rec",links:[{url:"http://www.mozilla.org/projects/mathml/demo/",title:"MathML demos"},{url:"http://en.wikipedia.org/wiki/MathML",title:"Wikipedia"},{url:"http://www.mathjax.org",title:"Cross-browser support script"},{url:"https://developer.mozilla.org/en/MathML/Element",title:"MDN element reference"}],categories:["Other"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"n",10:"n",11:"n"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"y",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"p"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"a","10.0-10.1":"a",10.5:"a",10.6:"a",11:"a",11.1:"a",11.5:"a",11.6:"a",12:"a",12.1:"a",15:"p",16:"p",17:"p",18:"p"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"p"},android:{2.1:"p",2.2:"p",2.3:"p",3:"p",4:"p",4.1:"p","4.2-4.3":"p",4.4:"p"},bb:{7:"p",10:"y"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",0:"p"},and_chr:{0:"p"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:"Opera's support is limited to a CSS profile of MathML. Support was added in Chrome 24, but removed afterwards due to instability.",usage_perc_y:23.15,usage_perc_a:.63,ucprefix:!1,parent:"",keywords:""},"css-featurequeries":{title:"CSS Feature Queries",description:"CSS Feature Queries allow authors to condition rules based on whether particular property declarations are supported in CSS using the @supports at rule.",spec:"http://www.w3.org/TR/css3-conditional/#at-supports",status:"cr",links:[{url:"http://dabblet.com/gist/3895764",title:"Test case"},{url:"http://mcc.id.au/blog/2012/08/supports",title:"@supports in Firefox"},{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/@supports",title:"MDN Article"},{url:"http://docs.webplatform.org/wiki/css/atrules/@supports",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:"",usage_perc_y:45.52,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"supports,conditional"},xhtml:{title:"XHTML served as application/xhtml+xml",description:"A strict form of HTML, and allows embedding of other XML languages",spec:"http://www.w3.org/TR/xhtml1/",status:"rec",links:[{url:"http://en.wikipedia.org/wiki/XHTML",title:"Wikipedia"},{url:"http://docs.webplatform.org/wiki/concepts/internet_and_web/the_web_standards_model#What_is_XHTML.3F",title:"WebPlatform Docs"},{url:"http://www.xmlplease.com/xhtml/xhtml5polyglot/",title:"Information on XHTML5"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:'The XHTML syntax is very close to HTML, and thus is almost always (<a href="https://developer.mozilla.org/en-US/docs/XHTML#MIME_type_versus_DOCTYPE">incorrectly</a>) served as text/html on the web.',usage_perc_y:85.55,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"xhtml+xml"},xhtmlsmil:{title:"XHTML+SMIL animation",description:"Method of using SMIL animation in web pages",spec:"http://www.w3.org/TR/XHTMLplusSMIL/",status:"unoff",links:[{url:"http://en.wikipedia.org/wiki/XHTML%2BSMIL",title:"Wikipedia"},{url:"http://leunen.me/fakesmile/",title:"JS library to support XHTML+SMIL"}],categories:["Other"],stats:{ie:{5.5:"n",6:"a",7:"a",8:"a",9:"n",10:"n",11:"n"},firefox:{2:"p",3:"p",3.5:"p",3.6:"p",4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p"},chrome:{4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"p"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"p",6:"p",6.1:"p",7:"p"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"p",10.6:"p",11:"p",11.1:"p",11.5:"p",11.6:"p",12:"p",12.1:"p",15:"p",16:"p",17:"p",18:"p"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"p","7.0":"p"},op_mini:{"5.0-7.0":"p"},android:{2.1:"p",2.2:"p",2.3:"p",3:"p",4:"p",4.1:"p","4.2-4.3":"p",4.4:"p"},bb:{7:"p",10:"p"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",0:"p"},and_chr:{0:"p"},and_ff:{0:"p"},ie_mob:{10:"n"}},notes:"Internet Explorer supports the W3C proposal HTML+TIME, which is largely the same as XHTML+SMIL",usage_perc_y:0,usage_perc_a:9.02,ucprefix:!1,parent:"xhtml",keywords:""},"wai-aria":{title:"WAI-ARIA Accessibility features",description:"Method of providing ways for people with disabilities to use dynamic web content and web applications.",spec:"http://www.w3.org/TR/wai-aria/",status:"cr",links:[{url:"http://www.alistapart.com/articles/the-accessibility-of-wai-aria/",title:"ALA Article"},{url:"http://en.wikipedia.org/wiki/WAI-ARIA",title:"Wikipedia"},{url:"http://zufelt.ca/blog/are-you-confused-html5-and-wai-aria-yet",title:"HTML5/WAI-ARIA information"},{url:"http://www.w3.org/WAI/intro/aria",title:"Information page"},{url:"http://www.paciellogroup.com/blog/2011/10/browser-assistive-technology-tests-redux/",title:"Links to various test results"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"y",9:"y",10:"y",11:"y"},firefox:{2:"a",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a"},safari:{3.1:"n",3.2:"n",4:"a",5:"a",5.1:"a",6:"a",6.1:"a",7:"a"},opera:{9:"n","9.5-9.6":"a","10.0-10.1":"a",10.5:"a",10.6:"a",11:"a",11.1:"a",11.5:"a",11.6:"a",12:"a",12.1:"a",15:"a",16:"a",17:"a",18:"a"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0":"a"},op_mini:{"5.0-7.0":"a"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"a"},bb:{7:"n",10:"n"},op_mob:{10:"a",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"a",0:"a"},and_chr:{0:"a"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:40.05,usage_perc_a:48.6,ucprefix:!1,parent:"",keywords:"wai,aria"},geolocation:{title:"Geolocation",description:"Method of informing a website of the user's geographical location",spec:"http://www.w3.org/TR/geolocation-API/",status:"cr",links:[{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-geolocation",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/apis/geolocation",title:"WebPlatform Docs"},{url:"http://html5demos.com/geo",title:"Simple demo"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y",10:"y",11:"y"},firefox:{2:"p",3:"p",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"a",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"p",3.2:"p",4:"p",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"p",10.5:"p",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"n",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"p",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:80.65,usage_perc_a:.02,ucprefix:!1,parent:"",keywords:""},flexbox:{title:"Flexible Box Layout Module",description:"Method of positioning elements in horizontal or vertical stacks.",spec:"http://www.w3.org/TR/css3-flexbox/",status:"cr",links:[{url:"http://css-tricks.com/snippets/css/a-guide-to-flexbox/",title:"A Complete Guide to Flexbox"},{url:"http://bennettfeely.com/flexplorer/",title:"Flexbox CSS generator"},{url:"http://www.adobe.com/devnet/html5/articles/working-with-flexbox-the-new-spec.html",title:"Article on using the latest spec"},{url:"http://philipwalton.github.io/solved-by-flexbox/",title:"Examples on how to solve common layout problems with flexbox"},{url:"http://dev.opera.com/articles/view/advanced-cross-browser-flexbox/",title:"Tutorial on cross-browser support"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x #2",11:"y"},firefox:{2:"a x #1",3:"a x #1",3.5:"a x #1",3.6:"a x #1",4:"a x #1",5:"a x #1",6:"a x #1",7:"a x #1",8:"a x #1",9:"a x #1",10:"a x #1",11:"a x #1",12:"a x #1",13:"a x #1",14:"a x #1",15:"a x #1",16:"a x #1",17:"a x #1",18:"a x #1",19:"a x #1",20:"a x #1",21:"a x #1",22:"a #3",23:"a #3",24:"a #3",25:"a #3",26:"a #3",27:"a #3"},chrome:{4:"a x #1",5:"a x #1",6:"a x #1",7:"a x #1",8:"a x #1",9:"a x #1",10:"a x #1",11:"a x #1",12:"a x #1",13:"a x #1",14:"a x #1",15:"a x #1",16:"a x #1",17:"a x #1",18:"a x #1",19:"a x #1",20:"a x #1",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"a x #1",3.2:"a x #1",4:"a x #1",5:"a x #1",5.1:"a x #1",6:"a x #1",6.1:"y x",7:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"y",15:"y x",16:"y x",17:"y",18:"y"},ios_saf:{3.2:"a x #1","4.0-4.1":"a x #1","4.2-4.3":"a x #1","5.0-5.1":"a x #1","6.0-6.1":"a x #1","7.0":"y x"},op_mini:{"5.0-7.0":"n"},android:{2.1:"a x #1",2.2:"a x #1",2.3:"a x #1",3:"a x #1",4:"a x #1",4.1:"a x #1","4.2-4.3":"a x #1",4.4:"y"},bb:{7:"a x #1",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"a x #1"},ie_mob:{10:"a x #2"}},notes:'Most partial support refers to supporting an <a href="http://www.w3.org/TR/2009/WD-css3-flexbox-20090723/">older version</a> of the specification or an <a href="http://www.w3.org/TR/2012/WD-css3-flexbox-20120322/">older syntax</a>. For Firefox 21+ it refers to lack of flex-wrap & flex-flow support.',usage_perc_y:37.88,usage_perc_a:37.66,ucprefix:!1,parent:"",keywords:"flex"},webgl:{title:"WebGL - 3D Canvas graphics",description:"Method of generating dynamic 3D graphics using JavaScript, accelerated through hardware",spec:"https://www.khronos.org/registry/webgl/specs/1.0/",status:"other",links:[{url:"http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation",title:"Instructions on enabling WebGL"},{url:"http://webkit.org/blog/603/webgl-now-available-in-webkit-nightlies/",title:"Webkit blog post"},{url:"http://www.khronos.org/webgl/wiki/Tutorial",title:"Tutorial"},{url:"http://hacks.mozilla.org/2009/12/webgl-draft-released-today/",title:"Firefox blog post"},{url:"http://iewebgl.com/",title:"Polyfill for IE"}],categories:["Canvas"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"p",10:"p",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"a",6:"a",6.1:"a",7:"a"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"a",12.1:"a",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"a",12.1:"a",0:"y"},and_chr:{0:"n"},and_ff:{0:"y"},ie_mob:{10:"p"}},notes:'Support listed as "partial" refers to the fact that not all users with these browsers have WebGL access. This is due to the additional requirement for users to have <a href="http://www.khronos.org/webgl/wiki/BlacklistsAndWhitelists">up to date video drivers</a>. This problem was <a href="http://blog.chromium.org/2012/02/gpu-accelerating-2d-canvas-and-enabling.html">solved in Chrome</a> as of version 18.\r\n\r\nNote that WebGL is part of the <a href="http://www.khronos.org/webgl/">Khronos Group</a>, not the W3C. On Chrome for Android, WebGL is disabled by default, but can be enabled by enabling the "Enable WebGL" flag under chrome://flags',usage_perc_y:33.4,usage_perc_a:19.68,ucprefix:!1,parent:"canvas",keywords:"web gl"},fileapi:{title:"File API",description:"Method of manipulating file objects in web applications client-side, as well as programmatically selecting them and accessing their data.",spec:"http://www.w3.org/TR/FileAPI/",status:"wd",links:[{url:"https://developer.mozilla.org/en/Using_files_from_web_applications",title:"MDN article"},{url:"http://docs.webplatform.org/wiki/apis/file",title:"WebPlatform Docs"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"a",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"a",4:"a",4.1:"a","4.2-4.3":"a",4.4:"y"},bb:{7:"a",10:"y"},op_mob:{10:"n",11:"n",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:"Partial support in older Safari refers to lacking FileReader support. ",usage_perc_y:67.73,usage_perc_a:5.38,ucprefix:!1,parent:"",keywords:"FileReader"},shadowdom:{title:"Shadow DOM",description:"Method of establishing and maintaining functional boundaries between DOM trees and how these trees interact with each other within a document, thus enabling better functional encapsulation within the DOM.",spec:"http://www.w3.org/TR/shadow-dom/",status:"wd",links:[{url:"http://www.html5rocks.com/tutorials/webcomponents/shadowdom/",title:"HTML5Rocks - Shadow DOM 101 article"},{url:"http://html5-demos.appspot.com/static/shadowdom-visualizer/index.html",title:"Shadow DOM Visualizer"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"y x",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"u",7:"u"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y x"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y x"},and_chr:{0:"y x"},and_ff:{0:"n"},ie_mob:{10:"n"}},notes:"",usage_perc_y:33.29,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"web components"},websockets:{title:"Web Sockets",description:"Bidirectional communication technology for web apps",spec:"http://www.w3.org/TR/websockets/",status:"cr",links:[{url:"http://docs.webplatform.org/wiki/apis/websocket",title:"WebPlatform Docs"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-websockets",title:"has.js test"},{url:"http://websocket.org/aboutwebsocket.html",title:"WebSockets information"},{url:"http://en.wikipedia.org/wiki/WebSocket",title:"Wikipedia"},{url:"http://updates.html5rocks.com/2011/08/What-s-different-in-the-new-WebSocket-protocol",title:"Details on newer protocol"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a",5:"a",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"a",5.1:"a",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"a",11.1:"a",11.5:"a",11.6:"a",12:"a",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Partial support refers to the websockets implementation using an older version of the protocol and/or the implementation being disabled by default (due to security issues with the older protocol).",usage_perc_y:67.46,usage_perc_a:2.62,ucprefix:!0,parent:"",keywords:""},"script-async":{title:"async attribute for external scripts",description:"The boolean async attribute on script elements allows the external JavaScript file to run when it's available, without delaying page load first.",spec:"http://www.w3.org/TR/html5/scripting-1.html#attr-script-async",status:"cr",links:[{url:"https://developer.mozilla.org/en/HTML/Element/script#Attributes",title:"MDN article"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/script.js#script-async",title:"has.js test"},{url:"http://ie.microsoft.com/testdrive/Performance/AsyncScripts/Default.html",title:"Demo"}],categories:["HTML5","DOM"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"a",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Using script.async = false; to maintain execution order for dynamically-added scripts isn't supported in Safari 5.0",usage_perc_y:72.82,usage_perc_a:.31,ucprefix:!1,parent:"",keywords:""},cors:{title:"Cross-Origin Resource Sharing",description:"Method of performing XMLHttpRequests across domains",spec:"http://www.w3.org/TR/cors/",status:"cr",links:[{url:"http://saltybeagle.com/2009/09/cross-origin-resource-sharing-demo/",title:"Demo and script with cross-browser support"},{url:"http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/",title:"Mozilla Hacks blog post"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-cors-xhr",title:"has.js test"},{url:"http://msdn.microsoft.com/en-us/library/cc288060(VS.85).aspx",title:"Alternative implementation by IE8"},{url:"http://dev.opera.com/articles/view/dom-access-control-using-cross-origin-resource-sharing/",title:"DOM access using CORS"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"a",9:"a",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:'Supported somewhat in IE8 and IE9 using the XDomainRequest object (but has <a href=" http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx">limitations</a>)',usage_perc_y:75.51,usage_perc_a:13.52,ucprefix:!1,parent:"",keywords:""},calc:{title:"calc() as CSS unit value",description:"Method of allowing calculated values for length units, i.e. width: calc(100% - 3em)",spec:"http://www.w3.org/TR/css3-values/#calc",status:"cr",links:[{url:"http://docs.webplatform.org/wiki/css/functions/calc",title:"WebPlatform Docs"},{url:"https://developer.mozilla.org/en/CSS/-moz-calc",title:"MDN article"},{url:"http://hacks.mozilla.org/2010/06/css3-calc/",title:"Mozilla Hacks article"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y x",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Support can be somewhat emulated in older versions of IE using the non-standard expression() syntax. ",usage_perc_y:71.77,usage_perc_a:0,ucprefix:!1,parent:"",keywords:""},ruby:{title:"Ruby annotation",description:"Method of adding pronunciation or other annotations using ruby elements (primarily used in East Asian typography)",spec:"http://www.w3.org/TR/html-markup/ruby.html",status:"wd",links:[{url:"https://addons.mozilla.org/firefox/addon/6812/",title:'Addon "HTML Ruby" for Firefox support'},{url:"http://html5doctor.com/ruby-rt-rp-element/",title:"HTML5 Doctor article"},{url:"http://docs.webplatform.org/wiki/html/elements/ruby",title:"WebPlatform Docs"},{url:"https://addons.mozilla.org/firefox/addon/1935/",title:'Add-on "XHTML Ruby Support" for Firefox'}],categories:["HTML5"],stats:{ie:{5.5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a"},firefox:{2:"p",3:"p",3.5:"p",3.6:"p",4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p"},chrome:{4:"p",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a"},safari:{3.1:"p",3.2:"p",4:"p",5:"a",5.1:"a",6:"a",6.1:"a",7:"a"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"p",10.6:"p",11:"p",11.1:"p",11.5:"p",11.6:"p",12:"p",12.1:"p",15:"a",16:"a",17:"a",18:"a"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"a","6.0-6.1":"a","7.0":"a"},op_mini:{"5.0-7.0":"p"},android:{2.1:"p",2.2:"p",2.3:"p",3:"a",4:"a",4.1:"a","4.2-4.3":"a",4.4:"a"},bb:{7:"p",10:"a"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",0:"a"},and_chr:{0:"a"},and_ff:{0:"p"},ie_mob:{10:"a"}},notes:"Browsers without native support can still simulate support using CSS. Partial support refers to only supporting basic ruby, may still be missing writing-mode, Complex ruby and CSS3 Ruby",usage_perc_y:0,usage_perc_a:72.03,ucprefix:!1,parent:"",keywords:""},"css-opacity":{title:"CSS3 Opacity",description:"Method of setting the transparency level of an element",spec:"http://www.w3.org/TR/css3-color/",status:"rec",links:[{url:"http://www.css3files.com/color/#opacity",title:"Information page"},{url:"http://docs.webplatform.org/wiki/css/properties/opacity",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"a",6:"a",7:"a",8:"a",9:"y",10:"y",11:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:'Transparency for elements in IE8 and older can be achieved using the proprietary "filter" property and does not work well with PNG images using alpha transparency.',usage_perc_y:85.55,usage_perc_a:9.03,ucprefix:!1,parent:"",keywords:"transparent,transparency,alpha"},"form-validation":{title:"Form validation",description:"Method of setting required fields and field types without requiring JavaScript",spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#client-side-form-validation",status:"wd",links:[{url:"http://docs.webplatform.org/wiki/html/attributes/required",title:"WebPlatform Docs"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"a",5.1:"a",6:"a",6.1:"a",7:"a"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"a"}},notes:"Partial support in Safari refers to lack of notice when form with required fields is attempted to be submitted. Partial support in IE10 mobile refers to lack of warning when blocking submission.",usage_perc_y:61.75,usage_perc_a:4.07,ucprefix:!1,parent:"forms",keywords:""},history:{title:"Session history management",description:"Method of manipulating the user's browser's session history in JavaScript using history.pushState, history.replaceState and the popstate event",spec:"http://www.w3.org/TR/html5/browsers.html#history-1",status:"cr",links:[{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-history-state",title:"has.js test"},{url:"https://github.com/browserstate/history.js",title:"History.js polyfill "},{url:"http://docs.webplatform.org/wiki/dom/history",title:"WebPlatform Docs"},{url:"http://html5demos.com/history",title:"Demo page"},{url:"http://www.adequatelygood.com/2010/7/Saner-HTML5-History-Management",title:"Introduction to history management"},{url:"https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history",title:"MDN article"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"a",5.1:"a",6:"a",6.1:"a",7:"a"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"a","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"y",2.3:"y",3:"n",4:"n",4.1:"n","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Older iOS versions and Android 4.0.4 claim support, but implementation is too buggy to be useful. Partial support in other Safari browsers refers to other buggy behavior.",usage_perc_y:68.29,usage_perc_a:3.89,ucprefix:!1,parent:"",keywords:"onpushstate,onreplacestate"},json:{title:"JSON parsing",description:"Method of converting JavaScript objects to JSON strings and JSON back to objects using JSON.stringify() and JSON.parse()",spec:"http://es5.github.com/#x15.12",status:"other",links:[{url:"http://docs.webplatform.org/wiki/apis/json",title:"WebPlatform Docs"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/json.js#json",title:"has.js test"},{url:"http://www.json.org/js.html",title:"JSON in JS (includes script w/support)"},{url:"https://developer.mozilla.org/En/Using_native_JSON",title:"MDN article"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"y",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:'Requires document to be in IE8+ <a href="http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx">standards mode</a> to work in IE8.',usage_perc_y:93.71,usage_perc_a:0,ucprefix:!1,parent:"",keywords:""},classlist:{title:"classList (DOMTokenList )",description:"Method of easily manipulating classes on elements, using the DOMTokenList object.",spec:"http://www.w3.org/TR/dom/#dom-element-classlist",status:"wd",links:[{url:"https://github.com/eligrey/classList.js",title:"Polyfill script"},{url:"http://hacks.mozilla.org/2010/01/classlist-in-firefox-3-6/",title:"Mozilla Hacks article"},{url:"http://docs.webplatform.org/wiki/dom/properties/classList",title:"WebPlatform Docs"},{url:"https://github.com/eligrey/classList.js/pull/12",title:"Polyfill script for classList on SVG elements on WebKit"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"p",6:"p",7:"p",8:"p",9:"p",10:"y",11:"y"},firefox:{2:"p",3:"p",3.5:"p",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"p",5:"p",6:"p",7:"p",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"p",10.6:"p",11:"p",11.1:"p",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"p"},android:{2.1:"p",2.2:"p",2.3:"p",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"p",11:"p",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:73.54,usage_perc_a:0,ucprefix:!1,parent:"",keywords:""},"text-overflow":{title:"CSS3 Text-overflow",description:"Append ellipsis when text overflows its containing element",spec:"http://www.w3.org/TR/css3-ui/#text-overflow0",status:"wd",links:[{url:"http://www.css3files.com/text/",title:"Information page"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/css.js#css-text-overflow",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/css/properties/text-overflow",title:"WebPlatform Docs"},{url:"https://developer.mozilla.org/En/CSS/Text-overflow",title:"MDN article"},{url:"https://github.com/rmorse/AutoEllipsis",title:"jQuery polyfill for Firefox"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y"},firefox:{2:"p",3:"p",3.5:"p",3.6:"p",4:"p",5:"p",6:"p",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y x","9.5-9.6":"y x","10.0-10.1":"y x",10.5:"y x",10.6:"y x",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y x"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y x",11:"y x",11.1:"y x",11.5:"y x",12:"y x",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:93.95,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"textoverflow,ellipsis"},webm:{title:"WebM/VP8 video format",description:"Multimedia format designed to provide a royalty-free, high-quality open video compression format for use with HTML5 video.",spec:"http://www.webmproject.org/",status:"other",links:[{url:"http://perian.org/",title:"Perian :Mac OSX Webm Codec install"},{url:"https://tools.google.com/dlpage/webmmf",title:"Codec for IE9 support"},{url:"http://webmproject.org",title:"Officical website"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/video.js#video-webm",title:"has.js test"},{url:"http://www.broken-links.com/2010/09/01/playing-webm-in-safari-with-plugins/",title:"Info on supporting WebM in Safari"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"p",10:"p",11:"p"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"p",4:"p",5:"p",5.1:"p",6:"p",6.1:"p",7:"p"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"p"}},notes:"Will work in IE9+ and Safari/MacOSX provided the user has the WebM codecs installed.",usage_perc_y:55.72,usage_perc_a:0,ucprefix:!1,parent:"video",keywords:"matroska"},mpeg4:{title:"MPEG-4/H.264 video format",description:"Commonly used video compression format (not royalty-free)",spec:"http://ip.hhi.de/imagecom_G1/assets/pdfs/csvt_overview_0305.pdf",status:"other",links:[{url:"http://www.interoperabilitybridges.com/html5-extension-for-wmp-plugin",title:"Firefox extension allowing support in Win7"},{url:"http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC",title:"Wikipedia article"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"a",2.2:"a",2.3:"a",3:"a",4:"a",4.1:"a","4.2-4.3":"a",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"a"},ie_mob:{10:"y"}},notes:'The Android 2.3 browser currently requires <a href="http://www.broken-links.com/2010/07/08/making-html5-video-work-on-android-phones/">specific handling</a> to play videos. Firefox <a href="http://blog.lizardwrangler.com/2012/03/18/video-user-experience-and-our-mission/">will include support</a> on some platforms in upcoming versions. Firefox supports H.264 on Windows 7 and later since version 21. Partial support for Firefox refers to the lack of support in OSX & Linux platforms, for Android Firefox it refers to the inability of hardware acceleration.',usage_perc_y:59.55,usage_perc_a:18.1,ucprefix:!1,parent:"video",keywords:"avc,mp4,mpv,mov,aac"},ogv:{title:"Ogg/Theora video format",description:"Free lossy video compression format.",spec:"http://theora.org/doc/",status:"other",links:[{url:"http://en.wikipedia.org/wiki/Theora",title:"Wikipedia article"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"p",10:"p",11:"p"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"n"},and_chr:{0:"n"},and_ff:{0:"y"},ie_mob:{10:"p"}},notes:"",usage_perc_y:49.8,usage_perc_a:0,ucprefix:!1,parent:"video",keywords:"xiph"},wordwrap:{title:"CSS3 Overflow-wrap",description:"Allows lines to be broken within words if an otherwise unbreakable string is too long to fit.",spec:"http://www.w3.org/TR/css3-text/#overflow-wrap",status:"wd",links:[{url:"http://docs.webplatform.org/wiki/css/properties/word-wrap",title:"WebPlatform Docs"},{url:"https://developer.mozilla.org/En/CSS/Word-wrap",title:"MDN article"},{url:"http://www.css3files.com/text/#wordwrap",title:"Information page"}],categories:["CSS3"],stats:{ie:{5.5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a"},firefox:{2:"n",3:"n",3.5:"a",3.6:"a",4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a"},chrome:{4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"a",3.2:"a",4:"a",5:"a",5.1:"a",6:"a",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"a",10.6:"a",11:"a",11.1:"a",11.5:"a",11.6:"a",12:"a",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0":"y"},op_mini:{"5.0-7.0":"a"},android:{2.1:"a",2.2:"a",2.3:"a",3:"a",4:"a",4.1:"a","4.2-4.3":"a",4.4:"y"},bb:{7:"a",10:"y"},op_mob:{10:"a",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"a",0:"y"},and_chr:{0:"y"},and_ff:{0:"a"},ie_mob:{10:"a"}},notes:'Partial support refers to requiring the legacy name "word-wrap" (rather than overflow-wrap) to work.',usage_perc_y:36.93,usage_perc_a:57.51,ucprefix:!1,parent:"",keywords:"wordwrap,word-wrap"},progressmeter:{title:"Progress & Meter",description:"Method of indicating a progress state (progress element) or the current level of a gauge (meter element).\r\n",spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-progress-element",status:"wd",links:[{url:"http://dev.opera.com/articles/view/new-form-features-in-HTML5/#newoutput",title:"Dev.Opera article"},{url:"http://peter.sh/examples/?/html/meter-progress.html",title:"Examples of progress and meter elements"},{url:"http://docs.webplatform.org/wiki/html/elements/progress",title:"WebPlatform Docs"},{url:"http://html5doctor.com/measure-up-with-the-meter-tag/",title:"HTML5 Doctor on meter element "}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a",11:"a"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"a"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"a"}},notes:'Partial support in Firefox 6-15, IE10 & iOS7 Safari refers to supporting the progress element, but not the meter element. iOS7 Safari also does not support "indeterminate" progress elements.',usage_perc_y:52.21,usage_perc_a:14.58,ucprefix:!1,parent:"forms",keywords:""},"object-fit":{title:"CSS3 object-fit/object-position",description:'Method of specifying how an object (image or video) should fit inside its box. object-fit options include "contain" (fit according to aspect ratio), "fill" (stretches object to fill) and "cover" (overflows box but maintains ratio), where object-position allows the object to be repositioned like background-image does.',spec:"http://www.w3.org/TR/css3-images/",status:"cr",links:[{url:"http://dev.opera.com/articles/view/css3-object-fit-object-position/",title:"Dev.Opera article"},{url:"http://docs.webplatform.org/wiki/css/properties/object-fit",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"u",27:"u"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"u",7:"u"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"y x",11:"y x",11.1:"y x",11.5:"y x",11.6:"y x",12:"y x",12.1:"y x",15:"n",16:"n",17:"n",18:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"y x",11.1:"y x",11.5:"y x",12:"y x",12.1:"y x",0:"n"},and_chr:{0:"n"},and_ff:{0:"n"},ie_mob:{10:"n"}},notes:"Can be enabled in Chrome 31+ and Opera 18+ by enabling experimental Web Platform features under chrome://flags/ or opera://flags/.",usage_perc_y:.81,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"objectfit,objectposition"},xhr2:{title:"XMLHttpRequest 2",description:"Adds more functionality to AJAX requests like file uploads, transfer progress information and the ability to send form data.",spec:"http://www.w3.org/TR/XMLHttpRequest2/",status:"wd",links:[{url:"http://docs.webplatform.org/wiki/apis/xhr/XMLHttpRequest",title:"WebPlatform Docs"},{url:"http://www.profilepicture.co.uk/tutorials/ajax-file-upload-xmlhttprequest-level-2/",title:"Article with file upload demo"},{url:"https://developer.mozilla.org/en/XMLHttpRequest/FormData",title:"MDN article on FormData"},{url:"https://github.com/3nr1c/jUri.js",title:"Polyfill for FormData object"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"a",3.6:"a",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"u",5:"u",6:"u",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:73.51,usage_perc_a:.35,ucprefix:!1,parent:"",keywords:"formdata"},minmaxwh:{title:"CSS min/max-width/height",description:"Method of setting a minimum or maximum width or height to an element. ",spec:"http://www.w3.org/TR/CSS21/visudet.html#min-max-widths",status:"rec",links:[{url:"http://docs.webplatform.org/wiki/css/properties/min-width",title:"WebPlatform Docs"},{url:"http://code.google.com/p/ie7-js/",title:"JS library with support"},{url:"http://www.impressivewebs.com/min-max-width-height-css/",title:"CSS Basics post"}],categories:["CSS2"],stats:{ie:{5.5:"p",6:"p",7:"y",8:"y",9:"y",10:"y",11:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:'IE7 does not support "inherit" as a value on any of these properties. IE8 has some bugs with max-width/height combined with overflow: auto/scroll.',usage_perc_y:94.36,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"min-width,min-height,max-width,max-height"},details:{title:"Details & Summary elements",description:"The <details> element generates a simple no-JavaScript widget to show/hide element contents, optionally by clicking on its child <summary> element.",spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#the-details-element",status:"wd",links:[{url:"http://html5doctor.com/summary-figcaption-element/",title:"HTML5 Doctor article"},{url:"http://mathiasbynens.be/notes/html5-details-jquery",title:"jQuery fallback script"},{url:"http://docs.webplatform.org/wiki/html/elements/details",title:"WebPlatform Docs"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-details",title:"has.js test"},{url:"https://gist.github.com/370590",title:"Fallback script"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"p",3.5:"p",3.6:"p",4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p"},chrome:{4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"p",6:"y",6.1:"y",7:"y"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"p",10.6:"p",11:"p",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"p"},android:{2.1:"p",2.2:"p",2.3:"p",3:"p",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"p",10:"y"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",0:"y"},and_chr:{0:"y"},and_ff:{0:"n"},ie_mob:{10:"n"}},notes:"",usage_perc_y:44.5,usage_perc_a:0,ucprefix:!1,parent:"",keywords:""},"text-stroke":{title:"CSS text-stroke",description:"Method of declaring the outline (stroke) width and color for text.",spec:"http://developer.apple.com/library/safari/documentation/appleapplications/reference/SafariCSSRef/Articles/StandardCSSProperties.html#//apple_ref/doc/uid/TP30001266-_webkit_text_stroke",status:"unoff",links:[{url:"http://www.westciv.com/tools/textStroke/",title:"Live editor"},{url:"http://css-tricks.com/7405-adding-stroke-to-web-text/",title:"Information & workarounds"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"u",27:"u"},chrome:{4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x"},safari:{3.1:"y x",3.2:"y x",4:"y x",5:"y x",5.1:"y x",6:"y x",6.1:"y x",7:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x"},ios_saf:{3.2:"a x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0":"y x"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y x",2.2:"y x",2.3:"y x",3:"n",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y x"},bb:{7:"y x",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y x"},and_chr:{0:"y x"},and_ff:{0:"n"},ie_mob:{10:"n"}},notes:'Does not yet appear in any W3C specification. Was briefly included in a spec as the "text-outline" property, but this was removed.',usage_perc_y:48.41,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"textstroke,stroke-color,stroke-width,fill-color"},"inline-block":{title:"CSS inline-block",description:"Method of displaying an element as a block while flowing it with text. ",spec:"http://www.w3.org/TR/CSS21/visuren.html#fixed-positioning",status:"rec",links:[{url:"http://robertnyman.com/2010/02/24/css-display-inline-block-why-it-rocks-and-why-it-sucks/",title:"Blog post w/info"},{url:"http://docs.webplatform.org/wiki/css/properties/display",title:"WebPlatform Docs"},{url:"http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/",title:"Info on cross browser support"}],categories:["CSS2"],stats:{ie:{5.5:"a",6:"a",7:"a",8:"y",9:"y",10:"y",11:"y"},firefox:{2:"a x",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:'Only supported in IE6 and IE7 on elements with a display of "inline" by default. <a href="http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/">Alternative properties</a> are available to provide complete cross-browser support.',usage_perc_y:93.84,usage_perc_a:.74,ucprefix:!1,parent:"",keywords:"inlineblock"},notifications:{title:"Web Notifications",description:"Method of alerting the user outside of a web page by displaying notifications (that do not require interaction by the user).",spec:"http://www.w3.org/TR/notifications/",status:"wd",links:[{url:"http://www.html5rocks.com/tutorials/notifications/quick/",title:"HTML5 Rocks tutorial"},{url:"http://www.chromium.org/developers/design-documents/desktop-notifications/api-specification",title:"Chromium API"},{url:"https://addons.mozilla.org/en-us/firefox/addon/221523/",title:"Add-on "}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"a x",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"a x"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"a x"},and_chr:{0:"a x"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:"",usage_perc_y:45.27,usage_perc_a:2.66,ucprefix:!1,parent:"",keywords:""},stream:{title:"getUserMedia/Stream API",description:"Method of accessing external device data (such as a webcam video stream). Formerly this was envisioned as the <device> element.",spec:"http://www.w3.org/TR/mediacapture-streams/",status:"wd",links:[{url:"http://my.opera.com/core/blog/2011/03/23/webcam-orientation-preview",title:"Technology preview from Opera"},{url:"http://docs.webplatform.org/wiki/dom/methods/getUserMedia",title:"WebPlatform Docs"}],categories:["HTML5","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"u",7:"u"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"y",12.1:"y",15:"n",16:"n",17:"n",18:"y x"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",0:"y x"},and_chr:{0:"y"},and_ff:{0:"y x"},ie_mob:{10:"n"}},notes:"",usage_perc_y:48.44,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"camera,device,getUserMedia,media stream,Media Capture API"},"svg-img":{title:"SVG in HTML img element",description:"Method of displaying SVG images in HTML using <img>",spec:"http://www.w3.org/TR/html5/embedded-content-1.html#the-img-element",status:"cr",links:[{url:"http://www.codedread.com/blog/",title:"Blog with SVGs an images"},{url:"http://blog.dholbert.org/2010/10/svg-as-image.html",title:"Blog post with examples"}],categories:["SVG"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"a",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"a","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:83.65,usage_perc_a:.01,ucprefix:!1,parent:"",keywords:"svg-as-img,svg-in-img"},datalist:{title:"Datalist element",description:"Method of setting a list of options for a user to select in a text field, while leaving the ability to enter a custom value.",spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-datalist-element",status:"wd",links:[{url:"http://demo.agektmr.com/datalist/",title:"Eiji Kitamura's options demos & tests"},{url:"http://docs.webplatform.org/wiki/html/elements/datalist",title:"WebPlatform Docs"},{url:"https://developer.mozilla.org/en/HTML/Element/datalist",title:"MDN reference"},{url:"http://afarkas.github.com/webshim/demos/",title:"HTML5 Library including datalist support"},{url:"http://hacks.mozilla.org/2010/11/firefox-4-html5-forms/",title:"Mozilla Hacks article"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"p",10:"a",11:"a"},firefox:{2:"p",3:"p",3.5:"p",3.6:"p",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"n",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"p",6:"n",6.1:"n",7:"n"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"p","7.0":"p"},op_mini:{"5.0-7.0":"n"},android:{2.1:"p",2.2:"p",2.3:"p",3:"p",4:"p",4.1:"p","4.2-4.3":"p",4.4:"p"},bb:{7:"p",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"p"},and_chr:{0:"p"},and_ff:{0:"y"},ie_mob:{10:"p"}},notes:'Partial support in IE10 refers to <a href="http://playground.onereason.eu/2013/04/ie10s-lousy-support-for-datalists/">significantly buggy behavior</a>.',usage_perc_y:48.86,usage_perc_a:10.9,ucprefix:!1,parent:"forms",keywords:"list attribute"},dataset:{title:"dataset & data-* attributes",description:"Method of applying and accessing custom data to elements.",spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#embedding-custom-non-visible-data-with-the-data-*-attributes",status:"wd",links:[{url:"http://www.orangesoda.net/jquery.dataset.html",title:"jQuery polyfill for dataset support"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/dom.js#dom-dataset",title:"has.js test"},{url:"http://html5demos.com/dataset",title:"Demo using dataset"},{url:"http://html5doctor.com/html5-custom-data-attributes/",title:"HTML5 Doctor article"},{url:"http://docs.webplatform.org/wiki/html/attributes/data-*",title:"WebPlatform Docs"}],categories:["HTML5"],stats:{ie:{5.5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"y"},firefox:{2:"a",3:"a",3.5:"a",3.6:"a",4:"a",5:"a",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"a",5:"a",6:"a",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"a",3.2:"a",4:"a",5:"a",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"a","9.5-9.6":"a","10.0-10.1":"a",10.5:"a",10.6:"a",11:"a",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"a"},android:{2.1:"a",2.2:"a",2.3:"a",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"a",11:"a",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"a"}},notes:'All browsers can already use data-* attributes and access them using getAttribute. "Supported" refers to accessing the values using the dataset property. Current spec only refers to support on HTML elements, only some browsers also have support for SVG/MathML elements.',usage_perc_y:62.15,usage_perc_a:32.43,ucprefix:!1,parent:"",keywords:"DOMStringMap"},"css-grid":{title:"CSS Grid Layout",description:"Method of using a grid concept to lay out content, providing a mechanism for authors to divide available space for lay out into columns and rows using a set of predictable sizing behaviors",spec:"http://www.w3.org/TR/css3-grid-layout/",status:"wd",links:[{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=616605",title:"Mozilla (Firefox) feature request"},{url:"http://blogs.msdn.com/b/ie/archive/2011/04/14/ie10-platform-preview-and-css-features-for-adaptive-layouts.aspx",title:"IE Blog post"},{url:"https://github.com/codler/Grid-Layout-Polyfill",title:"Grid Layout Polyfill"},{url:"https://bugs.webkit.org/show_bug.cgi?id=60731",title:"Webkit (Chrome, Safari, etc.) feature request"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"p",10:"y x",11:"y x"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"u",27:"u"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"u",32:"u"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"p",6.1:"p",7:"p"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"p","7.0":"p"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"p",4.4:"p"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"p"},and_chr:{0:"p"},and_ff:{0:"n"},ie_mob:{10:"y x"}},notes:"",usage_perc_y:11.11,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"grids,grid-row,grid-column"},menu:{title:"Toolbar/context menu",description:"Method of defining a toolbar menu, a context menu or a list of (interactive) options using the <menu> element.",spec:"http://www.w3.org/TR/html5/interactive-elements.html#context-menus",status:"cr",links:[{url:"https://raw.github.com/phiggins42/has.js/master/detect/events.js#event-contextmenu",title:"has.js test"},{url:"https://bug617528.bugzilla.mozilla.org/attachment.cgi?id=554309",title:"Demo"},{url:"http://addyosmani.github.com/jQuery-contextMenu/",title:"jQuery polyfill"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"u",32:"u"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"u",7:"u"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"n"},and_chr:{0:"n"},and_ff:{0:"n"},ie_mob:{10:"n"}},notes:'Partial support in Firefox refers to using the non-standard "menuitem" child elements, where the current spec uses "<a href="http://www.w3.org/TR/html5/interactive-elements.html#the-command-element">command</a>" child elements. It is also currently limited to context menus, not toolbar menus.',usage_perc_y:0,usage_perc_a:14.7,ucprefix:!1,parent:"",keywords:"contextmenu,menuitem,command"},rem:{title:"rem (root em) units",description:'Type of unit similar to "em", but relative only to the root element, not any parent element. Thus compounding does not occur as it does with "em" units.',spec:"http://www.w3.org/TR/css3-values/#font-relative-lengths",status:"cr",links:[{url:"http://snook.ca/archives/html_and_css/font-size-with-rem",title:"Article on usage"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"u",5:"u",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:80.56,usage_perc_a:0,ucprefix:!1,parent:"",keywords:""},ttf:{title:"TTF/OTF - TrueType and OpenType font support",description:"Support for the TrueType (.ttf)and OpenType (.otf) outline font formats in @font-face. ",spec:"http://developer.apple.com/fonts/TTRefMan/index.html",status:"other",links:[{url:"http://stackoverflow.com/questions/17694143/what-is-the-status-of-ttf-support-in-internet-explorer",title:"What is the status of TTF support in Internet Explorer?"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a",10:"a",11:"a"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"u"}},notes:'Partial support in IE9 refers to the fonts only working <a href="http://blogs.msdn.com/b/ie/archive/2010/07/15/the-css-corner-better-web-typography-for-better-design.aspx">when set to be "installable"</a>.',usage_perc_y:64.48,usage_perc_a:16.11,ucprefix:!1,parent:"fontface",keywords:""},touch:{title:"Touch events",description:"Method of registering when, where and how the interface is touched, for devices with a touch screen. These DOM events are similar to mousedown, mousemove, etc.",spec:"http://www.w3.org/TR/touch-events/",status:"rec",links:[{url:"http://schepers.cc/getintouch",title:"Information on the spec development"},{url:"http://www.quirksmode.org/mobile/tableTouch.html",title:"Detailed support tables"},{url:"http://www.quirksmode.org/m/tests/drag2.html",title:"Multi-touch demo"},{url:"http://msdn.microsoft.com/en-us/library/ie/hh673557(v=vs.85).aspx",title:"Internet Explorer's gesture and touch implementation."}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"p",11:"p"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a",5:"a",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"u",7:"u"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"p"}},notes:"Internet Explorer implements Pointer Events specification which supports more input devices than Touch Events one.",usage_perc_y:58.16,usage_perc_a:.12,ucprefix:!1,parent:"",keywords:"touchstart,touchend,touchmove,touchenter,touchleave,touchcancel"},matchesselector:{title:"matches() DOM method",description:"Method of testing whether or not a DOM element matches a given selector. Formerly known (and largely supported with prefix) as matchesSelector.",spec:"http://www.w3.org/TR/selectors-api2/",status:"wd",links:[{url:"https://developer.mozilla.org/en/DOM/Element.mozMatchesSelector",title:"MDN article"},{url:"http://docs.webplatform.org/wiki/dom/methods/matchesSelector",title:"WebPlatform Docs"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a x",10:"a x",11:"a x"},firefox:{2:"n",3:"n",3.5:"n",3.6:"a x",4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"a x",22:"a x",23:"a x",24:"a x",25:"a x",26:"a x",27:"a x"},chrome:{4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"a x",22:"a x",23:"a x",24:"a x",25:"a x",26:"a x",27:"a x",28:"a x",29:"a x",30:"a x",31:"a x",32:"a x"},safari:{3.1:"n",3.2:"n",4:"n",5:"a x",5.1:"a x",6:"a x",6.1:"a x",7:"a x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"a x",11.6:"a x",12:"a x",12.1:"a x",15:"a x",16:"a x",17:"a x",18:"a x"},ios_saf:{3.2:"n","4.0-4.1":"a x","4.2-4.3":"a x","5.0-5.1":"a x","6.0-6.1":"a x","7.0":"a x"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"a x",2.3:"a x",3:"a x",4:"a x",4.1:"a x","4.2-4.3":"a x",4.4:"a x"},bb:{7:"a x",10:"a x"},op_mob:{10:"n",11:"n",11.1:"a x",11.5:"a x",12:"a x",12.1:"a x",0:"a x"},and_chr:{0:"a x"},and_ff:{0:"a x"},ie_mob:{10:"a x"}},notes:'Partial support refers to supporting the older specification\'s "matchesSelector" name rather than just "matches".',usage_perc_y:0,usage_perc_a:80.6,ucprefix:!1,parent:"",keywords:" matchesSelector"},"pointer-events":{title:"CSS pointer-events (for HTML)",description:'This CSS property, when set to "none" allows elements to not receive hover/click events, instead the event will occur on anything behind it. ',spec:"http://wiki.csswg.org/spec/css4-ui#pointer-events",status:"unoff",links:[{url:"http://robertnyman.com/2010/03/22/css-pointer-events-to-allow-clicks-on-underlying-elements/",title:"Article & tutorial"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/css.js#css-pointerevents",title:"has.js test"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:"Already part of the SVG specification, and all SVG-supporting browsers appear to support the property on SVG elements.",usage_perc_y:63.82,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"pointerevents"},blobbuilder:{title:"Blob constructing",description:"Construct Blobs (binary large objects) either using the BlobBuilder API (deprecated) or the Blob constructor.",spec:"http://www.w3.org/TR/file-writer-api/#the-blobbuilder-interface",status:"wd",links:[{url:"https://developer.mozilla.org/en/DOM/BlobBuilder",title:"MDN article on BlobBuilder"},{url:"https://developer.mozilla.org/en-US/docs/DOM/Blob",title:"MDN article on Blobs"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"a x",4:"a x",4.1:"a x","4.2-4.3":"a x",4.4:"a x"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",0:"y"},and_chr:{0:"a x"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Partial support refers to only supporting the now deprecated BlobBuilder to create blobs.",usage_perc_y:64.97,usage_perc_a:6.3,ucprefix:!0,parent:"fileapi",keywords:""},filereader:{title:"FileReader API",description:"Method of reading the contents of a File or Blob object into memory",spec:"http://www.w3.org/TR/FileAPI/#dfn-filereader",status:"wd",links:[{url:"http://docs.webplatform.org/wiki/apis/file/FileReader",title:"WebPlatform Docs"},{url:"https://developer.mozilla.org/en/DOM/FileReader",title:"FileReader API"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:71.89,usage_perc_a:0,ucprefix:!1,parent:"fileapi",keywords:""},filesystem:{title:"Filesystem & FileWriter API",description:"Method of reading and writing files to a sandboxed file system.\r\n",spec:"http://www.w3.org/TR/file-system-api/",status:"wd",links:[{url:"http://docs.webplatform.org/wiki/apis/filesystem",title:"WebPlatform Docs"},{url:"http://www.html5rocks.com/en/tutorials/file/filesystem/",title:"HTML5 Rocks tutorial"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"u",7:"u"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y x"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y x"},and_chr:{0:"y x"},and_ff:{0:"n"},ie_mob:{10:"n"}},notes:"",usage_perc_y:34.87,usage_perc_a:.28,ucprefix:!1,parent:"",keywords:"filewriter"},bloburls:{title:"Blob URLs",description:"Method of creating URL handles to the specified File or Blob object.",spec:"http://www.w3.org/TR/FileAPI/#url",status:"wd",links:[{url:"https://developer.mozilla.org/en/DOM/window.URL.createObjectURL",title:"MDN article"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y x",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y x"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:"",usage_perc_y:70.6,usage_perc_a:0,ucprefix:!1,parent:"fileapi",keywords:"createobjecturl"},typedarrays:{title:"Typed Arrays",description:"JavaScript typed arrays provide a mechanism for accessing raw binary data much more efficiently.\r\n",spec:"http://www.khronos.org/registry/typedarray/specs/latest/",status:"other",links:[{url:"https://developer.mozilla.org/en/javascript_typed_arrays",title:"MDN article"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:73.11,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"float64array,dataview,uint8array"},deviceorientation:{title:"DeviceOrientation events",description:"API for detecting orientation and motion events from the device running the browser.",spec:"http://www.w3.org/TR/orientation-event/",status:"wd",links:[{url:"http://html5labs.interoperabilitybridges.com/prototypes/device-orientation-events/device-orientation-events/info",title:"DeviceOrientation implementation prototype for IE10"},{url:"http://www.html5rocks.com/en/tutorials/device/orientation/",title:"HTML5 Rocks tutorial"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-orientation",title:"has.js test"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"a"},firefox:{2:"n",3:"n",3.5:"n",3.6:"p",4:"p",5:"p",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a"},chrome:{4:"n",5:"n",6:"n",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"u",7:"u"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"a",16:"a",17:"a",18:"a"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0":"a"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"a",4:"a",4.1:"a","4.2-4.3":"a",4.4:"a"},bb:{7:"n",10:"a"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",0:"a"},and_chr:{0:"a"},and_ff:{0:"a"},ie_mob:{10:"n"}},notes:'Partial support refers to the lack of compassneedscalibration event. Partial support also refers to the lack of devicemotion event support for Chrome 30- and Opera. Opera Mobile 14 lost the ondevicemotion event support. Firefox 3.6, 4 and 5 support the non-standard <a href="https://developer.mozilla.org/en/DOM/MozOrientation">MozOrientation</a> event.',usage_perc_y:.14,usage_perc_a:57.76,ucprefix:!1,parent:"",keywords:""},"script-defer":{title:"defer attribute for external scripts",description:"The boolean defer attribute on script elements allows the external JavaScript file to run when the DOM is loaded, without delaying page load first.",spec:"http://www.w3.org/TR/html5/the-script-element.html#attr-script-defer",status:"cr",links:[{url:"https://developer.mozilla.org/en/HTML/Element/script#Attributes",title:"MDN article"},{url:"http://docs.webplatform.org/wiki/html/attributes/defer",title:"WebPlatform Docs"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/script.js#script-defer",title:"has.js test"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"a",6:"a",7:"a",8:"a",9:"a",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Partial support refers to a buggy implementation in IE<10",usage_perc_y:73.17,usage_perc_a:14.25,ucprefix:!1,parent:"",keywords:""},"nav-timing":{title:"Navigation Timing API",description:"API for accessing timing information related to navigation and elements.",spec:"http://www.w3.org/TR/navigation-timing/",status:"cr",links:[{url:"https://developer.mozilla.org/en/API/navigationTiming",title:"MDN article"},{url:"http://www.html5rocks.com/en/tutorials/webperformance/basics/",title:"HTML5 Rocks tutorial"},{url:"http://docs.webplatform.org/wiki/apis/navigation_timing",title:"WebPlatform Docs"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:69.95,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"performance,performance.timing"},"audio-api":{title:"Web Audio API",description:"High-level JavaScript API for processing and synthesizing audio",spec:"http://www.w3.org/TR/webaudio/",status:"wd",links:[{url:"http://www.doboism.com/projects/webaudio-compatibility/",title:"Additional browser compatibility tests for specific features"},{url:"http://docs.webplatform.org/wiki/apis/webaudio",title:"WebPlatform Docs"},{url:"https://github.com/corbanbrook/audionode.js",title:"Polyfill to support Web Audio API in Firefox"},{url:"https://github.com/g200kg/WAAPISim",title:"Polyfill to enable Web Audio API through Firefox Audio Data api or flash"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y x",6.1:"y x",7:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0":"y x"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"n"},and_chr:{0:"y x"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:"Firefox versions < 25 support an alternative, deprecated audio API.",usage_perc_y:41.68,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"web-audio"},"css-regions":{title:"CSS Regions",description:"Method of flowing content into multiple elements.",spec:"http://www.w3.org/TR/css3-regions/",status:"wd",links:[{url:"http://msdn.microsoft.com/en-us/ie/hh272902#_CSSConnected",title:"IE10 developer guide info"},{url:"http://html.adobe.com/webstandards/cssregions/",title:"Adobe demos and samples"},{url:"http://docs.webplatform.org/wiki/css/atrules/@region",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x",11:"a x"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"a x",16:"a x",17:"a x",18:"a x",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"y x",7:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"y x"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"n"},and_chr:{0:"n"},and_ff:{0:"n"},ie_mob:{10:"a x"}},notes:'Currently supported in WebKit Nightly using <code>-webkit-flow-into: flow_name;</code> and <code>-webkit-from-flow: flow_name;</code>. Support in Chrome 19+ is disabled by default and can be enabled using a runtime flag (see <code>about:flags</code>) or a command line flag (see <a href="http://peter.sh/experiments/chromium-command-line-switches/#enable-css-regions">this list</a>). For Chrome 19-22 the flag is named "Enable CSS Regions" / <code>--enable-css-regions</code>, while for Chrome 23+ the flag is named "Enable experimental WebKit features" / <code>--enable-experimental-webkit-features</code>. Support in IE10 is limited to using an iframe as a content source with the <code>-ms-flow-into: flow_name;</code> and <code>-ms-flow-from: flow_name;</code> syntax. Support for Safari 6.1&7 is <a href="http://www.broken-links.com/2013/07/10/web-platform-technologies-in-safari-6-1-and-7/">likely</a> but not official.',usage_perc_y:2.75,usage_perc_a:11.35,ucprefix:!1,parent:"",keywords:""},fullscreen:{title:"Full Screen API",description:"API for allowing content (like a video or canvas element) to take up the entire screen.",spec:"http://www.w3.org/TR/fullscreen/",status:"wd",links:[{url:"https://developer.mozilla.org/en/DOM/Using_full-screen_mode",title:"MDN article"},{url:"http://jlongster.com/2011/11/21/canvas.html",title:"Blog post"},{url:"http://hacks.mozilla.org/2012/01/using-the-fullscreen-api-in-web-browsers/",title:"Mozilla hacks article"},{url:"http://docs.webplatform.org/wiki/dom/methods/requestFullscreen",title:"WebPlatform Docs"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"y x"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"a x",22:"a x",23:"a x",24:"a x",25:"a x",26:"a x",27:"a x"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"a x",6:"y x",6.1:"y x",7:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"y",15:"y x",16:"y x",17:"y x",18:"y x"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"a"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y x"},and_chr:{0:"y x"},and_ff:{0:"a x"},ie_mob:{10:"n"}},notes:"Partial support refers to supporting an earlier draft of the spec.",usage_perc_y:37.35,usage_perc_a:16.21,ucprefix:!1,parent:"",keywords:"full-screen"},requestanimationframe:{title:"requestAnimationFrame",description:"API allowing a more efficient way of running script-based animation, compared to traditional methods using timeouts.",spec:"http://www.w3.org/TR/animation-timing/#requestAnimationFrame",status:"wd",links:[{url:"http://hacks.mozilla.org/2011/08/animating-with-javascript-from-setinterval-to-requestanimationframe/",title:"Mozilla Hacks article"},{url:"http://paulirish.com/2011/requestanimationframe-for-smart-animating/",title:"Blog post"},{url:"http://docs.webplatform.org/wiki/apis/timing/methods/requestAnimationFrame",title:"WebPlatform Docs"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y x",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y"},and_chr:{0:"y"},and_ff:{0:"y x"},ie_mob:{10:"y"}},notes:"",usage_perc_y:67.13,usage_perc_a:0,ucprefix:!1,parent:"",keywords:""},"input-range":{title:"Range input type",description:"Form field type that allows the user to select a value using a slider widget.",spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#range-state-(type=range)",status:"wd",links:[{url:"https://github.com/fryn/html5slider",title:"Polyfill for Firefox"},{url:"http://docs.webplatform.org/wiki/html/elements/input/type/range",title:"WebPlatform Docs"},{url:"http://tutorialzine.com/2011/12/what-you-need-to-know-html5-range-input/",title:"Tutorial"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/form.js#input-type-range",title:"has.js test"},{url:"https://github.com/freqdec/fd-slider",title:"Cross-browser polyfill"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"u",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"a",2.2:"a",2.3:"a",3:"a",4:"a",4.1:"a","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:'Currently all Android browsers with partial support hide the slider input field by default. However, the element <a href="http://tiffanybbrown.com/2012/02/07/input-typerange-and-androids-stock-browser/">can be styled</a> to be made visible and usable.',usage_perc_y:68.52,usage_perc_a:4.31,ucprefix:!1,parent:"forms",keywords:""},matchmedia:{title:"matchMedia",description:"API for finding out whether or not a media query applies to the document.",spec:"http://www.w3.org/TR/cssom-view/#dom-window-matchmedia",status:"wd",links:[{url:"http://docs.webplatform.org/wiki/css/media_queries/apis/matchMedia",title:"WebPlatform Docs"},{url:"https://github.com/paulirish/matchMedia.js/",title:"matchMedia.js polyfill"},{url:"https://developer.mozilla.org/en/DOM/window.matchMedia",title:"MDN article"},{url:"https://developer.mozilla.org/en/CSS/Using_media_queries_from_code",title:"MDN tutorial"}],categories:["JS API","DOM"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:72.81,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"mediaquerylist"},"input-datetime":{title:"Date/time input types",description:"Form field widget to easily allow users to enter dates and/or times, generally by using a calendar widget.",spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#date-state-(type=date)",status:"wd",links:[{url:"http://docs.webplatform.org/wiki/html/elements/input/type/date",title:"WebPlatform Docs"},{url:"http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-cross-browser-datepickers-within-minutes/",title:"Datepicker tutorial w/polyfill"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/form.js#input-type-datetime;input-type-datetime-local",title:"has.js test"},{url:"https://github.com/zoltan-dulac/html5Forms.js",title:"Polyfill for HTML5 forms"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"u",7:"u"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"a",16:"a",17:"a",18:"a"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"n",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"a"},and_chr:{0:"y"},and_ff:{0:"n"},ie_mob:{10:"n"}},notes:'Safari provides date-formatted text fields, but no real calendar widget. Partial support in Chrome refers to a missing calendar widget for the "datetime" type (and other types in older versions). Some modified versions of the Android 4.x browser do have support for date/time fields. ',usage_perc_y:6.13,usage_perc_a:33.1,ucprefix:!1,parent:"forms",keywords:"datepicker,timepicker"},"input-color":{title:"Color input type",description:"Form field allowing the user to select a color.",spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#color-state-(type=color)",status:"wd",links:[{url:"http://docs.webplatform.org/wiki/html/elements/input/type/color",title:"WebPlatform Docs"},{url:"http://www.html5tutorial.info/html5-color.php",title:"Tutorial"},{url:"https://github.com/jonstipe/color-polyfill",title:"Polyfill"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"n",16:"n",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"n"},ie_mob:{10:"n"}},notes:"",usage_perc_y:35.22,usage_perc_a:0,ucprefix:!1,parent:"forms",keywords:"colour"},"input-number":{title:"Number input type",description:"Form field type for numbers.",spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#number-state-(type=number)",status:"wd",links:[{url:"https://raw.github.com/phiggins42/has.js/master/detect/form.js#input-type-number",title:"has.js test"},{url:"http://www.html5tutorial.info/html5-number.php",title:"Tutorial"},{url:"https://github.com/jonstipe/number-polyfill",title:"Polyfill"},{url:"http://docs.webplatform.org/wiki/html/elements/input/type/number",title:"WebPlatform Docs"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a",11:"a"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n"},chrome:{4:"n",5:"n",6:"u",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0":"a"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"a",4.1:"a","4.2-4.3":"a",4.4:"a"},bb:{7:"n",10:"a"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"a"},and_chr:{0:"a"},and_ff:{0:"n"},ie_mob:{10:"a"}},notes:'iOS Safari, Android 4 and Chrome for Android show number input, but do not use "step", "min" or "max" attributes or show increment/decrement buttons. Internet Explorer 10 does not show increment/decrement buttons.',usage_perc_y:38.44,usage_perc_a:20.1,ucprefix:!1,parent:"forms",keywords:"spinner"},"iframe-sandbox":{title:"sandbox attribute for iframes",description:"Method of running external site pages with reduced privileges (e.g. no JavaScript) in iframes",spec:"http://www.w3.org/TR/html5/the-iframe-element.html#attr-iframe-sandbox",status:"cr",links:[{url:"http://msdn.microsoft.com/en-us/hh563496",title:"MSDN article"},{url:"http://blog.chromium.org/2010/05/security-in-depth-html5s-sandbox.html",title:"Chromium blog article"},{url:"http://docs.webplatform.org/wiki/html/attributes/sandbox",title:"WebPlatform Docs"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:59.45,usage_perc_a:13.57,ucprefix:!1,parent:"",keywords:""},"css-counters":{title:"CSS Counters",description:"Method of controlling number values in generated content, using the counter-reset and counter-increment properties.",spec:"http://www.w3.org/TR/CSS21/generate.html#counters",status:"wd",links:[{url:"http://onwebdev.blogspot.com/2012/02/css-counters-tutorial.html",title:"Tutorial and information"},{url:"http://docs.webplatform.org/wiki/css/properties/counter-reset",title:"WebPlatform Docs"},{url:"https://developer.mozilla.org/en/CSS_Counters",title:"MDN article"}],categories:["CSS2"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"y",9:"y",10:"y",11:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:93.86,usage_perc_a:0,ucprefix:!1,parent:"",keywords:""},"css-resize":{title:"CSS resize property",description:"Method of allowing an element to be resized by the user, with options to limit to a given direction. ",spec:"http://www.w3.org/TR/css3-ui/#resize",status:"wd",links:[{url:"http://css-tricks.com/almanac/properties/r/resize/",title:"CSS Tricks info"},{url:"http://davidwalsh.name/textarea-resize",title:"On textarea resizing"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y x",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"a",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"n"},and_chr:{0:"n"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:"Opera 12.10+ currently only supports the resize property for textarea elements.",usage_perc_y:52.82,usage_perc_a:.48,ucprefix:!1,parent:"",keywords:"horizontal,vertical"},"input-placeholder":{title:"input placeholder attribute",description:"Method of setting placeholder text for text-like input fields, to suggest the expected inserted information.",spec:"http://dev.w3.org/html5/spec/Overview.html#attr-input-placeholder",status:"cr",links:[{url:"http://docs.webplatform.org/wiki/html/attributes/placeholder",title:"WebPlatform Docs"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/form.js#input-attr-placeholder",title:"has.js test"},{url:"http://www.zachleat.com/web/placeholder/",title:"Article on usage"},{url:"https://github.com/mathiasbynens/jquery-placeholder",title:"Polyfill"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"a",3.2:"a",4:"a",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"a",11.1:"a",11.5:"a",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Partial support in older Safari and Opera versions refers to lacking placeholder support on textarea elements. ",usage_perc_y:75.1,usage_perc_a:.15,ucprefix:!1,parent:"forms",keywords:""},spdy:{title:"SPDY networking protocol",description:"Networking protocol for low-latency transport of content over the web.",spec:"http://tools.ietf.org/html/draft-mbelshe-httpbis-spdy-00",status:"unoff",links:[{url:"http://en.wikipedia.org/wiki/SPDY",title:"Wikipedia"},{url:"http://dev.chromium.org/spdy/spdy-whitepaper",title:"SPDY whitepaper"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"a"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"u",7:"u"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"n",10:"u"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:"",usage_perc_y:53.69,usage_perc_a:.11,ucprefix:!1,parent:"",keywords:""},"css-repeating-gradients":{title:"CSS Repeating Gradients",description:"Method of defining a repeating linear or radial color gradient as a CSS image.",spec:"http://www.w3.org/TR/css3-images/#repeating-gradients",status:"cr",links:[{url:"http://docs.webplatform.org/wiki/css/repeating-linear-gradient",title:"WebPlatform Docs"},{url:"https://developer.mozilla.org/en/CSS/repeating-linear-gradient",title:"MDN article"},{url:"http://www.css3files.com/gradient/#repeatinglineargradient",title:"Information page"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y x",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"y x",6:"y x",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"a x",11.5:"a x",11.6:"y x",12:"y x",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y x","6.0-6.1":"y x","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"a x",11.5:"a x",12:"y x",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y x"},ie_mob:{10:"y"}},notes:'Firefox 10+, Chrome 26+ and Opera 11.6+ also support the new "to (side)" syntax.',usage_perc_y:73.31,usage_perc_a:.03,ucprefix:!1,parent:"css-gradients",keywords:""},"css-filters":{title:"CSS Filter Effects",description:"Method of applying filter effects (like blur, grayscale, brightness, contrast and hue) to elements, previously only possible by using SVG.",spec:"http://www.w3.org/TR/filter-effects/",status:"wd",links:[{url:"http://dl.dropbox.com/u/3260327/angular/CSS3ImageManipulation.html",title:"Filter editor"},{url:"http://bennettfeely.com/filters/",title:"Filter Playground"},{url:"http://html5-demos.appspot.com/static/css/filters/index.html",title:"Demo file for WebKit browsers"},{url:"http://www.html5rocks.com/en/tutorials/filters/understanding-css/",title:"Mozilla hacks article"}],categories:["CSS3","CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"u",27:"u"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y x",6.1:"y x",7:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0":"y x"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y x"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y x"},and_chr:{0:"y x"},and_ff:{0:"n"},ie_mob:{10:"n"}},notes:'Note that this property is significantly different from and incompatible with Microsoft\'s <a href="http://msdn.microsoft.com/en-us/library/ie/ms530752%28v=vs.85%29.aspx">older "filter" property</a>.',usage_perc_y:40.55,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"sepia,hue-rotate,invert,saturate"},getcomputedstyle:{title:"getComputedStyle",description:"API to get the current computed CSS styles applied to an element. This may be the current value applied by an animation or as set by a stylesheet.",spec:"http://www.w3.org/TR/cssom/#dom-window-getcomputedstyle",status:"rec",links:[{url:"http://ie.microsoft.com/testdrive/HTML5/getComputedStyle/",title:"Demo"},{url:"http://snipplr.com/view/13523/",title:"Polyfill for IE"},{url:"https://developer.mozilla.org/en/DOM/window.getComputedStyle",title:"MDN article"},{url:"http://docs.webplatform.org/wiki/css/cssom/methods/getComputedStyle",title:"WebPlatform Docs"}],categories:["JS API","CSS3","DOM"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"a",3.5:"a",3.6:"a",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"a",3.2:"a",4:"a",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"a","9.5-9.6":"a","10.0-10.1":"a",10.5:"a",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"a"},android:{2.1:"a",2.2:"a",2.3:"a",3:"a",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"a",10:"y"},op_mob:{10:"a",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"Partial support in older Firefox versions refers to requiring the second parameter to be included. Partial support in all other browsers refers to not supporting getComputedStyle on pseudo-elements.",usage_perc_y:78.53,usage_perc_a:7,ucprefix:!1,parent:"",keywords:""},"word-break":{title:"CSS3 word-break",description:"Property to prevent or allow words to be broken over multiple lines between letters.",spec:"http://www.w3.org/TR/css3-text/#word-break",status:"wd",links:[{url:"http://docs.webplatform.org/wiki/css/properties/word-break",title:"WebPlatform Docs"},{url:"https://developer.mozilla.org/en/CSS/word-break",title:"MDN article"}],categories:["CSS3"],stats:{ie:{5.5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a"},safari:{3.1:"a",3.2:"a",4:"a",5:"a",5.1:"a",6:"a",6.1:"a",7:"a"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"a",16:"a",17:"a",18:"a"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0":"a"},op_mini:{"5.0-7.0":"n"},android:{2.1:"a",2.2:"a",2.3:"a",3:"a",4:"a",4.1:"a","4.2-4.3":"a",4.4:"a"},bb:{7:"a",10:"a"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"a"},and_chr:{0:"a"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:'Partial support refers to supporting the "break-all" value, but not the "keep-all" value.',usage_perc_y:39.39,usage_perc_a:48.42,ucprefix:!1,parent:"",keywords:"break-all,keep-all"},"viewport-units":{title:"Viewport units: vw, vh, vmin, vmax",description:"Length units representing 1% of the viewport size for viewport width (vw), height (vh), the smaller of the two (vmin), or the larger of the two (vmax).",spec:"http://www.w3.org/TR/css3-values/#viewport-relative-lengths",status:"cr",links:[{url:"http://css-tricks.com/viewport-sized-typography/",title:"Blog post"},{url:"https://github.com/saabi/vminpoly",title:"Polyfill"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a",10:"a",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"a",6.1:"a",7:"a"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"a","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"n",10:"a"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"a"}},notes:'Partial support in IE9 refers to supporting "vm" instead of "vmin". All other partial support refers to not supporting the "vmax" unit.',usage_perc_y:48.9,usage_perc_a:21.18,ucprefix:!1,parent:"",keywords:"vm,viewport-percentage"},contentsecuritypolicy:{title:"Content Security Policy",description:"Mitigate cross-site scripting attacks by whitelisting allowed sources of script, style, and other resources.",spec:"http://www.w3.org/TR/CSP/",status:"cr",links:[{url:"http://content-security-policy.com/",title:"CSP Examples & Quick Reference"},{url:"http://html5rocks.com/en/tutorials/security/content-security-policy/",title:"HTML5Rocks article"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x",11:"a x"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"a x",6:"y x",6.1:"y x",7:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"a x","6.0-6.1":"y x","7.0":"y x"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y"},and_chr:{0:"y"},and_ff:{0:"y x"},ie_mob:{10:"a x"}},notes:"The HTTP header is 'X-Content-Security-Policy' for Firefox and IE 10&11, and 'X-WebKit-CSP' for Safari and Chrome. IE 10&11's support is limited to the 'sandbox' directive.",usage_perc_y:55.74,usage_perc_a:12.68,ucprefix:!1,parent:"",keywords:"csp,security,header"},pagevisibility:{title:"PageVisibility",description:"JavaScript API for determining whether a document is visible on the display",spec:"http://www.w3.org/TR/page-visibility/",status:"cr",links:[{url:"https://developer.mozilla.org/en-US/docs/DOM/Using_the_Page_Visibility_API",title:"MDN article"},{url:"http://docs.webplatform.org/wiki/apis/timing/properties/visibilityState",title:"WebPlatform Docs"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"y",15:"y x",16:"y x",17:"y x",18:"y x"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y x"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",0:"y x"},and_chr:{0:"y x"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:63.89,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"visibilitystate"},stricttransportsecurity:{title:"Strict Transport Security",description:"Declare that a website is only accessible over a secure connection (HTTPS).",spec:"http://tools.ietf.org/html/rfc6797",status:"other",links:[{url:"http://dev.chromium.org/sts",title:"Strict Transport Security @ Chromium"},{url:"https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security",title:"Strict Transport Security @ Mozilla Developer Network"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"u",7:"u"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"u"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:"The HTTP header is 'Strict-Transport-Security'.",usage_perc_y:50.76,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"sts,hsts,security,header"},"style-scoped":{title:"Scoped CSS",description:"Allows CSS rules to be scoped to part of the document, based on the position of the style element.",spec:"http://www.w3.org/TR/html5/document-metadata.html#attr-style-scoped",status:"cr",links:[{url:"https://github.com/PM5544/scoped-polyfill",title:"Polyfill"},{url:"http://html5doctor.com/the-scoped-attribute/",title:"HTML5 Doctor article"},{url:"http://updates.html5rocks.com/2012/03/A-New-Experimental-Feature-style-scoped",title:"HTML5Rocks article"}],categories:["CSS","HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"u",32:"u"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"u",7:"u"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"u",0:"n"},and_chr:{0:"n"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:'Supported in Chrome 20+ by enabling the "experimental WebKit features" flag in chrome://flags.',usage_perc_y:13.05,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"scope"},"svg-fragment":{title:"SVG fragment identifiers",description:"Method of displaying only a part of an SVG image by defining a view ID or view box dimensions as the file's fragment identifier.",spec:"http://www.w3.org/TR/SVG/linking.html#SVGFragmentIdentifiers",status:"rec",links:[{url:"http://www.broken-links.com/2012/08/14/better-svg-sprites-with-fragment-identifiers/",title:"Blog post"}],categories:["SVG"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"u",32:"u"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"u",0:"n"},and_chr:{0:"n"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:25.15,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"fragments,sprite"},outline:{title:"CSS outline",description:"The CSS outline property is a shorthand property for setting one or more of the individual outline properties outline-style, outline-width and outline-color in a single rule. In most cases the use of this shortcut is preferable and more convenient.",spec:"http://www.w3.org/TR/CSS2/ui.html#propdef-outline",status:"rec",links:[{url:"https://developer.mozilla.org/en-US/docs/CSS/outline",title:"Mozilla Developer Network: outline"},{url:"http://dev.w3.org/csswg/css3-ui/#outline",title:"CSS Basic User Interface Module Level 3"}],categories:["CSS2"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"y",9:"y",10:"y",11:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"y"}},notes:"",usage_perc_y:89.27,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"-moz-outline,outline-width,outline-style,outline-color"},download:{title:"Download attribute",description:"When used on an anchor, this attribute signifies that the resource it points to should be downloaded by the browser rather than navigate to it.",spec:"http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#downloading-resources",status:"wd",links:[{url:"http://html5-demos.appspot.com/static/a.download.html",title:"Demo: creating a text file and downloading it."},{url:"http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download",title:"HTML5Rocks post"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:"",usage_perc_y:48.02,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"download,a.download,a[download],download attribute"},pointer:{title:"Pointer events",description:'This specification integrates various inputs from mice, touchscreens, and pens, making separate implementations no longer necessary and authoring for cross-device pointers easier. Not to be mistaken with the unrelated "pointer-events" CSS property.',spec:"http://www.w3.org/TR/pointerevents/",status:"cr",links:[{url:"http://blogs.msdn.com/b/eternalcoding/archive/2013/01/16/hand-js-a-polyfill-for-supporting-pointer-events-on-every-browser.aspx",title:"Hand.js, the polyfill for browsers only supporting Touch Events"},{url:"http://blogs.msdn.com/b/ie/archive/2011/09/20/touch-input-for-ie10-and-metro-style-apps.aspx",title:"Implementation of Pointer Events in IE10"},{url:"http://blogs.msdn.com/b/davrous/archive/2013/02/20/handling-touch-in-your-html5-apps-thanks-to-the-pointer-events-of-ie10-and-windows-8.aspx",title:"Article & tutorial"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"p"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"u",7:"u"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"p",16:"p",17:"p",18:"p"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"p","7.0":"p"},op_mini:{"5.0-7.0":"n"},android:{2.1:"p",2.2:"p",2.3:"p",3:"p",4:"p",4.1:"p","4.2-4.3":"p",4.4:"p"},bb:{7:"p",10:"p"},op_mob:{10:"n",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",0:"p"},and_chr:{0:"p"},and_ff:{0:"p"},ie_mob:{10:"a x"}},notes:"Partial support in IE10 refers the lack of pointerenter and pointerleave events.",usage_perc_y:.11,usage_perc_a:10.99,ucprefix:!1,parent:"",keywords:"pointerdown,pointermove,pointerup,pointercancel,pointerover,pointerout,pointerenter,pointerleave"},"user-select-none":{title:"CSS user-select: none",description:"Method of preventing text/element selection using CSS. ",spec:"https://developer.mozilla.org/en-US/docs/CSS/user-select",status:"unoff",links:[{url:"http://msdn.microsoft.com/en-us/library/ie/hh781492(v=vs.85).aspx",title:"MSDN Documentation"},{url:"https://developer.mozilla.org/en-US/docs/CSS/user-select",title:"MDN article"},{url:"http://css-tricks.com/almanac/properties/u/user-select/",title:"CSS Tricks article"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x",11:"y x"},firefox:{2:"y x",3:"y x",3.5:"y x",3.6:"y x",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x"},chrome:{4:"u",5:"u",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x"},safari:{3.1:"y x",3.2:"y x",4:"y x",5:"y x",5.1:"y x",6:"y x",6.1:"y x",7:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x"},ios_saf:{3.2:"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0":"y x"},op_mini:{"5.0-7.0":"n"},android:{2.1:"y x",2.2:"y x",2.3:"y x",3:"y x",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y x"},bb:{7:"y x",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y x"},and_chr:{0:"y x"},and_ff:{0:"y x"},ie_mob:{10:"y x"}},notes:'Currently the user-select property does not appear in any W3C specification. Support information here is only for "none" value, not others.',usage_perc_y:74.91,usage_perc_a:0,ucprefix:!1,parent:"",keywords:""},webp:{title:"WebP image format",description:"Image format that supports lossy and lossless compression, as well as animation and alpha transparency.",spec:"https://developers.google.com/speed/webp/",status:"other",links:[{url:"http://libwebpjs.appspot.com/",title:"Decoder in JS"},{url:"https://developers.google.com/speed/webp/",title:"Official website"},{url:"http://antimatter15.github.io/weppy/demo.html",title:"Polyfill for browsers with WebM support"},{url:"http://webpjs.appspot.com/",title:"Polyfill for browsers with or without WebM support (i.e. IE6-IE9, Safari/iOS version 6.1 and below; Firefox versions 24 and bel"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p"},chrome:{4:"n",5:"n",6:"p",7:"p",8:"p",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"p",11:"p",11.1:"p",11.5:"p",11.6:"p",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"a",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"n"},ie_mob:{10:"n"}},notes:"Animated webp images are supported in Chrome 32+ and Opera 19+.",usage_perc_y:39.4,usage_perc_a:.01,ucprefix:!1,parent:"",keywords:""},"intrinsic-width":{title:"Intrinsic & Extrinsic Sizing",description:"Allows for the heights and widths to be specified in intrinsic values using the fill-available, max-content, min-content, and fit-content properties.",spec:"http://www.w3.org/TR/css3-sizing/",status:"wd",links:[{url:"http://demosthenes.info/blog/662/Design-From-the-Inside-Out-With-CSS-MinContent",title:"Min-Content tutorial"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"y x",7:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"y x"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y x"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y x"},and_chr:{0:"y x"},and_ff:{0:"y x"},ie_mob:{10:"n"}},notes:'Prefixes are on the values, not the property names (e.g. -webkit-min-content) Firefox currently supports the "-moz-available" property rather than "-moz-fill-available".',usage_perc_y:51.68,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"fill-available,max-content,min-content,fit-content,contain-floats"},template:{title:"HTML templates",description:"Method of declaring a portion of reusable markup that is parsed but not rendered until cloned.",spec:"http://www.w3.org/TR/html-templates/",status:"wd",links:[{url:"http://www.html5rocks.com/en/tutorials/webcomponents/template/",title:"HTML5Rocks - HTML's New template Tag"},{url:"http://polymer-project.org",title:"Polymer project (polyfill & web compontents framework)"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:"",usage_perc_y:45.76,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"web components, template"},opus:{title:"Opus",description:"Royalty-free open audio codec by IETF, which incorporated SILK from Skype and CELT from Xiph.org, to serve higher sound quality and lower latency at the same bitrate.",spec:"http://tools.ietf.org/html/rfc6716",status:"other",links:[{url:"https://hacks.mozilla.org/2012/07/firefox-beta-15-supports-the-new-opus-audio-format/",title:"Introduction of Opus by Mozilla"},{url:"http://www.ietf.org/mail-archive/web/rtcweb/current/msg04953.html",title:"Google's statement about the use of VP8 and Opus codec for WebRTC standard"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"u",7:"u"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"u"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"n"},and_chr:{0:"n"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:"Chrome does not support Opus by default but users can enable it via the 'enable-opus-playback' flag. When it comes to Opera, it is said that the Linux version may be able to play it when the GStreamer module is up to date and the served mime-type is 'audio/ogg'.",usage_perc_y:14.04,usage_perc_a:0,ucprefix:!1,parent:"audio",keywords:""},jpegxr:{title:"JPEG XR image format",description:"The latest JPEG image format of Joint Photographic Experts Group which boasts better compression and supports lossless compression, alpha channel, and 48-bit deep color over normal jpg format.",spec:"http://www.itu.int/rec/T-REC-T.832",status:"other",links:[{url:"http://msdn.microsoft.com/en-us/library/windows/desktop/hh707223(v=vs.85).aspx",title:"Microsoft JPEG XR Codec Overview"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"n"},and_chr:{0:"n"},and_ff:{0:"n"},ie_mob:{10:"y"}},notes:"",usage_perc_y:16.32,usage_perc_a:0,ucprefix:!1,parent:"",keywords:""},"channel-messaging":{title:"Channel messaging",description:"Method for having two-way communication between browsing contexts (using MessageChannel)",spec:"http://www.w3.org/TR/webmessaging/#channel-messaging",status:"cr",links:[{url:"http://dev.opera.com/articles/view/window-postmessage-messagechannel/#channel",title:"An Introduction to HTML5 web messaging"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"u","10.0-10.1":"u",10.5:"u",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"u",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"n"},ie_mob:{10:"y"}},notes:"",usage_perc_y:55.07,usage_perc_a:0,ucprefix:!1,parent:"x-doc-messaging",keywords:""},"css3-tabsize":{title:"CSS3 tab-size",description:"Method of customizing the width of a tab character. Only effective using 'white-space: pre'.",spec:"http://www.w3.org/TR/css3-text/#tab-size1",status:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/tab-size",title:"MDN article"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"y x",11:"y x",11.1:"y x",11.5:"y x",11.6:"y x",12:"y x",12.1:"y x",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y x",11.1:"y x",11.5:"y x",12:"y x",12.1:"y x",0:"y"},and_chr:{0:"y"},and_ff:{0:"y x"},ie_mob:{10:"n"}},notes:"",usage_perc_y:53.05,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"tab-size,tab-width"},mutationobserver:{title:"Mutation Observer",description:"Method for observing and reacting to changes to the DOM. Replaces MutationEvents, which is deprecated.",spec:"http://www.w3.org/TR/dom/",status:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver",title:"MutationObserver from MDN"},{url:"https://github.com/Polymer/MutationObservers",title:"Polyfill"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"p",10:"p",11:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y x",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"p",4.1:"p","4.2-4.3":"p",4.4:"y"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"p"}},notes:"When the content of a node with a single CharacterData child node is changed by innerHTML attribute and the node have a single different one as a result, WebKit browsers consider it as a characterData mutation of the child CharacterData node, while other browsers think it as a childList mutation of the parent node.",usage_perc_y:54.8,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"MutationObserver"},"css-selection":{title:"::selection CSS pseudo-element",description:"The ::selection CSS pseudo-element applies rules to the portion of a document that has been highlighted (e.g., selected with the mouse or another pointing device) by the user.",spec:"https://developer.mozilla.org/en-US/docs/Web/CSS/::selection",status:"unoff",links:[{url:"http://docs.webplatform.org/wiki/css/selectors/pseudo-elements/::selection",title:"WebPlatform Docs"},{url:"http://quirksmode.org/css/selectors/selection.html",title:"::selection test"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"y x",3:"y x",3.5:"y x",3.6:"y x",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"n",10:"n"},op_mob:{10:"u",11:"u",11.1:"u",11.5:"y",12:"y",12.1:"y",0:"y"},and_chr:{0:"y"},and_ff:{0:"n"},ie_mob:{10:"y"}},notes:"",usage_perc_y:71.68,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"::selection,selection"},"canvas-blending":{title:"Canvas blend modes",description:"Method of defining the effect resulting from overlaying two layers on a Canvas element. ",spec:"http://www.w3.org/TR/compositing-1/#blending",status:"wd",links:[{url:"http://blogs.adobe.com/webplatform/2013/01/28/blending-features-in-canvas/",title:"Blog post"}],categories:["Canvas"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"y",31:"y",32:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"y",7:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"y",18:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"y"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"n"},and_chr:{0:"y"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:"",usage_perc_y:42.33,usage_perc_a:0,ucprefix:!1,parent:"canvas",keywords:""},clipboard:{title:"Clipboard API",description:"API to provide copy, cut and paste functionality using the OS clipboard.",spec:"http://www.w3.org/TR/clipboard-apis/",status:"wd",links:[{url:"http://www.deluxeblogtips.com/2010/06/javascript-copy-to-clipboard.html",title:"Blog post on cross-browser usage"},{url:"https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent",title:"MDN page on ClipboardEvent"}],categories:["JS API"],stats:{ie:{5.5:"a #1",6:"a #1",7:"a #1",8:"a #1",9:"a #1",10:"a #1",11:"a #1"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a"},safari:{3.1:"u",3.2:"u",4:"a",5:"a",5.1:"a",6:"a",6.1:"a",7:"a"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"a",17:"a",18:"a"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"a","6.0-6.1":"a","7.0":"a"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"a"},bb:{7:"n",10:"a"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"a"},and_chr:{0:"a"},and_ff:{0:"y"},ie_mob:{10:"n"}},notes:'Partial support in IE refers using <a href="http://msdn.microsoft.com/en-us/library/ie/ms535220%28v=vs.85%29.aspx">a non-standard method</a> of interacting with the clipboard. For other browsers it refers to not supporting the ClipboardEvent constructor.',usage_perc_y:12.83,usage_perc_a:67.91,ucprefix:!1,parent:"",keywords:"cut,copy,paste,clipboarddata"},rtcpeerconnection:{title:"WebRTC Peer-to-peer connections",description:"Method of allowing two users to communicate directly, browser to browser using the RTCPeerConnection API.",spec:"http://www.w3.org/TR/webrtc/#peer-to-peer-connections",status:"wd",links:[{url:"http://www.webrtc.org/",title:"WebRTC Project site"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"u",7:"u"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0":"n"},op_mini:{"5.0-7.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",0:"y x"},and_chr:{0:"y x"},and_ff:{0:"y x"},ie_mob:{10:"n"}},notes:"BlackBerry 10 recognizes RTCPeerConnection but real support is unconfirmed.",usage_perc_y:46.24,usage_perc_a:0,ucprefix:!1,parent:"",keywords:""}}}},{}],36:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t){this.options=o.extend({offset:0},t),this.source=e,this._children=[],this._positions={name:0},this.initialize.apply(this,arguments)}function i(e,t,n){this.parent=e,this._name=t.value,this._value=n?n.value:"",this._positions={name:t.start,value:n?n.start:-1},this.initialize.apply(this,arguments)}var a=e("../assets/range"),o=e("../utils/common"),s=e("../vendor/klass");return r.extend=s.extend,r.prototype={type:"container",initialize:function(){},_pos:function(e,t){return e+(t?this.options.offset:0)},_updateSource:function(e,t,n){var r=a.create(t,void 0===n?0:n-t),i=e.length-r.length(),s=function(e){Object.keys(e).forEach(function(t){e[t]>=r.end&&(e[t]+=i)})};s(this._positions);var y=function(e){e.forEach(function(e){s(e._positions),"container"==e.type&&y(e.list())})};y(this.list()),this.source=o.replaceSubstring(this.source,e,r)},add:function(e,t,n){var r=new i(e,t);return this._children.push(r),r},get:function(e){return"number"==typeof e?this.list()[e]:"string"==typeof e?o.find(this.list(),function(t){return t.name()===e}):e},getAll:function(e){Array.isArray(e)||(e=[e]);var t=[],n=[];return e.forEach(function(e){"string"==typeof e?t.push(e):"number"==typeof e&&n.push(e)}),this.list().filter(function(e,r){return~n.indexOf(r)||~t.indexOf(e.name())})},list:function(){return this._children},remove:function(e){var t=this.get(e);if(t){this._updateSource("",t.fullRange());var n=this._children.indexOf(t);~n&&this._children.splice(n,1)}},indexOf:function(e){return this.list().indexOf(this.get(e))},value:function(e,t,n){var r=this.get(e);return r?r.value(t):void 0!==t?this.add(e,t,n):void 0},values:function(e){return this.getAll(e).map(function(e){return e.value()})},name:function(e){return void 0!==e&&this._name!==(e=String(e))&&(this._updateSource(e,this._positions.name,this._positions.name+this._name.length),this._name=e),this._name},nameRange:function(e){return a.create(this._positions.name+(e?this.options.offset:0),this.name())},range:function(e){return a.create(e?this.options.offset:0,this.valueOf())},itemFromPosition:function(e,t){return o.find(this.list(),function(n){return n.range(t).inside(e)})},toString:function(){return this.valueOf()},valueOf:function(){return this.source}},i.extend=s.extend,i.prototype={type:"element",initialize:function(){},_pos:function(e,t){return e+(t?this.parent.options.offset:0)},value:function(e){return void 0!==e&&this._value!==(e=String(e))&&(this.parent._updateSource(e,this.valueRange()),this._value=e),this._value},name:function(e){return void 0!==e&&this._name!==(e=String(e))&&(this.parent._updateSource(e,this.nameRange()),this._name=e),this._name},namePosition:function(e){return this._pos(this._positions.name,e)},valuePosition:function(e){return this._pos(this._positions.value,e)},range:function(e){return a.create(this.namePosition(e),this.valueOf())},fullRange:function(e){return this.range(e)},nameRange:function(e){return a.create(this.namePosition(e),this.name())},valueRange:function(e){return a.create(this.valuePosition(e),this.value())},toString:function(){return this.valueOf()},valueOf:function(){return this.name()+this.value()}},{EditContainer:r,EditElement:i,createToken:function(e,t,n){var r={start:e||0,value:t||"",type:n};return r.end=r.start+r.value.length,r}}})},{"../assets/range":30,"../utils/common":73,"../vendor/klass":78}],37:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t,n){n=n||b|x,t=e.substring(t);var r;return n&b&&(r=t.match(m))&&(e.start+=r[0].length),n&x&&(r=t.match(g))&&(e.end-=r[0].length),e.end<e.start&&(e.end=e.start),e}function i(e,t){var n,i,a,o=e.current();if(!o)return null;for(var s={white:1,line:1,comment:1};(o=e.current())&&o.type in s;)e.next();if(!e.hasNext())return null;o=e.current(),n=u(o.start,o.value);for(var y="@"==o.value.charAt(0);o=e.next();)if(n.end=o.end,":"==o.type||"white"==o.type){if(n.end=o.start,e.next(),":"==o.type||y)break}else if(";"==o.type||"line"==o.type){n.end=o.start,i=u(o.start,0),e.next();break}if(o=e.current(),!i&&o){"line"==o.type&&(l=o),i=u(o.start,o.value);for(var l;o=e.next();)if(i.end=o.end,"line"==o.type)l=o;else{if("}"==o.type||";"==o.type){i.end=o.start,";"==o.type&&(a=u(o.start,o.value)),e.next();break}if(":"==o.type&&l){i.end=l.start,e._i=e.tokens.indexOf(l);break}}}return i||(i=u(n.end,0)),{name:r(n,t),value:r(i,t,b|(a?x:0)),end:a||u(i.end,0)}}function a(e){var t,n=f.create(e),r=[],i=/[\s\u00a0,;]/,a=function(){n.next(),r.push(u(n.start,n.current())),n.start=n.pos};for(n.eatSpace(),n.start=n.pos;t=n.next();)if('"'==t||"'"==t){if(n.next(),!n.skipTo(t))break;a()}else if("("==t){if(n.backUp(1),!n.skipToPair("(",")"))break;n.backUp(1),a()}else i.test(t)&&(r.push(u(n.start,n.current().length-1)),n.eatWhile(i),n.start=n.pos);return a(),y.unique(r.filter(function(e){return!!e.length()}))}function o(e,t,n){s(t,n).forEach(function(t){e._children.push(new v(e,l.createToken(t.name.start,t.nameText),l.createToken(t.value.start,t.valueText),l.createToken(t.end.start,t.endText)))})}function s(e,t){t=t||0;var n=[];if(!(e=e.replace(g,"")))return n;for(var r,a=c.parse(e),o=d.create(a);r=i(o,e);)n.push({nameText:r.name.substring(e),name:r.name.shift(t),valueText:r.value.substring(e),value:r.value.shift(t),endText:r.end.substring(e),end:r.end.shift(t)});return n}var y=e("../utils/common"),l=e("./base"),c=e("../parser/css"),p=e("../utils/cssSections"),u=e("../assets/range"),f=e("../assets/stringStream"),d=e("../assets/tokenIterator"),h={styleBefore:"\n\t",styleSeparator:": ",offset:0},m=/^\s+/,g=/\s+$/,b=1,x=2,w=l.EditContainer.extend({initialize:function(e,t){y.extend(this.options,h,t),Array.isArray(e)&&(e=c.toSource(e));var n=p.findAllRules(e),r=n.shift(),i=[];n.forEach(function(e){!y.find(i,function(t){return t.contains(e)})&&i.push(e)});var a=u.create2(r.start,r._selectorEnd);this._name=a.substring(e),this._positions.name=a.start,this._positions.contentStart=r._contentStart+1;var s=r._contentStart+1,l=(r.end,this);i.forEach(function(t){o(l,e.substring(s,t.start),s);y.extend({},l.options,{offset:t.start+l.options.offset});s=t.end}),o(this,e.substring(s,r.end-1),s),this._saveStyle()},_saveStyle:function(){var e=this._positions.contentStart,t=this.source;this.list().forEach(function(n){if("container"!==n.type){n.styleBefore=t.substring(e,n.namePosition());var r=y.splitByLines(n.styleBefore);r.length>1&&(n.styleBefore="\n"+r[r.length-1]),n.styleSeparator=t.substring(n.nameRange().end,n.valuePosition());var i=n.styleBefore.split("*/");n.styleBefore=i[i.length-1],n.styleSeparator=n.styleSeparator.replace(/\/\*.*?\*\//g,""),e=n.range().end}})},namePosition:function(e){return this._pos(this._positions.name,e)},valuePosition:function(e){return this._pos(this._positions.contentStart,e)},valueRange:function(e){return u.create2(this.valuePosition(e),this._pos(this.valueOf().length,e)-1)},add:function(e,t,n){var r=this.list(),i=this._positions.contentStart,a=y.pick(this.options,"styleBefore","styleSeparator");void 0===n&&(n=r.length);var o=r[n];o?i=o.fullRange().start:(o=r[n-1])&&(o.end(";"),i=o.range().end),o&&(a=y.pick(o,"styleBefore","styleSeparator"));var s=l.createToken(i+a.styleBefore.length,e),c=l.createToken(s.end+a.styleSeparator.length,t),p=new v(this,s,c,l.createToken(c.end,";"));return y.extend(p,a),this._updateSource(p.styleBefore+p.toString(),i),this._children.splice(n,0,p),p}}),v=l.EditElement.extend({initialize:function(e,t,n,r){this.styleBefore=e.options.styleBefore,this.styleSeparator=e.options.styleSeparator,this._end=r.value,this._positions.end=r.start},valueParts:function(e){var t=a(this.value());if(e){var n=this.valuePosition(!0);t.forEach(function(e){e.shift(n)})}return t},value:function(e){var t=void 0!==e,n=this.parent.list();if(t&&this.isIncomplete()){var r=this,i=y.find(n,function(e){return e!==r&&!e.isIncomplete()});this.styleSeparator=i?i.styleSeparator:this.parent.options.styleSeparator,this.parent._updateSource(this.styleSeparator,u(this.valueRange().start,0))}var a=this.constructor.__super__.value.apply(this,arguments);if(t){n.indexOf(this)===n.length-1||this.end()||this.end(";")}return a},isIncomplete:function(){return this.nameRange().end===this.valueRange().start},end:function(e){return void 0!==e&&this._end!==e&&(this.parent._updateSource(e,this._positions.end,this._positions.end+this._end.length),this._end=e),this._end},fullRange:function(e){var t=this.range(e);return t.start-=this.styleBefore.length,t},valueOf:function(){return this.name()+this.styleSeparator+this.value()+this.end()}});return{parse:function(e,t){return new w(e,t)},parseFromPosition:function(e,t,n){var r=p.locateRule(e,t,n);return r&&r.inside(t)?this.parse(r.substring(e),{offset:r.start}):null},propertyFromPosition:function(e,t){var n=null,r="string"==typeof e?this.parseFromPosition(e,t,!0):e;return r&&((n=r.itemFromPosition(t,!0))||(n=y.find(r.list(),function(e){return e.range(!0).end==t}))),n},baseName:function(e){return e.replace(/^\s*\-\w+\-/,"")},findParts:a,extractPropertiesFromSource:s}})},{"../assets/range":30,"../assets/stringStream":32,"../assets/tokenIterator":34,"../parser/css":56,"../utils/common":73,"../utils/cssSections":74,"./base":36}],38:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("./base"),i=e("../parser/xml"),a=e("../assets/range"),o=e("../utils/common"),s={styleBefore:" ",styleSeparator:"=",styleQuote:'"',offset:0},y=/^<([\w\:\-]+)((?:\s+[\w\-:]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/m,l=r.EditContainer.extend({initialize:function(e,t){o.defaults(this.options,s),this._positions.name=1;var n=null;i.parse(e).forEach(function(t){switch(t.value=a.create(t).substring(e),t.type){case"tag":/^<[^\/]+/.test(t.value)&&(this._name=t.value.substring(1));break;case"attribute":n&&this._children.push(new c(this,n)),n=t;break;case"string":this._children.push(new c(this,n,t)),n=null}},this),n&&this._children.push(new c(this,n)),this._saveStyle()},_saveStyle:function(){var e=this.nameRange().end,t=this.source;this.list().forEach(function(n){n.styleBefore=t.substring(e,n.namePosition()),-1!==n.valuePosition()&&(n.styleSeparator=t.substring(n.namePosition()+n.name().length,n.valuePosition()-n.styleQuote.length)),e=n.range().end})},add:function(e,t,n){var i=this.list(),a=this.nameRange().end,s=o.pick(this.options,"styleBefore","styleSeparator","styleQuote");void 0===n&&(n=i.length);var y=i[n];y?a=y.fullRange().start:(y=i[n-1])&&(a=y.range().end),y&&(s=o.pick(y,"styleBefore","styleSeparator","styleQuote")),t=s.styleQuote+t+s.styleQuote;var l=new c(this,r.createToken(a+s.styleBefore.length,e),r.createToken(a+s.styleBefore.length+e.length+s.styleSeparator.length,t));return o.extend(l,s),this._updateSource(l.styleBefore+l.toString(),a),this._children.splice(n,0,l),l},addClass:function(e){var t=this.get("class");if(e=o.trim(e),!t)return this.add("class",e);var n=t.value();~(" "+n.replace(/\n/g," ")+" ").indexOf(" "+e+" ")||t.value(n+" "+e)},removeClass:function(e){var t=this.get("class");if(e=o.trim(e),t){var n=new RegExp("(^|\\s+)"+o.escapeForRegexp(e)),r=t.value().replace(n,"");o.trim(r)?t.value(r):this.remove("class")}}}),c=r.EditElement.extend({initialize:function(e,t,n){this.styleBefore=e.options.styleBefore,this.styleSeparator=e.options.styleSeparator;var r="",i=e.options.styleQuote;n&&('"'==(i=(r=n.value).charAt(0))||"'"==i?r=r.substring(1):i="",i&&r.charAt(r.length-1)==i&&(r=r.substring(0,r.length-1))),this.styleQuote=i,this._value=r,this._positions.value=n?n.start+i.length:-1},fullRange:function(e){var t=this.range(e);return t.start-=this.styleBefore.length,t},valueOf:function(){return this.name()+this.styleSeparator+this.styleQuote+this.value()+this.styleQuote}});return{parse:function(e,t){return new l(e,t)},parseFromPosition:function(e,t,n){var r=this.extractTag(e,t,n);return r&&r.inside(t)?this.parse(r.substring(e),{offset:r.start}):null},extractTag:function(e,t,n){var r,i=e.length,o=Math.min(2e3,i),s=null,l=function(t){var n;if("<"==e.charAt(t)&&(n=e.substr(t,o).match(y)))return a.create(t,n[0])};for(r=t;r>=0&&!(s=l(r));r--);if(s&&(s.inside(t)||n))return s;if(!s&&n)return null;for(r=t;r<i;r++)if(s=l(r))return s}}})},{"../assets/range":30,"../parser/xml":62,"../utils/common":73,"./base":36}],39:[function(require,module,exports){if("object"==typeof module&&"function"!=typeof define)var define=function(e){module.exports=e(require,exports,module)};define(function(require,exports,module){function getFileName(e){var t=/([\w\.\-]+)$/i.exec(e);return t?t[1]:""}function normalizeProfile(e){return"object"==typeof e&&("indent"in e&&(e.indent=!!e.indent),"self_closing_tag"in e&&"number"==typeof e.self_closing_tag&&(e.self_closing_tag=!!e.self_closing_tag)),e}var global="undefined"!=typeof self?self:this,utils=require("./utils/common"),actions=require("./action/main"),parser=require("./parser/abbreviation"),file=require("./plugin/file"),preferences=require("./assets/preferences"),resources=require("./assets/resources"),profile=require("./assets/profile"),ciu=require("./assets/caniuse"),logger=require("./assets/logger"),sliceFn=Array.prototype.slice;return{expandAbbreviation:function(e,t,n,r){return parser.expand(e,{syntax:t,profile:n,contextNode:r})},run:function(e){return actions.run.apply(actions,sliceFn.call(arguments,0))},loadExtensions:function(fileList){var payload={},userSnippets=null,that=this;fileList=fileList.filter(function(e){var t=file.getExt(e);return"json"===t||"js"===t});var reader=(file.readText||file.read).bind(file),next=function(){if(fileList.length){var f=fileList.shift();reader(f,function(err,content){if(err)return logger.log('Unable to read "'+f+'" file: '+err),next();switch(file.getExt(f)){case"js":try{eval(content)}catch(e){logger.log('Unable to eval "'+f+'" file: '+e)}break;case"json":var fileName=getFileName(f).toLowerCase().replace(/\.json$/,"");/^snippets/.test(fileName)?"snippets"===fileName?userSnippets=utils.parseJSON(content):payload.snippets=utils.deepMerge(payload.snippets||{},utils.parseJSON(content)):payload[fileName]=content}next()})}else userSnippets&&(payload.snippets=utils.deepMerge(payload.snippets||{},userSnippets)),that.loadUserData(payload)};next()},loadPreferences:function(e){preferences.load(utils.parseJSON(e))},loadSnippets:function(e){e=utils.parseJSON(e);var t=resources.getVocabulary("user")||{};resources.setVocabulary(utils.deepMerge(t,e),"user")},loadSystemSnippets:function(e){resources.setVocabulary(utils.parseJSON(e),"system")},loadCIU:function(e){ciu.load(utils.parseJSON(e))},resetSnippets:function(){resources.setVocabulary({},"user")},loadUserData:function(e){(e=utils.parseJSON(e)).snippets&&this.loadSnippets(e.snippets),e.preferences&&this.loadPreferences(e.preferences),e.profiles&&this.loadProfiles(e.profiles),e.caniuse&&this.loadCIU(e.caniuse);var t=e.syntaxProfiles||e.syntaxprofiles;t&&this.loadSyntaxProfiles(t)},resetUserData:function(){this.resetSnippets(),preferences.reset(),profile.reset()},loadSyntaxProfiles:function(e){e=utils.parseJSON(e);var t={};Object.keys(e).forEach(function(n){var r=e[n];n in t||(t[n]={}),t[n].profile=normalizeProfile(r)}),this.loadSnippets(t)},loadProfiles:function(e){e=utils.parseJSON(e),Object.keys(e).forEach(function(t){profile.create(t,normalizeProfile(e[t]))})},require:require,actions:actions,file:file,preferences:preferences,resources:resources,profile:profile,tabStops:require("./assets/tabStops"),htmlMatcher:require("./assets/htmlMatcher"),utils:{common:utils,action:require("./utils/action"),editor:require("./utils/editor")}}})},{"./action/main":12,"./assets/caniuse":23,"./assets/htmlMatcher":26,"./assets/logger":27,"./assets/preferences":28,"./assets/profile":29,"./assets/resources":31,"./assets/tabStops":33,"./parser/abbreviation":55,"./plugin/file":63,"./utils/action":70,"./utils/common":73,"./utils/editor":75}],40:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(){return{element:y.get("bem.elementSeparator"),modifier:y.get("bem.modifierSeparator")}}function i(e){if(l.isSnippet(e))return e;e.__bem={block:"",element:"",modifier:""};var t=function(e){e=(" "+(e||"")+" ").replace(/\s+/g," ");var t=y.get("bem.shortElementPrefix");if(t){var n=new RegExp("\\s("+c.escapeForRegexp(t)+"+)","g");e=e.replace(n,function(e,t){return" "+c.repeatString(r().element,t.length)})}return c.trim(e)}(e.attribute("class")).split(" "),n=/^[a-z]\-/i;return e.__bem.block=c.find(t,function(e){return n.test(e)}),e.__bem.block||(n=/^[a-z]/i,e.__bem.block=c.find(t,function(e){return n.test(e)})||""),t=t.map(function(t){return function(e,t){e=a(e=a(e,t,"element"),t,"modifier");var n="",i="",o="",s=r();if(~e.indexOf(s.element)){var y=e.split(s.element);n=y.shift();var l=y.pop().split(s.modifier);y.push(l.shift()),i=y.join(s.element),o=l.join(s.modifier)}else if(~e.indexOf(s.modifier)){var c=e.split(s.modifier);n=c.shift(),o=c.join(s.modifier)}if(n||i||o){n||(n=t.__bem.block);var p=n,u=[];return i?(p+=s.element+i,u.push(p)):u.push(p),o&&u.push(p+s.modifier+o),t.__bem.block=n,t.__bem.element=i,t.__bem.modifier=o,u}return e}(t,e)}),(t=c.unique(c.flatten(t)).join(" "))&&e.attribute("class",t),e}function a(e,t,n){var i=r(),a=new RegExp("^("+i[n]+")+","g");if(a.test(e)){for(var o=0,s=e.replace(a,function(e){return o=e.length/i[n].length,""}),y=t;y.parent&&o--;)y=y.parent;if(y&&y.__bem||(y=t),y&&y.__bem){var l=y.__bem.block;return"modifier"==n&&y.__bem.element&&(l+=i.element+y.__bem.element),l+i[n]+s}}return e}function o(e,t){return e.name&&i(e),e.children.forEach(function(e){o(e,t),!l.isSnippet(e)&&e.start&&(p=!0)}),e}var s=e("./html"),y=e("../assets/preferences"),l=e("../utils/abbreviation"),c=e("../utils/common");y.define("bem.elementSeparator","__","Class name’s element separator."),y.define("bem.modifierSeparator","_","Class name’s modifier separator."),y.define("bem.shortElementPrefix","-","Symbol for describing short “block-element” notation. Class names prefixed with this symbol will be treated as element name for parent‘s block name. Each symbol instance traverses one level up in parsed tree for block name lookup. Empty value will disable short notation.");var p=!1;return function(e,t){return p=!1,e=o(e,t),p&&(e=s(e,t)),e}})},{"../assets/preferences":28,"../utils/abbreviation":69,"../utils/common":73,"./html":46}],41:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t,n){return e.children.forEach(function(e){s.isBlock(e)&&function(e,t,n){var r=i.get("filter.commentTrigger");if("*"!=r&&!a.find(r.split(","),function(t){return!!e.attribute(a.trim(t))}))return;var o={node:e,name:e.name(),padding:e.parent?e.parent.padding:"",attr:function(t,n,r){var i=e.attribute(t);return i?(n||"")+i+(r||""):""}},s=t?t(o):"",y=n?n(o):"";e.start=e.start.replace(/</,s+"<"),e.end=e.end.replace(/>/,">"+y)}(e,t,n),r(e,t,n)}),e}var i=e("../assets/preferences"),a=e("../utils/common"),o=e("../utils/template"),s=e("../utils/abbreviation");e("./main");return i.define("filter.commentAfter",'\n\x3c!-- /<%= attr("id", "#") %><%= attr("class", ".") %> --\x3e',"A definition of comment that should be placed <i>after</i> matched element when <code>comment</code> filter is applied. This definition is an ERB-style template passed to <code>_.template()</code> function (see Underscore.js docs for details). In template context, the following properties and functions are availabe:\n<ul><li><code>attr(name, before, after)</code> – a function that outputsspecified attribute value concatenated with <code>before</code> and <code>after</code> strings. If attribute doesn't exists, the empty string will be returned.</li><li><code>node</code> – current node (instance of <code>AbbreviationNode</code>)</li><li><code>name</code> – name of current tag</li><li><code>padding</code> – current string padding, can be used for formatting</li></ul>"),i.define("filter.commentBefore","","A definition of comment that should be placed <i>before</i> matched element when <code>comment</code> filter is applied. For more info, read description of <code>filter.commentAfter</code> property"),i.define("filter.commentTrigger","id, class","A comma-separated list of attribute names that should exist in abbreviatoin where comment should be added. If you wish to add comment for every element, set this option to <code>*</code>"),function(e){return r(e,o(i.get("filter.commentBefore")),o(i.get("filter.commentAfter")))}})},{"../assets/preferences":28,"../utils/abbreviation":69,"../utils/common":73,"../utils/template":77,"./main":49}],42:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){return function e(t,n,r){return r=r||0,t.children.forEach(function(t){(function(e){return e.parent&&!e.parent.parent&&!e.index()})(t)||!1===n.tag_nl||(t.start="\n"+t.start),e(t,n,r+1)}),t}})},{}],43:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){return e.replace(/([<>&])/g,function(e,t){return i[t]})}var i={"<":"<",">":">","&":"&"};return function e(t){return t.children.forEach(function(t){t.start=r(t.start),t.end=r(t.end),t.content=r(t.content),e(t)}),t}})},{}],44:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){return e.parent&&!e.parent.parent&&!e.index()}function i(e,t){return!(!0!==t.tag_nl&&!y.isBlock(e))||!(!e.parent||!t.inline_break)&&a(e.parent,t)}function a(e,t){var n=0;return!!s.find(e.children,function(e){if(e.isTextNode()||!y.isInline(e)?n=0:y.isInline(e)&&n++,n>=t.inline_break)return!0})}function o(e,t){e.start=e.end=c;var n=y.isUnary(e),o="\n",s=function(e){return~(l.getArray("format.noIndentTags")||[]).indexOf(e.name())?"":"\t"}(e);if(!1!==t.tag_nl){var p=!0===t.tag_nl&&(t.tag_nl_leaf||e.children.length);if(!p){p=~(l.getArray("format.forceIndentationForTags")||[]).indexOf(e.name())}e.isTextNode()||(i(e,t)?(r(e)||y.isSnippet(e.parent)&&!e.index()||(e.start=o+e.start),(y.hasBlockChildren(e)||function(e,t){return e.children.length&&i(e.children[0],t)}(e,t)||p&&!n)&&(e.end=o+e.end),(y.hasTagsInContent(e)||p&&!e.children.length&&!n)&&(e.start+=o+s)):y.isInline(e)&&function(e){return e.parent&&y.hasBlockChildren(e.parent)}(e)&&!r(e)?e.start=o+e.start:y.isInline(e)&&function(e,t){return!!e.children.some(function(e){return!y.isSnippet(e)&&!y.isInline(e)})||a(e,t)}(e,t)&&(e.end=o+e.end),e.padding=s)}return e}var s=e("../utils/common"),y=e("../utils/abbreviation"),l=e("../assets/preferences");e("../assets/resources");l.define("format.noIndentTags","html","A comma-separated list of tag names that should not get inner indentation."),l.define("format.forceIndentationForTags","body","A comma-separated list of tag names that should <em>always</em> get inner indentation.");var c="%s";return function e(t,n,a){return a=a||0,t.children.forEach(function(t){y.isSnippet(t)?function(e,t){e.start=e.end="",!r(e)&&!1!==t.tag_nl&&i(e,t)&&(!function(e){return!e.parent}(e.parent)&&y.isInline(e.parent)||(e.start="\n"+e.start))}(t,n):o(t,n),e(t,n,a+1)}),t}})},{"../assets/preferences":28,"../assets/resources":31,"../utils/abbreviation":69,"../utils/common":73}],45:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t){var n=t.attributeQuote();return"{"+e.map(function(e){var i=n+e.value+n;return Array.isArray(e.value)?i=r(e.value,t):e.isBoolean&&(i="true"),":"+e.name+" => "+i}).join(", ")+"}"}function i(e,t){var n="",i=[],o=(t.attributeQuote(),t.cursor());return e.attributeList().forEach(function(e){var r=t.attributeName(e.name);switch(r.toLowerCase()){case"id":n+="#"+(e.value||o);break;case"class":n+="."+function(e){return a.trim(e).replace(/\s+/g,".")}(e.value||o);break;default:i.push({name:r,value:e.value||o,isBoolean:t.isBoolean(e.name,e.value)})}}),i.length&&(n+=r(function(e){var t=[],n=null,r=/^data-/i;return e.forEach(function(e){r.test(e.name)?(n||(n=[],t.push({name:"data",value:n})),n.push(a.extend({},e,{name:e.name.replace(r,"")}))):t.push(e)}),t}(i),t)),n}var a=e("../utils/common"),o=e("../utils/abbreviation"),s=e("./format");return function e(t,n,r){return(r=r||0)||(t=s(t,"_format",n)),t.children.forEach(function(t){o.isSnippet(t)||function(e,t){if(!e.parent)return e;var n=i(e,t),r=t.cursor(),s=o.isUnary(e),y=t.self_closing_tag&&s?"/":"",l="",c="%"+t.tagName(e.name());"%div"==c.toLowerCase()&&n&&-1==n.indexOf("{")&&(c=""),e.end="",l=c+n+y,e.content&&!/^\s/.test(e.content)&&(e.content=" "+e.content),e.start=a.replaceSubstring(e.start,l,e.start.indexOf("%s"),"%s"),e.children.length||s||(e.start+=r)}(t,n),e(t,n,r+1)}),t}})},{"../utils/abbreviation":69,"../utils/common":73,"./format":44}],46:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../utils/abbreviation"),i=e("../utils/common"),a=e("../assets/tabStops"),o=e("./format");return function e(t,n,s){return(s=s||0)||(t=o(t,n,s)),t.children.forEach(function(t){r.isSnippet(t)||function(e,t){if(!e.parent)return e;var n=function(e,t){var n=t.attributeQuote(),r=t.cursor();return e.attributeList().map(function(e){var i=t.isBoolean(e.name,e.value),a=t.attributeName(e.name),o=i?a:e.value;return i&&t.allowCompactBoolean()?" "+a:" "+a+"="+n+(o||r)+n}).join("")}(e,t),o=t.cursor(),s=r.isUnary(e),y="",l="";if(!e.isTextNode()){var c=t.tagName(e.name());s?(y="<"+c+n+t.selfClosing()+">",e.end=""):(y="<"+c+n+">",l="</"+c+">")}e.start=i.replaceSubstring(e.start,y,e.start.indexOf("%s"),"%s"),e.end=i.replaceSubstring(e.end,l,e.end.indexOf("%s"),"%s"),e.children.length||s||~e.content.indexOf(o)||a.extract(e.content).tabstops.length||(e.start+=o)}(t,n),e(t,n,s+1)}),t}})},{"../assets/tabStops":33,"../utils/abbreviation":69,"../utils/common":73,"./format":44}],47:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t){var n="",r=[],i=(t.attributeQuote(),t.cursor());return e.attributeList().forEach(function(e){var o=t.attributeName(e.name);switch(o.toLowerCase()){case"id":n+="#"+(e.value||i);break;case"class":n+="."+function(e){return a.trim(e).replace(/\s+/g,".")}(e.value||i);break;default:r.push({name:o,value:e.value||i,isBoolean:t.isBoolean(e.name,e.value)})}}),r.length&&(n+=function(e,t){var n=t.attributeQuote();return"("+e.map(function(e){return e.isBoolean?e.name:e.name+"="+n+e.value+n}).join(", ")+")"}(r,t)),n}function i(e,t){if(!e.parent)return e;var n=r(e,t),i=t.cursor(),s=o.isUnary(e),l=t.tagName(e.name());"div"==l.toLowerCase()&&n&&"("!=n.charAt(0)&&(l=""),e.end="";var f=l+n;!function(e){if(e.content){var t=y.replaceVariables(e.content,function(e,t){return"nl"===t||"newline"===t?"\n":e});c.test(t)&&!p.test(t)?e.content="\n| "+a.padString(t,"| "):u.test(t)||(e.content=" "+t)}}(e);return e.start=a.replaceSubstring(e.start,f,e.start.indexOf("%s"),"%s"),e.children.length||s||(e.start+=i),e}var a=e("../utils/common"),o=e("../utils/abbreviation"),s=e("./format"),y=e("../assets/tabStops"),l=e("../assets/profile"),c=/[\n\r]/,p=/^\s*\|/,u=/^\s/;return function e(t,n,r){return(r=r||0)||(t=s(t,l.get("xml"))),t.children.forEach(function(t){o.isSnippet(t)||i(t,n),e(t,n,r+1)}),t}})},{"../assets/profile":29,"../assets/tabStops":33,"../utils/abbreviation":69,"../utils/common":73,"./format":44}],48:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r={class:"className",for:"htmlFor"};return function e(t){return t.children.forEach(function(t){t._attributes.forEach(function(e){e.name in r&&(e.name=r[e.name])}),e(t)}),t}})},{}],49:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){return e?"string"==typeof e?e.split(/[\|,]/g):e:[]}var i=e("../utils/common"),a=e("../assets/profile"),o=e("../assets/resources"),s={html:e("./html"),haml:e("./haml"),jade:e("./jade"),jsx:e("./jsx"),slim:e("./slim"),xsl:e("./xsl"),css:e("./css"),bem:e("./bem"),c:e("./comment"),e:e("./escape"),s:e("./singleLine"),t:e("./trim")};return{add:function(e,t){s[e]=t},apply:function(e,t,n){return n=a.get(n),r(t).forEach(function(t){var r=i.trim(t.toLowerCase());r&&r in s&&(e=s[r](e,n))}),e},composeList:function(e,t,n){var i=r((t=a.get(t)).filters||o.findItem(e,"filters")||"html");return t.extraFilters&&(i=i.concat(r(t.extraFilters))),n&&(i=i.concat(r(n))),i&&i.length||(i=r("html")),i},extract:function(e){var t="";return e=e.replace(/\|([\w\|\-]+)$/,function(e,n){return t=n,""}),[e,r(t)]}}})},{"../assets/profile":29,"../assets/resources":31,"../utils/common":73,"./bem":40,"./comment":41,"./css":42,"./escape":43,"./haml":45,"./html":46,"./jade":47,"./jsx":48,"./singleLine":50,"./slim":51,"./trim":52,"./xsl":53}],50:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../utils/abbreviation"),i=/^\s+/,a=/[\n\r]/g;return function e(t){return t.children.forEach(function(t){r.isSnippet(t)||(t.start=t.start.replace(i,""),t.end=t.end.replace(i,"")),t.start=t.start.replace(a,""),t.end=t.end.replace(a,""),t.content=t.content.replace(a,""),e(t)}),t}})},{"../utils/abbreviation":69}],51:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t){var n=t.attributeQuote(),r=function(){var e=" ",t="";switch(c.get("slim.attributesWrapper")){case"round":e="(",t=")";break;case"square":e="[",t="]";break;case"curly":e="{",t="}"}return{start:e,end:t}}();return r.start+e.map(function(e){var t=n+e.value+n;if(e.isBoolean){if(r.end)return e.name;t="true"}return e.name+"="+t}).join(" ")+r.end}function i(e,t){var n="",i=[],a=(t.attributeQuote(),t.cursor());return e.attributeList().forEach(function(e){var r=t.attributeName(e.name);switch(r.toLowerCase()){case"id":n+="#"+(e.value||a);break;case"class":n+="."+function(e){return o.trim(e).replace(/\s+/g,".")}(e.value||a);break;default:i.push({name:r,value:e.value||a,isBoolean:t.isBoolean(e.name,e.value)})}}),i.length&&(n+=r(i,t)),n}function a(e,t){if(!e.parent)return e;var n=i(e,t),r=t.cursor(),a=s.isUnary(e),y=t.self_closing_tag&&a?"/":"",c=t.tagName(e.name());"div"==c.toLowerCase()&&n&&-1=="([{".indexOf(n.charAt(0))&&(c=""),e.end="";var p=c+n+y;!function(e){if(e.content){var t=l.replaceVariables(e.content,function(e,t){return"nl"===t||"newline"===t?"\n":e});u.test(t)&&!f.test(t)?e.content="\n| "+o.padString(t," "):d.test(t)||(e.content=" "+t)}}(e);return e.start=o.replaceSubstring(e.start,p,e.start.indexOf("%s"),"%s"),e.children.length||a||(e.start+=r),e}var o=e("../utils/common"),s=e("../utils/abbreviation"),y=e("./format"),l=e("../assets/tabStops"),c=e("../assets/preferences"),p=e("../assets/profile"),u=/[\n\r]/,f=/^\s*\|/,d=/^\s/;return c.define("slim.attributesWrapper","none","Defines how attributes will be wrapped:<ul><li><code>none</code> – no wrapping;</li><li><code>round</code> — wrap attributes with round braces;</li><li><code>square</code> — wrap attributes with round braces;</li><li><code>curly</code> — wrap attributes with curly braces.</li></ul>"),function e(t,n,r){return(r=r||0)||(t=y(t,p.get("xml"))),t.children.forEach(function(t){s.isSnippet(t)||a(t,n),e(t,n,r+1)}),t}})},{"../assets/preferences":28,"../assets/profile":29,"../assets/tabStops":33,"../utils/abbreviation":69,"../utils/common":73,"./format":44}],52:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t){return e.children.forEach(function(e){e.content&&(e.content=e.content.replace(t,"")),r(e,t)}),e}var i=e("../assets/preferences");return i.define("filter.trimRegexp","[\\s|\\u00a0]*[\\d|#|\\-|*|\\u2022]+\\.?\\s*","Regular expression used to remove list markers (numbers, dashes, bullets, etc.) in <code>t</code> (trim) filter. The trim filter is useful for wrapping with abbreviation lists, pased from other documents (for example, Word documents)."),function(e){return r(e,new RegExp(i.get("filter.trimRegexp")))}})},{"../assets/preferences":28}],53:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../utils/abbreviation"),i={"xsl:variable":1,"xsl:with-param":1};return function e(t){return t.children.forEach(function(t){!r.isSnippet(t)&&(t.name()||"").toLowerCase()in i&&t.children.length&&function(e){e.start=e.start.replace(/\s+select\s*=\s*(['"]).*?\1/,"")}(t),e(t)}),t}})},{"../utils/abbreviation":69}],54:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t){return Math.round(Math.random()*(t-e)+e)}function i(e,t){for(var n=e.length,i=Math.min(n,t),a=[];a.length<i;){var o=r(0,n-1);~a.indexOf(o)||a.push(o)}return a.map(function(t){return e[t]})}function a(e,t){return e.length&&(e[0]=e[0].charAt(0).toUpperCase()+e[0].substring(1)),e.join(" ")+(t||function(e){return"string"==typeof e?e.charAt(r(0,e.length-1)):e[r(0,e.length-1)]}("?!..."))}function o(e){var t=e.length;if(!(t<2)){var n=0;n=t>3&&t<=6?r(0,1):t>6&&t<=12?r(0,2):r(1,4);for(var i,a,o=0;o<n;o++)","!==(a=e[i=r(0,e.length-2)]).charAt(a.length-1)&&(e[i]+=",")}}var s=e("../assets/preferences"),y={en:{common:["lorem","ipsum","dolor","sit","amet","consectetur","adipisicing","elit"],words:["exercitationem","perferendis","perspiciatis","laborum","eveniet","sunt","iure","nam","nobis","eum","cum","officiis","excepturi","odio","consectetur","quasi","aut","quisquam","vel","eligendi","itaque","non","odit","tempore","quaerat","dignissimos","facilis","neque","nihil","expedita","vitae","vero","ipsum","nisi","animi","cumque","pariatur","velit","modi","natus","iusto","eaque","sequi","illo","sed","ex","et","voluptatibus","tempora","veritatis","ratione","assumenda","incidunt","nostrum","placeat","aliquid","fuga","provident","praesentium","rem","necessitatibus","suscipit","adipisci","quidem","possimus","voluptas","debitis","sint","accusantium","unde","sapiente","voluptate","qui","aspernatur","laudantium","soluta","amet","quo","aliquam","saepe","culpa","libero","ipsa","dicta","reiciendis","nesciunt","doloribus","autem","impedit","minima","maiores","repudiandae","ipsam","obcaecati","ullam","enim","totam","delectus","ducimus","quis","voluptates","dolores","molestiae","harum","dolorem","quia","voluptatem","molestias","magni","distinctio","omnis","illum","dolorum","voluptatum","ea","quas","quam","corporis","quae","blanditiis","atque","deserunt","laboriosam","earum","consequuntur","hic","cupiditate","quibusdam","accusamus","ut","rerum","error","minus","eius","ab","ad","nemo","fugit","officia","at","in","id","quos","reprehenderit","numquam","iste","fugiat","sit","inventore","beatae","repellendus","magnam","recusandae","quod","explicabo","doloremque","aperiam","consequatur","asperiores","commodi","optio","dolor","labore","temporibus","repellat","veniam","architecto","est","esse","mollitia","nulla","a","similique","eos","alias","dolore","tenetur","deleniti","porro","facere","maxime","corrupti"]},sp:{common:["mujer","uno","dolor","más","de","poder","mismo","si"],words:["ejercicio","preferencia","perspicacia","laboral","paño","suntuoso","molde","namibia","planeador","mirar","demás","oficinista","excepción","odio","consecuencia","casi","auto","chicharra","velo","elixir","ataque","no","odio","temporal","cuórum","dignísimo","facilismo","letra","nihilista","expedición","alma","alveolar","aparte","león","animal","como","paria","belleza","modo","natividad","justo","ataque","séquito","pillo","sed","ex","y","voluminoso","temporalidad","verdades","racional","asunción","incidente","marejada","placenta","amanecer","fuga","previsor","presentación","lejos","necesariamente","sospechoso","adiposidad","quindío","pócima","voluble","débito","sintió","accesorio","falda","sapiencia","volutas","queso","permacultura","laudo","soluciones","entero","pan","litro","tonelada","culpa","libertario","mosca","dictado","reincidente","nascimiento","dolor","escolar","impedimento","mínima","mayores","repugnante","dulce","obcecado","montaña","enigma","total","deletéreo","décima","cábala","fotografía","dolores","molesto","olvido","paciencia","resiliencia","voluntad","molestias","magnífico","distinción","ovni","marejada","cerro","torre","y","abogada","manantial","corporal","agua","crepúsculo","ataque","desierto","laboriosamente","angustia","afortunado","alma","encefalograma","materialidad","cosas","o","renuncia","error","menos","conejo","abadía","analfabeto","remo","fugacidad","oficio","en","almácigo","vos","pan","represión","números","triste","refugiado","trote","inventor","corchea","repelente","magma","recusado","patrón","explícito","paloma","síndrome","inmune","autoinmune","comodidad","ley","vietnamita","demonio","tasmania","repeler","apéndice","arquitecto","columna","yugo","computador","mula","a","propósito","fantasía","alias","rayo","tenedor","deleznable","ventana","cara","anemia","corrupto"]},ru:{common:["далеко-далеко","за","словесными","горами","в стране","гласных","и согласных","живут","рыбные","тексты"],words:["вдали","от всех","они","буквенных","домах","на берегу","семантика","большого","языкового","океана","маленький","ручеек","даль","журчит","по всей","обеспечивает","ее","всеми","необходимыми","правилами","эта","парадигматическая","страна","которой","жаренные","предложения","залетают","прямо","рот","даже","всемогущая","пунктуация","не","имеет","власти","над","рыбными","текстами","ведущими","безорфографичный","образ","жизни","однажды","одна","маленькая","строчка","рыбного","текста","имени","lorem","ipsum","решила","выйти","большой","мир","грамматики","великий","оксмокс","предупреждал","о","злых","запятых","диких","знаках","вопроса","коварных","точках","запятой","но","текст","дал","сбить","себя","толку","он","собрал","семь","своих","заглавных","букв","подпоясал","инициал","за","пояс","пустился","дорогу","взобравшись","первую","вершину","курсивных","гор","бросил","последний","взгляд","назад","силуэт","своего","родного","города","буквоград","заголовок","деревни","алфавит","подзаголовок","своего","переулка","грустный","реторический","вопрос","скатился","его","щеке","продолжил","свой","путь","дороге","встретил","рукопись","она","предупредила","моей","все","переписывается","несколько","раз","единственное","что","меня","осталось","это","приставка","возвращайся","ты","лучше","свою","безопасную","страну","послушавшись","рукописи","наш","продолжил","свой","путь","вскоре","ему","повстречался","коварный","составитель","рекламных","текстов","напоивший","языком","речью","заманивший","свое","агенство","которое","использовало","снова","снова","своих","проектах","если","переписали","то","живет","там","до","сих","пор"]}};return s.define("lorem.defaultLang","en",'Default language of generated dummy text. Currently, <code>en</code>\t\tand <code>ru</code> are supported, but users can add their own syntaxes\t\tsee <a href="http://docs.emmet.io/abbreviations/lorem-ipsum/">docs</a>.'),s.define("lorem.omitCommonPart",!1,"Omit commonly used part (e.g. “Lorem ipsum dolor sit amet“) from generated text."),{addLang:function(e,t){"string"==typeof t?t={words:t.split(" ").filter(function(e){return!!e})}:Array.isArray(t)&&(t={words:t}),y[e]=t},preprocessor:function(e){var t,n=/^(?:lorem|lipsum)([a-z]{2})?(\d*)$/i,l=!s.get("lorem.omitCommonPart");e.findAll(function(e){if(e._name&&(t=e._name.match(n))){var c=t[2]||30,p=t[1]||s.get("lorem.defaultLang")||"en";e._name="",e.data("forceNameResolving",e.isRepeating()||e.attributeList().length),e.data("pasteOverwrites",!0),e.data("paste",function(e){return function(e,t,n){var s=y[e];if(!s)return"";var l,c=[],p=0;for(t=parseInt(t,10),n&&s.common&&((l=s.common.slice(0,t)).length>5&&(l[4]+=","),p+=l.length,c.push(a(l,".")));p<t;)p+=(l=i(s.words,Math.min(r(2,30),t-p))).length,o(l),c.push(a(l));return c.join(" ")}(p,c,!e&&l)})}})}}})},{"../assets/preferences":28}],55:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){this.parent=null,this.children=[],this._attributes=[],this.abbreviation="",this.counter=1,this._name=null,this._text="",this.repeatCount=1,this.hasImplicitRepeat=!1,this._data={},this.start="",this.end="",this.content="",this.padding=""}function i(e){return e.substring(1,e.length-1)}function a(e){e=h.trim(e);for(var t,n=new r,o=n.addChild(),s=g.create(e),y=1e3,l=function(e){o.addChild(e)},c=function(){s.start=s.pos,s.eatWhile(function(e){if("["==e||"{"==e){if(s.skipToPair(e,T[e]))return s.backUp(1),!0;throw new Error('Invalid abbreviation: mo matching "'+T[e]+'" found for character at '+s.pos)}if("+"==e){s.next();var t=s.eol()||~"+>^*".indexOf(s.peek());return s.backUp(1),t}return"("!=e&&p(e)})};!s.eol()&&--y>0;)switch(s.peek()){case"(":if(s.start=s.pos,!s.skipToPair("(",")"))throw new Error('Invalid abbreviation: mo matching ")" found for character at '+s.pos);var u=a(i(s.current()));(t=s.match(/^\*(\d+)?/,!0))&&o._setRepeat(t[1]),u.children.forEach(l);break;case">":o=o.addChild(),s.next();break;case"+":o=o.parent.addChild(),s.next();break;case"^":var f=o.parent||o;o=(f.parent||f).addChild(),s.next();break;default:c(),o.setAbbreviation(s.current()),s.start=s.pos}if(y<1)throw new Error("Endless loop detected");return n}function o(e){var t=e.charAt(0);if('"'==t||"'"==t){(e=e.substr(1)).charAt(e.length-1)===t&&(e=e.substr(0,e.length-1))}return e}function s(e){var t=/^[\w\-:\$@]+\.?$/;return function(e){e=h.trim(e);for(var t,n=[],r=g(e);t=r.next();)if(" "==t){for(n.push(h.trim(r.current()));" "==r.peek();)r.next();r.start=r.pos}else if(('"'==t||"'"==t)&&!r.skipString(t))throw new Error("Invalid attribute set");return n.push(h.trim(r.current())),n}(e).map(function(e){if(t.test(e)){var n="";return"."==e.charAt(e.length-1)&&(n=e=e.substr(0,e.length-1)),{name:e,value:n}}if(~e.indexOf("=")){var r=e.split("=");return{name:r.shift(),value:o(r.join("="))}}return{name:M,value:o(e)}})}function y(e){var t={};return(e=e.map(function(e){return h.clone(e)})).filter(function(e){if(!(e.name in t))return t[e.name]=e;var n=t[e.name];return"class"==e.name.toLowerCase()?n.value+=(n.value.length?" ":"")+e.value:(n.value=e.value,n.isImplied=!!e.isImplied),!1})}function l(e){for(var t,n,r,i=e.children.length-1;i>=0;i--)if((n=e.children[i]).isRepeating())for(r=t=n.repeatCount,n.repeatCount=1,n.updateProperty("counter",1),n.updateProperty("maxCount",r);--t>0;)n.parent.addChild(n.clone(),i+1).updateProperty("counter",t+1).updateProperty("maxCount",r);return e.children.forEach(l),e}function c(e){for(var t=e.children.length-1;t>=0;t--){var n=e.children[t];n.isGroup()?n.replace(c(n).children):n.isEmpty()&&n.remove()}return e.children.forEach(c),e}function p(e){var t=e.charCodeAt(0);return t>64&&t<91||t>96&&t<123||t>47&&t<58||-1!="#.*:$-_!@|%".indexOf(e)}var u=e("../assets/tabStops"),f=e("../assets/profile"),d=e("../filter/main"),h=e("../utils/common"),m=e("../utils/abbreviation"),g=e("../assets/stringStream"),b=e("../generator/lorem"),x=e("./processor/pastedContent"),w=e("./processor/tagName"),v=e("./processor/resourceMatcher"),_=e("./processor/attributes"),k=e("./processor/href"),S=/^[\w\-\$\:@\!%]+\+?$/i,C=/[\w\-:\$@]/,M="%default",T={"[":"]","(":")","{":"}"},P=Array.prototype.splice,A=[],j=[],E=[];return r.prototype={addChild:function(e,t){return e=e||new r,e.parent=this,void 0===t?this.children.push(e):this.children.splice(t,0,e),e},clone:function(){var e=new r;return["abbreviation","counter","_name","_text","repeatCount","hasImplicitRepeat","start","end","content","padding"].forEach(function(t){e[t]=this[t]},this),e._attributes=this._attributes.map(function(e){return h.extend({},e)}),e._data=h.extend({},this._data),e.children=this.children.map(function(t){return t=t.clone(),t.parent=e,t}),e},remove:function(){if(this.parent){var e=this.parent.children.indexOf(this);~e&&this.parent.children.splice(e,1)}return this},replace:function(){var e=this.parent,t=e.children.indexOf(this),n=h.flatten(arguments);P.apply(e.children,[t,1].concat(n)),n.forEach(function(t){t.parent=e})},updateProperty:function(e,t){return this[e]=t,this.children.forEach(function(n){n.updateProperty(e,t)}),this},find:function(e){return this.findAll(e,{amount:1})[0]},findAll:function(e,t){if(t=h.extend({amount:0,found:0},t||{}),"function"!=typeof e){var n=e.toLowerCase();e=function(e){return e.name().toLowerCase()==n}}var r=[];return this.children.forEach(function(n){e(n)&&(r.push(n),t.found++,t.amount&&t.found>=t.amount)||(r=r.concat(n.findAll(e)))}),r.filter(function(e){return!!e})},data:function(e,t){return 2==arguments.length&&(this._data[e]=t),this._data[e]},name:function(){return this._name},attributeList:function(){return y(this._attributes.slice(0))},attribute:function(e,t){if(2==arguments.length){if(null===t){var n=this;return void this._attributes.filter(function(t){return t.name===e}).forEach(function(e){var t=n._attributes.indexOf(e);~t&&n._attributes.splice(t,1)})}var r=this._attributes.map(function(e){return e.name}).indexOf(e.toLowerCase());~r?this._attributes[r].value=t:this._attributes.push({name:e,value:t})}return(h.find(this.attributeList(),function(t){return t.name==e})||{}).value},index:function(){return this.parent?this.parent.children.indexOf(this):-1},_setRepeat:function(e){e?this.repeatCount=parseInt(e,10)||1:this.hasImplicitRepeat=!0},setAbbreviation:function(e){var t=this;e=(e=e||"").replace(/\*(\d+)?$/,function(e,n){return t._setRepeat(n),""}),this.abbreviation=e;var n=function(e){if(!~e.indexOf("{"))return null;for(var t=g.create(e);!t.eol();)switch(t.peek()){case"[":case"(":t.skipToPair(t.peek(),T[t.peek()]);break;case"{":return t.start=t.pos,t.skipToPair("{","}"),{element:e.substring(0,t.start),text:i(t.current())};default:t.next()}}(e);n&&(e=n.element,this.content=this._text=n.text);var r=function(e){for(var t=[],n={"#":"id",".":"class"},r=null,a=g.create(e);!a.eol();)switch(a.peek()){case"#":case".":null===r&&(r=a.pos);var o=n[a.peek()];a.next(),a.start=a.pos,a.eatWhile(C),t.push({name:o,value:a.current()});break;case"[":if(null===r&&(r=a.pos),a.start=a.pos,!a.skipToPair("[","]"))throw new Error("Invalid attribute set definition");t=t.concat(s(i(a.current())));break;default:a.next()}return t.length?{element:e.substring(0,r),attributes:y(t)}:null}(e);if(r&&(e=r.element,this._attributes=r.attributes),this._name=e,this._name&&!S.test(this._name))throw new Error("Invalid abbreviation")},valueOf:function(){var e=this.start,t=this.end,n=this.content,r=this;E.forEach(function(i){e=i(e,r,"start"),n=i(n,r,"content"),t=i(t,r,"end")});var i=this.children.map(function(e){return e.valueOf()}).join("");return n=m.insertChildContent(n,i,{keepVariable:!1}),e+h.padString(n,this.padding)+t},toString:function(){return this.valueOf()},hasEmptyChildren:function(){return!!h.find(this.children,function(e){return e.isEmpty()})},hasImplicitName:function(){return!this._name&&!this.isTextNode()},isGroup:function(){return!this.abbreviation},isEmpty:function(){return!this.abbreviation&&!this.children.length},isRepeating:function(){return this.repeatCount>1||this.hasImplicitRepeat},isTextNode:function(){return!this.name()&&!this.attributeList().length},isElement:function(){return!this.isEmpty()&&!this.isTextNode()},deepestChild:function(){if(!this.children.length)return null;for(var e=this;e.children.length;)e=e.children[e.children.length-1];return e}},E.push(function(e,t){return h.replaceCounter(e,t.counter,t.maxCount)}),E.push(u.abbrOutputProcessor.bind(u)),[b,v,_,x,w,k].forEach(function(e){e.preprocessor&&A.push(e.preprocessor.bind(e)),e.postprocessor&&j.push(e.postprocessor.bind(e))}),{DEFAULT_ATTR_NAME:M,parse:function(e,t){t=t||{};var n=a(e),r=this;if(t.contextNode){n._name=t.contextNode.name;var i={};n._attributes.forEach(function(e){i[e.name]=e}),t.contextNode.attributes.forEach(function(e){e.name in i?i[e.name].value=e.value:(e=h.clone(e),n._attributes.push(e),i[e.name]=e)})}return A.forEach(function(e){e(n,t,r)}),"counter"in t&&n.updateProperty("counter",t.counter),n=c(l(n)),j.forEach(function(e){e(n,t,r)}),n},expand:function(e,t){if(!e)return"";if("string"==typeof t)throw new Error("Deprecated use of `expand` method: `options` must be object");(t=t||{}).syntax||(t.syntax=h.defaultSyntax());var n=f.get(t.profile,t.syntax);u.resetTabstopIndex();var r=d.extract(e),i=this.parse(r[0],t),a=d.composeList(t.syntax,n,r[1]);return d.apply(i,a,n),i.valueOf()},AbbreviationNode:r,addPreprocessor:function(e){~A.indexOf(e)||A.push(e)},removeFilter:function(e){var t=A.indexOf(e);~t&&A.splice(t,1)},addPostprocessor:function(e){~j.indexOf(e)||j.push(e)},removePostprocessor:function(e){var t=j.indexOf(e);~t&&j.splice(t,1)},addOutputProcessor:function(e){~E.indexOf(e)||E.push(e)},removeOutputProcessor:function(e){var t=E.indexOf(e);~t&&E.splice(t,1)},isAllowedChar:function(e){return e=String(e),p(e)||~">+^[](){}".indexOf(e)}}})},{"../assets/profile":29,"../assets/stringStream":32,"../assets/tabStops":33,"../filter/main":49,"../generator/lorem":54,"../utils/abbreviation":69,"../utils/common":73,"./processor/attributes":57,"./processor/href":58,"./processor/pastedContent":59,"./processor/resourceMatcher":60,"./processor/tagName":61}],56:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t){return(t=t||e.charCodeAt(0))>=97&&t<=122||t>=65&&t<=90||t>=1024&&t<=1279||"&"===e||"_"===e||"<"===e||">"===e||"="===e||"-"===e}function i(e,t){return(t=t||e.charCodeAt(0))>=48&&t<=57}function a(e,t){c.tokens.push({value:e,type:t||e,start:null,end:null})}function o(e){var t=function(e){var t=function(e){for(var t=e.chnum,n=e.source.replace(/\r\n?/g,"\n"),r=e.source.substring(0,t+1).replace(/\r\n?/g,"\n").split("\n"),i=(r[r.length-1]||"").length,a=n.split("\n")[r.length-1]||"",o=Math.max(0,i-100),s=a.substr(o,200)+"\n",y=0;y<i-o-1;y++)s+="-";return s+="^",{line:r.length,ch:i,text:a,hint:s}}(p);c.tokens;c.tokens=null;var n="CSS parsing error at line "+t.line+", char "+t.ch+": "+e;return n+="\n"+t.hint,{name:"ParseError",message:n,hint:t.hint,line:t.line,ch:t.ch}}(e),n=new Error(t.message,"",t.line);throw n.line=t.line,n.ch=t.ch,n.name=t.name,n.hint=t.hint,n}function s(){var e,t=p,n=t.ch,r=n,i=n;for(n=t.nextChar();n!==r;)"\n"===n?"\\"===(e=t.nextChar())?i+=n+e:o("Unterminated string"):i+="\\"===n?n+t.nextChar():n,n=t.nextChar();return i+=n}function y(e){for(var t=p.ch,n=e?e+t:t,o=(t=p.nextChar()).charCodeAt(0);r(t,o)||i(t,o);)n+=t,o=(t=p.nextChar()).charCodeAt(0);a(n,"identifier")}function l(){var e=p.ch;return" "===e||"\t"===e?function(){for(var e=p.ch,t="";" "===e||"\t"===e;)t+=e,e=p.nextChar();a(t,"white")}():"/"===e?function(){var e,t=p,n=t.ch,r=n;if("/"===(e=t.nextChar()))for(;n&&"\n"!==e&&"\r"!==e;)r+=e,n=e,e=t.nextChar();else{if("*"!==e)return a(r,r);for(;n&&("*"!==n||"/"!==e);)r+=e,n=e,e=t.nextChar()}r+=e,t.nextChar(),a(r,"comment")}():'"'===e||"'"===e?function(){var e=s();p.nextChar(),a(e,"string")}():"("===e?function(){var e=p,t=e.ch,n=1,r=t,i=!1;for(t=e.nextChar();t&&!i;)"("===t?n++:")"===t?--n||(i=!0):'"'===t||"'"===t?t=s():""===t&&o("Unterminated brace"),r+=t,t=e.nextChar();a(r,"brace")}():"-"===e||"."===e||i(e)?function(){var e,t=p,n=t.ch,r=n,o="."===r;if(n=t.nextChar(),e=!i(n),o&&e)return a(r,".");if("-"===r&&e)return y("-");for(;""!==n&&(i(n)||!o&&"."===n);)"."===n&&(o=!0),r+=n,n=t.nextChar();a(r,"number")}():r(e)?y():u(e)?function(){var e=p,t=e.ch,n=e.nextChar();if("="===n&&u(t,!0))return t+=n,a(t,"match"),void e.nextChar();a(t,t)}():"\r"===e?("\n"===p.peek()&&(e+=p.nextChar()),a(e,"line"),void p.nextChar()):"\n"===e?(a(e,"line"),void p.nextChar()):void o("Unrecognized character '"+e+"'")}var c={tokens:null},p={init:function(e){this.source=e,this.ch="",this.chnum=-1,this.nextChar()},nextChar:function(){return this.ch=this.source.charAt(++this.chnum)},peek:function(){return this.source.charAt(this.chnum+1)}},u=function(){for(var e="{}[]()+*=.,;:>~|\\%$#@^!".split(""),t="*^|$~".split(""),n={},r={},i=0;i<e.length;i+=1)n[e[i]]=!0;for(i=0;i<t.length;i+=1)r[t[i]]=!0;return function(e,t){return t?e in r:e in n}}();return{lex:function(e){if(p.init(e),c.tokens=[],e)for(;""!==p.ch;)l();else c.tokens.push(this.white());var t=c.tokens;return c.tokens=null,t},parse:function(e){for(var t,n=this.lex(e),r=0,i=0,a=n.length;i<a;i++)(t=n[i]).start=r,t.end=r+=t.value.length;return n},white:function(){return{value:"",type:"white",start:0,end:0}},toSource:function(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}}})},{}],57:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t){e.children.forEach(function(e){var n=e.attributeList(),y=e.attribute(t.DEFAULT_ATTR_NAME);if(void 0!==y){if(e.attribute(t.DEFAULT_ATTR_NAME,null),n.length){var l=i.find(n,a)||i.find(n,o)||i.find(n,s);if(l){var c=e.attribute(l.name),p=i.replaceUnescapedSymbol(c,"|",y);c==p&&(p=y),e.attribute(l.name,p)}}}else n.forEach(function(t){t.isImplied&&e.attribute(t.name,null)});r(e,t)})}var i=e("../../utils/common"),a=function(e){return e.isDefault},o=function(e){return e.isImplied},s=function(e){return!e.value};return{preprocessor:function(e,t,n){r(e,n)}}})},{"../../utils/common":73}],58:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../../assets/preferences"),i=e("../../utils/common"),a=e("./pastedContent");return r.define("href.autodetect",!0,"Enables or disables automatic URL recognition when wrapping\t\ttext with <code><a></code> tag. With this option enabled,\t\tif wrapped text matches URL or e-mail pattern it will be automatically\t\tinserted into <code>href</code> attribute."),r.define("href.urlPattern","^(?:(?:https?|ftp|file)://|www\\.|ftp\\.)(?:\\([-A-Z0-9+&@#/%=~_|$?!:,.]*\\)|[-A-Z0-9+&@#/%=~_|$?!:,.])*(?:\\([-A-Z0-9+&@#/%=~_|$?!:,.]*\\)|[A-Z0-9+&@#/%=~_|$])","RegExp pattern to match wrapped URLs. Matched content will be inserts\t\tas-is into <code>href</code> attribute, only whitespace will be trimmed."),r.define("href.emailPattern","^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,5}$","RegExp pattern to match wrapped e-mails. Unlike <code>href.urlPattern</code>,\t\twrapped content will be prefixed with <code>mailto:</code> in <code>href</code>\t\tattribute"),{postprocessor:function(e,t){if(r.get("href.autodetect")){var n=new RegExp(r.get("href.urlPattern"),"i"),o=new RegExp(r.get("href.emailPattern"),"i"),s=/^([a-z]+:)?\/\//i;e.findAll(function(e){if("a"==e.name().toLowerCase()&&!e.attribute("href")){var r=i.trim(a.pastedContent(e)||t.pastedContent);r&&(n.test(r)?(s.test(r)||(r="http://"+r),e.attribute("href",r)):o.test(r)&&e.attribute("href","mailto:"+r))}})}}}})},{"../../assets/preferences":28,"../../utils/common":73,"./pastedContent":59}],59:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){for(var t=[],n=l.create(e);!n.eol();){if("\\"==n.peek())n.next();else if(n.start=n.pos,n.match(p,!0)){t.push(c.create(n.start,p));continue}n.next()}return t}function i(e,t){return r(e).reverse().forEach(function(n){e=s.replaceSubstring(e,t,n)}),e}function a(e){return!!r(e.content).length||!!s.find(e.attributeList(),function(e){return!!r(e.value).length})}function o(e,t,n){var r=e.findAll(function(e){return a(e)});if(a(e)&&r.unshift(e),r.length)r.forEach(function(e){e.content=i(e.content,t),e._attributes.forEach(function(e){e.value=i(e.value,t)})});else{var o=e.deepestChild()||e;o.content=n?t:y.insertChildContent(o.content,t)}}var s=e("../../utils/common"),y=e("../../utils/abbreviation"),l=e("../../assets/stringStream"),c=e("../../assets/range"),p="$#";return{pastedContent:function(e){var t=e.data("paste");return Array.isArray(t)?t[e.counter-1]:"function"==typeof t?t(e.counter-1,e.content):t||void 0},preprocessor:function(e,t){if(t.pastedContent){var n=s.splitByLines(t.pastedContent,!0).map(s.trim);e.findAll(function(e){if(e.hasImplicitRepeat)return e.data("paste",n),e.repeatCount=n.length})}},postprocessor:function(e,t){var n=this;!e.findAll(function(e){var t=n.pastedContent(e);return t&&o(e,t,!!e.data("pasteOverwrites")),!!t}).length&&t.pastedContent&&o(e,t.pastedContent)}}})},{"../../assets/range":30,"../../assets/stringStream":32,"../../utils/abbreviation":69,"../../utils/common":73}],60:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t,n){e.children.slice(0).forEach(function(e){var o=i.getMatchedResource(e,t);"string"==typeof o&&(o=a.create("snippet",o)),e.data("resource",o);var y=a.type(o);if("snippet"==y){var l=o.data,c=e._text||e.content;c&&(l=s.insertChildContent(l,c)),e.content=l}else if("element"==y)e._name=o.name,Array.isArray(o.attributes)&&(e._attributes=[].concat(o.attributes,e._attributes));else if("reference"==y){var p=n.parse(o.data,{syntax:t});if(e.repeatCount>1){var u=p.findAll(function(e){return e.hasImplicitRepeat});u.length||(u=p.children),u.forEach(function(t){t.repeatCount=e.repeatCount,t.hasImplicitRepeat=!1})}var f=p.deepestChild();f&&(e.children.forEach(function(e){f.addChild(e)}),f.content=e.content),p.children.forEach(function(t){e.attributeList().forEach(function(e){t.attribute(e.name,e.value)})}),e.replace(p.children)}r(e,t,n)})}var i=e("../../assets/resources"),a=e("../../assets/elements"),o=e("../../utils/common"),s=e("../../utils/abbreviation");return{preprocessor:function(e,t,n){r(e,t.syntax||o.defaultSyntax(),n)}}})},{"../../assets/elements":24,"../../assets/resources":31,"../../utils/abbreviation":69,"../../utils/common":73}],61:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){return e.children.forEach(function(e){(e.hasImplicitName()||e.data("forceNameResolving"))&&(e._name=i.resolve(e.parent.name()),e.data("nameResolved",!0)),r(e)}),e}var i=e("../../resolver/tagName");return{postprocessor:r}})},{"../../resolver/tagName":67}],62:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e,t){function n(n){return t.tokenize=n,n(e,t)}var r=e.next();if("<"==r){if(e.eat("!"))return e.eat("[")?e.match("CDATA[")?n(a("atom","]]>")):null:e.match("--")?n(a("comment","--\x3e")):e.match("DOCTYPE",!0,!0)?(e.eatWhile(/[\w\._\-]/),n(o(1))):null;if(e.eat("?"))return e.eatWhile(/[\w\._\-]/),t.tokenize=a("meta","?>"),"meta";v=e.eat("/")?"closeTag":"openTag",e.eatSpace(),w="";for(var s;s=e.eat(/[^\s\u00a0=<>\"\'\/?]/);)w+=s;return t.tokenize=i,"tag"}if("&"==r){return(e.eat("#")?e.eat("x")?e.eatWhile(/[a-fA-F\d]/)&&e.eat(";"):e.eatWhile(/[\d]/)&&e.eat(";"):e.eatWhile(/[\w\.\-:]/)&&e.eat(";"))?"atom":"error"}return e.eatWhile(/[^&<]/),"text"}function i(e,t){var n=e.next();return">"==n||"/"==n&&e.eat(">")?(t.tokenize=r,v=">"==n?"endTag":"selfcloseTag","tag"):"="==n?(v="equals",null):/[\'\"]/.test(n)?(t.tokenize=function(e){return function(t,n){for(;!t.eol();)if(t.next()==e){n.tokenize=i;break}return"string"}}(n),t.tokenize(e,t)):(e.eatWhile(/[^\s\u00a0=<>\"\'\/?]/),"word")}function a(e,t){return function(n,i){for(;!n.eol();){if(n.match(t)){i.tokenize=r;break}n.next()}return e}}function o(e){return function(t,n){for(var i;null!==(i=t.next());){if("<"==i)return n.tokenize=o(e+1),n.tokenize(t,n);if(">"==i){if(1==e){n.tokenize=r;break}return n.tokenize=o(e-1),n.tokenize(t,n)}}return"meta"}}function s(){for(var e=arguments.length-1;e>=0;e--)_.cc.push(arguments[e])}function y(){return s.apply(null,arguments),!0}function l(){_.context&&(_.context=_.context.prev)}function c(e){if("openTag"==e)return _.tagName=w,y(u,function(e){return function(t){return"selfcloseTag"==t||"endTag"==t&&x.autoSelfClosers.hasOwnProperty(_.tagName.toLowerCase())?(p(_.tagName.toLowerCase()),y()):"endTag"==t?(p(_.tagName.toLowerCase()),function(e,t){var n=x.doNotIndent.hasOwnProperty(e)||_.context&&_.context.noIndent;_.context={prev:_.context,tagName:e,indent:_.indented,startOfLine:t,noIndent:n}}(_.tagName,e),y()):y()}}(_.startOfLine));if("closeTag"==e){var t=!1;return _.context?_.context.tagName!=w&&(x.implicitlyClosed.hasOwnProperty(_.context.tagName.toLowerCase())&&l(),t=!_.context||_.context.tagName!=w):t=!0,t&&(g="error"),y(function(e){return function(t){return e&&(g="error"),"endTag"==t?(l(),y()):(g="error",y(arguments.callee))}}(t))}return y()}function p(e){for(var t;;){if(!_.context)return;if(t=_.context.tagName.toLowerCase(),!x.contextGrabbers.hasOwnProperty(t)||!x.contextGrabbers[t].hasOwnProperty(e))return;l()}}function u(e){return"word"==e?(g="attribute",y(f,u)):"endTag"==e||"selfcloseTag"==e?s():(g="error",y(u))}function f(e){return"equals"==e?y(d,u):(x.allowMissing||(g="error"),"endTag"==e||"selfcloseTag"==e?s():y())}function d(e){return"string"==e?y(h):"word"==e&&x.allowUnquoted?(g="string",y()):(g="error","endTag"==e||"selfCloseTag"==e?s():y())}function h(e){return"string"==e?y(h):s()}function m(e,t){if(e.sol()&&(t.startOfLine=!0,t.indented=0),e.eatSpace())return null;g=v=w=null;var n=t.tokenize(e,t);if(t.type=v,(n||v)&&"comment"!=n)for(_=t;;){if((t.cc.pop()||c)(v||n))break}return t.startOfLine=!1,g||n}var g,b=e("../assets/stringStream"),x={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!0,allowMissing:!0},w=null,v=null,_=null;return{parse:function(e,t){t=t||0;for(var n={tokenize:r,cc:[],indented:0,startOfLine:!0,tagName:null,context:null},i=b.create(e),a=[];!i.eol();)a.push({type:m(i,n),start:i.start+t,end:i.pos+t}),i.start=i.pos;return a}}})},{"../assets/stringStream":32}],63:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function i(e){return/^https?:\/\//.test(e)}var a=e("../utils/common");return function(e){if(void 0===r||!r.amd)try{fs=e("fs"),path=e("path")}catch(e){}}(e),n.exports=function(e){e&&a.extend(n.exports,e)},a.extend(n.exports,{_parseParams:function(e){var t={path:e[0],size:0};return e=a.toArray(e,1),t.callback=e[e.length-1],(e=e.slice(0,e.length-1)).length&&(t.size=e[0]),t},_read:function(t,n){if(i(t.path))var r=e(/^https:/.test(t.path)?"https":"http").get(t.path,function(e){var i=[],a=0,o=!1;e.on("data",function(e){a+=e.length,i.push(e),t.size&&a>=t.size&&(o=!0,n(null,Buffer.concat(i)),r.abort())}).on("end",function(){o||(o=!0,n(null,Buffer.concat(i)))})}).on("error",n);else if(t.size){var a=fs.openSync(t.path,"r"),o=new Buffer(t.size);fs.read(a,o,0,t.size,null,function(e,t){n(e,o)})}else n(null,fs.readFileSync(t.path))},read:function(e,t,n){var r=this._parseParams(arguments);this._read(r,function(e,t){r.callback(e,e?"":function(e){for(var t=[],n=0,r=e.length;n<r;n++)t.push(String.fromCharCode(e[n]));return t.join("")}(t))})},readText:function(e,t,n){var r=this._parseParams(arguments);this._read(r,function(e,t){r.callback(e,e?"":t.toString())})},locateFile:function(e,t){if(i(t))return t;var n,r=e;for(t=t.replace(/^\/+/,"");r&&r!==path.dirname(r);)if(r=path.dirname(r),n=path.join(r,t),fs.existsSync(n))return n;return""},createPath:function(e,t,n){var r=fs.statSync(e);return r&&!r.isDirectory()&&(e=path.dirname(e)),n(path.resolve(e,t))},save:function(e,t){fs.writeFileSync(e,t,"ascii")},getExt:function(e){var t=(e||"").match(/\.([\w\-]+)$/);return t?t[1].toLowerCase():""}})})},{"../utils/common":73}],64:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){var t=e&&e.charCodeAt(0);return e&&"."==e||t>47&&t<58}function i(e){return e=g.trim(e),!/\/\*|\n|\r/.test(e)&&(!!/^[a-z0-9\-]+\s*\:/i.test(e)&&2==e.replace(/\$\{.+?\}/g,"").split(":").length)}function a(e){"-"!=e.charAt(0)||/^\-[\.\d]/.test(e)||(e=e.replace(/^\-+/,""));var t=e.charAt(0);return"#"==t?function(e){var t=e.replace(/^#+/,"")||"0";if("t"==t.toLowerCase())return"transparent";var n="";t=t.replace(/\.(\d+)$/,function(e){return n="0"+e,""});var r=g.repeatString,i=null;switch(t.length){case 1:i=r(t,6);break;case 2:i=r(t,3);break;case 3:i=t.charAt(0)+t.charAt(0)+t.charAt(1)+t.charAt(1)+t.charAt(2)+t.charAt(2);break;case 4:i=t+t.substr(0,2);break;case 5:i=t+t.charAt(0);break;default:i=t.substr(0,6)}if(n)return function(e,t){var n=parseInt(e.substr(0,2),16),r=parseInt(e.substr(2,2),16),i=parseInt(e.substr(4,2),16);return"rgba("+[n,r,i,t].join(", ")+")"}(i,n);if(f.get("css.color.short")){var a=i.split("");a[0]==a[1]&&a[2]==a[3]&&a[4]==a[5]&&(i=a[0]+a[2]+a[4])}switch(f.get("css.color.case")){case"upper":i=i.toUpperCase();break;case"lower":i=i.toLowerCase()}return"#"+i}(e):"$"==t?g.escapeText(e):o(e)}function o(e){var t=f.getDict("css.keywordAliases");return e in t?t[e]:e}function s(e){return~f.getArray("css.keywords").indexOf(o(e))}function y(e,t){var n=v[t];return n||(n=g.find(v,function(e){return e.prefix==t})),n&&n.supports(e)}function l(e){var t=m.resolvePrefixes(e);return t||(t=[],Object.keys(v).forEach(function(n){y(e,n)&&t.push(v[n].prefix)}),t.length||(t=null)),t}function c(e,t){"string"==typeof t&&(t={prefix:t}),v[e]=g.extend({},w,t)}function p(e,t){if(t){"styl"==t&&(t="stylus");var n=f.get(t+"."+e);if(void 0!==n)return n}return f.get("css."+e)}function u(e,t,n){return"string"!=typeof e&&(e=e.data),i(e)?(t&&(~e.indexOf(";")?e=e.split(";").join(" !important;"):e+=" !important"),function(e,t){var n=e.indexOf(":");return(e=e.substring(0,n).replace(/\s+$/,"")+p("valueSeparator",t)+g.trim(e.substring(n+1))).replace(/\s*;\s*$/,p("propertyEnd",t))}(e,n)):e}var f=e("../assets/preferences"),d=e("../assets/resources"),h=e("../assets/stringStream"),m=e("../assets/caniuse"),g=e("../utils/common"),b=e("../utils/template"),x=e("../editTree/css"),w={prefix:"emmet",obsolete:!1,transformName:function(e){return"-"+this.prefix+"-"+e},properties:function(){return function(e){var t=f.getArray(e),n=f.getArray(e+"Addon");return n&&n.forEach(function(e){"-"==e.charAt(0)?t=g.without(t,e.substr(1)):("+"==e.charAt(0)&&(e=e.substr(1)),t.push(e))}),t}("css."+this.prefix+"Properties")||[]},supports:function(e){return~this.properties().indexOf(e)}},v={};f.define("css.valueSeparator",": ","Defines a symbol that should be placed between CSS property and value when expanding CSS abbreviations."),f.define("css.propertyEnd",";","Defines a symbol that should be placed at the end of CSS property when expanding CSS abbreviations."),f.define("stylus.valueSeparator"," ","Defines a symbol that should be placed between CSS property and value when expanding CSS abbreviations in Stylus dialect."),f.define("stylus.propertyEnd","","Defines a symbol that should be placed at the end of CSS property when expanding CSS abbreviations in Stylus dialect."),f.define("sass.propertyEnd","","Defines a symbol that should be placed at the end of CSS property when expanding CSS abbreviations in SASS dialect."),f.define("css.syntaxes","css, less, sass, scss, stylus, styl","List of syntaxes that should be treated as CSS dialects."),f.define("css.autoInsertVendorPrefixes",!0,"Automatically generate vendor-prefixed copies of expanded CSS property. By default, Emmet will generate vendor-prefixed properties only when you put dash before abbreviation (e.g. <code>-bxsh</code>). With this option enabled, you don’t need dashes before abbreviations: Emmet will produce vendor-prefixed properties for you."),f.define("less.autoInsertVendorPrefixes",!1,"Same as <code>css.autoInsertVendorPrefixes</code> but for LESS syntax"),f.define("scss.autoInsertVendorPrefixes",!1,"Same as <code>css.autoInsertVendorPrefixes</code> but for SCSS syntax"),f.define("sass.autoInsertVendorPrefixes",!1,"Same as <code>css.autoInsertVendorPrefixes</code> but for SASS syntax"),f.define("stylus.autoInsertVendorPrefixes",!1,"Same as <code>css.autoInsertVendorPrefixes</code> but for Stylus syntax");var _=b("A comma-separated list of CSS properties that may have <code><%= vendor %></code> vendor prefix. This list is used to generate a list of prefixed properties when expanding <code>-property</code> abbreviations. Empty list means that all possible CSS values may have <code><%= vendor %></code> prefix."),k=b("A comma-separated list of <em>additional</em> CSS properties for <code>css.<%= vendor %>Preperties</code> preference. You should use this list if you want to add or remove a few CSS properties to original set. To add a new property, simply write its name, to remove it, precede property with hyphen.<br>For example, to add <em>foo</em> property and remove <em>border-radius</em> one, the preference value will look like this: <code>foo, -border-radius</code>."),S={webkit:"animation, animation-delay, animation-direction, animation-duration, animation-fill-mode, animation-iteration-count, animation-name, animation-play-state, animation-timing-function, appearance, backface-visibility, background-clip, background-composite, background-origin, background-size, border-fit, border-horizontal-spacing, border-image, border-vertical-spacing, box-align, box-direction, box-flex, box-flex-group, box-lines, box-ordinal-group, box-orient, box-pack, box-reflect, box-shadow, color-correction, column-break-after, column-break-before, column-break-inside, column-count, column-gap, column-rule-color, column-rule-style, column-rule-width, column-span, column-width, dashboard-region, font-smoothing, highlight, hyphenate-character, hyphenate-limit-after, hyphenate-limit-before, hyphens, line-box-contain, line-break, line-clamp, locale, margin-before-collapse, margin-after-collapse, marquee-direction, marquee-increment, marquee-repetition, marquee-style, mask-attachment, mask-box-image, mask-box-image-outset, mask-box-image-repeat, mask-box-image-slice, mask-box-image-source, mask-box-image-width, mask-clip, mask-composite, mask-image, mask-origin, mask-position, mask-repeat, mask-size, nbsp-mode, perspective, perspective-origin, rtl-ordering, text-combine, text-decorations-in-effect, text-emphasis-color, text-emphasis-position, text-emphasis-style, text-fill-color, text-orientation, text-security, text-stroke-color, text-stroke-width, transform, transition, transform-origin, transform-style, transition-delay, transition-duration, transition-property, transition-timing-function, user-drag, user-modify, user-select, writing-mode, svg-shadow, box-sizing, border-radius",moz:"animation-delay, animation-direction, animation-duration, animation-fill-mode, animation-iteration-count, animation-name, animation-play-state, animation-timing-function, appearance, backface-visibility, background-inline-policy, binding, border-bottom-colors, border-image, border-left-colors, border-right-colors, border-top-colors, box-align, box-direction, box-flex, box-ordinal-group, box-orient, box-pack, box-shadow, box-sizing, column-count, column-gap, column-rule-color, column-rule-style, column-rule-width, column-width, float-edge, font-feature-settings, font-language-override, force-broken-image-icon, hyphens, image-region, orient, outline-radius-bottomleft, outline-radius-bottomright, outline-radius-topleft, outline-radius-topright, perspective, perspective-origin, stack-sizing, tab-size, text-blink, text-decoration-color, text-decoration-line, text-decoration-style, text-size-adjust, transform, transform-origin, transform-style, transition, transition-delay, transition-duration, transition-property, transition-timing-function, user-focus, user-input, user-modify, user-select, window-shadow, background-clip, border-radius",ms:"accelerator, backface-visibility, background-position-x, background-position-y, behavior, block-progression, box-align, box-direction, box-flex, box-line-progression, box-lines, box-ordinal-group, box-orient, box-pack, content-zoom-boundary, content-zoom-boundary-max, content-zoom-boundary-min, content-zoom-chaining, content-zoom-snap, content-zoom-snap-points, content-zoom-snap-type, content-zooming, filter, flow-from, flow-into, font-feature-settings, grid-column, grid-column-align, grid-column-span, grid-columns, grid-layer, grid-row, grid-row-align, grid-row-span, grid-rows, high-contrast-adjust, hyphenate-limit-chars, hyphenate-limit-lines, hyphenate-limit-zone, hyphens, ime-mode, interpolation-mode, layout-flow, layout-grid, layout-grid-char, layout-grid-line, layout-grid-mode, layout-grid-type, line-break, overflow-style, perspective, perspective-origin, perspective-origin-x, perspective-origin-y, scroll-boundary, scroll-boundary-bottom, scroll-boundary-left, scroll-boundary-right, scroll-boundary-top, scroll-chaining, scroll-rails, scroll-snap-points-x, scroll-snap-points-y, scroll-snap-type, scroll-snap-x, scroll-snap-y, scrollbar-arrow-color, scrollbar-base-color, scrollbar-darkshadow-color, scrollbar-face-color, scrollbar-highlight-color, scrollbar-shadow-color, scrollbar-track-color, text-align-last, text-autospace, text-justify, text-kashida-space, text-overflow, text-size-adjust, text-underline-position, touch-action, transform, transform-origin, transform-origin-x, transform-origin-y, transform-origin-z, transform-style, transition, transition-delay, transition-duration, transition-property, transition-timing-function, user-select, word-break, wrap-flow, wrap-margin, wrap-through, writing-mode",o:"dashboard-region, animation, animation-delay, animation-direction, animation-duration, animation-fill-mode, animation-iteration-count, animation-name, animation-play-state, animation-timing-function, border-image, link, link-source, object-fit, object-position, tab-size, table-baseline, transform, transform-origin, transition, transition-delay, transition-duration, transition-property, transition-timing-function, accesskey, input-format, input-required, marquee-dir, marquee-loop, marquee-speed, marquee-style"};return Object.keys(S).forEach(function(e){f.define("css."+e+"Properties",S[e],_({vendor:e})),f.define("css."+e+"PropertiesAddon","",k({vendor:e}))}),f.define("css.unitlessProperties","z-index, line-height, opacity, font-weight, zoom","The list of properties whose values must not contain units."),f.define("css.intUnit","px","Default unit for integer values"),f.define("css.floatUnit","em","Default unit for float values"),f.define("css.keywords","auto, inherit, all","A comma-separated list of valid keywords that can be used in CSS abbreviations."),f.define("css.keywordAliases","a:auto, i:inherit, s:solid, da:dashed, do:dotted, t:transparent","A comma-separated list of keyword aliases, used in CSS abbreviation. Each alias should be defined as <code>alias:keyword_name</code>."),f.define("css.unitAliases","e:em, p:%, x:ex, r:rem","A comma-separated list of unit aliases, used in CSS abbreviation. Each alias should be defined as <code>alias:unit_value</code>."),f.define("css.color.short",!0,"Should color values like <code>#ffffff</code> be shortened to <code>#fff</code> after abbreviation with color was expanded."),f.define("css.color.case","keep","Letter case of color values generated by abbreviations with color (like <code>c#0</code>). Possible values are <code>upper</code>, <code>lower</code> and <code>keep</code>."),f.define("css.fuzzySearch",!0,"Enable fuzzy search among CSS snippet names. When enabled, every <em>unknown</em> snippet will be scored against available snippet names (not values or CSS properties!). The match with best score will be used to resolve snippet value. For example, with this preference enabled, the following abbreviations are equal: <code>ov:h</code> == <code>ov-h</code> == <code>o-h</code> == <code>oh</code>"),f.define("css.fuzzySearchMinScore",.3,"The minium score (from 0 to 1) that fuzzy-matched abbreviation should achive. Lower values may produce many false-positive matches, higher values may reduce possible matches."),f.define("css.alignVendor",!1,"If set to <code>true</code>, all generated vendor-prefixed properties will be aligned by real property name."),c("w",{prefix:"webkit"}),c("m",{prefix:"moz"}),c("s",{prefix:"ms"}),c("o",{prefix:"o"}),n=n||{},n.exports={addPrefix:c,supportsPrefix:y,resolve:function(e,t){var n=f.getArray("css.syntaxes");return n&&~n.indexOf(t)&&e.isElement()?this.expandToSnippet(e.abbreviation,t):null},prefixed:function(e,t){return y(e,t)?"-"+t+"-"+e:e},listPrefixes:function(){return v.map(function(e){return e.prefix})},getPrefix:function(e){return v[e]},removePrefix:function(e){e in v&&delete v[e]},extractPrefixes:function(e){if("-"!=e.charAt(0))return{property:e,prefixes:null};for(var t,n=1,r=e.length,i=[];n<r;){if("-"==(t=e.charAt(n))){n++;break}if(!(t in v)){i.length=0,n=1;break}i.push(t),n++}return n==r-1&&(n=1,i.length=1),{property:e.substring(n),prefixes:i.length?i:"all"}},findValuesInAbbreviation:function(e,t){t=t||"css";for(var n,i=0,a=e.length,o="";i<a;){if(n=e.charAt(i),r(n)||"#"==n||"$"==n||"-"==n&&r(e.charAt(i+1))){o=e.substring(i);break}i++}for(var y=e.substring(0,e.length-o.length),l=[];~y.indexOf("-")&&!d.findSnippet(t,y);){var c=y.split("-"),p=c.pop();if(!s(p))break;l.unshift(p),y=c.join("-")}return l.join("-")+o},parseValues:function(e){for(var t=h.create(e),n=[],i=null;i=t.next();)"$"==i?(t.match(/^[^\$]+/,!0),n.push(t.current())):"#"==i?(t.match(/^t|[0-9a-f]+(\.\d+)?/i,!0),n.push(t.current())):"-"==i?((s(g.last(n))||t.start&&r(e.charAt(t.start-1)))&&(t.start=t.pos),t.match(/^\-?[0-9]*(\.[0-9]+)?[a-z%\.]*/,!0),n.push(t.current())):(t.match(/^[0-9]*(\.[0-9]*)?[a-z%]*/,!0),n.push(t.current())),t.start=t.pos;return n.filter(function(e){return!!e}).map(a)},extractValues:function(e){var t=this.findValuesInAbbreviation(e);return t?{property:e.substring(0,e.length-t.length).replace(/-$/,""),values:this.parseValues(t)}:{property:e,values:null}},normalizeValue:function(e,t){t=(t||"").toLowerCase();var n=f.getArray("css.unitlessProperties");return e.replace(/^(\-?[0-9\.]+)([a-z]*)$/,function(e,r,i){return i||"0"!=r&&!~n.indexOf(t)?i?r+function(e){var t=f.getDict("css.unitAliases");return e in t?t[e]:e}(i):r.replace(/\.$/,"")+f.get(~r.indexOf(".")?"css.floatUnit":"css.intUnit"):r})},expand:function(e,t,n){n=n||"css";var r=f.get(n+".autoInsertVendorPrefixes"),a=/^(.+)\!$/.test(e);a&&(e=RegExp.$1);var o=d.findSnippet(n,e);if(o&&!r)return u(o,a,n);var s=this.extractPrefixes(e),y=this.extractValues(s.property),c=g.extend(s,y);if(o?c.values=null:o=d.findSnippet(n,c.property),!o&&f.get("css.fuzzySearch")&&(o=d.fuzzyFindSnippet(n,c.property,parseFloat(f.get("css.fuzzySearchMinScore")))),o)"string"!=typeof o&&(o=o.data);else{if(!c.property)return null;o=c.property+":${1};"}if(!i(o))return o;var p=this.splitSnippet(o),h=[];!t&&c.values&&(t=c.values.map(function(e){return this.normalizeValue(e,p.name)},this).join(" ")+";"),p.value=t||p.value;var m,b=[];if((("all"==c.prefixes||!c.prefixes&&r?function(e,t){var n=[],r=l(e);if(r){var i={};Object.keys(v).forEach(function(e){i[v[e].prefix]=e}),n=r.map(function(e){return i[e]})}return n.length||t||Object.keys(v).forEach(function(e){v[e].obsolete||n.push(e)}),n}(p.name,r&&"all"!=c.prefixes):c.prefixes)||[]).forEach(function(e){e in v&&(m=v[e].transformName(p.name),b.push(m),h.push(u(m+":"+p.value,a,n)))}),h.push(u(p.name+":"+p.value,a,n)),b.push(p.name),h=function(e,t,n){var r=[],i={},a=x.findParts(e.value);return a.reverse(),a.forEach(function(t){var n=t.substring(e.value);(l(n)||[]).forEach(function(a){i[a]||(i[a]=e.value,r.push(a)),i[a]=g.replaceSubstring(i[a],"-"+a+"-"+n,t)})}),r.map(function(r){return u(e.name+":"+i[r],t,n)})}(p,a,n).concat(h),f.get("css.alignVendor")){var w=g.getStringsPads(b);h=h.map(function(e,t){return w[t]+e})}return h},expandToSnippet:function(e,t){var n=this.expand(e,null,t);return null===n?null:Array.isArray(n)?n.join("\n"):"string"!=typeof n?n.data:n+""},splitSnippet:function(e){if(-1==(e=g.trim(e)).indexOf(":"))return{name:e,value:"${1};"};var t=e.split(":");return{name:g.trim(t.shift()),value:g.trim(t.join(":")).replace(/^(\$\{0\}|\$0)(\s*;?)$/,"${1}$2")}},getSyntaxPreference:p,transformSnippet:u,vendorPrefixes:l},n.exports})},{"../assets/caniuse":23,"../assets/preferences":28,"../assets/resources":31,"../assets/stringStream":32,"../editTree/css":37,"../utils/common":73,"../utils/template":77}],65:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){var t=c.vendorPrefixes(e);return t||(t=s.getArray("css.gradient.prefixes")),t||[]}function i(e,t){var n=[],i=t.name(),o=s.get("css.gradient.omitDefaultDirection");s.get("css.gradient.fallback")&&~i.toLowerCase().indexOf("background")&&n.push({name:"background-color",value:"${1:"+e[0].gradient.colorStops[0].color+"}"});var y=t.value();return r("linear-gradient").forEach(function(t){var r=c.prefixed(i,t);if("webkit"==t&&s.get("css.gradient.oldWebkit"))try{n.push({name:r,value:a(e,y,{prefix:t,oldWebkit:!0,omitDefaultDirection:o})})}catch(e){}n.push({name:r,value:a(e,y,{prefix:t,omitDefaultDirection:o})})}),n.sort(function(e,t){return t.name.length-e.name.length})}function a(e,t,n){return n=n||{},(e=l.clone(e)).reverse().forEach(function(e,r){var i=!r&&n.placeholder?n.placeholder:"",a=n.oldWebkit?e.gradient.stringifyOldWebkit(n):e.gradient.stringify(n);t=l.replaceSubstring(t,a+i,e.matchedPart)}),t}function o(e){"string"!=typeof e&&(e=e.name());var t=(c.vendorPrefixes(e)||[]).map(function(t){return"-"+t+"-"+e});return t.push(e),t}var s=e("../assets/preferences"),y=e("../assets/resources"),l=e("../utils/common"),c=(e("../assets/stringStream"),e("./css")),p=e("../assets/range"),u=e("../editTree/css"),f=e("../utils/editor"),d=e("./gradient/linear"),h=["css","less","sass","scss","stylus","styl"];return s.define("css.gradient.prefixes","webkit, moz, o","A comma-separated list of vendor-prefixes for which values should be generated."),s.define("css.gradient.oldWebkit",!1,"Generate gradient definition for old Webkit implementations"),s.define("css.gradient.omitDefaultDirection",!0,"Do not output default direction definition in generated gradients."),s.define("css.gradient.defaultProperty","background-image","When gradient expanded outside CSS value context, it will produce properties with this name."),s.define("css.gradient.fallback",!1,"With this option enabled, CSS gradient generator will produce <code>background-color</code> property with gradient first color as fallback for old browsers."),n=n||{},n.exports={findGradients:function(e){var t=e.value(),n=[];return e.valueParts().forEach(function(e){var r=e.substring(t);if(d.isLinearGradient(r)){var i=d.parse(r);i&&n.push({gradient:i,matchedPart:e})}}),n.length?n:null},gradientsFromCSSProperty:function(e,t){var n=u.propertyFromPosition(e,t);if(n){var r=this.findGradients(n);if(r)return{property:n,gradients:r}}return null},expandAbbreviationHandler:function(e,t,n){var r=f.outputInfo(e,t,n);if(!~h.indexOf(r.syntax))return!1;var p=e.getCaretPos(),u=r.content,d=this.gradientsFromCSSProperty(u,p);if(d){if(!function(e,t,n){if("css"==(n=n||"css")||"less"==n||"scss"==n)return!0;for(var r=e.property.valueRange(!0).start,i=e.gradients,a=i.length-1;a>=0;a--)if(i[a].matchedPart.start+r>=t)return!1;return!0}(d,p,r.syntax))return!1;var m=d.property,g=m.parent,b=g.options.offset||0,x=b+g.toString().length;if(/[\n\r]/.test(m.value())){var w=m.valueRange(!0).start+l.last(d.gradients).matchedPart.end;u=l.replaceSubstring(u,";",w);var v=this.gradientsFromCSSProperty(u,p);v&&(g=(m=(d=v).property).parent)}m.end(";");var _=function(e,t){var n=y.findSnippet(t,e);if(!n&&s.get("css.fuzzySearch")){var r=parseFloat(s.get("css.fuzzySearchMinScore"));n=y.fuzzyFindSnippet(t,e,r)}if(n)return"string"!=typeof n&&(n=n.data),c.splitSnippet(n).name}(m.name(),t);return _&&m.name(_),function(e,t){var n=e.parent,r=s.get("css.alignVendor"),y=s.get("css.gradient.omitDefaultDirection"),c=e.styleSeparator,p=e.styleBefore;if(n.getAll(o(e)).forEach(function(t){t!=e&&/gradient/i.test(t.value())&&(t.styleSeparator.length<c.length&&(c=t.styleSeparator),t.styleBefore.length<p.length&&(p=t.styleBefore),n.remove(t))}),r){if(p!=e.styleBefore){var u=e.fullRange();n._updateSource(p,u.start,u.start+e.styleBefore.length),e.styleBefore=p}c!=e.styleSeparator&&(n._updateSource(c,e.nameRange().end,e.valueRange().start),e.styleSeparator=c)}var f=e.value(),d=i(t,e);if(r){var h=[],m=[];d.forEach(function(e){h.push(e.name),m.push(e.value)}),m.push(e.value()),h.push(e.name());var g=l.getStringsPads(m.map(function(e){return e.substring(0,e.indexOf("("))})),b=l.getStringsPads(h);e.name(b[b.length-1]+e.name()),d.forEach(function(e,t){e.name=b[t]+e.name,e.value=g[t]+e.value}),e.value(g[g.length-1]+e.value())}d.forEach(function(t){n.add(t.name,t.value,n.indexOf(e))}),e.value(a(t,f,{placeholder:"${2}",omitDefaultDirection:y}))}(m,d.gradients),e.replaceContent(g.toString(),b,x,!0),!0}return this.expandGradientOutsideValue(e,t)},expandGradientOutsideValue:function(e,t){var n=s.get("css.gradient.defaultProperty"),r=s.get("css.gradient.omitDefaultDirection");if(!n)return!1;var o=String(e.getContent()),y=p.create(e.getCurrentLineRange()),u="a{"+n+": "+y.substring(o).replace(/^\s+/,function(e){return y.start+=e.length,""}).replace(/\s+$/,function(e){return y.end-=e.length,""})+";}",f=this.gradientsFromCSSProperty(u,u.length-2);if(f){var d=i(f.gradients,f.property);d.push({name:f.property.name(),value:a(f.gradients,f.property.value(),{placeholder:"${2}",omitDefaultDirection:r})});var h=c.getSyntaxPreference("valueSeparator",t),m=c.getSyntaxPreference("propertyEnd",t);if(s.get("css.alignVendor")){var g=l.getStringsPads(d.map(function(e){return e.value.substring(0,e.value.indexOf("("))}));d.forEach(function(e,t){e.value=g[t]+e.value})}return d=d.map(function(e){return e.name+h+e.value+m}),e.replaceContent(d.join("\n"),y.start,y.end),!0}return!1},reflectValueHandler:function(e){var t=s.get("css.gradient.omitDefaultDirection"),n=this.findGradients(e);if(!n)return!1;var r=this,i=e.value();return e.parent.getAll(o(e)).forEach(function(o){if(o!==e){var s=r.findGradients(o);if(s){var y=o.value(),l=s[0].matchedPart.substring(y),c="";/^\s*\-([a-z]+)\-/.test(l)&&(c=RegExp.$1),o.value(a(n,i,{prefix:c,omitDefaultDirection:t}))}}}),!0}}})},{"../assets/preferences":28,"../assets/range":30,"../assets/resources":31,"../assets/stringStream":32,"../editTree/css":37,"../utils/common":73,"../utils/editor":75,"./css":64,"./gradient/linear":66}],66:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){this.colorStops=[],this.direction=180;for(var t,n,r=s.create(y.trim(e));t=r.next();)","==r.peek()?(n=r.current(),this.colorStops.length||!u.test(n)&&!f.test(n)?this.addColorStop(n):this.direction=a(n),r.next(),r.eatSpace(),r.start=r.pos):"("==t&&r.skipTo(")");this.addColorStop(r.current())}function i(e){return y.trim(e).replace(/\s+/g," ")}function a(e){if("number"==typeof e)return e;if(e=i(e).toLowerCase(),u.test(e))return+RegExp.$1;var t=/^to\s/.test(e)?"to ":"",n=~e.indexOf("left")&&"left",r=~e.indexOf("right")&&"right",a=~e.indexOf("top")&&"top",o=~e.indexOf("bottom")&&"bottom",s=i(t+(a||o||"")+" "+(n||r||""));return l[s]||0}function o(e,t){for(var n=/^to\s/,r=Object.keys(l).filter(function(e){var r=n.test(e);return t?!r:r}),i=0;i<r.length;i++)if(l[r[i]]==e)return r[i];return t&&(e=(e+270)%360),e+"deg"}var s=e("../../assets/stringStream"),y=e("../../utils/common"),l={bottom:0,"bottom left":45,left:90,"top left":135,top:180,"top right":225,right:270,"bottom right":315,"to top":0,"to top right":45,"to right":90,"to bottom right":135,"to bottom":180,"to bottom left":225,"to left":270,"to top left":315},c=["top","to bottom","0deg"],p=/^\s*(\-[a-z]+\-)?(lg|linear\-gradient)\s*\(/i,u=/(\d+)deg/i,f=/top|bottom|left|right/i;return r.prototype={type:"linear-gradient",addColorStop:function(e,t){(e=i(e||""))&&(e=this.parseColorStop(e),void 0===t?this.colorStops.push(e):this.colorStops.splice(t,0,e))},parseColorStop:function(e){var t=null;if(e=(e=i(e)).replace(/^(\w+\(.+?\))\s*/,function(e,n){return t=n,""}),!t){var n=e.split(" ");t=n[0],e=n[1]||""}var r={color:t};return e&&e.replace(/^(\-?[\d\.]+)([a-z%]+)?$/,function(e,t,n){r.position=t,~t.indexOf(".")?n="":n||(n="%"),n&&(r.unit=n)}),r},stringify:function(e){var t="linear-gradient";(e=e||{}).prefix&&(t="-"+e.prefix+"-"+t);var n=this.colorStops.map(function(e){var t=e.position?" "+e.position+(e.unit||""):"";return e.color+t}),r=o(this.direction,!!e.prefix);return e.omitDefaultDirection&&~c.indexOf(r)||n.unshift(r),t+"("+n.join(", ")+")"},stringifyOldWebkit:function(){var e=this.colorStops.map(function(e){return y.clone(e)});return e.forEach(function(e){if("position"in e){if(!~e.position.indexOf(".")&&"%"!=e.unit)throw"Can't convert color stop '"+(e.position+(e.unit||""))+"'";e.position=parseFloat(e.position)/("%"==e.unit?100:1)}}),this._fillImpliedPositions(e),e=e.map(function(t,n){return t.position||n?1==t.position&&n==e.length-1?"to("+t.color+")":"color-stop("+t.position.toFixed(2).replace(/\.?0+$/,"")+", "+t.color+")":"from("+t.color+")"}),"-webkit-gradient(linear, "+function(e){if(e=o(e,!0),u.test(e))throw"The direction is an angle that can’t be converted.";var t=function(t){return~e.indexOf(t)?"100%":"0"};return t("left")+" "+t("top")+", "+t("right")+" "+t("bottom")}((this.direction+180)%360)+", "+e.join(", ")+")"},_fillImpliedPositions:function(e){var t=0;e.forEach(function(n,r){if(!r)return n.position=n.position||0;if(r!=e.length-1||"position"in n||(n.position=1),"position"in n){var i=e[t].position||0,a=(n.position-i)/(r-t);e.slice(t,r).forEach(function(e,t){e.position=i+a*t}),t=r}})},valueOf:function(){return this.stringify()}},{parse:function(e){if(!this.isLinearGradient(e))throw"Invalid linear gradient definition:\n"+e;return e=e.replace(/^\s*[\-a-z]+\s*\(|\)\s*$/gi,""),new r(e)},isLinearGradient:function(e){return p.test(e)},resolveDirection:a,stringifyDirection:o}})},{"../../assets/stringStream":32,"../../utils/common":73}],67:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../utils/common"),i={empty:[],blockLevel:"address,applet,blockquote,button,center,dd,del,dir,div,dl,dt,fieldset,form,frameset,hr,iframe,ins,isindex,li,link,map,menu,noframes,noscript,object,ol,p,pre,script,table,tbody,td,tfoot,th,thead,tr,ul,h1,h2,h3,h4,h5,h6".split(","),inlineLevel:"a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var".split(",")},a={p:"span",ul:"li",ol:"li",table:"tr",tr:"td",tbody:"tr",thead:"tr",tfoot:"tr",colgroup:"col",select:"option",optgroup:"option",audio:"source",video:"source",object:"param",map:"area"};return{resolve:function(e){return(e=(e||"").toLowerCase())in a?this.getMapping(e):this.isInlineLevel(e)?"span":"div"},getMapping:function(e){return a[e.toLowerCase()]},isInlineLevel:function(e){return this.isTypeOf(e,"inlineLevel")},isBlockLevel:function(e){return this.isTypeOf(e,"blockLevel")},isEmptyElement:function(e){return this.isTypeOf(e,"empty")},isTypeOf:function(e,t){return~i[t].indexOf(e)},addMapping:function(e,t){a[e]=t},removeMapping:function(e){e in a&&delete a[e]},addElementToCollection:function(e,t){i[t]||(i[t]=[]);var n=this.getCollection(t);~n.indexOf(e)||n.push(e)},removeElementFromCollection:function(e,t){t in i&&(i[t]=r.without(this.getCollection(t),e))},getCollection:function(e){return i[e]}}})},{"../utils/common":73}],68:[function(e,t,n){t.exports={variables:{lang:"en",locale:"en-US",charset:"UTF-8",indentation:"\t",newline:"\n"},css:{filters:"css",profile:"css",snippets:{"@i":"@import url(|);","@import":"@import url(|);","@m":"@media ${1:screen} {\n\t|\n}","@media":"@media ${1:screen} {\n\t|\n}","@f":"@font-face {\n\tfont-family:|;\n\tsrc:url(|);\n}","@f+":"@font-face {\n\tfont-family: '${1:FontName}';\n\tsrc: url('${2:FileName}.eot');\n\tsrc: url('${2:FileName}.eot?#iefix') format('embedded-opentype'),\n\t\t url('${2:FileName}.woff') format('woff'),\n\t\t url('${2:FileName}.ttf') format('truetype'),\n\t\t url('${2:FileName}.svg#${1:FontName}') format('svg');\n\tfont-style: ${3:normal};\n\tfont-weight: ${4:normal};\n}","@kf":"@-webkit-keyframes ${1:identifier} {\n\t${2:from} { ${3} }${6}\n\t${4:to} { ${5} }\n}\n@-o-keyframes ${1:identifier} {\n\t${2:from} { ${3} }${6}\n\t${4:to} { ${5} }\n}\n@-moz-keyframes ${1:identifier} {\n\t${2:from} { ${3} }${6}\n\t${4:to} { ${5} }\n}\n@keyframes ${1:identifier} {\n\t${2:from} { ${3} }${6}\n\t${4:to} { ${5} }\n}",anim:"animation:|;","anim-":"animation:${1:name} ${2:duration} ${3:timing-function} ${4:delay} ${5:iteration-count} ${6:direction} ${7:fill-mode};",animdel:"animation-delay:${1:time};",animdir:"animation-direction:${1:normal};","animdir:n":"animation-direction:normal;","animdir:r":"animation-direction:reverse;","animdir:a":"animation-direction:alternate;","animdir:ar":"animation-direction:alternate-reverse;",animdur:"animation-duration:${1:0}s;",animfm:"animation-fill-mode:${1:both};","animfm:f":"animation-fill-mode:forwards;","animfm:b":"animation-fill-mode:backwards;","animfm:bt":"animation-fill-mode:both;","animfm:bh":"animation-fill-mode:both;",animic:"animation-iteration-count:${1:1};","animic:i":"animation-iteration-count:infinite;",animn:"animation-name:${1:none};",animps:"animation-play-state:${1:running};","animps:p":"animation-play-state:paused;","animps:r":"animation-play-state:running;",animtf:"animation-timing-function:${1:linear};","animtf:e":"animation-timing-function:ease;","animtf:ei":"animation-timing-function:ease-in;","animtf:eo":"animation-timing-function:ease-out;","animtf:eio":"animation-timing-function:ease-in-out;","animtf:l":"animation-timing-function:linear;","animtf:cb":"animation-timing-function:cubic-bezier(${1:0.1}, ${2:0.7}, ${3:1.0}, ${3:0.1});",ap:"appearance:${none};","!":"!important",pos:"position:${1:relative};","pos:s":"position:static;","pos:a":"position:absolute;","pos:r":"position:relative;","pos:f":"position:fixed;",t:"top:|;","t:a":"top:auto;",r:"right:|;","r:a":"right:auto;",b:"bottom:|;","b:a":"bottom:auto;",l:"left:|;","l:a":"left:auto;",z:"z-index:|;","z:a":"z-index:auto;",fl:"float:${1:left};","fl:n":"float:none;","fl:l":"float:left;","fl:r":"float:right;",cl:"clear:${1:both};","cl:n":"clear:none;","cl:l":"clear:left;","cl:r":"clear:right;","cl:b":"clear:both;",colm:"columns:|;",colmc:"column-count:|;",colmf:"column-fill:|;",colmg:"column-gap:|;",colmr:"column-rule:|;",colmrc:"column-rule-color:|;",colmrs:"column-rule-style:|;",colmrw:"column-rule-width:|;",colms:"column-span:|;",colmw:"column-width:|;",d:"display:${1:block};","d:n":"display:none;","d:b":"display:block;","d:f":"display:flex;","d:if":"display:inline-flex;","d:i":"display:inline;","d:ib":"display:inline-block;","d:ib+":"display: inline-block;\n*display: inline;\n*zoom: 1;","d:li":"display:list-item;","d:ri":"display:run-in;","d:cp":"display:compact;","d:tb":"display:table;","d:itb":"display:inline-table;","d:tbcp":"display:table-caption;","d:tbcl":"display:table-column;","d:tbclg":"display:table-column-group;","d:tbhg":"display:table-header-group;","d:tbfg":"display:table-footer-group;","d:tbr":"display:table-row;","d:tbrg":"display:table-row-group;","d:tbc":"display:table-cell;","d:rb":"display:ruby;","d:rbb":"display:ruby-base;","d:rbbg":"display:ruby-base-group;","d:rbt":"display:ruby-text;","d:rbtg":"display:ruby-text-group;",v:"visibility:${1:hidden};","v:v":"visibility:visible;","v:h":"visibility:hidden;","v:c":"visibility:collapse;",ov:"overflow:${1:hidden};","ov:v":"overflow:visible;","ov:h":"overflow:hidden;","ov:s":"overflow:scroll;","ov:a":"overflow:auto;",ovx:"overflow-x:${1:hidden};","ovx:v":"overflow-x:visible;","ovx:h":"overflow-x:hidden;","ovx:s":"overflow-x:scroll;","ovx:a":"overflow-x:auto;",ovy:"overflow-y:${1:hidden};","ovy:v":"overflow-y:visible;","ovy:h":"overflow-y:hidden;","ovy:s":"overflow-y:scroll;","ovy:a":"overflow-y:auto;",ovs:"overflow-style:${1:scrollbar};","ovs:a":"overflow-style:auto;","ovs:s":"overflow-style:scrollbar;","ovs:p":"overflow-style:panner;","ovs:m":"overflow-style:move;","ovs:mq":"overflow-style:marquee;",zoo:"zoom:1;",zm:"zoom:1;",cp:"clip:|;","cp:a":"clip:auto;","cp:r":"clip:rect(${1:top} ${2:right} ${3:bottom} ${4:left});",bxz:"box-sizing:${1:border-box};","bxz:cb":"box-sizing:content-box;","bxz:bb":"box-sizing:border-box;",bxsh:"box-shadow:${1:inset }${2:hoff} ${3:voff} ${4:blur} ${5:color};","bxsh:r":"box-shadow:${1:inset }${2:hoff} ${3:voff} ${4:blur} ${5:spread }rgb(${6:0}, ${7:0}, ${8:0});","bxsh:ra":"box-shadow:${1:inset }${2:h} ${3:v} ${4:blur} ${5:spread }rgba(${6:0}, ${7:0}, ${8:0}, .${9:5});","bxsh:n":"box-shadow:none;",m:"margin:|;","m:a":"margin:auto;",mt:"margin-top:|;","mt:a":"margin-top:auto;",mr:"margin-right:|;","mr:a":"margin-right:auto;",mb:"margin-bottom:|;","mb:a":"margin-bottom:auto;",ml:"margin-left:|;","ml:a":"margin-left:auto;",p:"padding:|;",pt:"padding-top:|;",pr:"padding-right:|;",pb:"padding-bottom:|;",pl:"padding-left:|;",w:"width:|;","w:a":"width:auto;",h:"height:|;","h:a":"height:auto;",maw:"max-width:|;","maw:n":"max-width:none;",mah:"max-height:|;","mah:n":"max-height:none;",miw:"min-width:|;",mih:"min-height:|;",mar:"max-resolution:${1:res};",mir:"min-resolution:${1:res};",ori:"orientation:|;","ori:l":"orientation:landscape;","ori:p":"orientation:portrait;",ol:"outline:|;","ol:n":"outline:none;",olo:"outline-offset:|;",olw:"outline-width:|;","olw:tn":"outline-width:thin;","olw:m":"outline-width:medium;","olw:tc":"outline-width:thick;",ols:"outline-style:|;","ols:n":"outline-style:none;","ols:dt":"outline-style:dotted;","ols:ds":"outline-style:dashed;","ols:s":"outline-style:solid;","ols:db":"outline-style:double;","ols:g":"outline-style:groove;","ols:r":"outline-style:ridge;","ols:i":"outline-style:inset;","ols:o":"outline-style:outset;",olc:"outline-color:#${1:000};","olc:i":"outline-color:invert;",bfv:"backface-visibility:|;","bfv:h":"backface-visibility:hidden;","bfv:v":"backface-visibility:visible;",bd:"border:|;","bd+":"border:${1:1px} ${2:solid} ${3:#000};","bd:n":"border:none;",bdbk:"border-break:${1:close};","bdbk:c":"border-break:close;",bdcl:"border-collapse:|;","bdcl:c":"border-collapse:collapse;","bdcl:s":"border-collapse:separate;",bdc:"border-color:#${1:000};","bdc:t":"border-color:transparent;",bdi:"border-image:url(|);","bdi:n":"border-image:none;",bdti:"border-top-image:url(|);","bdti:n":"border-top-image:none;",bdri:"border-right-image:url(|);","bdri:n":"border-right-image:none;",bdbi:"border-bottom-image:url(|);","bdbi:n":"border-bottom-image:none;",bdli:"border-left-image:url(|);","bdli:n":"border-left-image:none;",bdci:"border-corner-image:url(|);","bdci:n":"border-corner-image:none;","bdci:c":"border-corner-image:continue;",bdtli:"border-top-left-image:url(|);","bdtli:n":"border-top-left-image:none;","bdtli:c":"border-top-left-image:continue;",bdtri:"border-top-right-image:url(|);","bdtri:n":"border-top-right-image:none;","bdtri:c":"border-top-right-image:continue;",bdbri:"border-bottom-right-image:url(|);","bdbri:n":"border-bottom-right-image:none;","bdbri:c":"border-bottom-right-image:continue;",bdbli:"border-bottom-left-image:url(|);","bdbli:n":"border-bottom-left-image:none;","bdbli:c":"border-bottom-left-image:continue;",bdf:"border-fit:${1:repeat};","bdf:c":"border-fit:clip;","bdf:r":"border-fit:repeat;","bdf:sc":"border-fit:scale;","bdf:st":"border-fit:stretch;","bdf:ow":"border-fit:overwrite;","bdf:of":"border-fit:overflow;","bdf:sp":"border-fit:space;",bdlen:"border-length:|;","bdlen:a":"border-length:auto;",bdsp:"border-spacing:|;",bds:"border-style:|;","bds:n":"border-style:none;","bds:h":"border-style:hidden;","bds:dt":"border-style:dotted;","bds:ds":"border-style:dashed;","bds:s":"border-style:solid;","bds:db":"border-style:double;","bds:dtds":"border-style:dot-dash;","bds:dtdtds":"border-style:dot-dot-dash;","bds:w":"border-style:wave;","bds:g":"border-style:groove;","bds:r":"border-style:ridge;","bds:i":"border-style:inset;","bds:o":"border-style:outset;",bdw:"border-width:|;",bdtw:"border-top-width:|;",bdrw:"border-right-width:|;",bdbw:"border-bottom-width:|;",bdlw:"border-left-width:|;",bdt:"border-top:|;",bt:"border-top:|;","bdt+":"border-top:${1:1px} ${2:solid} ${3:#000};","bdt:n":"border-top:none;",bdts:"border-top-style:|;","bdts:n":"border-top-style:none;",bdtc:"border-top-color:#${1:000};","bdtc:t":"border-top-color:transparent;",bdr:"border-right:|;",br:"border-right:|;","bdr+":"border-right:${1:1px} ${2:solid} ${3:#000};","bdr:n":"border-right:none;",bdrst:"border-right-style:|;","bdrst:n":"border-right-style:none;",bdrc:"border-right-color:#${1:000};","bdrc:t":"border-right-color:transparent;",bdb:"border-bottom:|;",bb:"border-bottom:|;","bdb+":"border-bottom:${1:1px} ${2:solid} ${3:#000};","bdb:n":"border-bottom:none;",bdbs:"border-bottom-style:|;","bdbs:n":"border-bottom-style:none;",bdbc:"border-bottom-color:#${1:000};","bdbc:t":"border-bottom-color:transparent;",bdl:"border-left:|;",bl:"border-left:|;","bdl+":"border-left:${1:1px} ${2:solid} ${3:#000};","bdl:n":"border-left:none;",bdls:"border-left-style:|;","bdls:n":"border-left-style:none;",bdlc:"border-left-color:#${1:000};","bdlc:t":"border-left-color:transparent;",bdrs:"border-radius:|;",bdtrrs:"border-top-right-radius:|;",bdtlrs:"border-top-left-radius:|;",bdbrrs:"border-bottom-right-radius:|;",bdblrs:"border-bottom-left-radius:|;",bg:"background:#${1:000};","bg+":"background:${1:#fff} url(${2}) ${3:0} ${4:0} ${5:no-repeat};","bg:n":"background:none;","bg:ie":"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='${1:x}.png',sizingMethod='${2:crop}');",bgc:"background-color:#${1:fff};","bgc:t":"background-color:transparent;",bgi:"background-image:url(|);","bgi:n":"background-image:none;",bgr:"background-repeat:|;","bgr:n":"background-repeat:no-repeat;","bgr:x":"background-repeat:repeat-x;","bgr:y":"background-repeat:repeat-y;","bgr:sp":"background-repeat:space;","bgr:rd":"background-repeat:round;",bga:"background-attachment:|;","bga:f":"background-attachment:fixed;","bga:s":"background-attachment:scroll;",bgp:"background-position:${1:0} ${2:0};",bgpx:"background-position-x:|;",bgpy:"background-position-y:|;",bgbk:"background-break:|;","bgbk:bb":"background-break:bounding-box;","bgbk:eb":"background-break:each-box;","bgbk:c":"background-break:continuous;",bgcp:"background-clip:${1:padding-box};","bgcp:bb":"background-clip:border-box;","bgcp:pb":"background-clip:padding-box;","bgcp:cb":"background-clip:content-box;","bgcp:nc":"background-clip:no-clip;",bgo:"background-origin:|;","bgo:pb":"background-origin:padding-box;","bgo:bb":"background-origin:border-box;","bgo:cb":"background-origin:content-box;",bgsz:"background-size:|;","bgsz:a":"background-size:auto;","bgsz:ct":"background-size:contain;","bgsz:cv":"background-size:cover;",c:"color:#${1:000};","c:r":"color:rgb(${1:0}, ${2:0}, ${3:0});","c:ra":"color:rgba(${1:0}, ${2:0}, ${3:0}, .${4:5});",cm:"/* |${child} */",cnt:"content:'|';","cnt:n":"content:normal;","cnt:oq":"content:open-quote;","cnt:noq":"content:no-open-quote;","cnt:cq":"content:close-quote;","cnt:ncq":"content:no-close-quote;","cnt:a":"content:attr(|);","cnt:c":"content:counter(|);","cnt:cs":"content:counters(|);",tbl:"table-layout:|;","tbl:a":"table-layout:auto;","tbl:f":"table-layout:fixed;",cps:"caption-side:|;","cps:t":"caption-side:top;","cps:b":"caption-side:bottom;",ec:"empty-cells:|;","ec:s":"empty-cells:show;","ec:h":"empty-cells:hide;",lis:"list-style:|;","lis:n":"list-style:none;",lisp:"list-style-position:|;","lisp:i":"list-style-position:inside;","lisp:o":"list-style-position:outside;",list:"list-style-type:|;","list:n":"list-style-type:none;","list:d":"list-style-type:disc;","list:c":"list-style-type:circle;","list:s":"list-style-type:square;","list:dc":"list-style-type:decimal;","list:dclz":"list-style-type:decimal-leading-zero;","list:lr":"list-style-type:lower-roman;","list:ur":"list-style-type:upper-roman;",lisi:"list-style-image:|;","lisi:n":"list-style-image:none;",q:"quotes:|;","q:n":"quotes:none;","q:ru":"quotes:'\\00AB' '\\00BB' '\\201E' '\\201C';","q:en":"quotes:'\\201C' '\\201D' '\\2018' '\\2019';",ct:"content:|;","ct:n":"content:normal;","ct:oq":"content:open-quote;","ct:noq":"content:no-open-quote;","ct:cq":"content:close-quote;","ct:ncq":"content:no-close-quote;","ct:a":"content:attr(|);","ct:c":"content:counter(|);","ct:cs":"content:counters(|);",coi:"counter-increment:|;",cor:"counter-reset:|;",va:"vertical-align:${1:top};","va:sup":"vertical-align:super;","va:t":"vertical-align:top;","va:tt":"vertical-align:text-top;","va:m":"vertical-align:middle;","va:bl":"vertical-align:baseline;","va:b":"vertical-align:bottom;","va:tb":"vertical-align:text-bottom;","va:sub":"vertical-align:sub;",ta:"text-align:${1:left};","ta:l":"text-align:left;","ta:c":"text-align:center;","ta:r":"text-align:right;","ta:j":"text-align:justify;","ta-lst":"text-align-last:|;","tal:a":"text-align-last:auto;","tal:l":"text-align-last:left;","tal:c":"text-align-last:center;","tal:r":"text-align-last:right;",td:"text-decoration:${1:none};","td:n":"text-decoration:none;","td:u":"text-decoration:underline;","td:o":"text-decoration:overline;","td:l":"text-decoration:line-through;",te:"text-emphasis:|;","te:n":"text-emphasis:none;","te:ac":"text-emphasis:accent;","te:dt":"text-emphasis:dot;","te:c":"text-emphasis:circle;","te:ds":"text-emphasis:disc;","te:b":"text-emphasis:before;","te:a":"text-emphasis:after;",th:"text-height:|;","th:a":"text-height:auto;","th:f":"text-height:font-size;","th:t":"text-height:text-size;","th:m":"text-height:max-size;",ti:"text-indent:|;","ti:-":"text-indent:-9999px;",tj:"text-justify:|;","tj:a":"text-justify:auto;","tj:iw":"text-justify:inter-word;","tj:ii":"text-justify:inter-ideograph;","tj:ic":"text-justify:inter-cluster;","tj:d":"text-justify:distribute;","tj:k":"text-justify:kashida;","tj:t":"text-justify:tibetan;",tov:"text-overflow:${ellipsis};","tov:e":"text-overflow:ellipsis;","tov:c":"text-overflow:clip;",to:"text-outline:|;","to+":"text-outline:${1:0} ${2:0} ${3:#000};","to:n":"text-outline:none;",tr:"text-replace:|;","tr:n":"text-replace:none;",tt:"text-transform:${1:uppercase};","tt:n":"text-transform:none;","tt:c":"text-transform:capitalize;","tt:u":"text-transform:uppercase;","tt:l":"text-transform:lowercase;",tw:"text-wrap:|;","tw:n":"text-wrap:normal;","tw:no":"text-wrap:none;","tw:u":"text-wrap:unrestricted;","tw:s":"text-wrap:suppress;",tsh:"text-shadow:${1:hoff} ${2:voff} ${3:blur} ${4:#000};","tsh:r":"text-shadow:${1:h} ${2:v} ${3:blur} rgb(${4:0}, ${5:0}, ${6:0});","tsh:ra":"text-shadow:${1:h} ${2:v} ${3:blur} rgba(${4:0}, ${5:0}, ${6:0}, .${7:5});","tsh+":"text-shadow:${1:0} ${2:0} ${3:0} ${4:#000};","tsh:n":"text-shadow:none;",trf:"transform:|;","trf:skx":"transform: skewX(${1:angle});","trf:sky":"transform: skewY(${1:angle});","trf:sc":"transform: scale(${1:x}, ${2:y});","trf:scx":"transform: scaleX(${1:x});","trf:scy":"transform: scaleY(${1:y});","trf:scz":"transform: scaleZ(${1:z});","trf:sc3":"transform: scale3d(${1:x}, ${2:y}, ${3:z});","trf:r":"transform: rotate(${1:angle});","trf:rx":"transform: rotateX(${1:angle});","trf:ry":"transform: rotateY(${1:angle});","trf:rz":"transform: rotateZ(${1:angle});","trf:t":"transform: translate(${1:x}, ${2:y});","trf:tx":"transform: translateX(${1:x});","trf:ty":"transform: translateY(${1:y});","trf:tz":"transform: translateZ(${1:z});","trf:t3":"transform: translate3d(${1:tx}, ${2:ty}, ${3:tz});",trfo:"transform-origin:|;",trfs:"transform-style:${1:preserve-3d};",trs:"transition:${1:prop} ${2:time};",trsde:"transition-delay:${1:time};",trsdu:"transition-duration:${1:time};",trsp:"transition-property:${1:prop};",trstf:"transition-timing-function:${1:tfunc};",lh:"line-height:|;",whs:"white-space:|;","whs:n":"white-space:normal;","whs:p":"white-space:pre;","whs:nw":"white-space:nowrap;","whs:pw":"white-space:pre-wrap;","whs:pl":"white-space:pre-line;",whsc:"white-space-collapse:|;","whsc:n":"white-space-collapse:normal;","whsc:k":"white-space-collapse:keep-all;","whsc:l":"white-space-collapse:loose;","whsc:bs":"white-space-collapse:break-strict;","whsc:ba":"white-space-collapse:break-all;",wob:"word-break:|;","wob:n":"word-break:normal;","wob:k":"word-break:keep-all;","wob:ba":"word-break:break-all;",wos:"word-spacing:|;",wow:"word-wrap:|;","wow:nm":"word-wrap:normal;","wow:n":"word-wrap:none;","wow:u":"word-wrap:unrestricted;","wow:s":"word-wrap:suppress;","wow:b":"word-wrap:break-word;",wm:"writing-mode:${1:lr-tb};","wm:lrt":"writing-mode:lr-tb;","wm:lrb":"writing-mode:lr-bt;","wm:rlt":"writing-mode:rl-tb;","wm:rlb":"writing-mode:rl-bt;","wm:tbr":"writing-mode:tb-rl;","wm:tbl":"writing-mode:tb-lr;","wm:btl":"writing-mode:bt-lr;","wm:btr":"writing-mode:bt-rl;",lts:"letter-spacing:|;","lts-n":"letter-spacing:normal;",f:"font:|;","f+":"font:${1:1em} ${2:Arial,sans-serif};",fw:"font-weight:|;","fw:n":"font-weight:normal;","fw:b":"font-weight:bold;","fw:br":"font-weight:bolder;","fw:lr":"font-weight:lighter;",fs:"font-style:${italic};","fs:n":"font-style:normal;","fs:i":"font-style:italic;","fs:o":"font-style:oblique;",fv:"font-variant:|;","fv:n":"font-variant:normal;","fv:sc":"font-variant:small-caps;",fz:"font-size:|;",fza:"font-size-adjust:|;","fza:n":"font-size-adjust:none;",ff:"font-family:|;","ff:s":"font-family:serif;","ff:ss":"font-family:sans-serif;","ff:c":"font-family:cursive;","ff:f":"font-family:fantasy;","ff:m":"font-family:monospace;","ff:a":'font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;',"ff:t":'font-family: "Times New Roman", Times, Baskerville, Georgia, serif;',"ff:v":"font-family: Verdana, Geneva, sans-serif;",fef:"font-effect:|;","fef:n":"font-effect:none;","fef:eg":"font-effect:engrave;","fef:eb":"font-effect:emboss;","fef:o":"font-effect:outline;",fem:"font-emphasize:|;",femp:"font-emphasize-position:|;","femp:b":"font-emphasize-position:before;","femp:a":"font-emphasize-position:after;",fems:"font-emphasize-style:|;","fems:n":"font-emphasize-style:none;","fems:ac":"font-emphasize-style:accent;","fems:dt":"font-emphasize-style:dot;","fems:c":"font-emphasize-style:circle;","fems:ds":"font-emphasize-style:disc;",fsm:"font-smooth:|;","fsm:a":"font-smooth:auto;","fsm:n":"font-smooth:never;","fsm:aw":"font-smooth:always;",fst:"font-stretch:|;","fst:n":"font-stretch:normal;","fst:uc":"font-stretch:ultra-condensed;","fst:ec":"font-stretch:extra-condensed;","fst:c":"font-stretch:condensed;","fst:sc":"font-stretch:semi-condensed;","fst:se":"font-stretch:semi-expanded;","fst:e":"font-stretch:expanded;","fst:ee":"font-stretch:extra-expanded;","fst:ue":"font-stretch:ultra-expanded;",op:"opacity:|;","op+":"opacity: $1;\nfilter: alpha(opacity=$2);","op:ie":"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);","op:ms":"-ms-filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=100)';",rsz:"resize:|;","rsz:n":"resize:none;","rsz:b":"resize:both;","rsz:h":"resize:horizontal;","rsz:v":"resize:vertical;",cur:"cursor:${pointer};","cur:a":"cursor:auto;","cur:d":"cursor:default;","cur:c":"cursor:crosshair;","cur:ha":"cursor:hand;","cur:he":"cursor:help;","cur:m":"cursor:move;","cur:p":"cursor:pointer;","cur:t":"cursor:text;",fxd:"flex-direction:|;","fxd:r":"flex-direction:row;","fxd:rr":"flex-direction:row-reverse;","fxd:c":"flex-direction:column;","fxd:cr":"flex-direction:column-reverse;",fxw:"flex-wrap: |;","fxw:n":"flex-wrap:nowrap;","fxw:w":"flex-wrap:wrap;","fxw:wr":"flex-wrap:wrap-reverse;",fxf:"flex-flow:|;",jc:"justify-content:|;","jc:fs":"justify-content:flex-start;","jc:fe":"justify-content:flex-end;","jc:c":"justify-content:center;","jc:sb":"justify-content:space-between;","jc:sa":"justify-content:space-around;",ai:"align-items:|;","ai:fs":"align-items:flex-start;","ai:fe":"align-items:flex-end;","ai:c":"align-items:center;","ai:b":"align-items:baseline;","ai:s":"align-items:stretch;",ac:"align-content:|;","ac:fs":"align-content:flex-start;","ac:fe":"align-content:flex-end;","ac:c":"align-content:center;","ac:sb":"align-content:space-between;","ac:sa":"align-content:space-around;","ac:s":"align-content:stretch;",ord:"order:|;",fxg:"flex-grow:|;",fxsh:"flex-shrink:|;",fxb:"flex-basis:|;",fx:"flex:|;",as:"align-self:|;","as:a":"align-self:auto;","as:fs":"align-self:flex-start;","as:fe":"align-self:flex-end;","as:c":"align-self:center;","as:b":"align-self:baseline;","as:s":"align-self:stretch;",pgbb:"page-break-before:|;","pgbb:au":"page-break-before:auto;","pgbb:al":"page-break-before:always;","pgbb:l":"page-break-before:left;","pgbb:r":"page-break-before:right;",pgbi:"page-break-inside:|;","pgbi:au":"page-break-inside:auto;","pgbi:av":"page-break-inside:avoid;",pgba:"page-break-after:|;","pgba:au":"page-break-after:auto;","pgba:al":"page-break-after:always;","pgba:l":"page-break-after:left;","pgba:r":"page-break-after:right;",orp:"orphans:|;",us:"user-select:${none};",wid:"widows:|;",wfsm:"-webkit-font-smoothing:${antialiased};","wfsm:a":"-webkit-font-smoothing:antialiased;","wfsm:s":"-webkit-font-smoothing:subpixel-antialiased;","wfsm:sa":"-webkit-font-smoothing:subpixel-antialiased;","wfsm:n":"-webkit-font-smoothing:none;"}},html:{filters:"html",profile:"html",snippets:{"!!!":"<!DOCTYPE html>","!!!4t":'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">',"!!!4s":'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">',"!!!xt":'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',"!!!xs":'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',"!!!xxs":'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">',c:"\x3c!-- |${child} --\x3e","cc:ie6":"\x3c!--[if lte IE 6]>\n\t${child}|\n<![endif]--\x3e","cc:ie":"\x3c!--[if IE]>\n\t${child}|\n<![endif]--\x3e","cc:noie":"\x3c!--[if !IE]>\x3c!--\x3e\n\t${child}|\n\x3c!--<![endif]--\x3e"},abbreviations:{"!":"html:5",a:'<a href="">',"a:link":'<a href="http://|">',"a:mail":'<a href="mailto:|">',abbr:'<abbr title="">',"acr|acronym":'<acronym title="">',base:'<base href="" />',basefont:"<basefont/>",br:"<br/>",frame:"<frame/>",hr:"<hr/>",bdo:'<bdo dir="">',"bdo:r":'<bdo dir="rtl">',"bdo:l":'<bdo dir="ltr">',col:"<col/>",link:'<link rel="stylesheet" href="" />',"link:css":'<link rel="stylesheet" href="${1:style}.css" />',"link:print":'<link rel="stylesheet" href="${1:print}.css" media="print" />',"link:favicon":'<link rel="shortcut icon" type="image/x-icon" href="${1:favicon.ico}" />',"link:touch":'<link rel="apple-touch-icon" href="${1:favicon.png}" />',"link:rss":'<link rel="alternate" type="application/rss+xml" title="RSS" href="${1:rss.xml}" />',"link:atom":'<link rel="alternate" type="application/atom+xml" title="Atom" href="${1:atom.xml}" />',"link:im|link:import":'<link rel="import" href="${1:component}.html" />',meta:"<meta/>","meta:utf":'<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />',"meta:win":'<meta http-equiv="Content-Type" content="text/html;charset=windows-1251" />',"meta:vp":'<meta name="viewport" content="width=${1:device-width}, user-scalable=${2:no}, initial-scale=${3:1.0}, maximum-scale=${4:1.0}, minimum-scale=${5:1.0}" />',"meta:compat":'<meta http-equiv="X-UA-Compatible" content="${1:IE=7}" />',style:"<style>",script:'<script !src="">',"script:src":'<script src="">',img:'<img src="" alt="" />',"img:s|img:srcset":'<img srcset="" src="" alt="" />',"img:z|img:sizes":'<img sizes="" srcset="" src="" alt="" />',picture:"<picture>","src|source":"<source/>","src:sc|source:src":'<source src="" type=""/>',"src:s|source:srcset":'<source srcset=""/>',"src:m|source:media":'<source media="(${1:min-width: })" srcset=""/>',"src:t|source:type":'<source srcset="|" type="${1:image/}"/>',"src:z|source:sizes":'<source sizes="" srcset=""/>',"src:mt|source:media:type":'<source media="(${1:min-width: })" srcset="" type="${2:image/}"/>',"src:mz|source:media:sizes":'<source media="(${1:min-width: })" sizes="" srcset=""/>',"src:zt|source:sizes:type":'<source sizes="" srcset="" type="${1:image/}"/>',iframe:'<iframe src="" frameborder="0">',embed:'<embed src="" type="" />',object:'<object data="" type="">',param:'<param name="" value="" />',map:'<map name="">',area:'<area shape="" coords="" href="" alt="" />',"area:d":'<area shape="default" href="" alt="" />',"area:c":'<area shape="circle" coords="" href="" alt="" />',"area:r":'<area shape="rect" coords="" href="" alt="" />',"area:p":'<area shape="poly" coords="" href="" alt="" />',form:'<form action="">',"form:get":'<form action="" method="get">',"form:post":'<form action="" method="post">',label:'<label for="">',input:'<input type="${1:text}" />',inp:'<input type="${1:text}" name="" id="" />',"input:h|input:hidden":"input[type=hidden name]","input:t|input:text":"inp","input:search":"inp[type=search]","input:email":"inp[type=email]","input:url":"inp[type=url]","input:p|input:password":"inp[type=password]","input:datetime":"inp[type=datetime]","input:date":"inp[type=date]","input:datetime-local":"inp[type=datetime-local]","input:month":"inp[type=month]","input:week":"inp[type=week]","input:time":"inp[type=time]","input:tel":"inp[type=tel]","input:number":"inp[type=number]","input:color":"inp[type=color]","input:c|input:checkbox":"inp[type=checkbox]","input:r|input:radio":"inp[type=radio]","input:range":"inp[type=range]","input:f|input:file":"inp[type=file]","input:s|input:submit":'<input type="submit" value="" />',"input:i|input:image":'<input type="image" src="" alt="" />',"input:b|input:button":'<input type="button" value="" />',isindex:"<isindex/>","input:reset":"input:button[type=reset]",select:'<select name="" id="">',"select:d|select:disabled":"select[disabled.]","opt|option":'<option value="">',textarea:'<textarea name="" id="" cols="${1:30}" rows="${2:10}">',marquee:'<marquee behavior="" direction="">',"menu:c|menu:context":"menu[type=context]>","menu:t|menu:toolbar":"menu[type=toolbar]>",video:'<video src="">',audio:'<audio src="">',"html:xml":'<html xmlns="http://www.w3.org/1999/xhtml">',keygen:"<keygen/>",command:"<command/>","btn:s|button:s|button:submit":"button[type=submit]","btn:r|button:r|button:reset":"button[type=reset]","btn:d|button:d|button:disabled":"button[disabled.]","fst:d|fset:d|fieldset:d|fieldset:disabled":"fieldset[disabled.]",bq:"blockquote",fig:"figure",figc:"figcaption",pic:"picture",ifr:"iframe",emb:"embed",obj:"object",cap:"caption",colg:"colgroup",fst:"fieldset",btn:"button",optg:"optgroup",tarea:"textarea",leg:"legend",sect:"section",art:"article",hdr:"header",ftr:"footer",adr:"address",dlg:"dialog",str:"strong",prog:"progress",mn:"main",tem:"template",fset:"fieldset",datag:"datagrid",datal:"datalist",kg:"keygen",out:"output",det:"details",cmd:"command",doc:"html>(head>meta[charset=${charset}]+title{${1:Document}})+body",doc4:'html>(head>meta[http-equiv="Content-Type" content="text/html;charset=${charset}"]+title{${1:Document}})+body',"ri:d|ri:dpr":"img:s","ri:v|ri:viewport":"img:z","ri:a|ri:art":"pic>src:m+img","ri:t|ri:type":"pic>src:t+img","html:4t":"!!!4t+doc4[lang=${lang}]","html:4s":"!!!4s+doc4[lang=${lang}]","html:xt":"!!!xt+doc4[xmlns=http://www.w3.org/1999/xhtml xml:lang=${lang}]","html:xs":"!!!xs+doc4[xmlns=http://www.w3.org/1999/xhtml xml:lang=${lang}]","html:xxs":"!!!xxs+doc4[xmlns=http://www.w3.org/1999/xhtml xml:lang=${lang}]","html:5":"!!!+doc[lang=${lang}]","ol+":"ol>li","ul+":"ul>li","dl+":"dl>dt+dd","map+":"map>area","table+":"table>tr>td","colgroup+":"colgroup>col","colg+":"colgroup>col","tr+":"tr>td","select+":"select>option","optgroup+":"optgroup>option","optg+":"optgroup>option","pic+":"picture>source:srcset+img"}},xml:{extends:"html",profile:"xml",filters:"html"},xsl:{extends:"html",profile:"xml",filters:"html, xsl",abbreviations:{"tm|tmatch":'<xsl:template match="" mode="">',"tn|tname":'<xsl:template name="">',call:'<xsl:call-template name=""/>',ap:'<xsl:apply-templates select="" mode=""/>',api:"<xsl:apply-imports/>",imp:'<xsl:import href=""/>',inc:'<xsl:include href=""/>',ch:"<xsl:choose>","wh|xsl:when":'<xsl:when test="">',ot:"<xsl:otherwise>",if:'<xsl:if test="">',par:'<xsl:param name="">',pare:'<xsl:param name="" select=""/>',var:'<xsl:variable name="">',vare:'<xsl:variable name="" select=""/>',wp:'<xsl:with-param name="" select=""/>',key:'<xsl:key name="" match="" use=""/>',elem:'<xsl:element name="">',attr:'<xsl:attribute name="">',attrs:'<xsl:attribute-set name="">',cp:'<xsl:copy select=""/>',co:'<xsl:copy-of select=""/>',val:'<xsl:value-of select=""/>',"for|each":'<xsl:for-each select="">',tex:"<xsl:text></xsl:text>",com:"<xsl:comment>",msg:'<xsl:message terminate="no">',fall:"<xsl:fallback>",num:'<xsl:number value=""/>',nam:'<namespace-alias stylesheet-prefix="" result-prefix=""/>',pres:'<xsl:preserve-space elements=""/>',strip:'<xsl:strip-space elements=""/>',proc:'<xsl:processing-instruction name="">',sort:'<xsl:sort select="" order=""/>',"choose+":"xsl:choose>xsl:when+xsl:otherwise",xsl:"!!!+xsl:stylesheet[version=1.0 xmlns:xsl=http://www.w3.org/1999/XSL/Transform]>{\n|}"},snippets:{"!!!":'<?xml version="1.0" encoding="UTF-8"?>'}},haml:{filters:"haml",extends:"html",profile:"xml"},jade:{filters:"jade",extends:"html",profile:"xml"},jsx:{filters:"jsx, html",extends:"html",profile:"xml"},slim:{filters:"slim",extends:"html",profile:"xml"},scss:{extends:"css"},sass:{extends:"css"},less:{extends:"css"},stylus:{extends:"css"},styl:{extends:"stylus"}}},{}],69:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../assets/elements"),i=e("../assets/tabStops"),a=e("../utils/common"),o=e("../resolver/tagName");return{isUnary:function(e){if(e.children.length||e._text||this.isSnippet(e))return!1;var t=e.data("resource");return t&&t.is_empty},isInline:function(e){return e.isTextNode()||!e.name()||o.isInlineLevel(e.name())},isBlock:function(e){return this.isSnippet(e)||!this.isInline(e)},isSnippet:function(e){return r.is(e.data("resource"),"snippet")},hasTagsInContent:function(e){return a.matchesTag(e.content)},hasBlockChildren:function(e){return this.hasTagsInContent(e)&&this.isBlock(e)||e.children.some(function(e){return this.isBlock(e)},this)},insertChildContent:function(e,t,n){n=a.extend({keepVariable:!0,appendIfNoChild:!0},n||{});var r=!1;return e=i.replaceVariables(e,function(i,o,s){var y=i;return"child"==o&&(y=a.padString(t,a.getLinePaddingFromPosition(e,s.start)),r=!0,n.keepVariable&&(y+=i)),y}),!r&&n.appendIfNoChild&&(e+=t),e}}})},{"../assets/elements":24,"../assets/tabStops":33,"../resolver/tagName":67,"../utils/common":73}],70:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("./common"),i=e("./cssSections"),a=e("../parser/abbreviation"),o=e("../assets/htmlMatcher"),s=e("../editTree/xml"),y=e("../assets/range"),l=e("../assets/resources");return{mimeTypes:{gif:"image/gif",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",svg:"image/svg+xml",html:"text/html",htm:"text/html"},extractAbbreviation:function(e){for(var t=e.length,n=-1,i=0,o=0,s=0;;){if(--t<0){n=0;break}var y=e.charAt(t);if("]"==y)o++;else if("["==y){if(!o){n=t+1;break}o--}else if("}"==y)s++;else if("{"==y){if(!s){n=t+1;break}s--}else if(")"==y)i++;else if("("==y){if(!i){n=t+1;break}i--}else{if(o||s)continue;if(!a.isAllowedChar(y)||">"==y&&r.endsWithTag(e.substring(0,t+1))){n=t+1;break}}}return-1==n||s||o||i?"":e.substring(n).replace(/^[\*\+\>\^]+/,"")},getImageSize:function(e){var t=0,n=function(){return e.charCodeAt(t++)};if("PNG\r\n\n"===e.substr(0,8))return t=e.indexOf("IHDR")+4,{width:n()<<24|n()<<16|n()<<8|n(),height:n()<<24|n()<<16|n()<<8|n()};if("GIF8"===e.substr(0,4))return t=6,{width:n()|n()<<8,height:n()|n()<<8};if("ÿØ"===e.substr(0,2)){t=2;for(var r=e.length;t<r;){if(255!=n())return;var i=n();if(218==i)break;var a=n()<<8|n();if(!(!(i>=192&&i<=207)||4&i||8&i))return t+=1,{height:n()<<8|n(),width:n()<<8|n()};t+=a-2}}},captureContext:function(e,t){if(e.getSyntax()in{html:1,xml:1,xsl:1}){var n=e.getContent();void 0===t&&(t=e.getCaretPos());var r=o.find(n,t);if(r&&"tag"==r.type){var i=r.open,a={name:i.name,attributes:[],match:r},y=s.parse(i.range.substring(n));return y&&(a.attributes=y.getAll().map(function(e){return{name:e.name(),value:e.value()}})),a}}return null},findExpressionBounds:function(e,t){for(var n=String(e.getContent()),r=n.length,i=e.getCaretPos()-1,a=i+1;i>=0&&t(n.charAt(i),i,n);)i--;for(;a<r&&t(n.charAt(a),a,n);)a++;if(a>i)return y([++i,a])},compoundUpdate:function(e,t){if(t){var n=e.getSelectionRange();return e.replaceContent(t.data,t.start,t.end,!0),e.createSelection(t.caret,t.caret+n.end-n.start),!0}return!1},detectSyntax:function(e,t){var n=t||"html";return l.hasSyntax(n)||(n="html"),"html"==n&&(this.isStyle(e)||this.isInlineCSS(e))&&(n="css"),"styl"==n&&(n="stylus"),n},detectProfile:function(e){var t=e.getSyntax(),n=l.findItem(t,"profile");if(n)return n;switch(t){case"xml":case"xsl":return"xml";case"css":if(this.isInlineCSS(e))return"line";break;case"html":return(n=l.getVariable("profile"))||(n=this.isXHTML(e)?"xhtml":"html"),n}return"xhtml"},isXHTML:function(e){return-1!=e.getContent().search(/<!DOCTYPE[^>]+XHTML/i)},isStyle:function(e){return!!i.styleTagRange(e.getContent(),e.getCaretPos())},isSupportedCSS:function(e){return"css"==e||"less"==e||"scss"==e},isInlineCSS:function(e){return!!i.styleAttrRange(e.getContent(),e.getCaretPos())}}})},{"../assets/htmlMatcher":26,"../assets/range":30,"../assets/resources":31,"../editTree/xml":38,"../parser/abbreviation":55,"./common":73,"./cssSections":74}],71:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return{encode:function(e){for(var t,n,i,a,o,s,y,l,c,p=[],u=0,f=e.length,d=r;u<f;)a=(t=255&e.charCodeAt(u++))>>2,o=(3&t)<<4|(n=255&(l=e.charCodeAt(u++)))>>4,s=(15&n)<<2|(i=255&(c=e.charCodeAt(u++)))>>6,y=63&i,isNaN(l)?s=y=64:isNaN(c)&&(y=64),p.push(d.charAt(a)+d.charAt(o)+d.charAt(s)+d.charAt(y));return p.join("")},decode:function(e){var t,n,i,a,o,s,y=0,l=0,c=[],p=r,u=e.length;if(!e)return e;e+="";do{t=(s=p.indexOf(e.charAt(y++))<<18|p.indexOf(e.charAt(y++))<<12|(a=p.indexOf(e.charAt(y++)))<<6|(o=p.indexOf(e.charAt(y++))))>>16&255,n=s>>8&255,i=255&s,c[l++]=64==a?String.fromCharCode(t):64==o?String.fromCharCode(t,n):String.fromCharCode(t,n,i)}while(y<u);return c.join("")}}})},{}],72:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("./common"),i=(e("../assets/range"),e("../assets/stringStream")),a=/\/\*|\/\//;return{strip:function(e){if(!a.test(e))return e;for(var t,n,o=i(e),s=[];t=o.next();)if("/"===t){if("*"===(n=o.peek()))o.start=o.pos-1,o.skipTo("*/")?o.pos+=2:o.skipToEnd(),s.push([o.start,o.pos]);else if("/"===n){for(o.start=o.pos-1;(n=o.next())&&"\n"!==n&&"\r"!=n;);s.push([o.start,o.pos])}}else o.skipQuoted();return r.replaceWith(e,s," ")}}})},{"../assets/range":30,"../assets/stringStream":32,"./common":73}],73:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../assets/range"),i="${0}";return{reTag:/<\/?[\w:\-]+(?:\s+[\w\-:]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*\s*(\/?)>$/,defaultSyntax:function(){return"html"},defaultProfile:function(){return"plain"},endsWithTag:function(e){return this.reTag.test(e)},isNumeric:function(e){return"string"==typeof e&&(e=e.charCodeAt(0)),e&&e>47&&e<58},trim:String.prototype.trim?function(e){return e?e.trim():""}:function(e){return(e||"").replace(/^\s+|\s+$/g,"")},splitByLines:function(e,t){var n=(e||"").replace(/\r\n/g,"\n").replace(/\n\r/g,"\n").replace(/\r/g,"\n").replace(/\n/g,"\n").split("\n");return t&&(n=n.filter(function(e){return e.length&&!!this.trim(e)},this)),n},repeatString:function(e,t){for(var n="";t--;)n+=e;return n},getStringsPads:function(e){var t=e.map(function(e){return"string"==typeof e?e.length:+e}),n=t.reduce(function(e,t){return void 0===e?t:Math.max(e,t)});return t.map(function(e){var t=n-e;return t?this.repeatString(" ",t):""},this)},padString:function(e,t){var n=[],r=this.splitByLines(e);n.push(r[0]);for(var i=1;i<r.length;i++)n.push("\n"+t+r[i]);return n.join("")},zeroPadString:function(e,t){for(var n="",r=e.length;t>r++;)n+="0";return n+e},unindentString:function(e,t){for(var n,r=this.splitByLines(e),i=t.length,a=0,o=r.length;a<o;a++)(n=r[a]).substr(0,i)===t&&(r[a]=n.substr(i));return r.join("\n")},replaceUnescapedSymbol:function(e,t,n){for(var r=0,i=e.length,a=t.length,o=0;r<i;)if("\\"==e.charAt(r))r+=a+1;else if(e.substr(r,a)==t){var s=a;o++;var y=n;if("function"==typeof n){var l=n(e,t,r,o);l?(s=l[0].length,y=l[1]):y=!1}if(!1===y){r++;continue}i=(e=e.substring(0,r)+y+e.substring(r+s)).length,r+=y.length}else r++;return e},replaceCounter:function(e,t,n){e=String(e),t=String(t),/^\-?\d+$/.test(t)&&(t=+t);var r=this;return this.replaceUnescapedSymbol(e,"$",function(e,i,a,o){if("{"==e.charAt(a+1)||r.isNumeric(e.charAt(a+1)))return!1;for(var s=a+1;"$"==e.charAt(s)&&"{"!=e.charAt(s+1);)s++;var y,l=s-a,c=0,p=!1;return(y=e.substr(s).match(/^@(\-?)(\d*)/))&&(s+=y[0].length,y[1]&&(p=!0),c=parseInt(y[2]||1,10)-1),p&&n&&"number"==typeof t&&(t=n-t+1),t+=c,[e.substring(a,s),r.zeroPadString(t+"",l)]})},matchesTag:function(e){return this.reTag.test(e||"")},escapeText:function(e){return e.replace(/([\$\\])/g,"\\$1")},unescapeText:function(e){return e.replace(/\\(.)/g,"$1")},getCaretPlaceholder:function(){return"function"==typeof i?i.apply(this,arguments):i},setCaretPlaceholder:function(e){i=e},getLinePadding:function(e){return(e.match(/^(\s+)/)||[""])[0]},getLinePaddingFromPosition:function(e,t){var n=this.findNewlineBounds(e,t);return this.getLinePadding(n.substring(e))},escapeForRegexp:function(e){var t=new RegExp("[.*+?|()\\[\\]{}\\\\]","g");return e.replace(t,"\\$&")},prettifyNumber:function(e,t){return e.toFixed(void 0===t?2:t).replace(/\.?0+$/,"")},replaceSubstring:function(e,t,n,r){return"object"==typeof n&&"end"in n&&(r=n.end,n=n.start),"string"==typeof r&&(r=n+r.length),void 0===r&&(r=n),n<0||n>e.length?e:e.substring(0,n)+t+e.substring(r)},replaceWith:function(e,t,n,r){if(t.length){var i=0,a=[];t.forEach(function(t){var o=r?n:this.repeatString(n,t[1]-t[0]);a.push(e.substring(i,t[0]),o),i=t[1]},this),e=a.join("")+e.substring(i)}return e},narrowToNonSpace:function(e,t,n){for(var i=r.create(t,n),a=/[\s\n\r\u00a0]/;i.start<i.end&&a.test(e.charAt(i.start));)i.start++;for(;i.end>i.start;)if(i.end--,!a.test(e.charAt(i.end))){i.end++;break}return i},findNewlineBounds:function(e,t){for(var n,i=e.length,a=0,o=i-1,s=t-1;s>0;s--)if("\n"==(n=e.charAt(s))||"\r"==n){a=s+1;break}for(var y=t;y<i;y++)if("\n"==(n=e.charAt(y))||"\r"==n){o=y;break}return r.create(a,o-a)},deepMerge:function(){var e,t,n,r,i,a,o=arguments[0]||{},s=1,y=arguments.length;for("object"!=typeof o&&"function"!=typeof o&&(o={});s<y;s++)if(null!==(e=arguments[s]))for(t in e)n=o[t],o!==(r=e[t])&&(r&&("object"==typeof r||(i=Array.isArray(r)))?(i?(i=!1,a=n&&Array.isArray(n)?n:[]):a=n&&"object"==typeof n?n:{},o[t]=this.deepMerge(a,r)):void 0!==r&&(o[t]=r));return o},parseJSON:function(e){if("object"==typeof e)return e;try{return JSON.parse(e)}catch(e){return{}}},unique:function(e,t){var n=[];return e.filter(function(e){var r=t?t(e):e;if(n.indexOf(r)<0)return n.push(r),!0})},pick:function(e){var t={},n=this.toArray(arguments,1);return Object.keys(e).forEach(function(r){~n.indexOf(r)&&(t[r]=e[r])}),t},find:function(e,t,n){var r;return n&&(t=t.bind(n)),Array.isArray(e)?e.some(function(e,n){if(t(e,n))return r=e}):Object.keys(e).some(function(n,i){if(t(e[n],i))return r=e[n]}),r},toArray:function(e,t){return Array.isArray(e)&&!t?e:Array.prototype.slice.call(e,t||0)},extend:function(e){for(var t,n=1,r=arguments.length;n<r;n++)(t=arguments[n])&&Object.keys(t).forEach(function(n){e[n]=t[n]});return e},defaults:function(e){for(var t,n=1,r=arguments.length;n<r;n++)(t=arguments[n])&&Object.keys(t).forEach(function(n){n in e||(e[n]=t[n])});return e},flatten:function(e,t){t=t||[];var n=this;return n.toArray(e).forEach(function(e){Array.isArray(e)?n.flatten(e,t):t.push(e)}),t},clone:function(e){return Array.isArray(e)?e.slice(0):this.extend({},e)},without:function(e){return this.toArray(arguments,1).forEach(function(t){for(var n;~(n=e.indexOf(t));)e.splice(n,1)}),e},last:function(e){return e[e.length-1]}}})},{"../assets/range":30}],74:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){return'"'==e||"'"==e}function i(e,t){this.id="s"+(p=(p+1)%u),this.parent=null,this.nextSibling=null,this.previousSibling=null,this._source=t,this._name=null,this._content=null,this._data={},!e&&t&&(e=s(0,t)),this.range=e,this.children=[]}var a=e("./common"),o=e("./comments"),s=e("../assets/range"),y=e("../assets/stringStream"),l=(e("../parser/css"),e("../assets/htmlMatcher")),c=e("../editTree/xml"),p=1,u=1e6,f=/^(\s*).+?(\s*)$/,d=/\s/g;return i.prototype={addChild:function(e){e instanceof i||(e=new i(e));var t=a.last(this.children);return t&&(t.nextSibling=e,e.previousSibling=t),e.parent=this,this.children.push(e),e},root:function(){var e=this;do{if(!e.parent)return e}while(e=e.parent);return e},source:function(){return this._source||this.root()._source},name:function(){if(null===this._name){var e=this.nameRange();e&&(this._name=e.substring(this.source()))}return this._name},nameRange:function(){if(this.range&&"_selectorEnd"in this.range)return s.create2(this.range.start,this.range._selectorEnd)},matchDeep:function(e){if(!this.range.inside(e))return null;for(var t,n=0,r=this.children.length;n<r;n++)if(t=this.children[n].matchDeep(e))return t;return this.parent?this:null},allRanges:function(){var e=[];return this.parent&&e.push(this.range),this.children.forEach(function(t){e=e.concat(t.allRanges())}),e},data:function(e,t){return void 0!==t&&(this._data[e]=t),this._data[e]},stringify:function(e){e=e||"";var t="";return this.children.forEach(function(n){t+=e+n.name().replace(/\n/g,"\\n")+"\n",t+=n.stringify(e+"--")}),t},content:function(){if(null!==this._content)return this._content;if(!(this.range&&"_contentStart"in this.range))return"";var e=s.create2(this.range._contentStart+1,this.range.end-1),t=this.source(),n=e.start,r="";return this.children.forEach(function(e){r+=t.substring(n,e.range.start),n=e.range.end}),r+=t.substring(n,e.end),this._content=a.trim(r)}},{findAllRules:function(e){e=this.sanitize(e);for(var t,n,i=y(e),o=[],l=this,c=function(t){var n=l.extractSelector(e,t.start),r=s.create2(n.start,t.end);r._selectorEnd=n.end,r._contentStart=t.start,o.push(r)};n=i.next();)if(r(n)){if(!i.skipString(n))break}else"{"==n&&((t=this.matchBracesRanges(e,i.pos-1)).forEach(c),t.length)&&(i.pos=a.last(t).end);return o.sort(function(e,t){return e.start-t.start})},matchBracesRanges:function(e,t,n){n&&(e=this.sanitize(e));var r=y(e);r.start=r.pos=t;for(var i,a=[],o=[];i=r.next();)if("{"==i)a.push(r.pos-1);else if("}"==i){if(!a.length)throw"Invalid source structure (check for curly braces)";if(o.push(s.create2(a.pop(),r.pos)),!a.length)return o}else r.skipQuoted();return o},extractSelector:function(e,t,n){n&&(e=this.sanitize(e));for(var r,i=function(){var n=e.charAt(t);if('"'==n||"'"==n){for(;--t>=0&&(e.charAt(t)!=n||"\\"==e.charAt(t-1)););return!0}return!1},a=t;--t>=0;)if(!i())if(")"!=(r=e.charAt(t))){if("{"==r||"}"==r||";"==r){t++;break}}else for(;--t>=0&&(i()||"("!=e.charAt(t)););t<0&&(t=0);var o=e.substring(t,a).replace(d," ").match(f);return o&&(t+=o[1].length,a-=o[2].length),s.create2(t,a)},matchEnclosingRule:function(e,t){"string"==typeof e&&(e=this.findAllRules(e));var n=e.filter(function(e){return e.inside(t)});return a.last(n)},locateRule:function(e,t,n){var r=0,i=this.styleTagRange(e,t);i&&(r=i.start,t-=i.start,e=i.substring(e));var a=this.findAllRules(e),o=this.matchEnclosingRule(a,t);if(o)return o.shift(r);for(var s=0,y=a.length;s<y;s++)if(a[s].start>t)return a[n?s-1:s].shift(r)},sanitize:function(e){e=o.strip(e);for(var t,n=y(e),i=[];t=n.next();)if(r(t))n.skipString(t);else if(("#"===t||"@"===t)&&"{"===n.peek()){if(n.start=n.pos-1,!n.skipTo("}"))throw"Invalid string interpolation at "+n.start;n.pos+=1,i.push([n.start,n.pos])}return a.replaceWith(e,i,"a")},sectionTree:function(e){var t=new i(null,e),n=this.findAllRules(e),r=t;return n.forEach(function(e){r=function(e,n){for(;n&&n.range;){if(n.range.contains(e))return n.addChild(e);n=n.parent}return t.addChild(e)}(e,r)}),t},nestedSectionsInRule:function(e){var t=e.valueRange(!0).start,n=this.findAllRules(e.valueRange().substring(e.source));return n.forEach(function(e){e.start+=t,e.end+=t,e._selectorEnd+=t,e._contentStart+=t}),n},styleTagRange:function(e,t){var n=l.tag(e,t);return n&&"style"==n.open.name.toLowerCase()&&n.innerRange.cmp(t,"lte","gte")&&n.innerRange},styleAttrRange:function(e,t){var n=c.parseFromPosition(e,t,!0);if(n){var r=n.itemFromPosition(t,!0);return r&&"style"==r.name().toLowerCase()&&r.valueRange(!0).cmp(t,"lte","gte")&&r.valueRange(!0)}},CSSSection:i}})},{"../assets/htmlMatcher":26,"../assets/range":30,"../assets/stringStream":32,"../editTree/xml":38,"../parser/css":56,"./comments":72,"./common":73}],75:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("./common"),i=e("../assets/resources");return{isInsideTag:function(e,t){for(var n=t;n>-1&&"<"!=e.charAt(n);)n--;if(-1!=n){var r=/^<\/?\w[\w\:\-]*.*?>/.exec(e.substring(n));if(r&&t>n&&t<n+r[0].length)return!0}return!1},outputInfo:function(e,t,n){return n=n||e.getProfileName(),{syntax:String(t||e.getSyntax()),profile:n||null,content:String(e.getContent())}},unindent:function(e,t){return r.unindentString(t,this.getCurrentLinePadding(e))},getCurrentLinePadding:function(e){return r.getLinePadding(e.getCurrentLine())},normalize:function(e,t){t=r.extend({newline:i.getNewline(),indentation:i.getVariable("indentation")},t);var n=function(e){return r.repeatString(t.indentation,e.length)},a=r.splitByLines(e);return"\t"!==t.indentation&&(a=a.map(function(e){return e.replace(/^\s+/,function(e){return e.replace(/\t/g,n)})})),a.join(t.newline)}}})},{"../assets/resources":31,"./common":73}],76:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){function t(){}return t.prototype=e,new t}function i(e,t,n,r){this.type_=e,this.index_=t||0,this.prio_=n||0,this.number_=void 0!==r&&null!==r?r:0,this.toString=function(){switch(this.type_){case x:return this.number_;case w:case v:case _:return this.index_;case k:return"CALL";default:return"Invalid Token"}}}function a(e,t,n,r){this.tokens=e,this.ops1=t,this.ops2=n,this.functions=r}function o(e){return"string"==typeof e?(S.lastIndex=0,S.test(e)?"'"+e.replace(S,function(e){var t=C[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+"'":"'"+e+"'"):e}function s(e,t){return Number(e)+Number(t)}function y(e,t){return e-t}function l(e,t){return e*t}function c(e,t){return e/t}function p(e,t){return e%t}function u(e,t){return""+e+t}function f(e){return-e}function d(e){return Math.random()*(e||1)}function h(e){for(var t=e=Math.floor(e);e>1;)t*=--e;return t}function m(e,t){return Math.sqrt(e*e+t*t)}function g(e,t){return"[object Array]"!=Object.prototype.toString.call(e)?[e,t]:((e=e.slice()).push(t),e)}function b(){this.success=!1,this.errormsg="",this.expression="",this.pos=0,this.tokennumber=0,this.tokenprio=0,this.tokenindex=0,this.tmpprio=0,this.ops1={sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,sqrt:Math.sqrt,log:Math.log,abs:Math.abs,ceil:Math.ceil,floor:Math.floor,round:Math.round,"-":f,exp:Math.exp},this.ops2={"+":s,"-":y,"*":l,"/":c,"%":p,"^":Math.pow,",":g,"||":u},this.functions={random:d,fac:h,min:Math.min,max:Math.max,pyt:m,pow:Math.pow,atan2:Math.atan2},this.consts={E:Math.E,PI:Math.PI}}var x=0,w=1,v=2,_=3,k=4,S=/[\\\'\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,C={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","'":"\\'","\\":"\\\\"};a.prototype={simplify:function(e){e=e||{};var t,n,o,s,y=[],l=[],c=this.tokens.length,p=0;for(p=0;p<c;p++){var u=(s=this.tokens[p]).type_;if(u===x)y.push(s);else if(u===_&&s.index_ in e)s=new i(x,0,0,e[s.index_]),y.push(s);else if(u===v&&y.length>1)n=y.pop(),t=y.pop(),o=this.ops2[s.index_],s=new i(x,0,0,o(t.number_,n.number_)),y.push(s);else if(u===w&&y.length>0)t=y.pop(),o=this.ops1[s.index_],s=new i(x,0,0,o(t.number_)),y.push(s);else{for(;y.length>0;)l.push(y.shift());l.push(s)}}for(;y.length>0;)l.push(y.shift());return new a(l,r(this.ops1),r(this.ops2),r(this.functions))},substitute:function(e,t){t instanceof a||(t=(new b).parse(String(t)));var n,o=[],s=this.tokens.length,y=0;for(y=0;y<s;y++){if((n=this.tokens[y]).type_===_&&n.index_===e)for(var l=0;l<t.tokens.length;l++){var c=t.tokens[l],p=new i(c.type_,c.index_,c.prio_,c.number_);o.push(p)}else o.push(n)}return new a(o,r(this.ops1),r(this.ops2),r(this.functions))},evaluate:function(e){e=e||{};var t,n,r,i,a=[],o=this.tokens.length,s=0;for(s=0;s<o;s++){var y=(i=this.tokens[s]).type_;if(y===x)a.push(i.number_);else if(y===v)n=a.pop(),t=a.pop(),r=this.ops2[i.index_],a.push(r(t,n));else if(y===_)if(i.index_ in e)a.push(e[i.index_]);else{if(!(i.index_ in this.functions))throw new Error("undefined variable: "+i.index_);a.push(this.functions[i.index_])}else if(y===w)t=a.pop(),r=this.ops1[i.index_],a.push(r(t));else{if(y!==k)throw new Error("invalid Expression");if(t=a.pop(),!(r=a.pop()).apply||!r.call)throw new Error(r+" is not a function");"[object Array]"==Object.prototype.toString.call(t)?a.push(r.apply(void 0,t)):a.push(r.call(void 0,t))}}if(a.length>1)throw new Error("invalid Expression (parity)");return a[0]},toString:function(e){var t,n,r,i,a=[],s=this.tokens.length,y=0;for(y=0;y<s;y++){var l=(i=this.tokens[y]).type_;if(l===x)a.push(o(i.number_));else if(l===v)n=a.pop(),t=a.pop(),r=i.index_,e&&"^"==r?a.push("Math.pow("+t+","+n+")"):a.push("("+t+r+n+")");else if(l===_)a.push(i.index_);else if(l===w)t=a.pop(),"-"===(r=i.index_)?a.push("("+r+t+")"):a.push(r+"("+t+")");else{if(l!==k)throw new Error("invalid Expression");t=a.pop(),r=a.pop(),a.push(r+"("+t+")")}}if(a.length>1)throw new Error("invalid Expression (parity)");return a[0]},variables:function(){for(var e=this.tokens.length,t=[],n=0;n<e;n++){var r=this.tokens[n];r.type_===_&&-1==t.indexOf(r.index_)&&t.push(r.index_)}return t},toJSFunction:function(e,t){return new Function(e,"with(Parser.values) { return "+this.simplify(t).toString(!0)+"; }")}},b.parse=function(e){return(new b).parse(e)},b.evaluate=function(e,t){return b.parse(e).evaluate(t)},b.Expression=a,b.values={sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,sqrt:Math.sqrt,log:Math.log,abs:Math.abs,ceil:Math.ceil,floor:Math.floor,round:Math.round,random:d,fac:h,exp:Math.exp,min:Math.min,max:Math.max,pyt:m,pow:Math.pow,atan2:Math.atan2,E:Math.E,PI:Math.PI};return b.prototype={parse:function(e){this.errormsg="",this.success=!0;var t=[],n=[];this.tmpprio=0;var o=77,s=0;for(this.expression=e,this.pos=0;this.pos<this.expression.length;)if(this.isOperator())this.isSign()&&64&o?(this.isNegativeSign()&&(this.tokenprio=2,this.tokenindex="-",s++,this.addfunc(n,t,w)),o=77):this.isComment()||(0==(2&o)&&this.error_parsing(this.pos,"unexpected operator"),s+=2,this.addfunc(n,t,v),o=77);else if(this.isNumber()){0==(1&o)&&this.error_parsing(this.pos,"unexpected number");y=new i(x,0,0,this.tokennumber);n.push(y),o=50}else if(this.isString()){0==(1&o)&&this.error_parsing(this.pos,"unexpected string");y=new i(x,0,0,this.tokennumber);n.push(y),o=50}else if(this.isLeftParenth())0==(8&o)&&this.error_parsing(this.pos,'unexpected "("'),128&o&&(s+=2,this.tokenprio=-2,this.tokenindex=-1,this.addfunc(n,t,k)),o=333;else if(this.isRightParenth()){if(256&o){var y=new i(x,0,0,[]);n.push(y)}else 0==(16&o)&&this.error_parsing(this.pos,'unexpected ")"');o=186}else if(this.isComma())0==(32&o)&&this.error_parsing(this.pos,'unexpected ","'),this.addfunc(n,t,v),s+=2,o=77;else if(this.isConst()){0==(1&o)&&this.error_parsing(this.pos,"unexpected constant");var l=new i(x,0,0,this.tokennumber);n.push(l),o=50}else if(this.isOp2())0==(4&o)&&this.error_parsing(this.pos,"unexpected function"),this.addfunc(n,t,v),s+=2,o=8;else if(this.isOp1())0==(4&o)&&this.error_parsing(this.pos,"unexpected function"),this.addfunc(n,t,w),s++,o=8;else if(this.isVar()){0==(1&o)&&this.error_parsing(this.pos,"unexpected variable");var c=new i(_,this.tokenindex,0,0);n.push(c),o=186}else this.isWhite()||(""===this.errormsg?this.error_parsing(this.pos,"unknown character"):this.error_parsing(this.pos,this.errormsg));for((this.tmpprio<0||this.tmpprio>=10)&&this.error_parsing(this.pos,'unmatched "()"');t.length>0;){var p=t.pop();n.push(p)}return s+1!==n.length&&this.error_parsing(this.pos,"parity"),new a(n,r(this.ops1),r(this.ops2),r(this.functions))},evaluate:function(e,t){return this.parse(e).evaluate(t)},error_parsing:function(e,t){throw this.success=!1,this.errormsg="parse error [column "+e+"]: "+t,new Error(this.errormsg)},addfunc:function(e,t,n){for(var r=new i(n,this.tokenindex,this.tokenprio+this.tmpprio,0);t.length>0&&r.prio_<=t[t.length-1].prio_;)e.push(t.pop());t.push(r)},isNumber:function(){for(var e=!1,t="";this.pos<this.expression.length;){var n=this.expression.charCodeAt(this.pos);if(!(n>=48&&n<=57||46===n))break;t+=this.expression.charAt(this.pos),this.pos++,this.tokennumber=parseFloat(t),e=!0}return e},unescape:function(e,t){for(var n=[],r=!1,i=0;i<e.length;i++){var a=e.charAt(i);if(r){switch(a){case"'":n.push("'");break;case"\\":n.push("\\");break;case"/":n.push("/");break;case"b":n.push("\b");break;case"f":n.push("\f");break;case"n":n.push("\n");break;case"r":n.push("\r");break;case"t":n.push("\t");break;case"u":var o=parseInt(e.substring(i+1,i+5),16);n.push(String.fromCharCode(o)),i+=4;break;default:throw this.error_parsing(t+i,"Illegal escape sequence: '\\"+a+"'")}r=!1}else"\\"==a?r=!0:n.push(a)}return n.join("")},isString:function(){var e=!1,t="",n=this.pos;if(this.pos<this.expression.length&&"'"==this.expression.charAt(this.pos))for(this.pos++;this.pos<this.expression.length;){if("'"==this.expression.charAt(this.pos)&&"\\"!=t.slice(-1)){this.pos++,this.tokennumber=this.unescape(t,n),e=!0;break}t+=this.expression.charAt(this.pos),this.pos++}return e},isConst:function(){var e;for(var t in this.consts){var n=t.length;if(e=this.expression.substr(this.pos,n),t===e)return this.tokennumber=this.consts[t],this.pos+=n,!0}return!1},isOperator:function(){var e=this.expression.charCodeAt(this.pos);if(43===e)this.tokenprio=0,this.tokenindex="+";else if(45===e)this.tokenprio=0,this.tokenindex="-";else if(124===e){if(124!==this.expression.charCodeAt(this.pos+1))return!1;this.pos++,this.tokenprio=0,this.tokenindex="||"}else if(42===e)this.tokenprio=1,this.tokenindex="*";else if(47===e)this.tokenprio=2,this.tokenindex="/";else if(37===e)this.tokenprio=2,this.tokenindex="%";else{if(94!==e)return!1;this.tokenprio=3,this.tokenindex="^"}return this.pos++,!0},isSign:function(){var e=this.expression.charCodeAt(this.pos-1);return 45===e||43===e},isPositiveSign:function(){return 43===this.expression.charCodeAt(this.pos-1)},isNegativeSign:function(){return 45===this.expression.charCodeAt(this.pos-1)},isLeftParenth:function(){return 40===this.expression.charCodeAt(this.pos)&&(this.pos++,this.tmpprio+=10,!0)},isRightParenth:function(){return 41===this.expression.charCodeAt(this.pos)&&(this.pos++,this.tmpprio-=10,!0)},isComma:function(){return 44===this.expression.charCodeAt(this.pos)&&(this.pos++,this.tokenprio=-1,this.tokenindex=",",!0)},isWhite:function(){var e=this.expression.charCodeAt(this.pos);return(32===e||9===e||10===e||13===e)&&(this.pos++,!0)},isOp1:function(){for(var e="",t=this.pos;t<this.expression.length;t++){var n=this.expression.charAt(t);if(n.toUpperCase()===n.toLowerCase()&&(t===this.pos||"_"!=n&&(n<"0"||n>"9")))break;e+=n}return e.length>0&&e in this.ops1&&(this.tokenindex=e,this.tokenprio=5,this.pos+=e.length,!0)},isOp2:function(){for(var e="",t=this.pos;t<this.expression.length;t++){var n=this.expression.charAt(t);if(n.toUpperCase()===n.toLowerCase()&&(t===this.pos||"_"!=n&&(n<"0"||n>"9")))break;e+=n}return e.length>0&&e in this.ops2&&(this.tokenindex=e,this.tokenprio=5,this.pos+=e.length,!0)},isVar:function(){for(var e="",t=this.pos;t<this.expression.length;t++){var n=this.expression.charAt(t);if(n.toUpperCase()===n.toLowerCase()&&(t===this.pos||"_"!=n&&(n<"0"||n>"9")))break;e+=n}return e.length>0&&(this.tokenindex=e,this.tokenprio=4,this.pos+=e.length,!0)},isComment:function(){return 47===this.expression.charCodeAt(this.pos-1)&&42===this.expression.charCodeAt(this.pos)&&(this.pos=this.expression.indexOf("*/",this.pos)+2,1===this.pos&&(this.pos=this.expression.length),!0)}},b})},{}],77:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){function r(e){for(var t=[],n=o(e);!n.eol();)","==n.peek()&&(t.push(s.trim(n.current())),n.next(),n.start=n.pos),n.next();return t.push(s.trim(n.current())),t.filter(function(e){return!!e})}function i(e,t){if(/^['"]/.test(e))return e.replace(/^(['"])(.+?)\1$/,"$2");if(!isNaN(+e))return+e;if(e){for(var n=e.split("."),r=t;n.length;)r=r[n.shift()];return r}}function a(e,t){return e.replace(/<%[=\-](.+?)%>/g,function(e,n){var a=function(e){for(var t,n=null,i=o(e);!i.eol();){if("("==i.peek()){n=i.current(),i.start=i.pos,i.skipToPair("(",")",!0),t=r((t=i.current()).substring(1,t.length-1));break}i.next()}return n&&{name:n,args:t}}(n=s.trim(n));if(a){var y=a.args.map(function(e){return i(e,t)});return t[a.name].apply(t,y)}return i(n,t)})}var o=e("../assets/stringStream"),s=e("./common");return function(e,t){return t?a(e,t):function(t){return a(e,t)}}})},{"../assets/stringStream":32,"./common":73}],78:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){var r=e("../utils/common"),i=function(){};return{extend:function(e,t){var n=function(e,t,n){var a;return a=t&&t.hasOwnProperty("constructor")?t.constructor:function(){e.apply(this,arguments)},r.extend(a,e),i.prototype=e.prototype,a.prototype=new i,t&&r.extend(a.prototype,t),n&&r.extend(a,n),a.prototype.constructor=a,a.__super__=e.prototype,a}(this,e,t);return n.extend=this.extend,e.hasOwnProperty("toString")&&(n.prototype.toString=e.toString),n}}})},{"../utils/common":73}],79:[function(e,t,n){if("object"==typeof t&&"function"!=typeof r)var r=function(r){t.exports=r(e,n,t)};r(function(e,t,n){return{score:function(e,t,n){if(e==t)return 1;if(""==t)return 0;for(var r,i,a,o,s,y,l,c,p,u=0,f=t.length,d=e.length,h=1,m=0;m<f;++m){if(y=t.charAt(m),l=e.indexOf(y.toLowerCase()),c=e.indexOf(y.toUpperCase()),p=Math.min(l,c),-1===(s=p>-1?p:Math.max(l,c))){if(n){h+=1-n;continue}return 0}o=.1,e[s]===y&&(o+=.1),0===s?(o+=.6,0===m&&(r=1)):" "===e.charAt(s-1)&&(o+=.8),e=e.substring(s+1,d),u+=o}return i=u/f,a=(i*(f/d)+i)/2,a/=h,r&&a+.15<1&&(a+=.15),a}}})},{}],80:[function(e,t,n){"use strict";function r(e){var t=void 0===arguments[1]?p:arguments[1];return t=s(t),e.__emmetKeymap=t,e.addKeyMap(t),e}function i(){if(CodeMirror.version>="3.1")return CodeMirror.Pass;throw CodeMirror.Pass}function a(e){return function(t){var n=new l(t),r=n.selectionList(),i=null;return t.operation(function(){for(var t=0,a=r.length;t<a&&(n.selectionIndex=t,(i=o(e,n))!==CodeMirror.Pass);t++);}),i}}function o(e,t){if("expand_abbreviation_with_tab"==e&&(t.context.somethingSelected()||!t.isValidSyntax()))return i();var n=!1;try{if(!(n=c.run(e,t))&&"insert_formatted_line_break_only"==e)return i()}catch(e){console.error(e)}return n}function s(e){var t=/Mac/.test(navigator.platform),n={};return Object.keys(e).forEach(function(r){return n[t?r:r.replace("Cmd","Ctrl")]=e[r]}),n}var y=function(e){return e&&e.__esModule?e.default:e};t.exports=r;var l=y(e("./editor")),c=y(e("./emmet")),p={"Cmd-E":"emmet.expand_abbreviation",Tab:"emmet.expand_abbreviation_with_tab","Shift-Cmd-D":"emmet.balance_inward","Cmd-M":"emmet.matching_pair","Shift-Cmd-A":"emmet.wrap_with_abbreviation","Ctrl-Alt-Right":"emmet.next_edit_point","Ctrl-Alt-Left":"emmet.prev_edit_point","Cmd-L":"emmet.select_line","Cmd-Shift-M":"emmet.merge_lines","Cmd-/":"emmet.toggle_comment","Cmd-J":"emmet.split_join_tag","Cmd-K":"emmet.remove_tag","Shift-Cmd-Y":"emmet.evaluate_math_expression","Ctrl-Up":"emmet.increment_number_by_1","Ctrl-Down":"emmet.decrement_number_by_1","Ctrl-Alt-Up":"emmet.increment_number_by_01","Ctrl-Alt-Down":"emmet.decrement_number_by_01","Shift-Ctrl-Up":"emmet.increment_number_by_10","Shift-Ctrl-Down":"emmet.decrement_number_by_10","Shift-Cmd-.":"emmet.select_next_item","Shift-Cmd-,":"emmet.select_previous_item","Cmd-B":"emmet.reflect_css_value",Enter:"emmet.insert_formatted_line_break_only"},u=["prev_edit_point","next_edit_point","merge_lines","reflect_css_value","select_next_item","select_previous_item","wrap_with_abbreviation","update_tag","insert_formatted_line_break_only"];r.dispose=function(e){e.__emmetKeymap&&(e.removeKeyMap(e.__emmetKeymap),delete e.__emmetKeymap)},r.defaultKeymap=p,r.systemKeymap=s,r.emmet=c,r.EmmetEditor=l,r.setup=function(e){c.actions.getList().forEach(function(t){var n=t.name,r="emmet."+n;e.commands[r]||(e.commands[r]=~u.indexOf(n)?function(e){return function(t){var n;return t.operation(function(){return n=o(e,new l(t))}),n}}(n):a(n))}),e.defineOption?e.defineOption("profile","html"):e.defaults.profile="html"},"undefined"!=typeof CodeMirror&&r.setup(CodeMirror)},{"./editor":1,"./emmet":2}]},{},[80])(80)});
8//# sourceMappingURL=/sm/221aa69b3967421d25ee09530b1a6917a8413eae8e040857e9adcc0428247f61.map