{"ScriptPreparationCode":"var canvas = document.getElementById(\u0027canvas\u0027);\r\nvar ctx = canvas.getContext(\u00222d\u0022);\r\n\r\nvar cacheG = document.createElement(\u0027canvas\u0027);\r\nvar cacheD = cacheG.getContext(\u00272d\u0027);\r\n\r\ncacheG.width = 20;\r\ncacheG.height = 20;\r\n\r\ncacheD.beginPath();\r\ncacheD.fillStyle = \u0027#000\u0027;\r\ncacheD.arc(10, 10, 10, 0, Math.PI * 2, true);\r\ncacheD.fill();\r\n\r\ncacheD.beginPath();\r\ncacheD.lineWidth = 2;\r\ncacheD.strokeStyle = \u0027#fff\u0027;\r\ncacheD.moveTo(6, 10);\r\ncacheD.lineTo(14, 10);\r\ncacheD.moveTo(10, 5);\r\ncacheD.lineTo(7, 10);\r\ncacheD.moveTo(13, 10);\r\ncacheD.lineTo(9, 15);\r\ncacheD.stroke();\r\ncacheD.closePath();","TestCases":[{"Name":"cache","Code":"ctx.drawImage(cacheG, 20, 20);","IsDeferred":false},{"Name":"live","Code":"ctx.beginPath();\r\nctx.fillStyle = \u0027#000\u0027;\r\nctx.arc(10, 10, 10, 0, Math.PI * 2, true);\r\nctx.fill();\r\n\r\nctx.beginPath();\r\nctx.lineWidth = 2;\r\nctx.strokeStyle = \u0027#fff\u0027;\r\nctx.moveTo(6, 10);\r\nctx.lineTo(14, 10);\r\nctx.moveTo(10, 5);\r\nctx.lineTo(7, 10);\r\nctx.moveTo(13, 10);\r\nctx.lineTo(9, 15);\r\nctx.stroke();\r\nctx.closePath();","IsDeferred":false}]}