am 5cd6fcd5: am e6c0e993: Merge change I129483f8 into eclair-mr2

Merge commit '5cd6fcd518d47d1974a10fccf3c3d5431a83307a'

* commit '5cd6fcd518d47d1974a10fccf3c3d5431a83307a':
  Optional use of UTF-8 strings in resource bundles
diff --git a/api/5.xml b/api/5.xml
index 73df0cb..7fddcfb 100644
--- a/api/5.xml
+++ b/api/5.xml
@@ -231049,21 +231049,6 @@
  visibility="protected"
 >
 </method>
-<method name="getOption"
- return="java.lang.Object"
- abstract="true"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="optID" type="int">
-</parameter>
-<exception name="SocketException" type="java.net.SocketException">
-</exception>
-</method>
 <method name="getTTL"
  return="byte"
  abstract="true"
@@ -231214,23 +231199,6 @@
 <exception name="IOException" type="java.io.IOException">
 </exception>
 </method>
-<method name="setOption"
- return="void"
- abstract="true"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="optID" type="int">
-</parameter>
-<parameter name="val" type="java.lang.Object">
-</parameter>
-<exception name="SocketException" type="java.net.SocketException">
-</exception>
-</method>
 <method name="setTTL"
  return="void"
  abstract="true"
@@ -300580,8 +300548,6 @@
 </parameter>
 <parameter name="replacement" type="java.lang.String">
 </parameter>
-<exception name="IllegalStateException" type="java.lang.IllegalStateException">
-</exception>
 </method>
 <method name="appendTail"
  return="java.lang.StringBuffer"
@@ -300881,8 +300847,6 @@
 >
 <parameter name="group" type="int">
 </parameter>
-<exception name="IllegalStateException" type="java.lang.IllegalStateException">
-</exception>
 </method>
 <method name="toMatchResult"
  return="java.util.regex.MatchResult"
@@ -300957,8 +300921,6 @@
 >
 <parameter name="pattern" type="java.lang.String">
 </parameter>
-<exception name="PatternSyntaxException" type="java.util.regex.PatternSyntaxException">
-</exception>
 </method>
 <method name="compile"
  return="java.util.regex.Pattern"
diff --git a/api/current.xml b/api/current.xml
index a5d1967..f09edaa 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -5674,6 +5674,17 @@
  visibility="public"
 >
 </field>
+<field name="neverEncrypt"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843446"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="nextFocusDown"
  type="int"
  transient="false"
@@ -98353,6 +98364,6545 @@
 >
 </field>
 </class>
+<class name="GLES20"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="GLES20"
+ type="android.opengl.GLES20"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<method name="glActiveTexture"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="texture" type="int">
+</parameter>
+</method>
+<method name="glAttachShader"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+<parameter name="shader" type="int">
+</parameter>
+</method>
+<method name="glBindAttribLocation"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+<parameter name="index" type="int">
+</parameter>
+<parameter name="name" type="java.lang.String">
+</parameter>
+</method>
+<method name="glBindBuffer"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="buffer" type="int">
+</parameter>
+</method>
+<method name="glBindFramebuffer"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="framebuffer" type="int">
+</parameter>
+</method>
+<method name="glBindRenderbuffer"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="renderbuffer" type="int">
+</parameter>
+</method>
+<method name="glBindTexture"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="texture" type="int">
+</parameter>
+</method>
+<method name="glBlendColor"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="red" type="float">
+</parameter>
+<parameter name="green" type="float">
+</parameter>
+<parameter name="blue" type="float">
+</parameter>
+<parameter name="alpha" type="float">
+</parameter>
+</method>
+<method name="glBlendEquation"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mode" type="int">
+</parameter>
+</method>
+<method name="glBlendEquationSeparate"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="modeRGB" type="int">
+</parameter>
+<parameter name="modeAlpha" type="int">
+</parameter>
+</method>
+<method name="glBlendFunc"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="sfactor" type="int">
+</parameter>
+<parameter name="dfactor" type="int">
+</parameter>
+</method>
+<method name="glBlendFuncSeparate"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="srcRGB" type="int">
+</parameter>
+<parameter name="dstRGB" type="int">
+</parameter>
+<parameter name="srcAlpha" type="int">
+</parameter>
+<parameter name="dstAlpha" type="int">
+</parameter>
+</method>
+<method name="glBufferData"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="size" type="int">
+</parameter>
+<parameter name="data" type="java.nio.Buffer">
+</parameter>
+<parameter name="usage" type="int">
+</parameter>
+</method>
+<method name="glBufferSubData"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+<parameter name="size" type="int">
+</parameter>
+<parameter name="data" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glCheckFramebufferStatus"
+ return="int"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+</method>
+<method name="glClear"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mask" type="int">
+</parameter>
+</method>
+<method name="glClearColor"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="red" type="float">
+</parameter>
+<parameter name="green" type="float">
+</parameter>
+<parameter name="blue" type="float">
+</parameter>
+<parameter name="alpha" type="float">
+</parameter>
+</method>
+<method name="glClearDepthf"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="depth" type="float">
+</parameter>
+</method>
+<method name="glClearStencil"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="s" type="int">
+</parameter>
+</method>
+<method name="glColorMask"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="red" type="boolean">
+</parameter>
+<parameter name="green" type="boolean">
+</parameter>
+<parameter name="blue" type="boolean">
+</parameter>
+<parameter name="alpha" type="boolean">
+</parameter>
+</method>
+<method name="glCompileShader"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="shader" type="int">
+</parameter>
+</method>
+<method name="glCompressedTexImage2D"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="level" type="int">
+</parameter>
+<parameter name="internalformat" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+<parameter name="border" type="int">
+</parameter>
+<parameter name="imageSize" type="int">
+</parameter>
+<parameter name="data" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glCompressedTexSubImage2D"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="level" type="int">
+</parameter>
+<parameter name="xoffset" type="int">
+</parameter>
+<parameter name="yoffset" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+<parameter name="format" type="int">
+</parameter>
+<parameter name="imageSize" type="int">
+</parameter>
+<parameter name="data" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glCopyTexImage2D"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="level" type="int">
+</parameter>
+<parameter name="internalformat" type="int">
+</parameter>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+<parameter name="border" type="int">
+</parameter>
+</method>
+<method name="glCopyTexSubImage2D"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="level" type="int">
+</parameter>
+<parameter name="xoffset" type="int">
+</parameter>
+<parameter name="yoffset" type="int">
+</parameter>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+</method>
+<method name="glCreateProgram"
+ return="int"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="glCreateShader"
+ return="int"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="type" type="int">
+</parameter>
+</method>
+<method name="glCullFace"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mode" type="int">
+</parameter>
+</method>
+<method name="glDeleteBuffers"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="buffers" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glDeleteBuffers"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="buffers" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glDeleteFramebuffers"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="framebuffers" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glDeleteFramebuffers"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="framebuffers" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glDeleteProgram"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+</method>
+<method name="glDeleteRenderbuffers"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="renderbuffers" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glDeleteRenderbuffers"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="renderbuffers" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glDeleteShader"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="shader" type="int">
+</parameter>
+</method>
+<method name="glDeleteTextures"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="textures" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glDeleteTextures"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="textures" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glDepthFunc"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="func" type="int">
+</parameter>
+</method>
+<method name="glDepthMask"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="flag" type="boolean">
+</parameter>
+</method>
+<method name="glDepthRangef"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="zNear" type="float">
+</parameter>
+<parameter name="zFar" type="float">
+</parameter>
+</method>
+<method name="glDetachShader"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+<parameter name="shader" type="int">
+</parameter>
+</method>
+<method name="glDisable"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="cap" type="int">
+</parameter>
+</method>
+<method name="glDisableVertexAttribArray"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="index" type="int">
+</parameter>
+</method>
+<method name="glDrawArrays"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mode" type="int">
+</parameter>
+<parameter name="first" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+</method>
+<method name="glDrawElements"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mode" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="indices" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glEnable"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="cap" type="int">
+</parameter>
+</method>
+<method name="glEnableVertexAttribArray"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="index" type="int">
+</parameter>
+</method>
+<method name="glFinish"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="glFlush"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="glFramebufferRenderbuffer"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="attachment" type="int">
+</parameter>
+<parameter name="renderbuffertarget" type="int">
+</parameter>
+<parameter name="renderbuffer" type="int">
+</parameter>
+</method>
+<method name="glFramebufferTexture2D"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="attachment" type="int">
+</parameter>
+<parameter name="textarget" type="int">
+</parameter>
+<parameter name="texture" type="int">
+</parameter>
+<parameter name="level" type="int">
+</parameter>
+</method>
+<method name="glFrontFace"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mode" type="int">
+</parameter>
+</method>
+<method name="glGenBuffers"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="buffers" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGenBuffers"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="buffers" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGenFramebuffers"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="framebuffers" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGenFramebuffers"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="framebuffers" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGenRenderbuffers"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="renderbuffers" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGenRenderbuffers"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="renderbuffers" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGenTextures"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="textures" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGenTextures"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="textures" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGenerateMipmap"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+</method>
+<method name="glGetActiveAttrib"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+<parameter name="index" type="int">
+</parameter>
+<parameter name="bufsize" type="int">
+</parameter>
+<parameter name="length" type="int[]">
+</parameter>
+<parameter name="lengthOffset" type="int">
+</parameter>
+<parameter name="size" type="int[]">
+</parameter>
+<parameter name="sizeOffset" type="int">
+</parameter>
+<parameter name="type" type="int[]">
+</parameter>
+<parameter name="typeOffset" type="int">
+</parameter>
+<parameter name="name" type="byte[]">
+</parameter>
+<parameter name="nameOffset" type="int">
+</parameter>
+</method>
+<method name="glGetActiveAttrib"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+<parameter name="index" type="int">
+</parameter>
+<parameter name="bufsize" type="int">
+</parameter>
+<parameter name="length" type="java.nio.IntBuffer">
+</parameter>
+<parameter name="size" type="java.nio.IntBuffer">
+</parameter>
+<parameter name="type" type="java.nio.IntBuffer">
+</parameter>
+<parameter name="name" type="byte">
+</parameter>
+</method>
+<method name="glGetActiveUniform"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+<parameter name="index" type="int">
+</parameter>
+<parameter name="bufsize" type="int">
+</parameter>
+<parameter name="length" type="int[]">
+</parameter>
+<parameter name="lengthOffset" type="int">
+</parameter>
+<parameter name="size" type="int[]">
+</parameter>
+<parameter name="sizeOffset" type="int">
+</parameter>
+<parameter name="type" type="int[]">
+</parameter>
+<parameter name="typeOffset" type="int">
+</parameter>
+<parameter name="name" type="byte[]">
+</parameter>
+<parameter name="nameOffset" type="int">
+</parameter>
+</method>
+<method name="glGetActiveUniform"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+<parameter name="index" type="int">
+</parameter>
+<parameter name="bufsize" type="int">
+</parameter>
+<parameter name="length" type="java.nio.IntBuffer">
+</parameter>
+<parameter name="size" type="java.nio.IntBuffer">
+</parameter>
+<parameter name="type" type="java.nio.IntBuffer">
+</parameter>
+<parameter name="name" type="byte">
+</parameter>
+</method>
+<method name="glGetAttachedShaders"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+<parameter name="maxcount" type="int">
+</parameter>
+<parameter name="count" type="int[]">
+</parameter>
+<parameter name="countOffset" type="int">
+</parameter>
+<parameter name="shaders" type="int[]">
+</parameter>
+<parameter name="shadersOffset" type="int">
+</parameter>
+</method>
+<method name="glGetAttachedShaders"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+<parameter name="maxcount" type="int">
+</parameter>
+<parameter name="count" type="java.nio.IntBuffer">
+</parameter>
+<parameter name="shaders" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetAttribLocation"
+ return="int"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+<parameter name="name" type="java.lang.String">
+</parameter>
+</method>
+<method name="glGetBooleanv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="boolean[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetBooleanv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetBufferParameteriv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetBufferParameteriv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetError"
+ return="int"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="glGetFloatv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetFloatv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glGetFramebufferAttachmentParameteriv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="attachment" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetFramebufferAttachmentParameteriv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="attachment" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetIntegerv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetIntegerv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetProgramInfoLog"
+ return="java.lang.String"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+</method>
+<method name="glGetProgramiv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetProgramiv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetRenderbufferParameteriv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetRenderbufferParameteriv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetShaderInfoLog"
+ return="java.lang.String"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="shader" type="int">
+</parameter>
+</method>
+<method name="glGetShaderPrecisionFormat"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="shadertype" type="int">
+</parameter>
+<parameter name="precisiontype" type="int">
+</parameter>
+<parameter name="range" type="int[]">
+</parameter>
+<parameter name="rangeOffset" type="int">
+</parameter>
+<parameter name="precision" type="int[]">
+</parameter>
+<parameter name="precisionOffset" type="int">
+</parameter>
+</method>
+<method name="glGetShaderPrecisionFormat"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="shadertype" type="int">
+</parameter>
+<parameter name="precisiontype" type="int">
+</parameter>
+<parameter name="range" type="java.nio.IntBuffer">
+</parameter>
+<parameter name="precision" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetShaderSource"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="shader" type="int">
+</parameter>
+<parameter name="bufsize" type="int">
+</parameter>
+<parameter name="length" type="int[]">
+</parameter>
+<parameter name="lengthOffset" type="int">
+</parameter>
+<parameter name="source" type="byte[]">
+</parameter>
+<parameter name="sourceOffset" type="int">
+</parameter>
+</method>
+<method name="glGetShaderSource"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="shader" type="int">
+</parameter>
+<parameter name="bufsize" type="int">
+</parameter>
+<parameter name="length" type="java.nio.IntBuffer">
+</parameter>
+<parameter name="source" type="byte">
+</parameter>
+</method>
+<method name="glGetShaderiv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="shader" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetShaderiv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="shader" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetString"
+ return="java.lang.String"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="name" type="int">
+</parameter>
+</method>
+<method name="glGetTexParameterfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetTexParameterfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glGetTexParameteriv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetTexParameteriv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetUniformLocation"
+ return="int"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+<parameter name="name" type="java.lang.String">
+</parameter>
+</method>
+<method name="glGetUniformfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetUniformfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glGetUniformiv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetUniformiv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetVertexAttribfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="index" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetVertexAttribfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="index" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glGetVertexAttribiv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="index" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetVertexAttribiv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="index" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glHint"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="mode" type="int">
+</parameter>
+</method>
+<method name="glIsBuffer"
+ return="boolean"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="buffer" type="int">
+</parameter>
+</method>
+<method name="glIsEnabled"
+ return="boolean"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="cap" type="int">
+</parameter>
+</method>
+<method name="glIsFramebuffer"
+ return="boolean"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="framebuffer" type="int">
+</parameter>
+</method>
+<method name="glIsProgram"
+ return="boolean"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+</method>
+<method name="glIsRenderbuffer"
+ return="boolean"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="renderbuffer" type="int">
+</parameter>
+</method>
+<method name="glIsShader"
+ return="boolean"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="shader" type="int">
+</parameter>
+</method>
+<method name="glIsTexture"
+ return="boolean"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="texture" type="int">
+</parameter>
+</method>
+<method name="glLineWidth"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="width" type="float">
+</parameter>
+</method>
+<method name="glLinkProgram"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+</method>
+<method name="glPixelStorei"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glPolygonOffset"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="factor" type="float">
+</parameter>
+<parameter name="units" type="float">
+</parameter>
+</method>
+<method name="glReadPixels"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+<parameter name="format" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="pixels" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glReleaseShaderCompiler"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="glRenderbufferStorage"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="internalformat" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+</method>
+<method name="glSampleCoverage"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+<parameter name="invert" type="boolean">
+</parameter>
+</method>
+<method name="glScissor"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+</method>
+<method name="glShaderBinary"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="shaders" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+<parameter name="binaryformat" type="int">
+</parameter>
+<parameter name="binary" type="java.nio.Buffer">
+</parameter>
+<parameter name="length" type="int">
+</parameter>
+</method>
+<method name="glShaderBinary"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="shaders" type="java.nio.IntBuffer">
+</parameter>
+<parameter name="binaryformat" type="int">
+</parameter>
+<parameter name="binary" type="java.nio.Buffer">
+</parameter>
+<parameter name="length" type="int">
+</parameter>
+</method>
+<method name="glShaderSource"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="shader" type="int">
+</parameter>
+<parameter name="string" type="java.lang.String">
+</parameter>
+</method>
+<method name="glStencilFunc"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="func" type="int">
+</parameter>
+<parameter name="ref" type="int">
+</parameter>
+<parameter name="mask" type="int">
+</parameter>
+</method>
+<method name="glStencilFuncSeparate"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="func" type="int">
+</parameter>
+<parameter name="ref" type="int">
+</parameter>
+<parameter name="mask" type="int">
+</parameter>
+</method>
+<method name="glStencilMask"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mask" type="int">
+</parameter>
+</method>
+<method name="glStencilMaskSeparate"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="mask" type="int">
+</parameter>
+</method>
+<method name="glStencilOp"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="fail" type="int">
+</parameter>
+<parameter name="zfail" type="int">
+</parameter>
+<parameter name="zpass" type="int">
+</parameter>
+</method>
+<method name="glStencilOpSeparate"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="fail" type="int">
+</parameter>
+<parameter name="zfail" type="int">
+</parameter>
+<parameter name="zpass" type="int">
+</parameter>
+</method>
+<method name="glTexImage2D"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="level" type="int">
+</parameter>
+<parameter name="internalformat" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+<parameter name="border" type="int">
+</parameter>
+<parameter name="format" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="pixels" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glTexParameterf"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="float">
+</parameter>
+</method>
+<method name="glTexParameterfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glTexParameterfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glTexParameteri"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glTexParameteriv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glTexParameteriv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glTexSubImage2D"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="level" type="int">
+</parameter>
+<parameter name="xoffset" type="int">
+</parameter>
+<parameter name="yoffset" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+<parameter name="format" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="pixels" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glUniform1f"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="x" type="float">
+</parameter>
+</method>
+<method name="glUniform1fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="v" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glUniform1fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="v" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glUniform1i"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="x" type="int">
+</parameter>
+</method>
+<method name="glUniform1iv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="v" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glUniform1iv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="v" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glUniform2f"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="x" type="float">
+</parameter>
+<parameter name="y" type="float">
+</parameter>
+</method>
+<method name="glUniform2fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="v" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glUniform2fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="v" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glUniform2i"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+</method>
+<method name="glUniform2iv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="v" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glUniform2iv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="v" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glUniform3f"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="x" type="float">
+</parameter>
+<parameter name="y" type="float">
+</parameter>
+<parameter name="z" type="float">
+</parameter>
+</method>
+<method name="glUniform3fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="v" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glUniform3fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="v" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glUniform3i"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="z" type="int">
+</parameter>
+</method>
+<method name="glUniform3iv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="v" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glUniform3iv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="v" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glUniform4f"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="x" type="float">
+</parameter>
+<parameter name="y" type="float">
+</parameter>
+<parameter name="z" type="float">
+</parameter>
+<parameter name="w" type="float">
+</parameter>
+</method>
+<method name="glUniform4fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="v" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glUniform4fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="v" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glUniform4i"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="z" type="int">
+</parameter>
+<parameter name="w" type="int">
+</parameter>
+</method>
+<method name="glUniform4iv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="v" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glUniform4iv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="v" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glUniformMatrix2fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="transpose" type="boolean">
+</parameter>
+<parameter name="value" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glUniformMatrix2fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="transpose" type="boolean">
+</parameter>
+<parameter name="value" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glUniformMatrix3fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="transpose" type="boolean">
+</parameter>
+<parameter name="value" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glUniformMatrix3fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="transpose" type="boolean">
+</parameter>
+<parameter name="value" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glUniformMatrix4fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="transpose" type="boolean">
+</parameter>
+<parameter name="value" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glUniformMatrix4fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="location" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="transpose" type="boolean">
+</parameter>
+<parameter name="value" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glUseProgram"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+</method>
+<method name="glValidateProgram"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="program" type="int">
+</parameter>
+</method>
+<method name="glVertexAttrib1f"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="indx" type="int">
+</parameter>
+<parameter name="x" type="float">
+</parameter>
+</method>
+<method name="glVertexAttrib1fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="indx" type="int">
+</parameter>
+<parameter name="values" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glVertexAttrib1fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="indx" type="int">
+</parameter>
+<parameter name="values" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glVertexAttrib2f"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="indx" type="int">
+</parameter>
+<parameter name="x" type="float">
+</parameter>
+<parameter name="y" type="float">
+</parameter>
+</method>
+<method name="glVertexAttrib2fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="indx" type="int">
+</parameter>
+<parameter name="values" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glVertexAttrib2fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="indx" type="int">
+</parameter>
+<parameter name="values" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glVertexAttrib3f"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="indx" type="int">
+</parameter>
+<parameter name="x" type="float">
+</parameter>
+<parameter name="y" type="float">
+</parameter>
+<parameter name="z" type="float">
+</parameter>
+</method>
+<method name="glVertexAttrib3fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="indx" type="int">
+</parameter>
+<parameter name="values" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glVertexAttrib3fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="indx" type="int">
+</parameter>
+<parameter name="values" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glVertexAttrib4f"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="indx" type="int">
+</parameter>
+<parameter name="x" type="float">
+</parameter>
+<parameter name="y" type="float">
+</parameter>
+<parameter name="z" type="float">
+</parameter>
+<parameter name="w" type="float">
+</parameter>
+</method>
+<method name="glVertexAttrib4fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="indx" type="int">
+</parameter>
+<parameter name="values" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glVertexAttrib4fv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="indx" type="int">
+</parameter>
+<parameter name="values" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glVertexAttribPointer"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="indx" type="int">
+</parameter>
+<parameter name="size" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="normalized" type="boolean">
+</parameter>
+<parameter name="stride" type="int">
+</parameter>
+<parameter name="ptr" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glViewport"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+</method>
+<field name="GL_ACTIVE_ATTRIBUTES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35721"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ACTIVE_ATTRIBUTE_MAX_LENGTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35722"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ACTIVE_TEXTURE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34016"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ACTIVE_UNIFORMS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35718"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ACTIVE_UNIFORM_MAX_LENGTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35719"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ALIASED_LINE_WIDTH_RANGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33902"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ALIASED_POINT_SIZE_RANGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33901"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6406"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ALPHA_BITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3413"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ALWAYS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="519"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ARRAY_BUFFER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34962"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ARRAY_BUFFER_BINDING"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34964"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ATTACHED_SHADERS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35717"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BACK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1029"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3042"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND_COLOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32773"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND_DST_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32970"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND_DST_RGB"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32968"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND_EQUATION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32777"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND_EQUATION_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34877"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND_EQUATION_RGB"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32777"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND_SRC_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32971"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND_SRC_RGB"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32969"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLUE_BITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3412"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BOOL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35670"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BOOL_VEC2"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35671"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BOOL_VEC3"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35672"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BOOL_VEC4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35673"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BUFFER_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34660"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BUFFER_USAGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34661"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BYTE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5120"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CCW"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2305"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CLAMP_TO_EDGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33071"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COLOR_ATTACHMENT0"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36064"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COLOR_BUFFER_BIT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16384"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COLOR_CLEAR_VALUE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3106"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COLOR_WRITEMASK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3107"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COMPILE_STATUS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35713"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COMPRESSED_TEXTURE_FORMATS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34467"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CONSTANT_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32771"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CONSTANT_COLOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32769"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CULL_FACE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2884"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CULL_FACE_MODE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2885"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CURRENT_PROGRAM"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35725"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CURRENT_VERTEX_ATTRIB"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34342"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CW"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2304"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DECR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7683"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DECR_WRAP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34056"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DELETE_STATUS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35712"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_ATTACHMENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36096"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_BITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3414"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_BUFFER_BIT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="256"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_CLEAR_VALUE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2931"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_COMPONENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6402"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_COMPONENT16"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33189"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_FUNC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2932"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_RANGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2928"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_TEST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2929"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_WRITEMASK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2930"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DITHER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3024"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DONT_CARE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4352"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DST_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="772"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DST_COLOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="774"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DYNAMIC_DRAW"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35048"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ELEMENT_ARRAY_BUFFER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34963"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ELEMENT_ARRAY_BUFFER_BINDING"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34965"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_EQUAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="514"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_EXTENSIONS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7939"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FALSE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FASTEST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4353"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FIXED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5132"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FLOAT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5126"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FLOAT_MAT2"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35674"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FLOAT_MAT3"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35675"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FLOAT_MAT4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35676"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FLOAT_VEC2"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35664"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FLOAT_VEC3"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35665"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FLOAT_VEC4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35666"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAGMENT_SHADER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35632"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36160"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36049"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36048"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36051"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36050"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_BINDING"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36006"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_COMPLETE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36053"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36054"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36057"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36055"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_UNSUPPORTED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36061"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRONT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1028"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRONT_AND_BACK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1032"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRONT_FACE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2886"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FUNC_ADD"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32774"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FUNC_REVERSE_SUBTRACT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32779"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FUNC_SUBTRACT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32778"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_GENERATE_MIPMAP_HINT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33170"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_GEQUAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="518"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_GREATER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="516"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_GREEN_BITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3411"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_HIGH_FLOAT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36338"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_HIGH_INT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36341"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_IMPLEMENTATION_COLOR_READ_FORMAT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35739"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_IMPLEMENTATION_COLOR_READ_TYPE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35738"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INCR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7682"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INCR_WRAP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34055"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INFO_LOG_LENGTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35716"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5124"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INT_VEC2"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35667"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INT_VEC3"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35668"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INT_VEC4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35669"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INVALID_ENUM"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1280"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INVALID_FRAMEBUFFER_OPERATION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1286"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INVALID_OPERATION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1282"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INVALID_VALUE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1281"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INVERT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5386"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_KEEP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7680"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LEQUAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="515"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LESS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="513"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINEAR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="9729"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINEAR_MIPMAP_LINEAR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="9987"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINEAR_MIPMAP_NEAREST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="9985"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINE_LOOP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINE_STRIP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINE_WIDTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2849"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINK_STATUS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35714"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LOW_FLOAT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36336"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LOW_INT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36339"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LUMINANCE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6409"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LUMINANCE_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6410"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35661"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_CUBE_MAP_TEXTURE_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34076"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_FRAGMENT_UNIFORM_VECTORS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36349"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_RENDERBUFFER_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34024"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_TEXTURE_IMAGE_UNITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34930"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_TEXTURE_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3379"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_VARYING_VECTORS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36348"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_VERTEX_ATTRIBS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34921"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35660"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_VERTEX_UNIFORM_VECTORS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36347"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_VIEWPORT_DIMS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3386"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MEDIUM_FLOAT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36337"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MEDIUM_INT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36340"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MIRRORED_REPEAT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33648"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NEAREST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="9728"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NEAREST_MIPMAP_LINEAR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="9986"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NEAREST_MIPMAP_NEAREST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="9984"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NEVER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="512"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NICEST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4354"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NONE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NOTEQUAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="517"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NO_ERROR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NUM_COMPRESSED_TEXTURE_FORMATS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34466"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NUM_SHADER_BINARY_FORMATS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36345"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ONE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ONE_MINUS_CONSTANT_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32772"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ONE_MINUS_CONSTANT_COLOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32770"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ONE_MINUS_DST_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="773"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ONE_MINUS_DST_COLOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="775"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ONE_MINUS_SRC_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="771"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ONE_MINUS_SRC_COLOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="769"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_OUT_OF_MEMORY"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1285"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PACK_ALIGNMENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3333"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POINTS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POLYGON_OFFSET_FACTOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32824"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POLYGON_OFFSET_FILL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32823"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POLYGON_OFFSET_UNITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="10752"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RED_BITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3410"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36161"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_ALPHA_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36179"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_BINDING"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36007"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_BLUE_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36178"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_DEPTH_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36180"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_GREEN_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36177"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_HEIGHT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36163"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_INTERNAL_FORMAT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36164"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_RED_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36176"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_STENCIL_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36181"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_WIDTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36162"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7937"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_REPEAT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="10497"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_REPLACE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7681"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RGB"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6407"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RGB565"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36194"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RGB5_A1"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32855"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RGBA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6408"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RGBA4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32854"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SAMPLER_2D"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35678"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SAMPLER_CUBE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35680"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SAMPLES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32937"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SAMPLE_ALPHA_TO_COVERAGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32926"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SAMPLE_BUFFERS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32936"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SAMPLE_COVERAGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32928"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SAMPLE_COVERAGE_INVERT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32939"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SAMPLE_COVERAGE_VALUE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32938"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SCISSOR_BOX"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3088"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SCISSOR_TEST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3089"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SHADER_BINARY_FORMATS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36344"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SHADER_COMPILER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36346"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SHADER_SOURCE_LENGTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35720"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SHADER_TYPE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35663"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SHADING_LANGUAGE_VERSION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35724"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SHORT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5122"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SRC_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="770"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SRC_ALPHA_SATURATE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="776"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SRC_COLOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="768"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STATIC_DRAW"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35044"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_ATTACHMENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36128"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_BACK_FAIL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34817"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_BACK_FUNC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34816"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_BACK_PASS_DEPTH_FAIL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34818"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_BACK_PASS_DEPTH_PASS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34819"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_BACK_REF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36003"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_BACK_VALUE_MASK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36004"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_BACK_WRITEMASK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36005"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_BITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3415"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_BUFFER_BIT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1024"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_CLEAR_VALUE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2961"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_FAIL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2964"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_FUNC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2962"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_INDEX"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6401"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_INDEX8"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36168"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_PASS_DEPTH_FAIL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2965"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_PASS_DEPTH_PASS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2966"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_REF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2967"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_TEST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2960"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_VALUE_MASK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2963"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_WRITEMASK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2968"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STREAM_DRAW"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35040"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SUBPIXEL_BITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3408"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5890"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE0"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33984"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE1"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33985"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE10"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33994"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE11"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33995"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE12"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33996"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE13"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33997"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE14"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33998"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE15"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33999"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE16"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34000"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE17"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34001"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE18"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34002"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE19"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34003"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE2"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33986"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE20"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34004"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE21"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34005"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE22"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34006"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE23"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34007"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE24"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34008"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE25"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34009"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE26"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34010"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE27"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34011"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE28"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34012"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE29"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34013"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE3"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33987"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE30"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34014"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE31"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34015"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33988"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE5"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33989"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE6"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33990"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE7"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33991"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE8"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33992"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE9"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33993"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_2D"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3553"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_BINDING_2D"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32873"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_BINDING_CUBE_MAP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34068"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_CUBE_MAP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34067"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34070"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34072"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34074"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_X"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34069"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34071"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34073"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_MAG_FILTER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="10240"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_MIN_FILTER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="10241"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_WRAP_S"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="10242"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_WRAP_T"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="10243"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TRIANGLES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TRIANGLE_FAN"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TRIANGLE_STRIP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TRUE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_UNPACK_ALIGNMENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3317"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_UNSIGNED_BYTE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5121"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_UNSIGNED_INT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5125"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_UNSIGNED_SHORT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5123"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_UNSIGNED_SHORT_4_4_4_4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32819"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_UNSIGNED_SHORT_5_5_5_1"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32820"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_UNSIGNED_SHORT_5_6_5"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33635"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VALIDATE_STATUS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35715"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VENDOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7936"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VERSION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7938"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34975"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VERTEX_ATTRIB_ARRAY_ENABLED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34338"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VERTEX_ATTRIB_ARRAY_NORMALIZED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34922"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VERTEX_ATTRIB_ARRAY_POINTER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34373"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VERTEX_ATTRIB_ARRAY_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34339"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VERTEX_ATTRIB_ARRAY_STRIDE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34340"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VERTEX_ATTRIB_ARRAY_TYPE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34341"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VERTEX_SHADER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35633"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VIEWPORT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2978"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ZERO"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
 <class name="GLException"
  extends="java.lang.RuntimeException"
  abstract="false"
@@ -98546,6 +105096,19 @@
 <parameter name="stencilSize" type="int">
 </parameter>
 </method>
+<method name="setEGLContextClientVersion"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="version" type="int">
+</parameter>
+</method>
 <method name="setEGLContextFactory"
  return="void"
  abstract="false"
@@ -99460,6 +106023,39 @@
 <parameter name="smOffset" type="int">
 </parameter>
 </method>
+<method name="setLookAtM"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="rm" type="float[]">
+</parameter>
+<parameter name="rmOffset" type="int">
+</parameter>
+<parameter name="eyeX" type="float">
+</parameter>
+<parameter name="eyeY" type="float">
+</parameter>
+<parameter name="eyeZ" type="float">
+</parameter>
+<parameter name="centerX" type="float">
+</parameter>
+<parameter name="centerY" type="float">
+</parameter>
+<parameter name="centerZ" type="float">
+</parameter>
+<parameter name="upX" type="float">
+</parameter>
+<parameter name="upY" type="float">
+</parameter>
+<parameter name="upZ" type="float">
+</parameter>
+</method>
 <method name="setRotateEulerM"
  return="void"
  abstract="false"
@@ -125460,6 +132056,19 @@
 <parameter name="params" type="java.util.HashMap&lt;java.lang.String, java.lang.String&gt;">
 </parameter>
 </method>
+<method name="setEngineByPackageName"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="enginePackageName" type="java.lang.String">
+</parameter>
+</method>
 <method name="setLanguage"
  return="int"
  abstract="false"
@@ -199627,6 +206236,17 @@
  visibility="public"
 >
 </field>
+<field name="OP_BREAKPOINT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="236"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="OP_CHECK_CAST"
  type="int"
  transient="false"
@@ -199968,6 +206588,17 @@
  visibility="public"
 >
 </field>
+<field name="OP_EXECUTE_INLINE_RANGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="239"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="OP_FILLED_NEW_ARRAY"
  type="int"
  transient="false"
@@ -201695,6 +208326,17 @@
  visibility="public"
 >
 </field>
+<field name="OP_THROW_VERIFICATION_ERROR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="237"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="OP_USHR_INT"
  type="int"
  transient="false"
@@ -210411,7 +217053,7 @@
  return="void"
  abstract="false"
  native="false"
- synchronized="false"
+ synchronized="true"
  static="false"
  final="false"
  deprecated="not deprecated"
@@ -210439,7 +217081,7 @@
  return="int"
  abstract="false"
  native="false"
- synchronized="false"
+ synchronized="true"
  static="false"
  final="false"
  deprecated="not deprecated"
@@ -210506,7 +217148,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="stream" type="java.io.PipedReader">
+<parameter name="reader" type="java.io.PipedReader">
 </parameter>
 <exception name="IOException" type="java.io.IOException">
 </exception>
@@ -211674,7 +218316,7 @@
 </parameter>
 <parameter name="offset" type="int">
 </parameter>
-<parameter name="count" type="int">
+<parameter name="length" type="int">
 </parameter>
 <exception name="IOException" type="java.io.IOException">
 </exception>
@@ -234636,21 +241278,6 @@
  visibility="protected"
 >
 </method>
-<method name="getOption"
- return="java.lang.Object"
- abstract="true"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="optID" type="int">
-</parameter>
-<exception name="SocketException" type="java.net.SocketException">
-</exception>
-</method>
 <method name="getTTL"
  return="byte"
  abstract="true"
@@ -234801,23 +241428,6 @@
 <exception name="IOException" type="java.io.IOException">
 </exception>
 </method>
-<method name="setOption"
- return="void"
- abstract="true"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="optID" type="int">
-</parameter>
-<parameter name="val" type="java.lang.Object">
-</parameter>
-<exception name="SocketException" type="java.net.SocketException">
-</exception>
-</method>
 <method name="setTTL"
  return="void"
  abstract="true"
@@ -246388,7 +252998,7 @@
  return="void"
  abstract="false"
  native="false"
- synchronized="true"
+ synchronized="false"
  static="false"
  final="true"
  deprecated="not deprecated"
@@ -246621,8 +253231,6 @@
 </parameter>
 <parameter name="aliases" type="java.lang.String[]">
 </parameter>
-<exception name="IllegalCharsetNameException" type="java.nio.charset.IllegalCharsetNameException">
-</exception>
 </constructor>
 <method name="aliases"
  return="java.util.Set&lt;java.lang.String&gt;"
@@ -246735,7 +253343,7 @@
  return="java.nio.ByteBuffer"
  abstract="false"
  native="false"
- synchronized="true"
+ synchronized="false"
  static="false"
  final="true"
  deprecated="not deprecated"
@@ -246782,10 +253390,6 @@
 >
 <parameter name="charsetName" type="java.lang.String">
 </parameter>
-<exception name="IllegalCharsetNameException" type="java.nio.charset.IllegalCharsetNameException">
-</exception>
-<exception name="UnsupportedCharsetException" type="java.nio.charset.UnsupportedCharsetException">
-</exception>
 </method>
 <method name="hashCode"
  return="int"
@@ -246813,7 +253417,7 @@
  return="boolean"
  abstract="false"
  native="false"
- synchronized="false"
+ synchronized="true"
  static="true"
  final="false"
  deprecated="not deprecated"
@@ -246821,8 +253425,6 @@
 >
 <parameter name="charsetName" type="java.lang.String">
 </parameter>
-<exception name="IllegalCharsetNameException" type="java.nio.charset.IllegalCharsetNameException">
-</exception>
 </method>
 <method name="name"
  return="java.lang.String"
@@ -278923,8 +285525,6 @@
 >
 <implements name="java.lang.Cloneable">
 </implements>
-<implements name="java.util.List">
-</implements>
 <implements name="java.util.RandomAccess">
 </implements>
 <implements name="java.io.Serializable">
@@ -278936,6 +285536,8 @@
  deprecated="not deprecated"
  visibility="public"
 >
+<parameter name="capacity" type="int">
+</parameter>
 </constructor>
 <constructor name="ArrayList"
  type="java.util.ArrayList"
@@ -278944,8 +285546,6 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="capacity" type="int">
-</parameter>
 </constructor>
 <constructor name="ArrayList"
  type="java.util.ArrayList"
@@ -278991,7 +285591,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="location" type="int">
+<parameter name="index" type="int">
 </parameter>
 </method>
 <method name="size"
@@ -279964,6 +286564,36 @@
  deprecated="not deprecated"
  visibility="public"
 >
+<parameter name="array" type="short[]">
+</parameter>
+</method>
+<method name="sort"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="array" type="short[]">
+</parameter>
+<parameter name="start" type="int">
+</parameter>
+<parameter name="end" type="int">
+</parameter>
+</method>
+<method name="sort"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
 <parameter name="array" type="java.lang.Object[]">
 </parameter>
 </method>
@@ -280018,36 +286648,6 @@
 <parameter name="comparator" type="java.util.Comparator&lt;? super T&gt;">
 </parameter>
 </method>
-<method name="sort"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="array" type="short[]">
-</parameter>
-</method>
-<method name="sort"
- return="void"
- abstract="false"
- native="false"
- synchronized="false"
- static="true"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<parameter name="array" type="short[]">
-</parameter>
-<parameter name="start" type="int">
-</parameter>
-<parameter name="end" type="int">
-</parameter>
-</method>
 <method name="toString"
  return="java.lang.String"
  abstract="false"
@@ -284315,8 +290915,6 @@
 >
 <implements name="java.lang.Cloneable">
 </implements>
-<implements name="java.util.Map">
-</implements>
 <implements name="java.io.Serializable">
 </implements>
 <constructor name="HashMap"
@@ -301144,7 +307742,7 @@
  return="void"
  abstract="false"
  native="false"
- synchronized="false"
+ synchronized="true"
  static="false"
  final="false"
  deprecated="not deprecated"
@@ -304167,8 +310765,6 @@
 </parameter>
 <parameter name="replacement" type="java.lang.String">
 </parameter>
-<exception name="IllegalStateException" type="java.lang.IllegalStateException">
-</exception>
 </method>
 <method name="appendTail"
  return="java.lang.StringBuffer"
@@ -304193,22 +310789,11 @@
  deprecated="not deprecated"
  visibility="public"
 >
-</method>
-<method name="end"
- return="int"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
 <parameter name="group" type="int">
 </parameter>
 </method>
-<method name="find"
- return="boolean"
+<method name="end"
+ return="int"
  abstract="false"
  native="false"
  synchronized="false"
@@ -304231,8 +310816,8 @@
 <parameter name="start" type="int">
 </parameter>
 </method>
-<method name="group"
- return="java.lang.String"
+<method name="find"
+ return="boolean"
  abstract="false"
  native="false"
  synchronized="false"
@@ -304255,6 +310840,17 @@
 <parameter name="group" type="int">
 </parameter>
 </method>
+<method name="group"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="groupCount"
  return="int"
  abstract="false"
@@ -304429,6 +311025,8 @@
  deprecated="not deprecated"
  visibility="public"
 >
+<parameter name="input" type="java.lang.CharSequence">
+</parameter>
 </method>
 <method name="reset"
  return="java.util.regex.Matcher"
@@ -304440,21 +311038,6 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="input" type="java.lang.CharSequence">
-</parameter>
-</method>
-<method name="start"
- return="int"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-<exception name="IllegalStateException" type="java.lang.IllegalStateException">
-</exception>
 </method>
 <method name="start"
  return="int"
@@ -304471,6 +311054,17 @@
 <exception name="IllegalStateException" type="java.lang.IllegalStateException">
 </exception>
 </method>
+<method name="start"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="toMatchResult"
  return="java.util.regex.MatchResult"
  abstract="false"
@@ -304544,6 +311138,8 @@
 >
 <parameter name="pattern" type="java.lang.String">
 </parameter>
+<parameter name="flags" type="int">
+</parameter>
 <exception name="PatternSyntaxException" type="java.util.regex.PatternSyntaxException">
 </exception>
 </method>
@@ -304559,10 +311155,6 @@
 >
 <parameter name="pattern" type="java.lang.String">
 </parameter>
-<parameter name="flags" type="int">
-</parameter>
-<exception name="PatternSyntaxException" type="java.util.regex.PatternSyntaxException">
-</exception>
 </method>
 <method name="flags"
  return="int"
@@ -304637,7 +311229,9 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="input" type="java.lang.CharSequence">
+<parameter name="inputSeq" type="java.lang.CharSequence">
+</parameter>
+<parameter name="limit" type="int">
 </parameter>
 </method>
 <method name="split"
@@ -304650,9 +311244,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="inputSeq" type="java.lang.CharSequence">
-</parameter>
-<parameter name="limit" type="int">
+<parameter name="input" type="java.lang.CharSequence">
 </parameter>
 </method>
 <field name="CANON_EQ"
diff --git a/camera/tests/CameraServiceTest/Android.mk b/camera/tests/CameraServiceTest/Android.mk
index c2a02bb..8da7c1f 100644
--- a/camera/tests/CameraServiceTest/Android.mk
+++ b/camera/tests/CameraServiceTest/Android.mk
@@ -14,6 +14,7 @@
 LOCAL_CFLAGS :=
 
 LOCAL_SHARED_LIBRARIES += \
+		libbinder \
                 libcutils \
                 libutils \
                 libui
diff --git a/cmds/app_process/Android.mk b/cmds/app_process/Android.mk
index a33f5cc..2391b72 100644
--- a/cmds/app_process/Android.mk
+++ b/cmds/app_process/Android.mk
@@ -7,6 +7,7 @@
 LOCAL_SHARED_LIBRARIES := \
 	libcutils \
 	libutils \
+	libbinder \
 	libandroid_runtime
 
 LOCAL_MODULE:= app_process
diff --git a/cmds/bootanimation/Android.mk b/cmds/bootanimation/Android.mk
index 3449de1..939b63f 100644
--- a/cmds/bootanimation/Android.mk
+++ b/cmds/bootanimation/Android.mk
@@ -17,6 +17,7 @@
 LOCAL_SHARED_LIBRARIES := \
 	libcutils \
 	libutils \
+	libbinder \
     libui \
 	libskia \
     libEGL \
diff --git a/cmds/installd/commands.c b/cmds/installd/commands.c
index 70a1206..dcae0c7 100644
--- a/cmds/installd/commands.c
+++ b/cmds/installd/commands.c
@@ -16,7 +16,7 @@
 
 #include "installd.h"
 
-int install(const char *pkgname, uid_t uid, gid_t gid)
+int install(const char *pkgname, int encrypted_fs_flag, uid_t uid, gid_t gid)
 {
     char pkgdir[PKG_PATH_MAX];
     char libdir[PKG_PATH_MAX];
@@ -26,10 +26,18 @@
         return -1;
         
     }
-    if (create_pkg_path(pkgdir, PKG_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX))
-        return -1;
-    if (create_pkg_path(libdir, PKG_LIB_PREFIX, pkgname, PKG_LIB_POSTFIX))
-        return -1;
+
+    if (encrypted_fs_flag == USE_UNENCRYPTED_FS) {
+        if (create_pkg_path(pkgdir, PKG_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX))
+            return -1;
+        if (create_pkg_path(libdir, PKG_LIB_PREFIX, pkgname, PKG_LIB_POSTFIX))
+            return -1;
+    } else {
+        if (create_pkg_path(pkgdir, PKG_SEC_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX))
+            return -1;
+        if (create_pkg_path(libdir, PKG_SEC_LIB_PREFIX, pkgname, PKG_LIB_POSTFIX))
+            return -1;
+    }
 
     if (mkdir(pkgdir, 0755) < 0) {
         LOGE("cannot create dir '%s': %s\n", pkgdir, strerror(errno));
@@ -54,41 +62,58 @@
     return 0;
 }
 
-int uninstall(const char *pkgname)
+int uninstall(const char *pkgname, int encrypted_fs_flag)
 {
     char pkgdir[PKG_PATH_MAX];
 
-    if (create_pkg_path(pkgdir, PKG_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX))
-        return -1;
+    if (encrypted_fs_flag == USE_UNENCRYPTED_FS) {
+        if (create_pkg_path(pkgdir, PKG_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX))
+            return -1;
+    } else {
+        if (create_pkg_path(pkgdir, PKG_SEC_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX))
+            return -1;
+    }
 
         /* delete contents AND directory, no exceptions */
     return delete_dir_contents(pkgdir, 1, 0);
 }
 
-int delete_user_data(const char *pkgname)
+int delete_user_data(const char *pkgname, int encrypted_fs_flag)
 {
     char pkgdir[PKG_PATH_MAX];
 
-    if (create_pkg_path(pkgdir, PKG_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX))
-        return -1;
+    if (encrypted_fs_flag == USE_UNENCRYPTED_FS) {
+        if (create_pkg_path(pkgdir, PKG_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX))
+            return -1;
+    } else {
+        if (create_pkg_path(pkgdir, PKG_SEC_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX))
+            return -1;
+    }
 
         /* delete contents, excluding "lib", but not the directory itself */
     return delete_dir_contents(pkgdir, 0, "lib");
 }
 
-int delete_cache(const char *pkgname)
+int delete_cache(const char *pkgname, int encrypted_fs_flag)
 {
     char cachedir[PKG_PATH_MAX];
 
-    if (create_pkg_path(cachedir, CACHE_DIR_PREFIX, pkgname, CACHE_DIR_POSTFIX))
-        return -1;
+    if (encrypted_fs_flag == USE_UNENCRYPTED_FS) {
+        if (create_pkg_path(cachedir, CACHE_DIR_PREFIX, pkgname, CACHE_DIR_POSTFIX))
+            return -1;
+    } else {
+        if (create_pkg_path(cachedir, CACHE_SEC_DIR_PREFIX, pkgname, CACHE_DIR_POSTFIX))
+            return -1;
+    }
 
         /* delete contents, not the directory, no exceptions */
     return delete_dir_contents(cachedir, 0, 0);
 }
 
-
-static int disk_free(void)
+/* TODO(oam): depending on use case (ecryptfs or dmcrypt)
+ * change implementation
+ */
+static int disk_free()
 {
     struct statfs sfs;
     if (statfs(PKG_DIR_PREFIX, &sfs) == 0) {
@@ -98,7 +123,6 @@
     }
 }
 
-
 /* Try to ensure free_size bytes of storage are available.
  * Returns 0 on success.
  * This is rather simple-minded because doing a full LRU would
@@ -120,6 +144,39 @@
     LOGI("free_cache(%d) avail %d\n", free_size, avail);
     if (avail >= free_size) return 0;
 
+    /* First try encrypted dir */
+    d = opendir(PKG_SEC_DIR_PREFIX);
+    if (d == NULL) {
+        LOGE("cannot open %s\n", PKG_SEC_DIR_PREFIX);
+    } else {
+        dfd = dirfd(d);
+
+        while ((de = readdir(d))) {
+           if (de->d_type != DT_DIR) continue;
+           name = de->d_name;
+
+            /* always skip "." and ".." */
+            if (name[0] == '.') {
+                if (name[1] == 0) continue;
+                if ((name[1] == '.') && (name[2] == 0)) continue;
+            }
+
+            subfd = openat(dfd, name, O_RDONLY | O_DIRECTORY);
+            if (subfd < 0) continue;
+
+            delete_dir_contents_fd(subfd, "cache");
+            close(subfd);
+
+            avail = disk_free();
+            if (avail >= free_size) {
+                closedir(d);
+                return 0;
+            }
+        }
+        closedir(d);
+    }
+
+    /* Next try unencrypted dir... */
     d = opendir(PKG_DIR_PREFIX);
     if (d == NULL) {
         LOGE("cannot open %s\n", PKG_DIR_PREFIX);
@@ -131,7 +188,7 @@
         if (de->d_type != DT_DIR) continue;
         name = de->d_name;
 
-            /* always skip "." and ".." */
+        /* always skip "." and ".." */
         if (name[0] == '.') {
             if (name[1] == 0) continue;
             if ((name[1] == '.') && (name[2] == 0)) continue;
@@ -150,10 +207,11 @@
         }
     }
     closedir(d);
+
+    /* Fail case - not possible to free space */
     return -1;
 }
 
-
 /* used by move_dex, rm_dex, etc to ensure that the provided paths
  * don't point anywhere other than at the APK_DIR_PREFIX
  */
@@ -288,7 +346,7 @@
 
 int get_size(const char *pkgname, const char *apkpath,
              const char *fwdlock_apkpath,
-             int *_codesize, int *_datasize, int *_cachesize)
+             int *_codesize, int *_datasize, int *_cachesize, int encrypted_fs_flag)
 {
     DIR *d;
     int dfd;
@@ -324,8 +382,14 @@
         }
     }
 
-    if (create_pkg_path(path, PKG_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX)) {
-        goto done;
+    if (encrypted_fs_flag == 0) {
+        if (create_pkg_path(path, PKG_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX)) {
+            goto done;
+        }
+    } else {
+        if (create_pkg_path(path, PKG_SEC_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX)) {
+            goto done;
+        }
     }
 
     d = opendir(path);
diff --git a/cmds/installd/installd.c b/cmds/installd/installd.c
index 7c7441f..5bc6c86 100644
--- a/cmds/installd/installd.c
+++ b/cmds/installd/installd.c
@@ -29,7 +29,7 @@
 
 static int do_install(char **arg, char reply[REPLY_MAX])
 {
-    return install(arg[0], atoi(arg[1]), atoi(arg[2])); /* pkgname, uid, gid */
+    return install(arg[0], atoi(arg[1]), atoi(arg[2]), atoi(arg[3])); /* pkgname, uid, gid */
 }
 
 static int do_dexopt(char **arg, char reply[REPLY_MAX])
@@ -50,7 +50,7 @@
 
 static int do_remove(char **arg, char reply[REPLY_MAX])
 {
-    return uninstall(arg[0]); /* pkgname */
+    return uninstall(arg[0], atoi(arg[1])); /* pkgname */
 }
 
 static int do_free_cache(char **arg, char reply[REPLY_MAX]) /* TODO int:free_size */
@@ -60,7 +60,7 @@
 
 static int do_rm_cache(char **arg, char reply[REPLY_MAX])
 {
-    return delete_cache(arg[0]); /* pkgname */
+    return delete_cache(arg[0], atoi(arg[1])); /* pkgname */
 }
 
 static int do_protect(char **arg, char reply[REPLY_MAX])
@@ -76,7 +76,7 @@
     int res = 0;
 
         /* pkgdir, apkpath */
-    res = get_size(arg[0], arg[1], arg[2], &codesize, &datasize, &cachesize);
+    res = get_size(arg[0], arg[1], arg[2], &codesize, &datasize, &cachesize, atoi(arg[3]));
 
     sprintf(reply,"%d %d %d", codesize, datasize, cachesize);
     return res;
@@ -84,7 +84,7 @@
 
 static int do_rm_user_data(char **arg, char reply[REPLY_MAX])
 {
-    return delete_user_data(arg[0]); /* pkgname */
+    return delete_user_data(arg[0], atoi(arg[1])); /* pkgname */
 }
 
 struct cmdinfo {
@@ -95,16 +95,16 @@
 
 struct cmdinfo cmds[] = {
     { "ping",                 0, do_ping },
-    { "install",              3, do_install },
+    { "install",              4, do_install },
     { "dexopt",               3, do_dexopt },
     { "movedex",              2, do_move_dex },
     { "rmdex",                1, do_rm_dex },
-    { "remove",               1, do_remove },
+    { "remove",               2, do_remove },
     { "freecache",            1, do_free_cache },
-    { "rmcache",              1, do_rm_cache },
+    { "rmcache",              2, do_rm_cache },
     { "protect",              2, do_protect },
-    { "getsize",              3, do_get_size },
-    { "rmuserdata",           1, do_rm_user_data },
+    { "getsize",              4, do_get_size },
+    { "rmuserdata",           2, do_rm_user_data },
 };
 
 static int readx(int s, void *_buf, int count)
diff --git a/cmds/installd/installd.h b/cmds/installd/installd.h
index db3badd..1679d14 100644
--- a/cmds/installd/installd.h
+++ b/cmds/installd/installd.h
@@ -48,16 +48,23 @@
 /* elements combined with a valid package name to form paths */
 
 #define PKG_DIR_PREFIX         "/data/data/"
+#define PKG_SEC_DIR_PREFIX     "/data/secure/data/"
 #define PKG_DIR_POSTFIX        ""
 
 #define PKG_LIB_PREFIX         "/data/data/"
+#define PKG_SEC_LIB_PREFIX     "/data/secure/data/"
 #define PKG_LIB_POSTFIX        "/lib"
 
 #define CACHE_DIR_PREFIX       "/data/data/"
+#define CACHE_SEC_DIR_PREFIX   "/data/secure/data/"
 #define CACHE_DIR_POSTFIX      "/cache"
 
 #define APK_DIR_PREFIX         "/data/app/"
 
+/* Encrypted File SYstems constants */
+#define USE_ENCRYPTED_FS       1
+#define USE_UNENCRYPTED_FS     0
+
 /* other handy constants */
 
 #define PROTECTED_DIR_PREFIX  "/data/app-private/"
@@ -87,14 +94,14 @@
 
 /* commands.c */
 
-int install(const char *pkgname, uid_t uid, gid_t gid);
-int uninstall(const char *pkgname);
-int delete_user_data(const char *pkgname);
-int delete_cache(const char *pkgname);
+int install(const char *pkgname, int encrypted_fs_flag, uid_t uid, gid_t gid);
+int uninstall(const char *pkgname, int encrypted_fs_flag);
+int delete_user_data(const char *pkgname, int encrypted_fs_flag);
+int delete_cache(const char *pkgname, int encrypted_fs_flag);
 int move_dex(const char *src, const char *dst);
 int rm_dex(const char *path);
 int protect(char *pkgname, gid_t gid);
 int get_size(const char *pkgname, const char *apkpath, const char *fwdlock_apkpath,
-             int *codesize, int *datasize, int *cachesize);
+             int *codesize, int *datasize, int *cachesize, int encrypted_fs_flag);
 int free_cache(int free_size);
 int dexopt(const char *apk_path, uid_t uid, int is_public);
diff --git a/core/java/android/accounts/AccountManagerService.java b/core/java/android/accounts/AccountManagerService.java
index de01153..54e03759 100644
--- a/core/java/android/accounts/AccountManagerService.java
+++ b/core/java/android/accounts/AccountManagerService.java
@@ -38,6 +38,7 @@
 import android.database.sqlite.SQLiteOpenHelper;
 import android.os.Binder;
 import android.os.Bundle;
+import android.os.Environment;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.IBinder;
@@ -52,6 +53,7 @@
 import android.util.Log;
 import android.util.Pair;
 
+import java.io.File;
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
 import java.util.ArrayList;
@@ -1351,9 +1353,20 @@
         }
     }
 
+    private static String getDatabaseName() {
+        if(Environment.isEncryptedFilesystemEnabled()) {
+            // Hard-coded path in case of encrypted file system
+            return Environment.getSystemSecureDirectory().getPath() + File.separator + DATABASE_NAME;
+        } else {
+            // Regular path in case of non-encrypted file system
+            return DATABASE_NAME;
+        }
+    }
+
     private class DatabaseHelper extends SQLiteOpenHelper {
+
         public DatabaseHelper(Context context) {
-            super(context, DATABASE_NAME, null, DATABASE_VERSION);
+            super(context, AccountManagerService.getDatabaseName(), null, DATABASE_VERSION);
         }
 
         @Override
diff --git a/core/java/android/app/ApplicationContext.java b/core/java/android/app/ApplicationContext.java
index 1e04abf..b3d16e9 100644
--- a/core/java/android/app/ApplicationContext.java
+++ b/core/java/android/app/ApplicationContext.java
@@ -466,14 +466,7 @@
 
     @Override
     public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory) {
-        File dir = getDatabasesDir();
-        if (!dir.isDirectory() && dir.mkdir()) {
-            FileUtils.setPermissions(dir.getPath(),
-                FileUtils.S_IRWXU|FileUtils.S_IRWXG|FileUtils.S_IXOTH,
-                -1, -1);
-        }
-
-        File f = makeFilename(dir, name);
+        File f = validateFilePath(name, true);
         SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(f, factory);
         setFilePermissionsFromMode(f.getPath(), mode, 0);
         return db;
@@ -482,7 +475,7 @@
     @Override
     public boolean deleteDatabase(String name) {
         try {
-            File f = makeFilename(getDatabasesDir(), name);
+            File f = validateFilePath(name, false);
             return f.delete();
         } catch (Exception e) {
         }
@@ -491,7 +484,7 @@
 
     @Override
     public File getDatabasePath(String name) {
-        return makeFilename(getDatabasesDir(), name);
+        return validateFilePath(name, false);
     }
 
     @Override
@@ -1454,12 +1447,35 @@
         FileUtils.setPermissions(name, perms, -1, -1);
     }
 
+    private File validateFilePath(String name, boolean createDirectory) {
+        File dir;
+        File f;
+
+        if (name.charAt(0) == File.separatorChar) {
+            String dirPath = name.substring(0, name.lastIndexOf(File.separatorChar));
+            dir = new File(dirPath);
+            name = name.substring(name.lastIndexOf(File.separatorChar));
+            f = new File(dir, name);
+        } else {
+            dir = getDatabasesDir();
+            f = makeFilename(dir, name);
+        }
+
+        if (createDirectory && !dir.isDirectory() && dir.mkdir()) {
+            FileUtils.setPermissions(dir.getPath(),
+                FileUtils.S_IRWXU|FileUtils.S_IRWXG|FileUtils.S_IXOTH,
+                -1, -1);
+        }
+
+        return f;
+    }
+
     private File makeFilename(File base, String name) {
         if (name.indexOf(File.separatorChar) < 0) {
             return new File(base, name);
         }
         throw new IllegalArgumentException(
-            "File " + name + " contains a path separator");
+                "File " + name + " contains a path separator");
     }
 
     // ----------------------------------------------------------------------
diff --git a/core/java/android/content/SyncStorageEngine.java b/core/java/android/content/SyncStorageEngine.java
index be70909..b6bb7db 100644
--- a/core/java/android/content/SyncStorageEngine.java
+++ b/core/java/android/content/SyncStorageEngine.java
@@ -16,16 +16,11 @@
 
 package android.content;
 
-import com.android.internal.os.AtomicFile;
-import com.android.internal.util.ArrayUtils;
-import com.android.internal.util.FastXmlSerializer;
-
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 import org.xmlpull.v1.XmlSerializer;
 
 import android.accounts.Account;
-import android.backup.IBackupManager;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteException;
@@ -37,11 +32,15 @@
 import android.os.Parcel;
 import android.os.RemoteCallbackList;
 import android.os.RemoteException;
-import android.os.ServiceManager;
+import android.os.SystemProperties;
 import android.util.Log;
 import android.util.SparseArray;
 import android.util.Xml;
 
+import com.android.internal.os.AtomicFile;
+import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.FastXmlSerializer;
+
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -258,7 +257,9 @@
 
         mCal = Calendar.getInstance(TimeZone.getTimeZone("GMT+0"));
 
-        File dataDir = Environment.getDataDirectory();
+        // This call will return the correct directory whether Encrypted File Systems is
+        // enabled or not.
+        File dataDir = Environment.getSecureDataDirectory();
         File systemDir = new File(dataDir, "system");
         File syncDir = new File(systemDir, "sync");
         mAccountInfoFile = new AtomicFile(new File(syncDir, "accounts.xml"));
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java
index 1800c30..3dea286 100644
--- a/core/java/android/content/pm/ApplicationInfo.java
+++ b/core/java/android/content/pm/ApplicationInfo.java
@@ -208,6 +208,16 @@
     public static final int FLAG_RESTORE_NEEDS_APPLICATION = 1<<16;
 
     /**
+     * Value for {@link #flags}: this is true if the application has set
+     * its android:neverEncrypt to true, false otherwise. It is used to specify
+     * that this package specifically "opts-out" of a secured file system solution,
+     * and will always store its data in-the-clear.
+     *
+     * {@hide}
+     */
+    public static final int FLAG_NEVER_ENCRYPT = 1<<17;
+
+    /**
      * Flags associated with the application.  Any combination of
      * {@link #FLAG_SYSTEM}, {@link #FLAG_DEBUGGABLE}, {@link #FLAG_HAS_CODE},
      * {@link #FLAG_PERSISTENT}, {@link #FLAG_FACTORY_TEST}, and
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 3f8c71e..48d1add 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -1399,6 +1399,12 @@
             ai.flags |= ApplicationInfo.FLAG_TEST_ONLY;
         }
 
+        if (sa.getBoolean(
+                com.android.internal.R.styleable.AndroidManifestApplication_neverEncrypt,
+                false)) {
+            ai.flags |= ApplicationInfo.FLAG_NEVER_ENCRYPT;
+        }
+
         String str;
         str = sa.getNonResourceString(
                 com.android.internal.R.styleable.AndroidManifestApplication_permission);
diff --git a/core/java/android/ddm/DdmHandleHello.java b/core/java/android/ddm/DdmHandleHello.java
index c5d591f..0603ca5 100644
--- a/core/java/android/ddm/DdmHandleHello.java
+++ b/core/java/android/ddm/DdmHandleHello.java
@@ -152,8 +152,8 @@
             "hprof-heap-dump", "method-trace-profiling"
         };
 
-        if (Config.LOGD)
-            Log.d("ddm-heap", "Got feature list request");
+        if (Config.LOGV)
+            Log.v("ddm-heap", "Got feature list request");
 
         int size = 4 + 4 * features.length;
         for (int i = features.length-1; i >= 0; i--)
diff --git a/core/java/android/net/MobileDataStateTracker.java b/core/java/android/net/MobileDataStateTracker.java
index 538e51a..b254961 100644
--- a/core/java/android/net/MobileDataStateTracker.java
+++ b/core/java/android/net/MobileDataStateTracker.java
@@ -60,12 +60,11 @@
      * @param apnType the Phone apnType
      * @param tag the name of this network
      */
-    public MobileDataStateTracker(Context context, Handler target,
-            int netType, String apnType, String tag) {
+    public MobileDataStateTracker(Context context, Handler target, int netType, String tag) {
         super(context, target, netType,
                 TelephonyManager.getDefault().getNetworkType(), tag,
                 TelephonyManager.getDefault().getNetworkTypeName());
-        mApnType = apnType;
+        mApnType = networkTypeToApnType(netType);
         mPhoneService = null;
         if(netType == ConnectivityManager.TYPE_MOBILE) {
             mEnabled = true;
@@ -501,4 +500,22 @@
                 + " APN type \"" + apnType + "\"");
         return Phone.APN_REQUEST_FAILED;
     }
+
+    public static String networkTypeToApnType(int netType) {
+        switch(netType) {
+            case ConnectivityManager.TYPE_MOBILE:
+                return Phone.APN_TYPE_DEFAULT;  // TODO - use just one of these
+            case ConnectivityManager.TYPE_MOBILE_MMS:
+                return Phone.APN_TYPE_MMS;
+            case ConnectivityManager.TYPE_MOBILE_SUPL:
+                return Phone.APN_TYPE_SUPL;
+            case ConnectivityManager.TYPE_MOBILE_DUN:
+                return Phone.APN_TYPE_DUN;
+            case ConnectivityManager.TYPE_MOBILE_HIPRI:
+                return Phone.APN_TYPE_HIPRI;
+            default:
+                Log.e(TAG, "Error mapping networkType " + netType + " to apnType.");
+                return null;
+        }
+    }
 }
diff --git a/core/java/android/net/Uri.java b/core/java/android/net/Uri.java
index 9a1b65d..f2ea539 100644
--- a/core/java/android/net/Uri.java
+++ b/core/java/android/net/Uri.java
@@ -1567,51 +1567,40 @@
         if (isOpaque()) {
             throw new UnsupportedOperationException(NOT_HIERARCHICAL);
         }
+        if (key == null) {
+          throw new NullPointerException("key");
+        }
 
-        String query = getEncodedQuery();
-
+        final String query = getEncodedQuery();
         if (query == null) {
             return null;
         }
 
-        String encodedKey;
-        try {
-            encodedKey = URLEncoder.encode(key, DEFAULT_ENCODING);
-        } catch (UnsupportedEncodingException e) {
-            throw new AssertionError(e);
-        }
+        final String encodedKey = encode(key, null);
+        final int encodedKeyLength = encodedKey.length();
 
-        String prefix = encodedKey + "=";
+        int encodedKeySearchIndex = 0;
+        final int encodedKeySearchEnd = query.length() - (encodedKeyLength + 1);
 
-        if (query.length() < prefix.length()) {
-            return null;
-        }
-
-        int start;
-        if (query.startsWith(prefix)) {
-            // It's the first parameter.
-            start = prefix.length();
-        } else {
-            // It must be later in the query string.
-            prefix = "&" + prefix;
-            start = query.indexOf(prefix);
-
-            if (start == -1) {
-                // Not found.
-                return null;
+        while (encodedKeySearchIndex <= encodedKeySearchEnd) {
+            int keyIndex = query.indexOf(encodedKey, encodedKeySearchIndex);
+            if (keyIndex == -1) {
+                break;
             }
-
-            start += prefix.length();
+            final int equalsIndex = keyIndex + encodedKeyLength;
+            if (query.charAt(equalsIndex) != '=') {
+                encodedKeySearchIndex = equalsIndex + 1;
+                continue;
+            }
+            if (keyIndex == 0 || query.charAt(keyIndex - 1) == '&') {
+                int end = query.indexOf('&', equalsIndex);
+                if (end == -1) {
+                    end = query.length();
+                }
+                return decode(query.substring(equalsIndex + 1, end));
+            }
         }
-
-        // Find end of value.
-        int end = query.indexOf('&', start);
-        if (end == -1) {
-            end = query.length();
-        }
-
-        String value = query.substring(start, end);
-        return decode(value);
+        return null;
     }
 
     /** Identifies a null parcelled Uri. */
diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java
index b4f64b6..b33e8be 100644
--- a/core/java/android/os/Debug.java
+++ b/core/java/android/os/Debug.java
@@ -753,6 +753,16 @@
     }
 
     /**
+     * Dumps the contents of VM reference tables (e.g. JNI locals and
+     * globals) to the log file.
+     *
+     * @hide
+     */
+    public static final void dumpReferenceTables() {
+        VMDebug.dumpReferenceTables();
+    }
+
+    /**
      * API for gathering and querying instruction counts.
      *
      * Example usage:
diff --git a/core/java/android/os/Environment.java b/core/java/android/os/Environment.java
index f761e8e..6212b17 100644
--- a/core/java/android/os/Environment.java
+++ b/core/java/android/os/Environment.java
@@ -26,6 +26,8 @@
     private static final File ROOT_DIRECTORY
             = getDirectory("ANDROID_ROOT", "/system");
 
+    private static final String SYSTEM_PROPERTY_EFS_ENABLED = "persist.security.efs.enabled";
+
     /**
      * Gets the Android root directory.
      */
@@ -33,9 +35,55 @@
         return ROOT_DIRECTORY;
     }
 
+    /**
+     * Gets the system directory available for secure storage.
+     * If Encrypted File system is enabled, it returns an encrypted directory (/data/secure/system).
+     * Otherwise, it returns the unencrypted /data/system directory.
+     * @return File object representing the secure storage system directory.
+     * @hide
+     */
+    public static File getSystemSecureDirectory() {
+        if (isEncryptedFilesystemEnabled()) {
+            return new File(SECURE_DATA_DIRECTORY, "system");
+        } else {
+            return new File(DATA_DIRECTORY, "system");
+        }
+    }
+
+    /**
+     * Gets the data directory for secure storage.
+     * If Encrypted File system is enabled, it returns an encrypted directory (/data/secure).
+     * Otherwise, it returns the unencrypted /data directory.
+     * @return File object representing the data directory for secure storage.
+     * @hide
+     */
+    public static File getSecureDataDirectory() {
+        if (isEncryptedFilesystemEnabled()) {
+            return SECURE_DATA_DIRECTORY;
+        } else {
+            return DATA_DIRECTORY;
+        }
+    }
+
+    /**
+     * Returns whether the Encrypted File System feature is enabled on the device or not.
+     * @return <code>true</code> if Encrypted File System feature is enabled, <code>false</code>
+     * if disabled.
+     * @hide
+     */
+    public static boolean isEncryptedFilesystemEnabled() {
+        return SystemProperties.getBoolean(SYSTEM_PROPERTY_EFS_ENABLED, false);
+    }
+
     private static final File DATA_DIRECTORY
             = getDirectory("ANDROID_DATA", "/data");
 
+    /**
+     * @hide
+     */
+    private static final File SECURE_DATA_DIRECTORY
+            = getDirectory("ANDROID_SECURE_DATA", "/data/secure");
+
     private static final File EXTERNAL_STORAGE_DIRECTORY
             = getDirectory("EXTERNAL_STORAGE", "/sdcard");
 
diff --git a/core/java/android/speech/tts/ITts.aidl b/core/java/android/speech/tts/ITts.aidl
index 1812188..2ed660a 100755
--- a/core/java/android/speech/tts/ITts.aidl
+++ b/core/java/android/speech/tts/ITts.aidl
@@ -59,5 +59,7 @@
 

     int unregisterCallback(in String callingApp, ITtsCallback cb);

 

-    int playSilence(in String callingApp, in long duration, in int queueMode, in String[] params);

+    int playSilence(in String callingApp, in long duration, in int queueMode, in String[] params);
+

+    int setEngineByPackageName(in String enginePackageName);

 }

diff --git a/core/java/android/speech/tts/TextToSpeech.java b/core/java/android/speech/tts/TextToSpeech.java
index 3f369dd..bd19f9e 100755
--- a/core/java/android/speech/tts/TextToSpeech.java
+++ b/core/java/android/speech/tts/TextToSpeech.java
@@ -1254,4 +1254,44 @@
         }

     }
 
+    /**
+     * Sets the speech synthesis engine to be used by its packagename.
+     *
+     * @param enginePackageName
+     *            The packagename for the synthesis engine (ie, "com.svox.pico")
+     *
+     * @return Code indicating success or failure. See {@link #ERROR} and {@link #SUCCESS}.
+     */
+    public int setEngineByPackageName(String enginePackageName) {

+        synchronized (mStartLock) {

+            int result = TextToSpeech.ERROR;

+            if (!mStarted) {

+                return result;

+            }

+            try {

+                result = mITts.setEngineByPackageName(enginePackageName);

+            } catch (RemoteException e) {

+                // TTS died; restart it.

+                Log.e("TextToSpeech.java - setEngineByPackageName", "RemoteException");

+                e.printStackTrace();

+                mStarted = false;

+                initTts();

+            } catch (NullPointerException e) {

+                // TTS died; restart it.

+                Log.e("TextToSpeech.java - setEngineByPackageName", "NullPointerException");

+                e.printStackTrace();

+                mStarted = false;

+                initTts();

+            } catch (IllegalStateException e) {

+                // TTS died; restart it.

+                Log.e("TextToSpeech.java - setEngineByPackageName", "IllegalStateException");

+                e.printStackTrace();

+                mStarted = false;

+                initTts();

+            } finally {

+                return result;

+            }

+        }

+    }
+
 }
diff --git a/core/java/com/android/internal/logging/AndroidHandler.java b/core/java/com/android/internal/logging/AndroidHandler.java
index c4a1479..12f6a4f 100644
--- a/core/java/com/android/internal/logging/AndroidHandler.java
+++ b/core/java/com/android/internal/logging/AndroidHandler.java
@@ -17,12 +17,16 @@
 package com.android.internal.logging;
 
 import android.util.Log;
+import dalvik.system.DalvikLogging;
+import dalvik.system.DalvikLogHandler;
 
-import java.util.logging.*;
-import java.util.Date;
-import java.text.MessageFormat;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.util.logging.Formatter;
+import java.util.logging.Handler;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+import java.util.logging.Logger;
 
 /**
  * Implements a {@link java.util.logging.Logger} handler that writes to the Android log. The
@@ -77,7 +81,7 @@
  *   </tr>
  * </table>
  */
-public class AndroidHandler extends Handler {
+public class AndroidHandler extends Handler implements DalvikLogHandler {
     /**
      * Holds the formatter for all Android log handlers.
      */
@@ -118,33 +122,13 @@
 
     @Override
     public void publish(LogRecord record) {
+        int level = getAndroidLevel(record.getLevel());
+        String tag = DalvikLogging.loggerNameToTag(record.getLoggerName());
+        if (!Log.isLoggable(tag, level)) {
+            return;
+        }
+
         try {
-            int level = getAndroidLevel(record.getLevel());
-            String tag = record.getLoggerName();
-
-            if (tag == null) {
-                // Anonymous logger.
-                tag = "null";    
-            } else {
-                // Tags must be <= 23 characters.
-                int length = tag.length();
-                if (length > 23) {
-                    // Most loggers use the full class name. Try dropping the
-                    // package.
-                    int lastPeriod = tag.lastIndexOf(".");
-                    if (length - lastPeriod - 1 <= 23) {
-                        tag = tag.substring(lastPeriod + 1);
-                    } else {
-                        // Use last 23 chars.
-                        tag = tag.substring(tag.length() - 23);
-                    }
-                }
-            }
-
-            if (!Log.isLoggable(tag, level)) {
-                return;
-            }
-
             String message = getFormatter().format(record);
             Log.println(level, tag, message);
         } catch (RuntimeException e) {
@@ -152,12 +136,26 @@
         }
     }
 
+    public void publish(Logger source, String tag, Level level, String message) {
+        // TODO: avoid ducking into native 2x; we aren't saving any formatter calls
+        int priority = getAndroidLevel(level);
+        if (!Log.isLoggable(tag, priority)) {
+            return;
+        }
+
+        try {
+            Log.println(priority, tag, message);
+        } catch (RuntimeException e) {
+            Log.e("AndroidHandler", "Error logging message.", e);
+        }
+    }
+
     /**
      * Converts a {@link java.util.logging.Logger} logging level into an Android one.
-     * 
+     *
      * @param level The {@link java.util.logging.Logger} logging level.
-     * 
-     * @return The resulting Android logging level. 
+     *
+     * @return The resulting Android logging level.
      */
     static int getAndroidLevel(Level level) {
         int value = level.intValue();
@@ -171,5 +169,4 @@
             return Log.DEBUG;
         }
     }
-    
 }
diff --git a/core/jni/Android.mk b/core/jni/Android.mk
index edb0b78..c92a86c 100644
--- a/core/jni/Android.mk
+++ b/core/jni/Android.mk
@@ -32,6 +32,7 @@
 	android_opengl_GLES10Ext.cpp \
 	android_opengl_GLES11.cpp \
 	android_opengl_GLES11Ext.cpp \
+	android_opengl_GLES20.cpp \
 	android_database_CursorWindow.cpp \
 	android_database_SQLiteCompiledSql.cpp \
 	android_database_SQLiteDebug.cpp \
@@ -163,6 +164,7 @@
 	libdvm \
 	libEGL \
 	libGLESv1_CM \
+	libGLESv2 \
 	libhardware \
 	libhardware_legacy \
 	libsonivox \
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp
index 9f617fb..8364838 100644
--- a/core/jni/AndroidRuntime.cpp
+++ b/core/jni/AndroidRuntime.cpp
@@ -71,6 +71,7 @@
 extern int register_android_opengl_jni_GLES10Ext(JNIEnv* env);
 extern int register_android_opengl_jni_GLES11(JNIEnv* env);
 extern int register_android_opengl_jni_GLES11Ext(JNIEnv* env);
+extern int register_android_opengl_jni_GLES20(JNIEnv* env);
 
 extern int register_android_hardware_Camera(JNIEnv *env);
 
@@ -750,6 +751,18 @@
         opt.optionString = "-Xjitprofile";
         mOptions.add(opt);
     }
+
+    /*
+     * Disable optimizations by setting the corresponding bit to 1.
+     */
+    char jitOptBuf[sizeof("-Xjitdisableopt:") + PROPERTY_VALUE_MAX];
+    property_get("dalvik.vm.jit.disableopt", propBuf, "");
+    if (strlen(propBuf) > 0) {
+        strcpy(jitOptBuf, "-Xjitdisableopt:");
+        strcat(jitOptBuf, propBuf);
+        opt.optionString = jitOptBuf;
+        mOptions.add(opt);
+    }
 #endif
 
     if (executionMode == kEMIntPortable) {
@@ -1177,6 +1190,7 @@
     REG_JNI(register_android_opengl_jni_GLES10Ext),
     REG_JNI(register_android_opengl_jni_GLES11),
     REG_JNI(register_android_opengl_jni_GLES11Ext),
+    REG_JNI(register_android_opengl_jni_GLES20),
 
     REG_JNI(register_android_graphics_Bitmap),
     REG_JNI(register_android_graphics_BitmapFactory),
diff --git a/core/jni/android_net_LocalSocketImpl.cpp b/core/jni/android_net_LocalSocketImpl.cpp
index f14b9fa..e58794b 100644
--- a/core/jni/android_net_LocalSocketImpl.cpp
+++ b/core/jni/android_net_LocalSocketImpl.cpp
@@ -35,8 +35,6 @@
 
 #include <cutils/sockets.h>
 #include <netinet/tcp.h>
-#include <cutils/properties.h>
-#include <cutils/adb_networking.h>
 
 namespace android {
 
diff --git a/core/jni/android_opengl_GLES11.cpp b/core/jni/android_opengl_GLES11.cpp
index 44213ed..0f71b9f 100644
--- a/core/jni/android_opengl_GLES11.cpp
+++ b/core/jni/android_opengl_GLES11.cpp
@@ -24,6 +24,13 @@
 #include <GLES/gl.h>
 #include <GLES/glext.h>
 
+/* special calls implemented in Android's GLES wrapper used to more
+ * efficiently bound-check passed arrays */
+extern "C" {
+GL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type, GLsizei stride,
+        const GLvoid *ptr, GLsizei count);
+}
+
 static int initialized = 0;
 
 static jclass nioAccessClass;
@@ -122,6 +129,19 @@
 					   commit ? 0 : JNI_ABORT);
 }
 
+static void *
+getDirectBufferPointer(JNIEnv *_env, jobject buffer) {
+    char* buf = (char*) _env->GetDirectBufferAddress(buffer);
+    if (buf) {
+        jint position = _env->GetIntField(buffer, positionID);
+        jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
+        buf += position << elementSizeShift;
+    } else {
+        _env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
+    }
+    return (void*) buf;
+}
+
 // --------------------------------------------------------------------------
 
 /* void glBindBuffer ( GLenum target, GLuint buffer ) */
@@ -2035,21 +2055,24 @@
 
 /* void glPointSizePointerOES ( GLenum type, GLsizei stride, const GLvoid *pointer ) */
 static void
-android_glPointSizePointerOES__IILjava_nio_Buffer_2
-  (JNIEnv *_env, jobject _this, jint type, jint stride, jobject pointer_buf) {
+android_glPointSizePointerOESBounds__IILjava_nio_Buffer_2I
+  (JNIEnv *_env, jobject _this, jint type, jint stride, jobject pointer_buf, jint remaining) {
     jarray _array = (jarray) 0;
     jint _remaining;
     GLvoid *pointer = (GLvoid *) 0;
 
-    pointer = (GLvoid *)getPointer(_env, pointer_buf, &_array, &_remaining);
-    glPointSizePointerOES(
+    if (pointer_buf) {
+        pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
+        if ( ! pointer ) {
+            return;
+        }
+    }
+    glPointSizePointerOESBounds(
         (GLenum)type,
         (GLsizei)stride,
-        (GLvoid *)pointer
+        (GLvoid *)pointer,
+        (GLsizei)remaining
     );
-    if (_array) {
-        releasePointer(_env, _array, pointer, JNI_FALSE);
-    }
 }
 
 /* void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, GLint offset ) */
@@ -2454,7 +2477,7 @@
 {"glPointParameterx", "(II)V", (void *) android_glPointParameterx__II },
 {"glPointParameterxv", "(I[II)V", (void *) android_glPointParameterxv__I_3II },
 {"glPointParameterxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glPointParameterxv__ILjava_nio_IntBuffer_2 },
-{"glPointSizePointerOES", "(IILjava/nio/Buffer;)V", (void *) android_glPointSizePointerOES__IILjava_nio_Buffer_2 },
+{"glPointSizePointerOESBounds", "(IILjava/nio/Buffer;I)V", (void *) android_glPointSizePointerOESBounds__IILjava_nio_Buffer_2I },
 {"glTexCoordPointer", "(IIII)V", (void *) android_glTexCoordPointer__IIII },
 {"glTexEnvi", "(III)V", (void *) android_glTexEnvi__III },
 {"glTexEnviv", "(II[II)V", (void *) android_glTexEnviv__II_3II },
diff --git a/core/jni/android_opengl_GLES11Ext.cpp b/core/jni/android_opengl_GLES11Ext.cpp
index 6f3495c..942a0d9 100644
--- a/core/jni/android_opengl_GLES11Ext.cpp
+++ b/core/jni/android_opengl_GLES11Ext.cpp
@@ -24,6 +24,15 @@
 #include <GLES/gl.h>
 #include <GLES/glext.h>
 
+/* special calls implemented in Android's GLES wrapper used to more
+ * efficiently bound-check passed arrays */
+extern "C" {
+GL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type, GLsizei stride,
+        const GLvoid *ptr, GLsizei count);
+GL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type, GLsizei stride,
+        const GLvoid *ptr, GLsizei count);
+}
+
 static int initialized = 0;
 
 static jclass nioAccessClass;
@@ -122,6 +131,18 @@
 					   commit ? 0 : JNI_ABORT);
 }
 
+static void *
+getDirectBufferPointer(JNIEnv *_env, jobject buffer) {
+    char* buf = (char*) _env->GetDirectBufferAddress(buffer);
+    if (buf) {
+        jint position = _env->GetIntField(buffer, positionID);
+        jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
+        buf += position << elementSizeShift;
+    } else {
+        _env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
+    }
+    return (void*) buf;
+}
 // --------------------------------------------------------------------------
 
 /* void glBlendEquationSeparateOES ( GLenum modeRGB, GLenum modeAlpha ) */
@@ -1771,32 +1792,62 @@
 static void
 android_glCurrentPaletteMatrixOES__I
   (JNIEnv *_env, jobject _this, jint matrixpaletteindex) {
-    _env->ThrowNew(UOEClass,
-        "glCurrentPaletteMatrixOES");
+    glCurrentPaletteMatrixOES(
+        (GLuint)matrixpaletteindex
+    );
 }
 
 /* void glLoadPaletteFromModelViewMatrixOES ( void ) */
 static void
 android_glLoadPaletteFromModelViewMatrixOES__
   (JNIEnv *_env, jobject _this) {
-    _env->ThrowNew(UOEClass,
-        "glLoadPaletteFromModelViewMatrixOES");
+    glLoadPaletteFromModelViewMatrixOES();
 }
 
 /* void glMatrixIndexPointerOES ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
 static void
-android_glMatrixIndexPointerOES__IIILjava_nio_Buffer_2
-  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf) {
-    _env->ThrowNew(UOEClass,
-        "glMatrixIndexPointerOES");
+android_glMatrixIndexPointerOESBounds__IIILjava_nio_Buffer_2I
+  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLvoid *pointer = (GLvoid *) 0;
+
+    if (pointer_buf) {
+        pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
+        if ( ! pointer ) {
+            return;
+        }
+    }
+    glMatrixIndexPointerOESBounds(
+        (GLint)size,
+        (GLenum)type,
+        (GLsizei)stride,
+        (GLvoid *)pointer,
+        (GLsizei)remaining
+    );
 }
 
 /* void glWeightPointerOES ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
 static void
-android_glWeightPointerOES__IIILjava_nio_Buffer_2
-  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf) {
-    _env->ThrowNew(UOEClass,
-        "glWeightPointerOES");
+android_glWeightPointerOESBounds__IIILjava_nio_Buffer_2I
+  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLvoid *pointer = (GLvoid *) 0;
+
+    if (pointer_buf) {
+        pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
+        if ( ! pointer ) {
+            return;
+        }
+    }
+    glWeightPointerOESBounds(
+        (GLint)size,
+        (GLenum)type,
+        (GLsizei)stride,
+        (GLvoid *)pointer,
+        (GLsizei)remaining
+    );
 }
 
 /* void glDepthRangefOES ( GLclampf zNear, GLclampf zFar ) */
@@ -2426,8 +2477,8 @@
 {"glGenerateMipmapOES", "(I)V", (void *) android_glGenerateMipmapOES__I },
 {"glCurrentPaletteMatrixOES", "(I)V", (void *) android_glCurrentPaletteMatrixOES__I },
 {"glLoadPaletteFromModelViewMatrixOES", "()V", (void *) android_glLoadPaletteFromModelViewMatrixOES__ },
-{"glMatrixIndexPointerOES", "(IIILjava/nio/Buffer;)V", (void *) android_glMatrixIndexPointerOES__IIILjava_nio_Buffer_2 },
-{"glWeightPointerOES", "(IIILjava/nio/Buffer;)V", (void *) android_glWeightPointerOES__IIILjava_nio_Buffer_2 },
+{"glMatrixIndexPointerOESBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glMatrixIndexPointerOESBounds__IIILjava_nio_Buffer_2I },
+{"glWeightPointerOESBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glWeightPointerOESBounds__IIILjava_nio_Buffer_2I },
 {"glDepthRangefOES", "(FF)V", (void *) android_glDepthRangefOES__FF },
 {"glFrustumfOES", "(FFFFFF)V", (void *) android_glFrustumfOES__FFFFFF },
 {"glOrthofOES", "(FFFFFF)V", (void *) android_glOrthofOES__FFFFFF },
diff --git a/core/jni/android_opengl_GLES20.cpp b/core/jni/android_opengl_GLES20.cpp
new file mode 100644
index 0000000..fd1c8fd
--- /dev/null
+++ b/core/jni/android_opengl_GLES20.cpp
@@ -0,0 +1,5023 @@
+/*
+**
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License"); 
+** you may not use this file except in compliance with the License. 
+** You may obtain a copy of the License at 
+**
+**     http://www.apache.org/licenses/LICENSE-2.0 
+**
+** Unless required by applicable law or agreed to in writing, software 
+** distributed under the License is distributed on an "AS IS" BASIS, 
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+** See the License for the specific language governing permissions and 
+** limitations under the License.
+*/
+
+// This source file is automatically generated
+
+#include <android_runtime/AndroidRuntime.h>
+#include <utils/misc.h>
+
+#include <assert.h>
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+static int initialized = 0;
+
+static jclass nioAccessClass;
+static jclass bufferClass;
+static jclass OOMEClass;
+static jclass UOEClass;
+static jclass IAEClass;
+static jclass AIOOBEClass;
+static jmethodID getBasePointerID;
+static jmethodID getBaseArrayID;
+static jmethodID getBaseArrayOffsetID;
+static jfieldID positionID;
+static jfieldID limitID;
+static jfieldID elementSizeShiftID;
+
+/* Cache method IDs each time the class is loaded. */
+
+static void
+nativeClassInitBuffer(JNIEnv *_env)
+{
+    jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess");
+    nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal);
+
+    jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
+    bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);
+
+    getBasePointerID = _env->GetStaticMethodID(nioAccessClass,
+            "getBasePointer", "(Ljava/nio/Buffer;)J");
+    getBaseArrayID = _env->GetStaticMethodID(nioAccessClass,
+            "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;");
+    getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass,
+            "getBaseArrayOffset", "(Ljava/nio/Buffer;)I");
+
+    positionID = _env->GetFieldID(bufferClass, "position", "I");
+    limitID = _env->GetFieldID(bufferClass, "limit", "I");
+    elementSizeShiftID =
+        _env->GetFieldID(bufferClass, "_elementSizeShift", "I");
+}
+
+
+static void
+nativeClassInit(JNIEnv *_env, jclass glImplClass)
+{
+    nativeClassInitBuffer(_env);
+
+    jclass IAEClassLocal =
+        _env->FindClass("java/lang/IllegalArgumentException");
+    jclass OOMEClassLocal =
+         _env->FindClass("java/lang/OutOfMemoryError");
+    jclass UOEClassLocal =
+         _env->FindClass("java/lang/UnsupportedOperationException");
+    jclass AIOOBEClassLocal =
+         _env->FindClass("java/lang/ArrayIndexOutOfBoundsException");
+
+    IAEClass = (jclass) _env->NewGlobalRef(IAEClassLocal);
+    OOMEClass = (jclass) _env->NewGlobalRef(OOMEClassLocal);
+    UOEClass = (jclass) _env->NewGlobalRef(UOEClassLocal);
+    AIOOBEClass = (jclass) _env->NewGlobalRef(AIOOBEClassLocal);
+}
+
+static void *
+getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining)
+{
+    jint position;
+    jint limit;
+    jint elementSizeShift;
+    jlong pointer;
+    jint offset;
+    void *data;
+
+    position = _env->GetIntField(buffer, positionID);
+    limit = _env->GetIntField(buffer, limitID);
+    elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
+    *remaining = (limit - position) << elementSizeShift;
+    pointer = _env->CallStaticLongMethod(nioAccessClass,
+            getBasePointerID, buffer);
+    if (pointer != 0L) {
+        *array = NULL;
+        return (void *) (jint) pointer;
+    }
+    
+    *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass,
+            getBaseArrayID, buffer);
+    offset = _env->CallStaticIntMethod(nioAccessClass,
+            getBaseArrayOffsetID, buffer);
+    data = _env->GetPrimitiveArrayCritical(*array, (jboolean *) 0);
+    
+    return (void *) ((char *) data + offset);
+}
+
+
+static void
+releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
+{
+    _env->ReleasePrimitiveArrayCritical(array, data,
+					   commit ? 0 : JNI_ABORT);
+}
+
+static void *
+getDirectBufferPointer(JNIEnv *_env, jobject buffer) {
+    char* buf = (char*) _env->GetDirectBufferAddress(buffer);
+    if (buf) {
+        jint position = _env->GetIntField(buffer, positionID);
+        jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
+        buf += position << elementSizeShift;
+    } else {
+        _env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
+    }
+    return (void*) buf;
+}
+
+static int
+getNumCompressedTextureFormats() {
+    int numCompressedTextureFormats = 0;
+    glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &numCompressedTextureFormats);
+    return numCompressedTextureFormats;
+}
+
+static void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type,
+        GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) {
+    glVertexAttribPointer(indx, size, type, normalized, stride, pointer);
+}
+
+// --------------------------------------------------------------------------
+
+/* void glActiveTexture ( GLenum texture ) */
+static void
+android_glActiveTexture__I
+  (JNIEnv *_env, jobject _this, jint texture) {
+    glActiveTexture(
+        (GLenum)texture
+    );
+}
+
+/* void glAttachShader ( GLuint program, GLuint shader ) */
+static void
+android_glAttachShader__II
+  (JNIEnv *_env, jobject _this, jint program, jint shader) {
+    glAttachShader(
+        (GLuint)program,
+        (GLuint)shader
+    );
+}
+
+/* void glBindAttribLocation ( GLuint program, GLuint index, const char *name ) */
+static void
+android_glBindAttribLocation__IILjava_lang_String_2
+  (JNIEnv *_env, jobject _this, jint program, jint index, jstring name) {
+    const char* _nativename = 0;
+
+    if (!name) {
+        _env->ThrowNew(IAEClass, "name == null");
+        goto exit;
+    }
+    _nativename = _env->GetStringUTFChars(name, 0);
+
+    glBindAttribLocation(
+        (GLuint)program,
+        (GLuint)index,
+        (char *)_nativename
+    );
+
+exit:
+    if (_nativename) {
+        _env->ReleaseStringUTFChars(name, _nativename);
+    }
+
+}
+
+/* void glBindBuffer ( GLenum target, GLuint buffer ) */
+static void
+android_glBindBuffer__II
+  (JNIEnv *_env, jobject _this, jint target, jint buffer) {
+    glBindBuffer(
+        (GLenum)target,
+        (GLuint)buffer
+    );
+}
+
+/* void glBindFramebuffer ( GLenum target, GLuint framebuffer ) */
+static void
+android_glBindFramebuffer__II
+  (JNIEnv *_env, jobject _this, jint target, jint framebuffer) {
+    glBindFramebuffer(
+        (GLenum)target,
+        (GLuint)framebuffer
+    );
+}
+
+/* void glBindRenderbuffer ( GLenum target, GLuint renderbuffer ) */
+static void
+android_glBindRenderbuffer__II
+  (JNIEnv *_env, jobject _this, jint target, jint renderbuffer) {
+    glBindRenderbuffer(
+        (GLenum)target,
+        (GLuint)renderbuffer
+    );
+}
+
+/* void glBindTexture ( GLenum target, GLuint texture ) */
+static void
+android_glBindTexture__II
+  (JNIEnv *_env, jobject _this, jint target, jint texture) {
+    glBindTexture(
+        (GLenum)target,
+        (GLuint)texture
+    );
+}
+
+/* void glBlendColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) */
+static void
+android_glBlendColor__FFFF
+  (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) {
+    glBlendColor(
+        (GLclampf)red,
+        (GLclampf)green,
+        (GLclampf)blue,
+        (GLclampf)alpha
+    );
+}
+
+/* void glBlendEquation ( GLenum mode ) */
+static void
+android_glBlendEquation__I
+  (JNIEnv *_env, jobject _this, jint mode) {
+    _env->ThrowNew(UOEClass,
+        "glBlendEquation");
+}
+
+/* void glBlendEquationSeparate ( GLenum modeRGB, GLenum modeAlpha ) */
+static void
+android_glBlendEquationSeparate__II
+  (JNIEnv *_env, jobject _this, jint modeRGB, jint modeAlpha) {
+    _env->ThrowNew(UOEClass,
+        "glBlendEquationSeparate");
+}
+
+/* void glBlendFunc ( GLenum sfactor, GLenum dfactor ) */
+static void
+android_glBlendFunc__II
+  (JNIEnv *_env, jobject _this, jint sfactor, jint dfactor) {
+    glBlendFunc(
+        (GLenum)sfactor,
+        (GLenum)dfactor
+    );
+}
+
+/* void glBlendFuncSeparate ( GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha ) */
+static void
+android_glBlendFuncSeparate__IIII
+  (JNIEnv *_env, jobject _this, jint srcRGB, jint dstRGB, jint srcAlpha, jint dstAlpha) {
+    _env->ThrowNew(UOEClass,
+        "glBlendFuncSeparate");
+}
+
+/* void glBufferData ( GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage ) */
+static void
+android_glBufferData__IILjava_nio_Buffer_2I
+  (JNIEnv *_env, jobject _this, jint target, jint size, jobject data_buf, jint usage) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLvoid *data = (GLvoid *) 0;
+
+    if (data_buf) {
+        data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining);
+        if (_remaining < size) {
+            _env->ThrowNew(IAEClass, "remaining() < size");
+            goto exit;
+        }
+    }
+    glBufferData(
+        (GLenum)target,
+        (GLsizeiptr)size,
+        (GLvoid *)data,
+        (GLenum)usage
+    );
+
+exit:
+    if (_array) {
+        releasePointer(_env, _array, data, JNI_FALSE);
+    }
+}
+
+/* void glBufferSubData ( GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data ) */
+static void
+android_glBufferSubData__IIILjava_nio_Buffer_2
+  (JNIEnv *_env, jobject _this, jint target, jint offset, jint size, jobject data_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLvoid *data = (GLvoid *) 0;
+
+    data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining);
+    if (_remaining < size) {
+        _env->ThrowNew(IAEClass, "remaining() < size");
+        goto exit;
+    }
+    glBufferSubData(
+        (GLenum)target,
+        (GLintptr)offset,
+        (GLsizeiptr)size,
+        (GLvoid *)data
+    );
+
+exit:
+    if (_array) {
+        releasePointer(_env, _array, data, JNI_FALSE);
+    }
+}
+
+/* GLenum glCheckFramebufferStatus ( GLenum target ) */
+static jint
+android_glCheckFramebufferStatus__I
+  (JNIEnv *_env, jobject _this, jint target) {
+    GLenum _returnValue;
+    _returnValue = glCheckFramebufferStatus(
+        (GLenum)target
+    );
+    return _returnValue;
+}
+
+/* void glClear ( GLbitfield mask ) */
+static void
+android_glClear__I
+  (JNIEnv *_env, jobject _this, jint mask) {
+    glClear(
+        (GLbitfield)mask
+    );
+}
+
+/* void glClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) */
+static void
+android_glClearColor__FFFF
+  (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) {
+    glClearColor(
+        (GLclampf)red,
+        (GLclampf)green,
+        (GLclampf)blue,
+        (GLclampf)alpha
+    );
+}
+
+/* void glClearDepthf ( GLclampf depth ) */
+static void
+android_glClearDepthf__F
+  (JNIEnv *_env, jobject _this, jfloat depth) {
+    glClearDepthf(
+        (GLclampf)depth
+    );
+}
+
+/* void glClearStencil ( GLint s ) */
+static void
+android_glClearStencil__I
+  (JNIEnv *_env, jobject _this, jint s) {
+    glClearStencil(
+        (GLint)s
+    );
+}
+
+/* void glColorMask ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ) */
+static void
+android_glColorMask__ZZZZ
+  (JNIEnv *_env, jobject _this, jboolean red, jboolean green, jboolean blue, jboolean alpha) {
+    glColorMask(
+        (GLboolean)red,
+        (GLboolean)green,
+        (GLboolean)blue,
+        (GLboolean)alpha
+    );
+}
+
+/* void glCompileShader ( GLuint shader ) */
+static void
+android_glCompileShader__I
+  (JNIEnv *_env, jobject _this, jint shader) {
+    glCompileShader(
+        (GLuint)shader
+    );
+}
+
+/* void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ) */
+static void
+android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2
+  (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint imageSize, jobject data_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLvoid *data = (GLvoid *) 0;
+
+    data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining);
+    glCompressedTexImage2D(
+        (GLenum)target,
+        (GLint)level,
+        (GLenum)internalformat,
+        (GLsizei)width,
+        (GLsizei)height,
+        (GLint)border,
+        (GLsizei)imageSize,
+        (GLvoid *)data
+    );
+    if (_array) {
+        releasePointer(_env, _array, data, JNI_FALSE);
+    }
+}
+
+/* void glCompressedTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ) */
+static void
+android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
+  (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint imageSize, jobject data_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLvoid *data = (GLvoid *) 0;
+
+    data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining);
+    glCompressedTexSubImage2D(
+        (GLenum)target,
+        (GLint)level,
+        (GLint)xoffset,
+        (GLint)yoffset,
+        (GLsizei)width,
+        (GLsizei)height,
+        (GLenum)format,
+        (GLsizei)imageSize,
+        (GLvoid *)data
+    );
+    if (_array) {
+        releasePointer(_env, _array, data, JNI_FALSE);
+    }
+}
+
+/* void glCopyTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) */
+static void
+android_glCopyTexImage2D__IIIIIIII
+  (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint x, jint y, jint width, jint height, jint border) {
+    glCopyTexImage2D(
+        (GLenum)target,
+        (GLint)level,
+        (GLenum)internalformat,
+        (GLint)x,
+        (GLint)y,
+        (GLsizei)width,
+        (GLsizei)height,
+        (GLint)border
+    );
+}
+
+/* void glCopyTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) */
+static void
+android_glCopyTexSubImage2D__IIIIIIII
+  (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint x, jint y, jint width, jint height) {
+    glCopyTexSubImage2D(
+        (GLenum)target,
+        (GLint)level,
+        (GLint)xoffset,
+        (GLint)yoffset,
+        (GLint)x,
+        (GLint)y,
+        (GLsizei)width,
+        (GLsizei)height
+    );
+}
+
+/* GLuint glCreateProgram ( void ) */
+static jint
+android_glCreateProgram__
+  (JNIEnv *_env, jobject _this) {
+    GLuint _returnValue;
+    _returnValue = glCreateProgram();
+    return _returnValue;
+}
+
+/* GLuint glCreateShader ( GLenum type ) */
+static jint
+android_glCreateShader__I
+  (JNIEnv *_env, jobject _this, jint type) {
+    GLuint _returnValue;
+    _returnValue = glCreateShader(
+        (GLenum)type
+    );
+    return _returnValue;
+}
+
+/* void glCullFace ( GLenum mode ) */
+static void
+android_glCullFace__I
+  (JNIEnv *_env, jobject _this, jint mode) {
+    glCullFace(
+        (GLenum)mode
+    );
+}
+
+/* void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) */
+static void
+android_glDeleteBuffers__I_3II
+  (JNIEnv *_env, jobject _this, jint n, jintArray buffers_ref, jint offset) {
+    GLuint *buffers_base = (GLuint *) 0;
+    jint _remaining;
+    GLuint *buffers = (GLuint *) 0;
+
+    if (!buffers_ref) {
+        _env->ThrowNew(IAEClass, "buffers == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(buffers_ref) - offset;
+    if (_remaining < n) {
+        _env->ThrowNew(IAEClass, "length - offset < n");
+        goto exit;
+    }
+    buffers_base = (GLuint *)
+        _env->GetPrimitiveArrayCritical(buffers_ref, (jboolean *)0);
+    buffers = buffers_base + offset;
+
+    glDeleteBuffers(
+        (GLsizei)n,
+        (GLuint *)buffers
+    );
+
+exit:
+    if (buffers_base) {
+        _env->ReleasePrimitiveArrayCritical(buffers_ref, buffers_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) */
+static void
+android_glDeleteBuffers__ILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint n, jobject buffers_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLuint *buffers = (GLuint *) 0;
+
+    buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining);
+    if (_remaining < n) {
+        _env->ThrowNew(IAEClass, "remaining() < n");
+        goto exit;
+    }
+    glDeleteBuffers(
+        (GLsizei)n,
+        (GLuint *)buffers
+    );
+
+exit:
+    if (_array) {
+        releasePointer(_env, _array, buffers, JNI_FALSE);
+    }
+}
+
+/* void glDeleteFramebuffers ( GLsizei n, const GLuint *framebuffers ) */
+static void
+android_glDeleteFramebuffers__I_3II
+  (JNIEnv *_env, jobject _this, jint n, jintArray framebuffers_ref, jint offset) {
+    GLuint *framebuffers_base = (GLuint *) 0;
+    jint _remaining;
+    GLuint *framebuffers = (GLuint *) 0;
+
+    if (!framebuffers_ref) {
+        _env->ThrowNew(IAEClass, "framebuffers == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(framebuffers_ref) - offset;
+    framebuffers_base = (GLuint *)
+        _env->GetPrimitiveArrayCritical(framebuffers_ref, (jboolean *)0);
+    framebuffers = framebuffers_base + offset;
+
+    glDeleteFramebuffers(
+        (GLsizei)n,
+        (GLuint *)framebuffers
+    );
+
+exit:
+    if (framebuffers_base) {
+        _env->ReleasePrimitiveArrayCritical(framebuffers_ref, framebuffers_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glDeleteFramebuffers ( GLsizei n, const GLuint *framebuffers ) */
+static void
+android_glDeleteFramebuffers__ILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint n, jobject framebuffers_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLuint *framebuffers = (GLuint *) 0;
+
+    framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining);
+    glDeleteFramebuffers(
+        (GLsizei)n,
+        (GLuint *)framebuffers
+    );
+    if (_array) {
+        releasePointer(_env, _array, framebuffers, JNI_FALSE);
+    }
+}
+
+/* void glDeleteProgram ( GLuint program ) */
+static void
+android_glDeleteProgram__I
+  (JNIEnv *_env, jobject _this, jint program) {
+    glDeleteProgram(
+        (GLuint)program
+    );
+}
+
+/* void glDeleteRenderbuffers ( GLsizei n, const GLuint *renderbuffers ) */
+static void
+android_glDeleteRenderbuffers__I_3II
+  (JNIEnv *_env, jobject _this, jint n, jintArray renderbuffers_ref, jint offset) {
+    GLuint *renderbuffers_base = (GLuint *) 0;
+    jint _remaining;
+    GLuint *renderbuffers = (GLuint *) 0;
+
+    if (!renderbuffers_ref) {
+        _env->ThrowNew(IAEClass, "renderbuffers == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(renderbuffers_ref) - offset;
+    renderbuffers_base = (GLuint *)
+        _env->GetPrimitiveArrayCritical(renderbuffers_ref, (jboolean *)0);
+    renderbuffers = renderbuffers_base + offset;
+
+    glDeleteRenderbuffers(
+        (GLsizei)n,
+        (GLuint *)renderbuffers
+    );
+
+exit:
+    if (renderbuffers_base) {
+        _env->ReleasePrimitiveArrayCritical(renderbuffers_ref, renderbuffers_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glDeleteRenderbuffers ( GLsizei n, const GLuint *renderbuffers ) */
+static void
+android_glDeleteRenderbuffers__ILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint n, jobject renderbuffers_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLuint *renderbuffers = (GLuint *) 0;
+
+    renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining);
+    glDeleteRenderbuffers(
+        (GLsizei)n,
+        (GLuint *)renderbuffers
+    );
+    if (_array) {
+        releasePointer(_env, _array, renderbuffers, JNI_FALSE);
+    }
+}
+
+/* void glDeleteShader ( GLuint shader ) */
+static void
+android_glDeleteShader__I
+  (JNIEnv *_env, jobject _this, jint shader) {
+    glDeleteShader(
+        (GLuint)shader
+    );
+}
+
+/* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */
+static void
+android_glDeleteTextures__I_3II
+  (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) {
+    GLuint *textures_base = (GLuint *) 0;
+    jint _remaining;
+    GLuint *textures = (GLuint *) 0;
+
+    if (!textures_ref) {
+        _env->ThrowNew(IAEClass, "textures == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(textures_ref) - offset;
+    if (_remaining < n) {
+        _env->ThrowNew(IAEClass, "length - offset < n");
+        goto exit;
+    }
+    textures_base = (GLuint *)
+        _env->GetPrimitiveArrayCritical(textures_ref, (jboolean *)0);
+    textures = textures_base + offset;
+
+    glDeleteTextures(
+        (GLsizei)n,
+        (GLuint *)textures
+    );
+
+exit:
+    if (textures_base) {
+        _env->ReleasePrimitiveArrayCritical(textures_ref, textures_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */
+static void
+android_glDeleteTextures__ILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLuint *textures = (GLuint *) 0;
+
+    textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining);
+    if (_remaining < n) {
+        _env->ThrowNew(IAEClass, "remaining() < n");
+        goto exit;
+    }
+    glDeleteTextures(
+        (GLsizei)n,
+        (GLuint *)textures
+    );
+
+exit:
+    if (_array) {
+        releasePointer(_env, _array, textures, JNI_FALSE);
+    }
+}
+
+/* void glDepthFunc ( GLenum func ) */
+static void
+android_glDepthFunc__I
+  (JNIEnv *_env, jobject _this, jint func) {
+    glDepthFunc(
+        (GLenum)func
+    );
+}
+
+/* void glDepthMask ( GLboolean flag ) */
+static void
+android_glDepthMask__Z
+  (JNIEnv *_env, jobject _this, jboolean flag) {
+    glDepthMask(
+        (GLboolean)flag
+    );
+}
+
+/* void glDepthRangef ( GLclampf zNear, GLclampf zFar ) */
+static void
+android_glDepthRangef__FF
+  (JNIEnv *_env, jobject _this, jfloat zNear, jfloat zFar) {
+    glDepthRangef(
+        (GLclampf)zNear,
+        (GLclampf)zFar
+    );
+}
+
+/* void glDetachShader ( GLuint program, GLuint shader ) */
+static void
+android_glDetachShader__II
+  (JNIEnv *_env, jobject _this, jint program, jint shader) {
+    glDetachShader(
+        (GLuint)program,
+        (GLuint)shader
+    );
+}
+
+/* void glDisable ( GLenum cap ) */
+static void
+android_glDisable__I
+  (JNIEnv *_env, jobject _this, jint cap) {
+    glDisable(
+        (GLenum)cap
+    );
+}
+
+/* void glDisableVertexAttribArray ( GLuint index ) */
+static void
+android_glDisableVertexAttribArray__I
+  (JNIEnv *_env, jobject _this, jint index) {
+    glDisableVertexAttribArray(
+        (GLuint)index
+    );
+}
+
+/* void glDrawArrays ( GLenum mode, GLint first, GLsizei count ) */
+static void
+android_glDrawArrays__III
+  (JNIEnv *_env, jobject _this, jint mode, jint first, jint count) {
+    glDrawArrays(
+        (GLenum)mode,
+        (GLint)first,
+        (GLsizei)count
+    );
+}
+
+/* void glDrawElements ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ) */
+static void
+android_glDrawElements__IIILjava_nio_Buffer_2
+  (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLvoid *indices = (GLvoid *) 0;
+
+    indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining);
+    if (_remaining < count) {
+        _env->ThrowNew(AIOOBEClass, "remaining() < count");
+        goto exit;
+    }
+    glDrawElements(
+        (GLenum)mode,
+        (GLsizei)count,
+        (GLenum)type,
+        (GLvoid *)indices
+    );
+
+exit:
+    if (_array) {
+        releasePointer(_env, _array, indices, JNI_FALSE);
+    }
+}
+
+/* void glEnable ( GLenum cap ) */
+static void
+android_glEnable__I
+  (JNIEnv *_env, jobject _this, jint cap) {
+    glEnable(
+        (GLenum)cap
+    );
+}
+
+/* void glEnableVertexAttribArray ( GLuint index ) */
+static void
+android_glEnableVertexAttribArray__I
+  (JNIEnv *_env, jobject _this, jint index) {
+    glEnableVertexAttribArray(
+        (GLuint)index
+    );
+}
+
+/* void glFinish ( void ) */
+static void
+android_glFinish__
+  (JNIEnv *_env, jobject _this) {
+    glFinish();
+}
+
+/* void glFlush ( void ) */
+static void
+android_glFlush__
+  (JNIEnv *_env, jobject _this) {
+    glFlush();
+}
+
+/* void glFramebufferRenderbuffer ( GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer ) */
+static void
+android_glFramebufferRenderbuffer__IIII
+  (JNIEnv *_env, jobject _this, jint target, jint attachment, jint renderbuffertarget, jint renderbuffer) {
+    glFramebufferRenderbuffer(
+        (GLenum)target,
+        (GLenum)attachment,
+        (GLenum)renderbuffertarget,
+        (GLuint)renderbuffer
+    );
+}
+
+/* void glFramebufferTexture2D ( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level ) */
+static void
+android_glFramebufferTexture2D__IIIII
+  (JNIEnv *_env, jobject _this, jint target, jint attachment, jint textarget, jint texture, jint level) {
+    glFramebufferTexture2D(
+        (GLenum)target,
+        (GLenum)attachment,
+        (GLenum)textarget,
+        (GLuint)texture,
+        (GLint)level
+    );
+}
+
+/* void glFrontFace ( GLenum mode ) */
+static void
+android_glFrontFace__I
+  (JNIEnv *_env, jobject _this, jint mode) {
+    glFrontFace(
+        (GLenum)mode
+    );
+}
+
+/* void glGenBuffers ( GLsizei n, GLuint *buffers ) */
+static void
+android_glGenBuffers__I_3II
+  (JNIEnv *_env, jobject _this, jint n, jintArray buffers_ref, jint offset) {
+    jint _exception = 0;
+    GLuint *buffers_base = (GLuint *) 0;
+    jint _remaining;
+    GLuint *buffers = (GLuint *) 0;
+
+    if (!buffers_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "buffers == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(buffers_ref) - offset;
+    if (_remaining < n) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "length - offset < n");
+        goto exit;
+    }
+    buffers_base = (GLuint *)
+        _env->GetPrimitiveArrayCritical(buffers_ref, (jboolean *)0);
+    buffers = buffers_base + offset;
+
+    glGenBuffers(
+        (GLsizei)n,
+        (GLuint *)buffers
+    );
+
+exit:
+    if (buffers_base) {
+        _env->ReleasePrimitiveArrayCritical(buffers_ref, buffers_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGenBuffers ( GLsizei n, GLuint *buffers ) */
+static void
+android_glGenBuffers__ILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint n, jobject buffers_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLuint *buffers = (GLuint *) 0;
+
+    buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining);
+    if (_remaining < n) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "remaining() < n");
+        goto exit;
+    }
+    glGenBuffers(
+        (GLsizei)n,
+        (GLuint *)buffers
+    );
+
+exit:
+    if (_array) {
+        releasePointer(_env, _array, buffers, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glGenerateMipmap ( GLenum target ) */
+static void
+android_glGenerateMipmap__I
+  (JNIEnv *_env, jobject _this, jint target) {
+    glGenerateMipmap(
+        (GLenum)target
+    );
+}
+
+/* void glGenFramebuffers ( GLsizei n, GLuint *framebuffers ) */
+static void
+android_glGenFramebuffers__I_3II
+  (JNIEnv *_env, jobject _this, jint n, jintArray framebuffers_ref, jint offset) {
+    jint _exception = 0;
+    GLuint *framebuffers_base = (GLuint *) 0;
+    jint _remaining;
+    GLuint *framebuffers = (GLuint *) 0;
+
+    if (!framebuffers_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "framebuffers == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(framebuffers_ref) - offset;
+    framebuffers_base = (GLuint *)
+        _env->GetPrimitiveArrayCritical(framebuffers_ref, (jboolean *)0);
+    framebuffers = framebuffers_base + offset;
+
+    glGenFramebuffers(
+        (GLsizei)n,
+        (GLuint *)framebuffers
+    );
+
+exit:
+    if (framebuffers_base) {
+        _env->ReleasePrimitiveArrayCritical(framebuffers_ref, framebuffers_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGenFramebuffers ( GLsizei n, GLuint *framebuffers ) */
+static void
+android_glGenFramebuffers__ILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint n, jobject framebuffers_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLuint *framebuffers = (GLuint *) 0;
+
+    framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining);
+    glGenFramebuffers(
+        (GLsizei)n,
+        (GLuint *)framebuffers
+    );
+    if (_array) {
+        releasePointer(_env, _array, framebuffers, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glGenRenderbuffers ( GLsizei n, GLuint *renderbuffers ) */
+static void
+android_glGenRenderbuffers__I_3II
+  (JNIEnv *_env, jobject _this, jint n, jintArray renderbuffers_ref, jint offset) {
+    jint _exception = 0;
+    GLuint *renderbuffers_base = (GLuint *) 0;
+    jint _remaining;
+    GLuint *renderbuffers = (GLuint *) 0;
+
+    if (!renderbuffers_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "renderbuffers == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(renderbuffers_ref) - offset;
+    renderbuffers_base = (GLuint *)
+        _env->GetPrimitiveArrayCritical(renderbuffers_ref, (jboolean *)0);
+    renderbuffers = renderbuffers_base + offset;
+
+    glGenRenderbuffers(
+        (GLsizei)n,
+        (GLuint *)renderbuffers
+    );
+
+exit:
+    if (renderbuffers_base) {
+        _env->ReleasePrimitiveArrayCritical(renderbuffers_ref, renderbuffers_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGenRenderbuffers ( GLsizei n, GLuint *renderbuffers ) */
+static void
+android_glGenRenderbuffers__ILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint n, jobject renderbuffers_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLuint *renderbuffers = (GLuint *) 0;
+
+    renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining);
+    glGenRenderbuffers(
+        (GLsizei)n,
+        (GLuint *)renderbuffers
+    );
+    if (_array) {
+        releasePointer(_env, _array, renderbuffers, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glGenTextures ( GLsizei n, GLuint *textures ) */
+static void
+android_glGenTextures__I_3II
+  (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) {
+    jint _exception = 0;
+    GLuint *textures_base = (GLuint *) 0;
+    jint _remaining;
+    GLuint *textures = (GLuint *) 0;
+
+    if (!textures_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "textures == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(textures_ref) - offset;
+    if (_remaining < n) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "length - offset < n");
+        goto exit;
+    }
+    textures_base = (GLuint *)
+        _env->GetPrimitiveArrayCritical(textures_ref, (jboolean *)0);
+    textures = textures_base + offset;
+
+    glGenTextures(
+        (GLsizei)n,
+        (GLuint *)textures
+    );
+
+exit:
+    if (textures_base) {
+        _env->ReleasePrimitiveArrayCritical(textures_ref, textures_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGenTextures ( GLsizei n, GLuint *textures ) */
+static void
+android_glGenTextures__ILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLuint *textures = (GLuint *) 0;
+
+    textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining);
+    if (_remaining < n) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "remaining() < n");
+        goto exit;
+    }
+    glGenTextures(
+        (GLsizei)n,
+        (GLuint *)textures
+    );
+
+exit:
+    if (_array) {
+        releasePointer(_env, _array, textures, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
+static void
+android_glGetActiveAttrib__III_3II_3II_3II_3BI
+  (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jintArray length_ref, jint lengthOffset, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset, jbyteArray name_ref, jint nameOffset) {
+    jint _exception = 0;
+    GLsizei *length_base = (GLsizei *) 0;
+    jint _lengthRemaining;
+    GLsizei *length = (GLsizei *) 0;
+    GLint *size_base = (GLint *) 0;
+    jint _sizeRemaining;
+    GLint *size = (GLint *) 0;
+    GLenum *type_base = (GLenum *) 0;
+    jint _typeRemaining;
+    GLenum *type = (GLenum *) 0;
+    char *name_base = (char *) 0;
+    jint _nameRemaining;
+    char *name = (char *) 0;
+
+    if (!length_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "length == null");
+        goto exit;
+    }
+    if (lengthOffset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "lengthOffset < 0");
+        goto exit;
+    }
+    _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
+    length_base = (GLsizei *)
+        _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
+    length = length_base + lengthOffset;
+
+    if (!size_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "size == null");
+        goto exit;
+    }
+    if (sizeOffset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "sizeOffset < 0");
+        goto exit;
+    }
+    _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset;
+    size_base = (GLint *)
+        _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0);
+    size = size_base + sizeOffset;
+
+    if (!type_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "type == null");
+        goto exit;
+    }
+    if (typeOffset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "typeOffset < 0");
+        goto exit;
+    }
+    _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset;
+    type_base = (GLenum *)
+        _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0);
+    type = type_base + typeOffset;
+
+    if (!name_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "name == null");
+        goto exit;
+    }
+    if (nameOffset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "nameOffset < 0");
+        goto exit;
+    }
+    _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset;
+    name_base = (char *)
+        _env->GetPrimitiveArrayCritical(name_ref, (jboolean *)0);
+    name = name_base + nameOffset;
+
+    glGetActiveAttrib(
+        (GLuint)program,
+        (GLuint)index,
+        (GLsizei)bufsize,
+        (GLsizei *)length,
+        (GLint *)size,
+        (GLenum *)type,
+        (char *)name
+    );
+
+exit:
+    if (name_base) {
+        _env->ReleasePrimitiveArrayCritical(name_ref, name_base,
+            _exception ? JNI_ABORT: 0);
+    }
+    if (type_base) {
+        _env->ReleasePrimitiveArrayCritical(type_ref, type_base,
+            _exception ? JNI_ABORT: 0);
+    }
+    if (size_base) {
+        _env->ReleasePrimitiveArrayCritical(size_ref, size_base,
+            _exception ? JNI_ABORT: 0);
+    }
+    if (length_base) {
+        _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
+static void
+android_glGetActiveAttrib__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B
+  (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) {
+    jint _exception = 0;
+    jarray _lengthArray = (jarray) 0;
+    jarray _sizeArray = (jarray) 0;
+    jarray _typeArray = (jarray) 0;
+    jint _lengthRemaining;
+    GLsizei *length = (GLsizei *) 0;
+    jint _sizeRemaining;
+    GLint *size = (GLint *) 0;
+    jint _typeRemaining;
+    GLenum *type = (GLenum *) 0;
+
+    length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining);
+    size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining);
+    type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining);
+    glGetActiveAttrib(
+        (GLuint)program,
+        (GLuint)index,
+        (GLsizei)bufsize,
+        (GLsizei *)length,
+        (GLint *)size,
+        (GLenum *)type,
+        (char *)name
+    );
+    if (_lengthArray) {
+        releasePointer(_env, _lengthArray, type, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+    if (_sizeArray) {
+        releasePointer(_env, _sizeArray, size, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+    if (_typeArray) {
+        releasePointer(_env, _typeArray, length, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
+static void
+android_glGetActiveUniform__III_3II_3II_3II_3BI
+  (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jintArray length_ref, jint lengthOffset, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset, jbyteArray name_ref, jint nameOffset) {
+    jint _exception = 0;
+    GLsizei *length_base = (GLsizei *) 0;
+    jint _lengthRemaining;
+    GLsizei *length = (GLsizei *) 0;
+    GLint *size_base = (GLint *) 0;
+    jint _sizeRemaining;
+    GLint *size = (GLint *) 0;
+    GLenum *type_base = (GLenum *) 0;
+    jint _typeRemaining;
+    GLenum *type = (GLenum *) 0;
+    char *name_base = (char *) 0;
+    jint _nameRemaining;
+    char *name = (char *) 0;
+
+    if (!length_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "length == null");
+        goto exit;
+    }
+    if (lengthOffset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "lengthOffset < 0");
+        goto exit;
+    }
+    _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
+    length_base = (GLsizei *)
+        _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
+    length = length_base + lengthOffset;
+
+    if (!size_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "size == null");
+        goto exit;
+    }
+    if (sizeOffset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "sizeOffset < 0");
+        goto exit;
+    }
+    _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset;
+    size_base = (GLint *)
+        _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0);
+    size = size_base + sizeOffset;
+
+    if (!type_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "type == null");
+        goto exit;
+    }
+    if (typeOffset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "typeOffset < 0");
+        goto exit;
+    }
+    _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset;
+    type_base = (GLenum *)
+        _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0);
+    type = type_base + typeOffset;
+
+    if (!name_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "name == null");
+        goto exit;
+    }
+    if (nameOffset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "nameOffset < 0");
+        goto exit;
+    }
+    _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset;
+    name_base = (char *)
+        _env->GetPrimitiveArrayCritical(name_ref, (jboolean *)0);
+    name = name_base + nameOffset;
+
+    glGetActiveUniform(
+        (GLuint)program,
+        (GLuint)index,
+        (GLsizei)bufsize,
+        (GLsizei *)length,
+        (GLint *)size,
+        (GLenum *)type,
+        (char *)name
+    );
+
+exit:
+    if (name_base) {
+        _env->ReleasePrimitiveArrayCritical(name_ref, name_base,
+            _exception ? JNI_ABORT: 0);
+    }
+    if (type_base) {
+        _env->ReleasePrimitiveArrayCritical(type_ref, type_base,
+            _exception ? JNI_ABORT: 0);
+    }
+    if (size_base) {
+        _env->ReleasePrimitiveArrayCritical(size_ref, size_base,
+            _exception ? JNI_ABORT: 0);
+    }
+    if (length_base) {
+        _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
+static void
+android_glGetActiveUniform__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B
+  (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) {
+    jint _exception = 0;
+    jarray _lengthArray = (jarray) 0;
+    jarray _sizeArray = (jarray) 0;
+    jarray _typeArray = (jarray) 0;
+    jint _lengthRemaining;
+    GLsizei *length = (GLsizei *) 0;
+    jint _sizeRemaining;
+    GLint *size = (GLint *) 0;
+    jint _typeRemaining;
+    GLenum *type = (GLenum *) 0;
+
+    length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining);
+    size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining);
+    type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining);
+    glGetActiveUniform(
+        (GLuint)program,
+        (GLuint)index,
+        (GLsizei)bufsize,
+        (GLsizei *)length,
+        (GLint *)size,
+        (GLenum *)type,
+        (char *)name
+    );
+    if (_lengthArray) {
+        releasePointer(_env, _lengthArray, type, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+    if (_sizeArray) {
+        releasePointer(_env, _sizeArray, size, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+    if (_typeArray) {
+        releasePointer(_env, _typeArray, length, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glGetAttachedShaders ( GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders ) */
+static void
+android_glGetAttachedShaders__II_3II_3II
+  (JNIEnv *_env, jobject _this, jint program, jint maxcount, jintArray count_ref, jint countOffset, jintArray shaders_ref, jint shadersOffset) {
+    jint _exception = 0;
+    GLsizei *count_base = (GLsizei *) 0;
+    jint _countRemaining;
+    GLsizei *count = (GLsizei *) 0;
+    GLuint *shaders_base = (GLuint *) 0;
+    jint _shadersRemaining;
+    GLuint *shaders = (GLuint *) 0;
+
+    if (!count_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "count == null");
+        goto exit;
+    }
+    if (countOffset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "countOffset < 0");
+        goto exit;
+    }
+    _countRemaining = _env->GetArrayLength(count_ref) - countOffset;
+    count_base = (GLsizei *)
+        _env->GetPrimitiveArrayCritical(count_ref, (jboolean *)0);
+    count = count_base + countOffset;
+
+    if (!shaders_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "shaders == null");
+        goto exit;
+    }
+    if (shadersOffset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "shadersOffset < 0");
+        goto exit;
+    }
+    _shadersRemaining = _env->GetArrayLength(shaders_ref) - shadersOffset;
+    shaders_base = (GLuint *)
+        _env->GetPrimitiveArrayCritical(shaders_ref, (jboolean *)0);
+    shaders = shaders_base + shadersOffset;
+
+    glGetAttachedShaders(
+        (GLuint)program,
+        (GLsizei)maxcount,
+        (GLsizei *)count,
+        (GLuint *)shaders
+    );
+
+exit:
+    if (shaders_base) {
+        _env->ReleasePrimitiveArrayCritical(shaders_ref, shaders_base,
+            _exception ? JNI_ABORT: 0);
+    }
+    if (count_base) {
+        _env->ReleasePrimitiveArrayCritical(count_ref, count_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetAttachedShaders ( GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders ) */
+static void
+android_glGetAttachedShaders__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint program, jint maxcount, jobject count_buf, jobject shaders_buf) {
+    jint _exception = 0;
+    jarray _countArray = (jarray) 0;
+    jarray _shadersArray = (jarray) 0;
+    jint _countRemaining;
+    GLsizei *count = (GLsizei *) 0;
+    jint _shadersRemaining;
+    GLuint *shaders = (GLuint *) 0;
+
+    count = (GLsizei *)getPointer(_env, count_buf, &_countArray, &_countRemaining);
+    shaders = (GLuint *)getPointer(_env, shaders_buf, &_shadersArray, &_shadersRemaining);
+    glGetAttachedShaders(
+        (GLuint)program,
+        (GLsizei)maxcount,
+        (GLsizei *)count,
+        (GLuint *)shaders
+    );
+    if (_countArray) {
+        releasePointer(_env, _countArray, shaders, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+    if (_shadersArray) {
+        releasePointer(_env, _shadersArray, count, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* int glGetAttribLocation ( GLuint program, const char *name ) */
+static jint
+android_glGetAttribLocation__ILjava_lang_String_2
+  (JNIEnv *_env, jobject _this, jint program, jstring name) {
+    int _returnValue = 0;
+    const char* _nativename = 0;
+
+    if (!name) {
+        _env->ThrowNew(IAEClass, "name == null");
+        goto exit;
+    }
+    _nativename = _env->GetStringUTFChars(name, 0);
+
+    _returnValue = glGetAttribLocation(
+        (GLuint)program,
+        (char *)_nativename
+    );
+
+exit:
+    if (_nativename) {
+        _env->ReleaseStringUTFChars(name, _nativename);
+    }
+
+    return _returnValue;
+}
+
+/* void glGetBooleanv ( GLenum pname, GLboolean *params ) */
+static void
+android_glGetBooleanv__I_3ZI
+  (JNIEnv *_env, jobject _this, jint pname, jbooleanArray params_ref, jint offset) {
+    jint _exception = 0;
+    GLboolean *params_base = (GLboolean *) 0;
+    jint _remaining;
+    GLboolean *params = (GLboolean *) 0;
+
+    if (!params_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "params == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(params_ref) - offset;
+    params_base = (GLboolean *)
+        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
+    params = params_base + offset;
+
+    glGetBooleanv(
+        (GLenum)pname,
+        (GLboolean *)params
+    );
+
+exit:
+    if (params_base) {
+        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetBooleanv ( GLenum pname, GLboolean *params ) */
+static void
+android_glGetBooleanv__ILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLboolean *params = (GLboolean *) 0;
+
+    params = (GLboolean *)getPointer(_env, params_buf, &_array, &_remaining);
+    glGetBooleanv(
+        (GLenum)pname,
+        (GLboolean *)params
+    );
+    if (_array) {
+        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
+static void
+android_glGetBufferParameteriv__II_3II
+  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
+    _env->ThrowNew(UOEClass,
+        "glGetBufferParameteriv");
+}
+
+/* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
+static void
+android_glGetBufferParameteriv__IILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
+    _env->ThrowNew(UOEClass,
+        "glGetBufferParameteriv");
+}
+
+/* GLenum glGetError ( void ) */
+static jint
+android_glGetError__
+  (JNIEnv *_env, jobject _this) {
+    GLenum _returnValue;
+    _returnValue = glGetError();
+    return _returnValue;
+}
+
+/* void glGetFloatv ( GLenum pname, GLfloat *params ) */
+static void
+android_glGetFloatv__I_3FI
+  (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
+    jint _exception = 0;
+    GLfloat *params_base = (GLfloat *) 0;
+    jint _remaining;
+    GLfloat *params = (GLfloat *) 0;
+
+    if (!params_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "params == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(params_ref) - offset;
+    params_base = (GLfloat *)
+        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
+    params = params_base + offset;
+
+    glGetFloatv(
+        (GLenum)pname,
+        (GLfloat *)params
+    );
+
+exit:
+    if (params_base) {
+        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetFloatv ( GLenum pname, GLfloat *params ) */
+static void
+android_glGetFloatv__ILjava_nio_FloatBuffer_2
+  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLfloat *params = (GLfloat *) 0;
+
+    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining);
+    glGetFloatv(
+        (GLenum)pname,
+        (GLfloat *)params
+    );
+    if (_array) {
+        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glGetFramebufferAttachmentParameteriv ( GLenum target, GLenum attachment, GLenum pname, GLint *params ) */
+static void
+android_glGetFramebufferAttachmentParameteriv__III_3II
+  (JNIEnv *_env, jobject _this, jint target, jint attachment, jint pname, jintArray params_ref, jint offset) {
+    jint _exception = 0;
+    GLint *params_base = (GLint *) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    if (!params_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "params == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(params_ref) - offset;
+    params_base = (GLint *)
+        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
+    params = params_base + offset;
+
+    glGetFramebufferAttachmentParameteriv(
+        (GLenum)target,
+        (GLenum)attachment,
+        (GLenum)pname,
+        (GLint *)params
+    );
+
+exit:
+    if (params_base) {
+        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetFramebufferAttachmentParameteriv ( GLenum target, GLenum attachment, GLenum pname, GLint *params ) */
+static void
+android_glGetFramebufferAttachmentParameteriv__IIILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint target, jint attachment, jint pname, jobject params_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining);
+    glGetFramebufferAttachmentParameteriv(
+        (GLenum)target,
+        (GLenum)attachment,
+        (GLenum)pname,
+        (GLint *)params
+    );
+    if (_array) {
+        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glGetIntegerv ( GLenum pname, GLint *params ) */
+static void
+android_glGetIntegerv__I_3II
+  (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
+    jint _exception = 0;
+    GLint *params_base = (GLint *) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    if (!params_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "params == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(params_ref) - offset;
+    int _needed;
+    switch (pname) {
+#if defined(GL_ALPHA_BITS)
+        case GL_ALPHA_BITS:
+#endif // defined(GL_ALPHA_BITS)
+#if defined(GL_ALPHA_TEST_FUNC)
+        case GL_ALPHA_TEST_FUNC:
+#endif // defined(GL_ALPHA_TEST_FUNC)
+#if defined(GL_ALPHA_TEST_REF)
+        case GL_ALPHA_TEST_REF:
+#endif // defined(GL_ALPHA_TEST_REF)
+#if defined(GL_BLEND_DST)
+        case GL_BLEND_DST:
+#endif // defined(GL_BLEND_DST)
+#if defined(GL_BLUE_BITS)
+        case GL_BLUE_BITS:
+#endif // defined(GL_BLUE_BITS)
+#if defined(GL_COLOR_ARRAY_BUFFER_BINDING)
+        case GL_COLOR_ARRAY_BUFFER_BINDING:
+#endif // defined(GL_COLOR_ARRAY_BUFFER_BINDING)
+#if defined(GL_COLOR_ARRAY_SIZE)
+        case GL_COLOR_ARRAY_SIZE:
+#endif // defined(GL_COLOR_ARRAY_SIZE)
+#if defined(GL_COLOR_ARRAY_STRIDE)
+        case GL_COLOR_ARRAY_STRIDE:
+#endif // defined(GL_COLOR_ARRAY_STRIDE)
+#if defined(GL_COLOR_ARRAY_TYPE)
+        case GL_COLOR_ARRAY_TYPE:
+#endif // defined(GL_COLOR_ARRAY_TYPE)
+#if defined(GL_CULL_FACE)
+        case GL_CULL_FACE:
+#endif // defined(GL_CULL_FACE)
+#if defined(GL_DEPTH_BITS)
+        case GL_DEPTH_BITS:
+#endif // defined(GL_DEPTH_BITS)
+#if defined(GL_DEPTH_CLEAR_VALUE)
+        case GL_DEPTH_CLEAR_VALUE:
+#endif // defined(GL_DEPTH_CLEAR_VALUE)
+#if defined(GL_DEPTH_FUNC)
+        case GL_DEPTH_FUNC:
+#endif // defined(GL_DEPTH_FUNC)
+#if defined(GL_DEPTH_WRITEMASK)
+        case GL_DEPTH_WRITEMASK:
+#endif // defined(GL_DEPTH_WRITEMASK)
+#if defined(GL_FOG_DENSITY)
+        case GL_FOG_DENSITY:
+#endif // defined(GL_FOG_DENSITY)
+#if defined(GL_FOG_END)
+        case GL_FOG_END:
+#endif // defined(GL_FOG_END)
+#if defined(GL_FOG_MODE)
+        case GL_FOG_MODE:
+#endif // defined(GL_FOG_MODE)
+#if defined(GL_FOG_START)
+        case GL_FOG_START:
+#endif // defined(GL_FOG_START)
+#if defined(GL_FRONT_FACE)
+        case GL_FRONT_FACE:
+#endif // defined(GL_FRONT_FACE)
+#if defined(GL_GREEN_BITS)
+        case GL_GREEN_BITS:
+#endif // defined(GL_GREEN_BITS)
+#if defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
+        case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
+#endif // defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
+#if defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
+        case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
+#endif // defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
+#if defined(GL_LIGHT_MODEL_COLOR_CONTROL)
+        case GL_LIGHT_MODEL_COLOR_CONTROL:
+#endif // defined(GL_LIGHT_MODEL_COLOR_CONTROL)
+#if defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
+        case GL_LIGHT_MODEL_LOCAL_VIEWER:
+#endif // defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
+#if defined(GL_LIGHT_MODEL_TWO_SIDE)
+        case GL_LIGHT_MODEL_TWO_SIDE:
+#endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
+#if defined(GL_LINE_SMOOTH_HINT)
+        case GL_LINE_SMOOTH_HINT:
+#endif // defined(GL_LINE_SMOOTH_HINT)
+#if defined(GL_LINE_WIDTH)
+        case GL_LINE_WIDTH:
+#endif // defined(GL_LINE_WIDTH)
+#if defined(GL_LOGIC_OP_MODE)
+        case GL_LOGIC_OP_MODE:
+#endif // defined(GL_LOGIC_OP_MODE)
+#if defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
+        case GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES:
+#endif // defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
+#if defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
+        case GL_MATRIX_INDEX_ARRAY_SIZE_OES:
+#endif // defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
+#if defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
+        case GL_MATRIX_INDEX_ARRAY_STRIDE_OES:
+#endif // defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
+#if defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
+        case GL_MATRIX_INDEX_ARRAY_TYPE_OES:
+#endif // defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
+#if defined(GL_MATRIX_MODE)
+        case GL_MATRIX_MODE:
+#endif // defined(GL_MATRIX_MODE)
+#if defined(GL_MAX_CLIP_PLANES)
+        case GL_MAX_CLIP_PLANES:
+#endif // defined(GL_MAX_CLIP_PLANES)
+#if defined(GL_MAX_ELEMENTS_INDICES)
+        case GL_MAX_ELEMENTS_INDICES:
+#endif // defined(GL_MAX_ELEMENTS_INDICES)
+#if defined(GL_MAX_ELEMENTS_VERTICES)
+        case GL_MAX_ELEMENTS_VERTICES:
+#endif // defined(GL_MAX_ELEMENTS_VERTICES)
+#if defined(GL_MAX_LIGHTS)
+        case GL_MAX_LIGHTS:
+#endif // defined(GL_MAX_LIGHTS)
+#if defined(GL_MAX_MODELVIEW_STACK_DEPTH)
+        case GL_MAX_MODELVIEW_STACK_DEPTH:
+#endif // defined(GL_MAX_MODELVIEW_STACK_DEPTH)
+#if defined(GL_MAX_PALETTE_MATRICES_OES)
+        case GL_MAX_PALETTE_MATRICES_OES:
+#endif // defined(GL_MAX_PALETTE_MATRICES_OES)
+#if defined(GL_MAX_PROJECTION_STACK_DEPTH)
+        case GL_MAX_PROJECTION_STACK_DEPTH:
+#endif // defined(GL_MAX_PROJECTION_STACK_DEPTH)
+#if defined(GL_MAX_TEXTURE_SIZE)
+        case GL_MAX_TEXTURE_SIZE:
+#endif // defined(GL_MAX_TEXTURE_SIZE)
+#if defined(GL_MAX_TEXTURE_STACK_DEPTH)
+        case GL_MAX_TEXTURE_STACK_DEPTH:
+#endif // defined(GL_MAX_TEXTURE_STACK_DEPTH)
+#if defined(GL_MAX_TEXTURE_UNITS)
+        case GL_MAX_TEXTURE_UNITS:
+#endif // defined(GL_MAX_TEXTURE_UNITS)
+#if defined(GL_MAX_VERTEX_UNITS_OES)
+        case GL_MAX_VERTEX_UNITS_OES:
+#endif // defined(GL_MAX_VERTEX_UNITS_OES)
+#if defined(GL_MODELVIEW_STACK_DEPTH)
+        case GL_MODELVIEW_STACK_DEPTH:
+#endif // defined(GL_MODELVIEW_STACK_DEPTH)
+#if defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
+        case GL_NORMAL_ARRAY_BUFFER_BINDING:
+#endif // defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
+#if defined(GL_NORMAL_ARRAY_STRIDE)
+        case GL_NORMAL_ARRAY_STRIDE:
+#endif // defined(GL_NORMAL_ARRAY_STRIDE)
+#if defined(GL_NORMAL_ARRAY_TYPE)
+        case GL_NORMAL_ARRAY_TYPE:
+#endif // defined(GL_NORMAL_ARRAY_TYPE)
+#if defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
+        case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
+#endif // defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
+#if defined(GL_PACK_ALIGNMENT)
+        case GL_PACK_ALIGNMENT:
+#endif // defined(GL_PACK_ALIGNMENT)
+#if defined(GL_PERSPECTIVE_CORRECTION_HINT)
+        case GL_PERSPECTIVE_CORRECTION_HINT:
+#endif // defined(GL_PERSPECTIVE_CORRECTION_HINT)
+#if defined(GL_POINT_SIZE)
+        case GL_POINT_SIZE:
+#endif // defined(GL_POINT_SIZE)
+#if defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
+        case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
+#endif // defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
+#if defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
+        case GL_POINT_SIZE_ARRAY_STRIDE_OES:
+#endif // defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
+#if defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
+        case GL_POINT_SIZE_ARRAY_TYPE_OES:
+#endif // defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
+#if defined(GL_POINT_SMOOTH_HINT)
+        case GL_POINT_SMOOTH_HINT:
+#endif // defined(GL_POINT_SMOOTH_HINT)
+#if defined(GL_POLYGON_OFFSET_FACTOR)
+        case GL_POLYGON_OFFSET_FACTOR:
+#endif // defined(GL_POLYGON_OFFSET_FACTOR)
+#if defined(GL_POLYGON_OFFSET_UNITS)
+        case GL_POLYGON_OFFSET_UNITS:
+#endif // defined(GL_POLYGON_OFFSET_UNITS)
+#if defined(GL_PROJECTION_STACK_DEPTH)
+        case GL_PROJECTION_STACK_DEPTH:
+#endif // defined(GL_PROJECTION_STACK_DEPTH)
+#if defined(GL_RED_BITS)
+        case GL_RED_BITS:
+#endif // defined(GL_RED_BITS)
+#if defined(GL_SHADE_MODEL)
+        case GL_SHADE_MODEL:
+#endif // defined(GL_SHADE_MODEL)
+#if defined(GL_STENCIL_BITS)
+        case GL_STENCIL_BITS:
+#endif // defined(GL_STENCIL_BITS)
+#if defined(GL_STENCIL_CLEAR_VALUE)
+        case GL_STENCIL_CLEAR_VALUE:
+#endif // defined(GL_STENCIL_CLEAR_VALUE)
+#if defined(GL_STENCIL_FAIL)
+        case GL_STENCIL_FAIL:
+#endif // defined(GL_STENCIL_FAIL)
+#if defined(GL_STENCIL_FUNC)
+        case GL_STENCIL_FUNC:
+#endif // defined(GL_STENCIL_FUNC)
+#if defined(GL_STENCIL_PASS_DEPTH_FAIL)
+        case GL_STENCIL_PASS_DEPTH_FAIL:
+#endif // defined(GL_STENCIL_PASS_DEPTH_FAIL)
+#if defined(GL_STENCIL_PASS_DEPTH_PASS)
+        case GL_STENCIL_PASS_DEPTH_PASS:
+#endif // defined(GL_STENCIL_PASS_DEPTH_PASS)
+#if defined(GL_STENCIL_REF)
+        case GL_STENCIL_REF:
+#endif // defined(GL_STENCIL_REF)
+#if defined(GL_STENCIL_VALUE_MASK)
+        case GL_STENCIL_VALUE_MASK:
+#endif // defined(GL_STENCIL_VALUE_MASK)
+#if defined(GL_STENCIL_WRITEMASK)
+        case GL_STENCIL_WRITEMASK:
+#endif // defined(GL_STENCIL_WRITEMASK)
+#if defined(GL_SUBPIXEL_BITS)
+        case GL_SUBPIXEL_BITS:
+#endif // defined(GL_SUBPIXEL_BITS)
+#if defined(GL_TEXTURE_BINDING_2D)
+        case GL_TEXTURE_BINDING_2D:
+#endif // defined(GL_TEXTURE_BINDING_2D)
+#if defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
+        case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING:
+#endif // defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
+#if defined(GL_TEXTURE_COORD_ARRAY_SIZE)
+        case GL_TEXTURE_COORD_ARRAY_SIZE:
+#endif // defined(GL_TEXTURE_COORD_ARRAY_SIZE)
+#if defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
+        case GL_TEXTURE_COORD_ARRAY_STRIDE:
+#endif // defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
+#if defined(GL_TEXTURE_COORD_ARRAY_TYPE)
+        case GL_TEXTURE_COORD_ARRAY_TYPE:
+#endif // defined(GL_TEXTURE_COORD_ARRAY_TYPE)
+#if defined(GL_TEXTURE_STACK_DEPTH)
+        case GL_TEXTURE_STACK_DEPTH:
+#endif // defined(GL_TEXTURE_STACK_DEPTH)
+#if defined(GL_UNPACK_ALIGNMENT)
+        case GL_UNPACK_ALIGNMENT:
+#endif // defined(GL_UNPACK_ALIGNMENT)
+#if defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
+        case GL_VERTEX_ARRAY_BUFFER_BINDING:
+#endif // defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
+#if defined(GL_VERTEX_ARRAY_SIZE)
+        case GL_VERTEX_ARRAY_SIZE:
+#endif // defined(GL_VERTEX_ARRAY_SIZE)
+#if defined(GL_VERTEX_ARRAY_STRIDE)
+        case GL_VERTEX_ARRAY_STRIDE:
+#endif // defined(GL_VERTEX_ARRAY_STRIDE)
+#if defined(GL_VERTEX_ARRAY_TYPE)
+        case GL_VERTEX_ARRAY_TYPE:
+#endif // defined(GL_VERTEX_ARRAY_TYPE)
+#if defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
+        case GL_WEIGHT_ARRAY_BUFFER_BINDING_OES:
+#endif // defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
+#if defined(GL_WEIGHT_ARRAY_SIZE_OES)
+        case GL_WEIGHT_ARRAY_SIZE_OES:
+#endif // defined(GL_WEIGHT_ARRAY_SIZE_OES)
+#if defined(GL_WEIGHT_ARRAY_STRIDE_OES)
+        case GL_WEIGHT_ARRAY_STRIDE_OES:
+#endif // defined(GL_WEIGHT_ARRAY_STRIDE_OES)
+#if defined(GL_WEIGHT_ARRAY_TYPE_OES)
+        case GL_WEIGHT_ARRAY_TYPE_OES:
+#endif // defined(GL_WEIGHT_ARRAY_TYPE_OES)
+            _needed = 1;
+            break;
+#if defined(GL_ALIASED_POINT_SIZE_RANGE)
+        case GL_ALIASED_POINT_SIZE_RANGE:
+#endif // defined(GL_ALIASED_POINT_SIZE_RANGE)
+#if defined(GL_ALIASED_LINE_WIDTH_RANGE)
+        case GL_ALIASED_LINE_WIDTH_RANGE:
+#endif // defined(GL_ALIASED_LINE_WIDTH_RANGE)
+#if defined(GL_DEPTH_RANGE)
+        case GL_DEPTH_RANGE:
+#endif // defined(GL_DEPTH_RANGE)
+#if defined(GL_MAX_VIEWPORT_DIMS)
+        case GL_MAX_VIEWPORT_DIMS:
+#endif // defined(GL_MAX_VIEWPORT_DIMS)
+#if defined(GL_SMOOTH_LINE_WIDTH_RANGE)
+        case GL_SMOOTH_LINE_WIDTH_RANGE:
+#endif // defined(GL_SMOOTH_LINE_WIDTH_RANGE)
+#if defined(GL_SMOOTH_POINT_SIZE_RANGE)
+        case GL_SMOOTH_POINT_SIZE_RANGE:
+#endif // defined(GL_SMOOTH_POINT_SIZE_RANGE)
+            _needed = 2;
+            break;
+#if defined(GL_COLOR_CLEAR_VALUE)
+        case GL_COLOR_CLEAR_VALUE:
+#endif // defined(GL_COLOR_CLEAR_VALUE)
+#if defined(GL_COLOR_WRITEMASK)
+        case GL_COLOR_WRITEMASK:
+#endif // defined(GL_COLOR_WRITEMASK)
+#if defined(GL_FOG_COLOR)
+        case GL_FOG_COLOR:
+#endif // defined(GL_FOG_COLOR)
+#if defined(GL_LIGHT_MODEL_AMBIENT)
+        case GL_LIGHT_MODEL_AMBIENT:
+#endif // defined(GL_LIGHT_MODEL_AMBIENT)
+#if defined(GL_SCISSOR_BOX)
+        case GL_SCISSOR_BOX:
+#endif // defined(GL_SCISSOR_BOX)
+#if defined(GL_VIEWPORT)
+        case GL_VIEWPORT:
+#endif // defined(GL_VIEWPORT)
+            _needed = 4;
+            break;
+#if defined(GL_MODELVIEW_MATRIX)
+        case GL_MODELVIEW_MATRIX:
+#endif // defined(GL_MODELVIEW_MATRIX)
+#if defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
+        case GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES:
+#endif // defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
+#if defined(GL_PROJECTION_MATRIX)
+        case GL_PROJECTION_MATRIX:
+#endif // defined(GL_PROJECTION_MATRIX)
+#if defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
+        case GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES:
+#endif // defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
+#if defined(GL_TEXTURE_MATRIX)
+        case GL_TEXTURE_MATRIX:
+#endif // defined(GL_TEXTURE_MATRIX)
+#if defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
+        case GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES:
+#endif // defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
+            _needed = 16;
+            break;
+#if defined(GL_COMPRESSED_TEXTURE_FORMATS)
+        case GL_COMPRESSED_TEXTURE_FORMATS:
+#endif // defined(GL_COMPRESSED_TEXTURE_FORMATS)
+            _needed = getNumCompressedTextureFormats();
+            break;
+        default:
+            _needed = 0;
+            break;
+    }
+    if (_remaining < _needed) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "length - offset < needed");
+        goto exit;
+    }
+    params_base = (GLint *)
+        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
+    params = params_base + offset;
+
+    glGetIntegerv(
+        (GLenum)pname,
+        (GLint *)params
+    );
+
+exit:
+    if (params_base) {
+        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetIntegerv ( GLenum pname, GLint *params ) */
+static void
+android_glGetIntegerv__ILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining);
+    int _needed;
+    switch (pname) {
+#if defined(GL_ALPHA_BITS)
+        case GL_ALPHA_BITS:
+#endif // defined(GL_ALPHA_BITS)
+#if defined(GL_ALPHA_TEST_FUNC)
+        case GL_ALPHA_TEST_FUNC:
+#endif // defined(GL_ALPHA_TEST_FUNC)
+#if defined(GL_ALPHA_TEST_REF)
+        case GL_ALPHA_TEST_REF:
+#endif // defined(GL_ALPHA_TEST_REF)
+#if defined(GL_BLEND_DST)
+        case GL_BLEND_DST:
+#endif // defined(GL_BLEND_DST)
+#if defined(GL_BLUE_BITS)
+        case GL_BLUE_BITS:
+#endif // defined(GL_BLUE_BITS)
+#if defined(GL_COLOR_ARRAY_BUFFER_BINDING)
+        case GL_COLOR_ARRAY_BUFFER_BINDING:
+#endif // defined(GL_COLOR_ARRAY_BUFFER_BINDING)
+#if defined(GL_COLOR_ARRAY_SIZE)
+        case GL_COLOR_ARRAY_SIZE:
+#endif // defined(GL_COLOR_ARRAY_SIZE)
+#if defined(GL_COLOR_ARRAY_STRIDE)
+        case GL_COLOR_ARRAY_STRIDE:
+#endif // defined(GL_COLOR_ARRAY_STRIDE)
+#if defined(GL_COLOR_ARRAY_TYPE)
+        case GL_COLOR_ARRAY_TYPE:
+#endif // defined(GL_COLOR_ARRAY_TYPE)
+#if defined(GL_CULL_FACE)
+        case GL_CULL_FACE:
+#endif // defined(GL_CULL_FACE)
+#if defined(GL_DEPTH_BITS)
+        case GL_DEPTH_BITS:
+#endif // defined(GL_DEPTH_BITS)
+#if defined(GL_DEPTH_CLEAR_VALUE)
+        case GL_DEPTH_CLEAR_VALUE:
+#endif // defined(GL_DEPTH_CLEAR_VALUE)
+#if defined(GL_DEPTH_FUNC)
+        case GL_DEPTH_FUNC:
+#endif // defined(GL_DEPTH_FUNC)
+#if defined(GL_DEPTH_WRITEMASK)
+        case GL_DEPTH_WRITEMASK:
+#endif // defined(GL_DEPTH_WRITEMASK)
+#if defined(GL_FOG_DENSITY)
+        case GL_FOG_DENSITY:
+#endif // defined(GL_FOG_DENSITY)
+#if defined(GL_FOG_END)
+        case GL_FOG_END:
+#endif // defined(GL_FOG_END)
+#if defined(GL_FOG_MODE)
+        case GL_FOG_MODE:
+#endif // defined(GL_FOG_MODE)
+#if defined(GL_FOG_START)
+        case GL_FOG_START:
+#endif // defined(GL_FOG_START)
+#if defined(GL_FRONT_FACE)
+        case GL_FRONT_FACE:
+#endif // defined(GL_FRONT_FACE)
+#if defined(GL_GREEN_BITS)
+        case GL_GREEN_BITS:
+#endif // defined(GL_GREEN_BITS)
+#if defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
+        case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
+#endif // defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
+#if defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
+        case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
+#endif // defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
+#if defined(GL_LIGHT_MODEL_COLOR_CONTROL)
+        case GL_LIGHT_MODEL_COLOR_CONTROL:
+#endif // defined(GL_LIGHT_MODEL_COLOR_CONTROL)
+#if defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
+        case GL_LIGHT_MODEL_LOCAL_VIEWER:
+#endif // defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
+#if defined(GL_LIGHT_MODEL_TWO_SIDE)
+        case GL_LIGHT_MODEL_TWO_SIDE:
+#endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
+#if defined(GL_LINE_SMOOTH_HINT)
+        case GL_LINE_SMOOTH_HINT:
+#endif // defined(GL_LINE_SMOOTH_HINT)
+#if defined(GL_LINE_WIDTH)
+        case GL_LINE_WIDTH:
+#endif // defined(GL_LINE_WIDTH)
+#if defined(GL_LOGIC_OP_MODE)
+        case GL_LOGIC_OP_MODE:
+#endif // defined(GL_LOGIC_OP_MODE)
+#if defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
+        case GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES:
+#endif // defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
+#if defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
+        case GL_MATRIX_INDEX_ARRAY_SIZE_OES:
+#endif // defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
+#if defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
+        case GL_MATRIX_INDEX_ARRAY_STRIDE_OES:
+#endif // defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
+#if defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
+        case GL_MATRIX_INDEX_ARRAY_TYPE_OES:
+#endif // defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
+#if defined(GL_MATRIX_MODE)
+        case GL_MATRIX_MODE:
+#endif // defined(GL_MATRIX_MODE)
+#if defined(GL_MAX_CLIP_PLANES)
+        case GL_MAX_CLIP_PLANES:
+#endif // defined(GL_MAX_CLIP_PLANES)
+#if defined(GL_MAX_ELEMENTS_INDICES)
+        case GL_MAX_ELEMENTS_INDICES:
+#endif // defined(GL_MAX_ELEMENTS_INDICES)
+#if defined(GL_MAX_ELEMENTS_VERTICES)
+        case GL_MAX_ELEMENTS_VERTICES:
+#endif // defined(GL_MAX_ELEMENTS_VERTICES)
+#if defined(GL_MAX_LIGHTS)
+        case GL_MAX_LIGHTS:
+#endif // defined(GL_MAX_LIGHTS)
+#if defined(GL_MAX_MODELVIEW_STACK_DEPTH)
+        case GL_MAX_MODELVIEW_STACK_DEPTH:
+#endif // defined(GL_MAX_MODELVIEW_STACK_DEPTH)
+#if defined(GL_MAX_PALETTE_MATRICES_OES)
+        case GL_MAX_PALETTE_MATRICES_OES:
+#endif // defined(GL_MAX_PALETTE_MATRICES_OES)
+#if defined(GL_MAX_PROJECTION_STACK_DEPTH)
+        case GL_MAX_PROJECTION_STACK_DEPTH:
+#endif // defined(GL_MAX_PROJECTION_STACK_DEPTH)
+#if defined(GL_MAX_TEXTURE_SIZE)
+        case GL_MAX_TEXTURE_SIZE:
+#endif // defined(GL_MAX_TEXTURE_SIZE)
+#if defined(GL_MAX_TEXTURE_STACK_DEPTH)
+        case GL_MAX_TEXTURE_STACK_DEPTH:
+#endif // defined(GL_MAX_TEXTURE_STACK_DEPTH)
+#if defined(GL_MAX_TEXTURE_UNITS)
+        case GL_MAX_TEXTURE_UNITS:
+#endif // defined(GL_MAX_TEXTURE_UNITS)
+#if defined(GL_MAX_VERTEX_UNITS_OES)
+        case GL_MAX_VERTEX_UNITS_OES:
+#endif // defined(GL_MAX_VERTEX_UNITS_OES)
+#if defined(GL_MODELVIEW_STACK_DEPTH)
+        case GL_MODELVIEW_STACK_DEPTH:
+#endif // defined(GL_MODELVIEW_STACK_DEPTH)
+#if defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
+        case GL_NORMAL_ARRAY_BUFFER_BINDING:
+#endif // defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
+#if defined(GL_NORMAL_ARRAY_STRIDE)
+        case GL_NORMAL_ARRAY_STRIDE:
+#endif // defined(GL_NORMAL_ARRAY_STRIDE)
+#if defined(GL_NORMAL_ARRAY_TYPE)
+        case GL_NORMAL_ARRAY_TYPE:
+#endif // defined(GL_NORMAL_ARRAY_TYPE)
+#if defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
+        case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
+#endif // defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
+#if defined(GL_PACK_ALIGNMENT)
+        case GL_PACK_ALIGNMENT:
+#endif // defined(GL_PACK_ALIGNMENT)
+#if defined(GL_PERSPECTIVE_CORRECTION_HINT)
+        case GL_PERSPECTIVE_CORRECTION_HINT:
+#endif // defined(GL_PERSPECTIVE_CORRECTION_HINT)
+#if defined(GL_POINT_SIZE)
+        case GL_POINT_SIZE:
+#endif // defined(GL_POINT_SIZE)
+#if defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
+        case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
+#endif // defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
+#if defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
+        case GL_POINT_SIZE_ARRAY_STRIDE_OES:
+#endif // defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
+#if defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
+        case GL_POINT_SIZE_ARRAY_TYPE_OES:
+#endif // defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
+#if defined(GL_POINT_SMOOTH_HINT)
+        case GL_POINT_SMOOTH_HINT:
+#endif // defined(GL_POINT_SMOOTH_HINT)
+#if defined(GL_POLYGON_OFFSET_FACTOR)
+        case GL_POLYGON_OFFSET_FACTOR:
+#endif // defined(GL_POLYGON_OFFSET_FACTOR)
+#if defined(GL_POLYGON_OFFSET_UNITS)
+        case GL_POLYGON_OFFSET_UNITS:
+#endif // defined(GL_POLYGON_OFFSET_UNITS)
+#if defined(GL_PROJECTION_STACK_DEPTH)
+        case GL_PROJECTION_STACK_DEPTH:
+#endif // defined(GL_PROJECTION_STACK_DEPTH)
+#if defined(GL_RED_BITS)
+        case GL_RED_BITS:
+#endif // defined(GL_RED_BITS)
+#if defined(GL_SHADE_MODEL)
+        case GL_SHADE_MODEL:
+#endif // defined(GL_SHADE_MODEL)
+#if defined(GL_STENCIL_BITS)
+        case GL_STENCIL_BITS:
+#endif // defined(GL_STENCIL_BITS)
+#if defined(GL_STENCIL_CLEAR_VALUE)
+        case GL_STENCIL_CLEAR_VALUE:
+#endif // defined(GL_STENCIL_CLEAR_VALUE)
+#if defined(GL_STENCIL_FAIL)
+        case GL_STENCIL_FAIL:
+#endif // defined(GL_STENCIL_FAIL)
+#if defined(GL_STENCIL_FUNC)
+        case GL_STENCIL_FUNC:
+#endif // defined(GL_STENCIL_FUNC)
+#if defined(GL_STENCIL_PASS_DEPTH_FAIL)
+        case GL_STENCIL_PASS_DEPTH_FAIL:
+#endif // defined(GL_STENCIL_PASS_DEPTH_FAIL)
+#if defined(GL_STENCIL_PASS_DEPTH_PASS)
+        case GL_STENCIL_PASS_DEPTH_PASS:
+#endif // defined(GL_STENCIL_PASS_DEPTH_PASS)
+#if defined(GL_STENCIL_REF)
+        case GL_STENCIL_REF:
+#endif // defined(GL_STENCIL_REF)
+#if defined(GL_STENCIL_VALUE_MASK)
+        case GL_STENCIL_VALUE_MASK:
+#endif // defined(GL_STENCIL_VALUE_MASK)
+#if defined(GL_STENCIL_WRITEMASK)
+        case GL_STENCIL_WRITEMASK:
+#endif // defined(GL_STENCIL_WRITEMASK)
+#if defined(GL_SUBPIXEL_BITS)
+        case GL_SUBPIXEL_BITS:
+#endif // defined(GL_SUBPIXEL_BITS)
+#if defined(GL_TEXTURE_BINDING_2D)
+        case GL_TEXTURE_BINDING_2D:
+#endif // defined(GL_TEXTURE_BINDING_2D)
+#if defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
+        case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING:
+#endif // defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
+#if defined(GL_TEXTURE_COORD_ARRAY_SIZE)
+        case GL_TEXTURE_COORD_ARRAY_SIZE:
+#endif // defined(GL_TEXTURE_COORD_ARRAY_SIZE)
+#if defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
+        case GL_TEXTURE_COORD_ARRAY_STRIDE:
+#endif // defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
+#if defined(GL_TEXTURE_COORD_ARRAY_TYPE)
+        case GL_TEXTURE_COORD_ARRAY_TYPE:
+#endif // defined(GL_TEXTURE_COORD_ARRAY_TYPE)
+#if defined(GL_TEXTURE_STACK_DEPTH)
+        case GL_TEXTURE_STACK_DEPTH:
+#endif // defined(GL_TEXTURE_STACK_DEPTH)
+#if defined(GL_UNPACK_ALIGNMENT)
+        case GL_UNPACK_ALIGNMENT:
+#endif // defined(GL_UNPACK_ALIGNMENT)
+#if defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
+        case GL_VERTEX_ARRAY_BUFFER_BINDING:
+#endif // defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
+#if defined(GL_VERTEX_ARRAY_SIZE)
+        case GL_VERTEX_ARRAY_SIZE:
+#endif // defined(GL_VERTEX_ARRAY_SIZE)
+#if defined(GL_VERTEX_ARRAY_STRIDE)
+        case GL_VERTEX_ARRAY_STRIDE:
+#endif // defined(GL_VERTEX_ARRAY_STRIDE)
+#if defined(GL_VERTEX_ARRAY_TYPE)
+        case GL_VERTEX_ARRAY_TYPE:
+#endif // defined(GL_VERTEX_ARRAY_TYPE)
+#if defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
+        case GL_WEIGHT_ARRAY_BUFFER_BINDING_OES:
+#endif // defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
+#if defined(GL_WEIGHT_ARRAY_SIZE_OES)
+        case GL_WEIGHT_ARRAY_SIZE_OES:
+#endif // defined(GL_WEIGHT_ARRAY_SIZE_OES)
+#if defined(GL_WEIGHT_ARRAY_STRIDE_OES)
+        case GL_WEIGHT_ARRAY_STRIDE_OES:
+#endif // defined(GL_WEIGHT_ARRAY_STRIDE_OES)
+#if defined(GL_WEIGHT_ARRAY_TYPE_OES)
+        case GL_WEIGHT_ARRAY_TYPE_OES:
+#endif // defined(GL_WEIGHT_ARRAY_TYPE_OES)
+            _needed = 1;
+            break;
+#if defined(GL_ALIASED_POINT_SIZE_RANGE)
+        case GL_ALIASED_POINT_SIZE_RANGE:
+#endif // defined(GL_ALIASED_POINT_SIZE_RANGE)
+#if defined(GL_ALIASED_LINE_WIDTH_RANGE)
+        case GL_ALIASED_LINE_WIDTH_RANGE:
+#endif // defined(GL_ALIASED_LINE_WIDTH_RANGE)
+#if defined(GL_DEPTH_RANGE)
+        case GL_DEPTH_RANGE:
+#endif // defined(GL_DEPTH_RANGE)
+#if defined(GL_MAX_VIEWPORT_DIMS)
+        case GL_MAX_VIEWPORT_DIMS:
+#endif // defined(GL_MAX_VIEWPORT_DIMS)
+#if defined(GL_SMOOTH_LINE_WIDTH_RANGE)
+        case GL_SMOOTH_LINE_WIDTH_RANGE:
+#endif // defined(GL_SMOOTH_LINE_WIDTH_RANGE)
+#if defined(GL_SMOOTH_POINT_SIZE_RANGE)
+        case GL_SMOOTH_POINT_SIZE_RANGE:
+#endif // defined(GL_SMOOTH_POINT_SIZE_RANGE)
+            _needed = 2;
+            break;
+#if defined(GL_COLOR_CLEAR_VALUE)
+        case GL_COLOR_CLEAR_VALUE:
+#endif // defined(GL_COLOR_CLEAR_VALUE)
+#if defined(GL_COLOR_WRITEMASK)
+        case GL_COLOR_WRITEMASK:
+#endif // defined(GL_COLOR_WRITEMASK)
+#if defined(GL_FOG_COLOR)
+        case GL_FOG_COLOR:
+#endif // defined(GL_FOG_COLOR)
+#if defined(GL_LIGHT_MODEL_AMBIENT)
+        case GL_LIGHT_MODEL_AMBIENT:
+#endif // defined(GL_LIGHT_MODEL_AMBIENT)
+#if defined(GL_SCISSOR_BOX)
+        case GL_SCISSOR_BOX:
+#endif // defined(GL_SCISSOR_BOX)
+#if defined(GL_VIEWPORT)
+        case GL_VIEWPORT:
+#endif // defined(GL_VIEWPORT)
+            _needed = 4;
+            break;
+#if defined(GL_MODELVIEW_MATRIX)
+        case GL_MODELVIEW_MATRIX:
+#endif // defined(GL_MODELVIEW_MATRIX)
+#if defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
+        case GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES:
+#endif // defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
+#if defined(GL_PROJECTION_MATRIX)
+        case GL_PROJECTION_MATRIX:
+#endif // defined(GL_PROJECTION_MATRIX)
+#if defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
+        case GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES:
+#endif // defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
+#if defined(GL_TEXTURE_MATRIX)
+        case GL_TEXTURE_MATRIX:
+#endif // defined(GL_TEXTURE_MATRIX)
+#if defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
+        case GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES:
+#endif // defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
+            _needed = 16;
+            break;
+#if defined(GL_COMPRESSED_TEXTURE_FORMATS)
+        case GL_COMPRESSED_TEXTURE_FORMATS:
+#endif // defined(GL_COMPRESSED_TEXTURE_FORMATS)
+            _needed = getNumCompressedTextureFormats();
+            break;
+        default:
+            _needed = 0;
+            break;
+    }
+    if (_remaining < _needed) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "remaining() < needed");
+        goto exit;
+    }
+    glGetIntegerv(
+        (GLenum)pname,
+        (GLint *)params
+    );
+
+exit:
+    if (_array) {
+        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glGetProgramiv ( GLuint program, GLenum pname, GLint *params ) */
+static void
+android_glGetProgramiv__II_3II
+  (JNIEnv *_env, jobject _this, jint program, jint pname, jintArray params_ref, jint offset) {
+    jint _exception = 0;
+    GLint *params_base = (GLint *) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    if (!params_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "params == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(params_ref) - offset;
+    params_base = (GLint *)
+        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
+    params = params_base + offset;
+
+    glGetProgramiv(
+        (GLuint)program,
+        (GLenum)pname,
+        (GLint *)params
+    );
+
+exit:
+    if (params_base) {
+        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetProgramiv ( GLuint program, GLenum pname, GLint *params ) */
+static void
+android_glGetProgramiv__IILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint program, jint pname, jobject params_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining);
+    glGetProgramiv(
+        (GLuint)program,
+        (GLenum)pname,
+        (GLint *)params
+    );
+    if (_array) {
+        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+#include <string.h>
+
+/* void glGetProgramInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */
+static
+jstring
+android_glGetProgramInfoLog (JNIEnv *_env, jobject _this, jint shader) {
+    GLint infoLen = 0;
+    jstring _result = 0;
+    char* buf = 0;
+    glGetProgramiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
+    if (infoLen) {
+        char* buf = (char*) malloc(infoLen);
+        if (buf == 0) {
+            _env->ThrowNew(IAEClass, "out of memory");
+            goto exit;
+        }
+        glGetProgramInfoLog(shader, infoLen, NULL, buf);
+        _result = _env->NewStringUTF(buf);
+    } else {
+        _result = _env->NewStringUTF("");
+    }
+exit:
+    if (buf) {
+            free(buf);
+    }
+    return _result;
+}
+/* void glGetRenderbufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
+static void
+android_glGetRenderbufferParameteriv__II_3II
+  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
+    jint _exception = 0;
+    GLint *params_base = (GLint *) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    if (!params_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "params == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(params_ref) - offset;
+    params_base = (GLint *)
+        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
+    params = params_base + offset;
+
+    glGetRenderbufferParameteriv(
+        (GLenum)target,
+        (GLenum)pname,
+        (GLint *)params
+    );
+
+exit:
+    if (params_base) {
+        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetRenderbufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
+static void
+android_glGetRenderbufferParameteriv__IILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining);
+    glGetRenderbufferParameteriv(
+        (GLenum)target,
+        (GLenum)pname,
+        (GLint *)params
+    );
+    if (_array) {
+        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glGetShaderiv ( GLuint shader, GLenum pname, GLint *params ) */
+static void
+android_glGetShaderiv__II_3II
+  (JNIEnv *_env, jobject _this, jint shader, jint pname, jintArray params_ref, jint offset) {
+    jint _exception = 0;
+    GLint *params_base = (GLint *) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    if (!params_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "params == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(params_ref) - offset;
+    params_base = (GLint *)
+        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
+    params = params_base + offset;
+
+    glGetShaderiv(
+        (GLuint)shader,
+        (GLenum)pname,
+        (GLint *)params
+    );
+
+exit:
+    if (params_base) {
+        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetShaderiv ( GLuint shader, GLenum pname, GLint *params ) */
+static void
+android_glGetShaderiv__IILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint shader, jint pname, jobject params_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining);
+    glGetShaderiv(
+        (GLuint)shader,
+        (GLenum)pname,
+        (GLint *)params
+    );
+    if (_array) {
+        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+#include <string.h>
+
+/* void glGetShaderInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */
+static
+jstring
+android_glGetShaderInfoLog (JNIEnv *_env, jobject _this, jint shader) {
+    GLint infoLen = 0;
+    jstring _result = 0;
+    char* buf = 0;
+    glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
+    if (infoLen) {
+        char* buf = (char*) malloc(infoLen);
+        if (buf == 0) {
+            _env->ThrowNew(IAEClass, "out of memory");
+            goto exit;
+        }
+        glGetShaderInfoLog(shader, infoLen, NULL, buf);
+        _result = _env->NewStringUTF(buf);
+    } else {
+        _result = _env->NewStringUTF("");
+    }
+exit:
+    if (buf) {
+            free(buf);
+    }
+    return _result;
+}
+/* void glGetShaderPrecisionFormat ( GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision ) */
+static void
+android_glGetShaderPrecisionFormat__II_3II_3II
+  (JNIEnv *_env, jobject _this, jint shadertype, jint precisiontype, jintArray range_ref, jint rangeOffset, jintArray precision_ref, jint precisionOffset) {
+    jint _exception = 0;
+    GLint *range_base = (GLint *) 0;
+    jint _rangeRemaining;
+    GLint *range = (GLint *) 0;
+    GLint *precision_base = (GLint *) 0;
+    jint _precisionRemaining;
+    GLint *precision = (GLint *) 0;
+
+    if (!range_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "range == null");
+        goto exit;
+    }
+    if (rangeOffset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "rangeOffset < 0");
+        goto exit;
+    }
+    _rangeRemaining = _env->GetArrayLength(range_ref) - rangeOffset;
+    range_base = (GLint *)
+        _env->GetPrimitiveArrayCritical(range_ref, (jboolean *)0);
+    range = range_base + rangeOffset;
+
+    if (!precision_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "precision == null");
+        goto exit;
+    }
+    if (precisionOffset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "precisionOffset < 0");
+        goto exit;
+    }
+    _precisionRemaining = _env->GetArrayLength(precision_ref) - precisionOffset;
+    precision_base = (GLint *)
+        _env->GetPrimitiveArrayCritical(precision_ref, (jboolean *)0);
+    precision = precision_base + precisionOffset;
+
+    glGetShaderPrecisionFormat(
+        (GLenum)shadertype,
+        (GLenum)precisiontype,
+        (GLint *)range,
+        (GLint *)precision
+    );
+
+exit:
+    if (precision_base) {
+        _env->ReleasePrimitiveArrayCritical(precision_ref, precision_base,
+            _exception ? JNI_ABORT: 0);
+    }
+    if (range_base) {
+        _env->ReleasePrimitiveArrayCritical(range_ref, range_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetShaderPrecisionFormat ( GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision ) */
+static void
+android_glGetShaderPrecisionFormat__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint shadertype, jint precisiontype, jobject range_buf, jobject precision_buf) {
+    jint _exception = 0;
+    jarray _rangeArray = (jarray) 0;
+    jarray _precisionArray = (jarray) 0;
+    jint _rangeRemaining;
+    GLint *range = (GLint *) 0;
+    jint _precisionRemaining;
+    GLint *precision = (GLint *) 0;
+
+    range = (GLint *)getPointer(_env, range_buf, &_rangeArray, &_rangeRemaining);
+    precision = (GLint *)getPointer(_env, precision_buf, &_precisionArray, &_precisionRemaining);
+    glGetShaderPrecisionFormat(
+        (GLenum)shadertype,
+        (GLenum)precisiontype,
+        (GLint *)range,
+        (GLint *)precision
+    );
+    if (_rangeArray) {
+        releasePointer(_env, _rangeArray, precision, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+    if (_precisionArray) {
+        releasePointer(_env, _precisionArray, range, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glGetShaderSource ( GLuint shader, GLsizei bufsize, GLsizei *length, char *source ) */
+static void
+android_glGetShaderSource__II_3II_3BI
+  (JNIEnv *_env, jobject _this, jint shader, jint bufsize, jintArray length_ref, jint lengthOffset, jbyteArray source_ref, jint sourceOffset) {
+    jint _exception = 0;
+    GLsizei *length_base = (GLsizei *) 0;
+    jint _lengthRemaining;
+    GLsizei *length = (GLsizei *) 0;
+    char *source_base = (char *) 0;
+    jint _sourceRemaining;
+    char *source = (char *) 0;
+
+    if (!length_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "length == null");
+        goto exit;
+    }
+    if (lengthOffset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "lengthOffset < 0");
+        goto exit;
+    }
+    _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
+    length_base = (GLsizei *)
+        _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
+    length = length_base + lengthOffset;
+
+    if (!source_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "source == null");
+        goto exit;
+    }
+    if (sourceOffset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "sourceOffset < 0");
+        goto exit;
+    }
+    _sourceRemaining = _env->GetArrayLength(source_ref) - sourceOffset;
+    source_base = (char *)
+        _env->GetPrimitiveArrayCritical(source_ref, (jboolean *)0);
+    source = source_base + sourceOffset;
+
+    glGetShaderSource(
+        (GLuint)shader,
+        (GLsizei)bufsize,
+        (GLsizei *)length,
+        (char *)source
+    );
+
+exit:
+    if (source_base) {
+        _env->ReleasePrimitiveArrayCritical(source_ref, source_base,
+            _exception ? JNI_ABORT: 0);
+    }
+    if (length_base) {
+        _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetShaderSource ( GLuint shader, GLsizei bufsize, GLsizei *length, char *source ) */
+static void
+android_glGetShaderSource__IILjava_nio_IntBuffer_2B
+  (JNIEnv *_env, jobject _this, jint shader, jint bufsize, jobject length_buf, jbyte source) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLsizei *length = (GLsizei *) 0;
+
+    length = (GLsizei *)getPointer(_env, length_buf, &_array, &_remaining);
+    glGetShaderSource(
+        (GLuint)shader,
+        (GLsizei)bufsize,
+        (GLsizei *)length,
+        (char *)source
+    );
+    if (_array) {
+        releasePointer(_env, _array, length, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+#include <string.h>
+
+/* const GLubyte * glGetString ( GLenum name ) */
+static
+jstring
+android_glGetString
+  (JNIEnv *_env, jobject _this, jint name) {
+    const char * chars = (const char *)glGetString((GLenum)name);
+    jstring output = _env->NewStringUTF(chars);
+    return output;
+}
+/* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */
+static void
+android_glGetTexParameterfv__II_3FI
+  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
+    jint _exception = 0;
+    GLfloat *params_base = (GLfloat *) 0;
+    jint _remaining;
+    GLfloat *params = (GLfloat *) 0;
+
+    if (!params_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "params == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(params_ref) - offset;
+    if (_remaining < 1) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "length - offset < 1");
+        goto exit;
+    }
+    params_base = (GLfloat *)
+        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
+    params = params_base + offset;
+
+    glGetTexParameterfv(
+        (GLenum)target,
+        (GLenum)pname,
+        (GLfloat *)params
+    );
+
+exit:
+    if (params_base) {
+        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */
+static void
+android_glGetTexParameterfv__IILjava_nio_FloatBuffer_2
+  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLfloat *params = (GLfloat *) 0;
+
+    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining);
+    if (_remaining < 1) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "remaining() < 1");
+        goto exit;
+    }
+    glGetTexParameterfv(
+        (GLenum)target,
+        (GLenum)pname,
+        (GLfloat *)params
+    );
+
+exit:
+    if (_array) {
+        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */
+static void
+android_glGetTexParameteriv__II_3II
+  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
+    jint _exception = 0;
+    GLint *params_base = (GLint *) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    if (!params_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "params == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(params_ref) - offset;
+    if (_remaining < 1) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "length - offset < 1");
+        goto exit;
+    }
+    params_base = (GLint *)
+        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
+    params = params_base + offset;
+
+    glGetTexParameteriv(
+        (GLenum)target,
+        (GLenum)pname,
+        (GLint *)params
+    );
+
+exit:
+    if (params_base) {
+        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */
+static void
+android_glGetTexParameteriv__IILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining);
+    if (_remaining < 1) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "remaining() < 1");
+        goto exit;
+    }
+    glGetTexParameteriv(
+        (GLenum)target,
+        (GLenum)pname,
+        (GLint *)params
+    );
+
+exit:
+    if (_array) {
+        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glGetUniformfv ( GLuint program, GLint location, GLfloat *params ) */
+static void
+android_glGetUniformfv__II_3FI
+  (JNIEnv *_env, jobject _this, jint program, jint location, jfloatArray params_ref, jint offset) {
+    jint _exception = 0;
+    GLfloat *params_base = (GLfloat *) 0;
+    jint _remaining;
+    GLfloat *params = (GLfloat *) 0;
+
+    if (!params_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "params == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(params_ref) - offset;
+    params_base = (GLfloat *)
+        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
+    params = params_base + offset;
+
+    glGetUniformfv(
+        (GLuint)program,
+        (GLint)location,
+        (GLfloat *)params
+    );
+
+exit:
+    if (params_base) {
+        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetUniformfv ( GLuint program, GLint location, GLfloat *params ) */
+static void
+android_glGetUniformfv__IILjava_nio_FloatBuffer_2
+  (JNIEnv *_env, jobject _this, jint program, jint location, jobject params_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLfloat *params = (GLfloat *) 0;
+
+    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining);
+    glGetUniformfv(
+        (GLuint)program,
+        (GLint)location,
+        (GLfloat *)params
+    );
+    if (_array) {
+        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glGetUniformiv ( GLuint program, GLint location, GLint *params ) */
+static void
+android_glGetUniformiv__II_3II
+  (JNIEnv *_env, jobject _this, jint program, jint location, jintArray params_ref, jint offset) {
+    jint _exception = 0;
+    GLint *params_base = (GLint *) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    if (!params_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "params == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(params_ref) - offset;
+    params_base = (GLint *)
+        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
+    params = params_base + offset;
+
+    glGetUniformiv(
+        (GLuint)program,
+        (GLint)location,
+        (GLint *)params
+    );
+
+exit:
+    if (params_base) {
+        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetUniformiv ( GLuint program, GLint location, GLint *params ) */
+static void
+android_glGetUniformiv__IILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint program, jint location, jobject params_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining);
+    glGetUniformiv(
+        (GLuint)program,
+        (GLint)location,
+        (GLint *)params
+    );
+    if (_array) {
+        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* int glGetUniformLocation ( GLuint program, const char *name ) */
+static jint
+android_glGetUniformLocation__ILjava_lang_String_2
+  (JNIEnv *_env, jobject _this, jint program, jstring name) {
+    int _returnValue = 0;
+    const char* _nativename = 0;
+
+    if (!name) {
+        _env->ThrowNew(IAEClass, "name == null");
+        goto exit;
+    }
+    _nativename = _env->GetStringUTFChars(name, 0);
+
+    _returnValue = glGetUniformLocation(
+        (GLuint)program,
+        (char *)_nativename
+    );
+
+exit:
+    if (_nativename) {
+        _env->ReleaseStringUTFChars(name, _nativename);
+    }
+
+    return _returnValue;
+}
+
+/* void glGetVertexAttribfv ( GLuint index, GLenum pname, GLfloat *params ) */
+static void
+android_glGetVertexAttribfv__II_3FI
+  (JNIEnv *_env, jobject _this, jint index, jint pname, jfloatArray params_ref, jint offset) {
+    jint _exception = 0;
+    GLfloat *params_base = (GLfloat *) 0;
+    jint _remaining;
+    GLfloat *params = (GLfloat *) 0;
+
+    if (!params_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "params == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(params_ref) - offset;
+    params_base = (GLfloat *)
+        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
+    params = params_base + offset;
+
+    glGetVertexAttribfv(
+        (GLuint)index,
+        (GLenum)pname,
+        (GLfloat *)params
+    );
+
+exit:
+    if (params_base) {
+        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetVertexAttribfv ( GLuint index, GLenum pname, GLfloat *params ) */
+static void
+android_glGetVertexAttribfv__IILjava_nio_FloatBuffer_2
+  (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLfloat *params = (GLfloat *) 0;
+
+    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining);
+    glGetVertexAttribfv(
+        (GLuint)index,
+        (GLenum)pname,
+        (GLfloat *)params
+    );
+    if (_array) {
+        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glGetVertexAttribiv ( GLuint index, GLenum pname, GLint *params ) */
+static void
+android_glGetVertexAttribiv__II_3II
+  (JNIEnv *_env, jobject _this, jint index, jint pname, jintArray params_ref, jint offset) {
+    jint _exception = 0;
+    GLint *params_base = (GLint *) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    if (!params_ref) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "params == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _exception = 1;
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(params_ref) - offset;
+    params_base = (GLint *)
+        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
+    params = params_base + offset;
+
+    glGetVertexAttribiv(
+        (GLuint)index,
+        (GLenum)pname,
+        (GLint *)params
+    );
+
+exit:
+    if (params_base) {
+        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
+            _exception ? JNI_ABORT: 0);
+    }
+}
+
+/* void glGetVertexAttribiv ( GLuint index, GLenum pname, GLint *params ) */
+static void
+android_glGetVertexAttribiv__IILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining);
+    glGetVertexAttribiv(
+        (GLuint)index,
+        (GLenum)pname,
+        (GLint *)params
+    );
+    if (_array) {
+        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glHint ( GLenum target, GLenum mode ) */
+static void
+android_glHint__II
+  (JNIEnv *_env, jobject _this, jint target, jint mode) {
+    glHint(
+        (GLenum)target,
+        (GLenum)mode
+    );
+}
+
+/* GLboolean glIsBuffer ( GLuint buffer ) */
+static jboolean
+android_glIsBuffer__I
+  (JNIEnv *_env, jobject _this, jint buffer) {
+    GLboolean _returnValue;
+    _returnValue = glIsBuffer(
+        (GLuint)buffer
+    );
+    return _returnValue;
+}
+
+/* GLboolean glIsEnabled ( GLenum cap ) */
+static jboolean
+android_glIsEnabled__I
+  (JNIEnv *_env, jobject _this, jint cap) {
+    GLboolean _returnValue;
+    _returnValue = glIsEnabled(
+        (GLenum)cap
+    );
+    return _returnValue;
+}
+
+/* GLboolean glIsFramebuffer ( GLuint framebuffer ) */
+static jboolean
+android_glIsFramebuffer__I
+  (JNIEnv *_env, jobject _this, jint framebuffer) {
+    GLboolean _returnValue;
+    _returnValue = glIsFramebuffer(
+        (GLuint)framebuffer
+    );
+    return _returnValue;
+}
+
+/* GLboolean glIsProgram ( GLuint program ) */
+static jboolean
+android_glIsProgram__I
+  (JNIEnv *_env, jobject _this, jint program) {
+    GLboolean _returnValue;
+    _returnValue = glIsProgram(
+        (GLuint)program
+    );
+    return _returnValue;
+}
+
+/* GLboolean glIsRenderbuffer ( GLuint renderbuffer ) */
+static jboolean
+android_glIsRenderbuffer__I
+  (JNIEnv *_env, jobject _this, jint renderbuffer) {
+    GLboolean _returnValue;
+    _returnValue = glIsRenderbuffer(
+        (GLuint)renderbuffer
+    );
+    return _returnValue;
+}
+
+/* GLboolean glIsShader ( GLuint shader ) */
+static jboolean
+android_glIsShader__I
+  (JNIEnv *_env, jobject _this, jint shader) {
+    GLboolean _returnValue;
+    _returnValue = glIsShader(
+        (GLuint)shader
+    );
+    return _returnValue;
+}
+
+/* GLboolean glIsTexture ( GLuint texture ) */
+static jboolean
+android_glIsTexture__I
+  (JNIEnv *_env, jobject _this, jint texture) {
+    GLboolean _returnValue;
+    _returnValue = glIsTexture(
+        (GLuint)texture
+    );
+    return _returnValue;
+}
+
+/* void glLineWidth ( GLfloat width ) */
+static void
+android_glLineWidth__F
+  (JNIEnv *_env, jobject _this, jfloat width) {
+    glLineWidth(
+        (GLfloat)width
+    );
+}
+
+/* void glLinkProgram ( GLuint program ) */
+static void
+android_glLinkProgram__I
+  (JNIEnv *_env, jobject _this, jint program) {
+    glLinkProgram(
+        (GLuint)program
+    );
+}
+
+/* void glPixelStorei ( GLenum pname, GLint param ) */
+static void
+android_glPixelStorei__II
+  (JNIEnv *_env, jobject _this, jint pname, jint param) {
+    glPixelStorei(
+        (GLenum)pname,
+        (GLint)param
+    );
+}
+
+/* void glPolygonOffset ( GLfloat factor, GLfloat units ) */
+static void
+android_glPolygonOffset__FF
+  (JNIEnv *_env, jobject _this, jfloat factor, jfloat units) {
+    glPolygonOffset(
+        (GLfloat)factor,
+        (GLfloat)units
+    );
+}
+
+/* void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) */
+static void
+android_glReadPixels__IIIIIILjava_nio_Buffer_2
+  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jobject pixels_buf) {
+    jint _exception = 0;
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLvoid *pixels = (GLvoid *) 0;
+
+    pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining);
+    glReadPixels(
+        (GLint)x,
+        (GLint)y,
+        (GLsizei)width,
+        (GLsizei)height,
+        (GLenum)format,
+        (GLenum)type,
+        (GLvoid *)pixels
+    );
+    if (_array) {
+        releasePointer(_env, _array, pixels, _exception ? JNI_FALSE : JNI_TRUE);
+    }
+}
+
+/* void glReleaseShaderCompiler ( void ) */
+static void
+android_glReleaseShaderCompiler__
+  (JNIEnv *_env, jobject _this) {
+    glReleaseShaderCompiler();
+}
+
+/* void glRenderbufferStorage ( GLenum target, GLenum internalformat, GLsizei width, GLsizei height ) */
+static void
+android_glRenderbufferStorage__IIII
+  (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint width, jint height) {
+    glRenderbufferStorage(
+        (GLenum)target,
+        (GLenum)internalformat,
+        (GLsizei)width,
+        (GLsizei)height
+    );
+}
+
+/* void glSampleCoverage ( GLclampf value, GLboolean invert ) */
+static void
+android_glSampleCoverage__FZ
+  (JNIEnv *_env, jobject _this, jfloat value, jboolean invert) {
+    glSampleCoverage(
+        (GLclampf)value,
+        (GLboolean)invert
+    );
+}
+
+/* void glScissor ( GLint x, GLint y, GLsizei width, GLsizei height ) */
+static void
+android_glScissor__IIII
+  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
+    glScissor(
+        (GLint)x,
+        (GLint)y,
+        (GLsizei)width,
+        (GLsizei)height
+    );
+}
+
+/* void glShaderBinary ( GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length ) */
+static void
+android_glShaderBinary__I_3IIILjava_nio_Buffer_2I
+  (JNIEnv *_env, jobject _this, jint n, jintArray shaders_ref, jint offset, jint binaryformat, jobject binary_buf, jint length) {
+    jarray _array = (jarray) 0;
+    GLuint *shaders_base = (GLuint *) 0;
+    jint _shadersRemaining;
+    GLuint *shaders = (GLuint *) 0;
+    jint _binaryRemaining;
+    GLvoid *binary = (GLvoid *) 0;
+
+    if (!shaders_ref) {
+        _env->ThrowNew(IAEClass, "shaders == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _shadersRemaining = _env->GetArrayLength(shaders_ref) - offset;
+    shaders_base = (GLuint *)
+        _env->GetPrimitiveArrayCritical(shaders_ref, (jboolean *)0);
+    shaders = shaders_base + offset;
+
+    binary = (GLvoid *)getPointer(_env, binary_buf, &_array, &_binaryRemaining);
+    glShaderBinary(
+        (GLsizei)n,
+        (GLuint *)shaders,
+        (GLenum)binaryformat,
+        (GLvoid *)binary,
+        (GLsizei)length
+    );
+
+exit:
+    if (_array) {
+        releasePointer(_env, _array, binary, JNI_FALSE);
+    }
+    if (shaders_base) {
+        _env->ReleasePrimitiveArrayCritical(shaders_ref, shaders_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glShaderBinary ( GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length ) */
+static void
+android_glShaderBinary__ILjava_nio_IntBuffer_2ILjava_nio_Buffer_2I
+  (JNIEnv *_env, jobject _this, jint n, jobject shaders_buf, jint binaryformat, jobject binary_buf, jint length) {
+    jarray _shadersArray = (jarray) 0;
+    jarray _binaryArray = (jarray) 0;
+    jint _shadersRemaining;
+    GLuint *shaders = (GLuint *) 0;
+    jint _binaryRemaining;
+    GLvoid *binary = (GLvoid *) 0;
+
+    shaders = (GLuint *)getPointer(_env, shaders_buf, &_shadersArray, &_shadersRemaining);
+    binary = (GLvoid *)getPointer(_env, binary_buf, &_binaryArray, &_binaryRemaining);
+    glShaderBinary(
+        (GLsizei)n,
+        (GLuint *)shaders,
+        (GLenum)binaryformat,
+        (GLvoid *)binary,
+        (GLsizei)length
+    );
+    if (_shadersArray) {
+        releasePointer(_env, _shadersArray, binary, JNI_FALSE);
+    }
+    if (_binaryArray) {
+        releasePointer(_env, _binaryArray, shaders, JNI_FALSE);
+    }
+}
+
+
+/* void glShaderSource ( GLuint shader, GLsizei count, const GLchar ** string, const GLint * length ) */
+static
+void
+android_glShaderSource
+    (JNIEnv *_env, jobject _this, jint shader, jstring string) {
+
+    if (!string) {
+        _env->ThrowNew(IAEClass, "string == null");
+        return;
+    }
+
+    const char* nativeString = _env->GetStringUTFChars(string, 0);
+    const char* strings[] = {nativeString};
+    glShaderSource(shader, 1, strings, 0);
+    _env->ReleaseStringUTFChars(string, nativeString);
+}
+/* void glStencilFunc ( GLenum func, GLint ref, GLuint mask ) */
+static void
+android_glStencilFunc__III
+  (JNIEnv *_env, jobject _this, jint func, jint ref, jint mask) {
+    glStencilFunc(
+        (GLenum)func,
+        (GLint)ref,
+        (GLuint)mask
+    );
+}
+
+/* void glStencilFuncSeparate ( GLenum face, GLenum func, GLint ref, GLuint mask ) */
+static void
+android_glStencilFuncSeparate__IIII
+  (JNIEnv *_env, jobject _this, jint face, jint func, jint ref, jint mask) {
+    glStencilFuncSeparate(
+        (GLenum)face,
+        (GLenum)func,
+        (GLint)ref,
+        (GLuint)mask
+    );
+}
+
+/* void glStencilMask ( GLuint mask ) */
+static void
+android_glStencilMask__I
+  (JNIEnv *_env, jobject _this, jint mask) {
+    glStencilMask(
+        (GLuint)mask
+    );
+}
+
+/* void glStencilMaskSeparate ( GLenum face, GLuint mask ) */
+static void
+android_glStencilMaskSeparate__II
+  (JNIEnv *_env, jobject _this, jint face, jint mask) {
+    glStencilMaskSeparate(
+        (GLenum)face,
+        (GLuint)mask
+    );
+}
+
+/* void glStencilOp ( GLenum fail, GLenum zfail, GLenum zpass ) */
+static void
+android_glStencilOp__III
+  (JNIEnv *_env, jobject _this, jint fail, jint zfail, jint zpass) {
+    glStencilOp(
+        (GLenum)fail,
+        (GLenum)zfail,
+        (GLenum)zpass
+    );
+}
+
+/* void glStencilOpSeparate ( GLenum face, GLenum fail, GLenum zfail, GLenum zpass ) */
+static void
+android_glStencilOpSeparate__IIII
+  (JNIEnv *_env, jobject _this, jint face, jint fail, jint zfail, jint zpass) {
+    glStencilOpSeparate(
+        (GLenum)face,
+        (GLenum)fail,
+        (GLenum)zfail,
+        (GLenum)zpass
+    );
+}
+
+/* void glTexImage2D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) */
+static void
+android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2
+  (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint format, jint type, jobject pixels_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLvoid *pixels = (GLvoid *) 0;
+
+    if (pixels_buf) {
+        pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining);
+    }
+    glTexImage2D(
+        (GLenum)target,
+        (GLint)level,
+        (GLint)internalformat,
+        (GLsizei)width,
+        (GLsizei)height,
+        (GLint)border,
+        (GLenum)format,
+        (GLenum)type,
+        (GLvoid *)pixels
+    );
+    if (_array) {
+        releasePointer(_env, _array, pixels, JNI_FALSE);
+    }
+}
+
+/* void glTexParameterf ( GLenum target, GLenum pname, GLfloat param ) */
+static void
+android_glTexParameterf__IIF
+  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloat param) {
+    glTexParameterf(
+        (GLenum)target,
+        (GLenum)pname,
+        (GLfloat)param
+    );
+}
+
+/* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */
+static void
+android_glTexParameterfv__II_3FI
+  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
+    GLfloat *params_base = (GLfloat *) 0;
+    jint _remaining;
+    GLfloat *params = (GLfloat *) 0;
+
+    if (!params_ref) {
+        _env->ThrowNew(IAEClass, "params == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(params_ref) - offset;
+    if (_remaining < 1) {
+        _env->ThrowNew(IAEClass, "length - offset < 1");
+        goto exit;
+    }
+    params_base = (GLfloat *)
+        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
+    params = params_base + offset;
+
+    glTexParameterfv(
+        (GLenum)target,
+        (GLenum)pname,
+        (GLfloat *)params
+    );
+
+exit:
+    if (params_base) {
+        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */
+static void
+android_glTexParameterfv__IILjava_nio_FloatBuffer_2
+  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLfloat *params = (GLfloat *) 0;
+
+    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining);
+    if (_remaining < 1) {
+        _env->ThrowNew(IAEClass, "remaining() < 1");
+        goto exit;
+    }
+    glTexParameterfv(
+        (GLenum)target,
+        (GLenum)pname,
+        (GLfloat *)params
+    );
+
+exit:
+    if (_array) {
+        releasePointer(_env, _array, params, JNI_FALSE);
+    }
+}
+
+/* void glTexParameteri ( GLenum target, GLenum pname, GLint param ) */
+static void
+android_glTexParameteri__III
+  (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
+    glTexParameteri(
+        (GLenum)target,
+        (GLenum)pname,
+        (GLint)param
+    );
+}
+
+/* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */
+static void
+android_glTexParameteriv__II_3II
+  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
+    GLint *params_base = (GLint *) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    if (!params_ref) {
+        _env->ThrowNew(IAEClass, "params == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(params_ref) - offset;
+    if (_remaining < 1) {
+        _env->ThrowNew(IAEClass, "length - offset < 1");
+        goto exit;
+    }
+    params_base = (GLint *)
+        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
+    params = params_base + offset;
+
+    glTexParameteriv(
+        (GLenum)target,
+        (GLenum)pname,
+        (GLint *)params
+    );
+
+exit:
+    if (params_base) {
+        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */
+static void
+android_glTexParameteriv__IILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLint *params = (GLint *) 0;
+
+    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining);
+    if (_remaining < 1) {
+        _env->ThrowNew(IAEClass, "remaining() < 1");
+        goto exit;
+    }
+    glTexParameteriv(
+        (GLenum)target,
+        (GLenum)pname,
+        (GLint *)params
+    );
+
+exit:
+    if (_array) {
+        releasePointer(_env, _array, params, JNI_FALSE);
+    }
+}
+
+/* void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) */
+static void
+android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
+  (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint type, jobject pixels_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLvoid *pixels = (GLvoid *) 0;
+
+    if (pixels_buf) {
+        pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining);
+    }
+    glTexSubImage2D(
+        (GLenum)target,
+        (GLint)level,
+        (GLint)xoffset,
+        (GLint)yoffset,
+        (GLsizei)width,
+        (GLsizei)height,
+        (GLenum)format,
+        (GLenum)type,
+        (GLvoid *)pixels
+    );
+    if (_array) {
+        releasePointer(_env, _array, pixels, JNI_FALSE);
+    }
+}
+
+/* void glUniform1f ( GLint location, GLfloat x ) */
+static void
+android_glUniform1f__IF
+  (JNIEnv *_env, jobject _this, jint location, jfloat x) {
+    glUniform1f(
+        (GLint)location,
+        (GLfloat)x
+    );
+}
+
+/* void glUniform1fv ( GLint location, GLsizei count, const GLfloat *v ) */
+static void
+android_glUniform1fv__II_3FI
+  (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) {
+    GLfloat *v_base = (GLfloat *) 0;
+    jint _remaining;
+    GLfloat *v = (GLfloat *) 0;
+
+    if (!v_ref) {
+        _env->ThrowNew(IAEClass, "v == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(v_ref) - offset;
+    v_base = (GLfloat *)
+        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
+    v = v_base + offset;
+
+    glUniform1fv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLfloat *)v
+    );
+
+exit:
+    if (v_base) {
+        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glUniform1fv ( GLint location, GLsizei count, const GLfloat *v ) */
+static void
+android_glUniform1fv__IILjava_nio_FloatBuffer_2
+  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLfloat *v = (GLfloat *) 0;
+
+    v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining);
+    glUniform1fv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLfloat *)v
+    );
+    if (_array) {
+        releasePointer(_env, _array, v, JNI_FALSE);
+    }
+}
+
+/* void glUniform1i ( GLint location, GLint x ) */
+static void
+android_glUniform1i__II
+  (JNIEnv *_env, jobject _this, jint location, jint x) {
+    glUniform1i(
+        (GLint)location,
+        (GLint)x
+    );
+}
+
+/* void glUniform1iv ( GLint location, GLsizei count, const GLint *v ) */
+static void
+android_glUniform1iv__II_3II
+  (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) {
+    GLint *v_base = (GLint *) 0;
+    jint _remaining;
+    GLint *v = (GLint *) 0;
+
+    if (!v_ref) {
+        _env->ThrowNew(IAEClass, "v == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(v_ref) - offset;
+    v_base = (GLint *)
+        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
+    v = v_base + offset;
+
+    glUniform1iv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLint *)v
+    );
+
+exit:
+    if (v_base) {
+        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glUniform1iv ( GLint location, GLsizei count, const GLint *v ) */
+static void
+android_glUniform1iv__IILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLint *v = (GLint *) 0;
+
+    v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining);
+    glUniform1iv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLint *)v
+    );
+    if (_array) {
+        releasePointer(_env, _array, v, JNI_FALSE);
+    }
+}
+
+/* void glUniform2f ( GLint location, GLfloat x, GLfloat y ) */
+static void
+android_glUniform2f__IFF
+  (JNIEnv *_env, jobject _this, jint location, jfloat x, jfloat y) {
+    glUniform2f(
+        (GLint)location,
+        (GLfloat)x,
+        (GLfloat)y
+    );
+}
+
+/* void glUniform2fv ( GLint location, GLsizei count, const GLfloat *v ) */
+static void
+android_glUniform2fv__II_3FI
+  (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) {
+    GLfloat *v_base = (GLfloat *) 0;
+    jint _remaining;
+    GLfloat *v = (GLfloat *) 0;
+
+    if (!v_ref) {
+        _env->ThrowNew(IAEClass, "v == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(v_ref) - offset;
+    v_base = (GLfloat *)
+        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
+    v = v_base + offset;
+
+    glUniform2fv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLfloat *)v
+    );
+
+exit:
+    if (v_base) {
+        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glUniform2fv ( GLint location, GLsizei count, const GLfloat *v ) */
+static void
+android_glUniform2fv__IILjava_nio_FloatBuffer_2
+  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLfloat *v = (GLfloat *) 0;
+
+    v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining);
+    glUniform2fv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLfloat *)v
+    );
+    if (_array) {
+        releasePointer(_env, _array, v, JNI_FALSE);
+    }
+}
+
+/* void glUniform2i ( GLint location, GLint x, GLint y ) */
+static void
+android_glUniform2i__III
+  (JNIEnv *_env, jobject _this, jint location, jint x, jint y) {
+    glUniform2i(
+        (GLint)location,
+        (GLint)x,
+        (GLint)y
+    );
+}
+
+/* void glUniform2iv ( GLint location, GLsizei count, const GLint *v ) */
+static void
+android_glUniform2iv__II_3II
+  (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) {
+    GLint *v_base = (GLint *) 0;
+    jint _remaining;
+    GLint *v = (GLint *) 0;
+
+    if (!v_ref) {
+        _env->ThrowNew(IAEClass, "v == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(v_ref) - offset;
+    v_base = (GLint *)
+        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
+    v = v_base + offset;
+
+    glUniform2iv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLint *)v
+    );
+
+exit:
+    if (v_base) {
+        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glUniform2iv ( GLint location, GLsizei count, const GLint *v ) */
+static void
+android_glUniform2iv__IILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLint *v = (GLint *) 0;
+
+    v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining);
+    glUniform2iv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLint *)v
+    );
+    if (_array) {
+        releasePointer(_env, _array, v, JNI_FALSE);
+    }
+}
+
+/* void glUniform3f ( GLint location, GLfloat x, GLfloat y, GLfloat z ) */
+static void
+android_glUniform3f__IFFF
+  (JNIEnv *_env, jobject _this, jint location, jfloat x, jfloat y, jfloat z) {
+    glUniform3f(
+        (GLint)location,
+        (GLfloat)x,
+        (GLfloat)y,
+        (GLfloat)z
+    );
+}
+
+/* void glUniform3fv ( GLint location, GLsizei count, const GLfloat *v ) */
+static void
+android_glUniform3fv__II_3FI
+  (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) {
+    GLfloat *v_base = (GLfloat *) 0;
+    jint _remaining;
+    GLfloat *v = (GLfloat *) 0;
+
+    if (!v_ref) {
+        _env->ThrowNew(IAEClass, "v == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(v_ref) - offset;
+    v_base = (GLfloat *)
+        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
+    v = v_base + offset;
+
+    glUniform3fv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLfloat *)v
+    );
+
+exit:
+    if (v_base) {
+        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glUniform3fv ( GLint location, GLsizei count, const GLfloat *v ) */
+static void
+android_glUniform3fv__IILjava_nio_FloatBuffer_2
+  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLfloat *v = (GLfloat *) 0;
+
+    v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining);
+    glUniform3fv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLfloat *)v
+    );
+    if (_array) {
+        releasePointer(_env, _array, v, JNI_FALSE);
+    }
+}
+
+/* void glUniform3i ( GLint location, GLint x, GLint y, GLint z ) */
+static void
+android_glUniform3i__IIII
+  (JNIEnv *_env, jobject _this, jint location, jint x, jint y, jint z) {
+    glUniform3i(
+        (GLint)location,
+        (GLint)x,
+        (GLint)y,
+        (GLint)z
+    );
+}
+
+/* void glUniform3iv ( GLint location, GLsizei count, const GLint *v ) */
+static void
+android_glUniform3iv__II_3II
+  (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) {
+    GLint *v_base = (GLint *) 0;
+    jint _remaining;
+    GLint *v = (GLint *) 0;
+
+    if (!v_ref) {
+        _env->ThrowNew(IAEClass, "v == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(v_ref) - offset;
+    v_base = (GLint *)
+        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
+    v = v_base + offset;
+
+    glUniform3iv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLint *)v
+    );
+
+exit:
+    if (v_base) {
+        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glUniform3iv ( GLint location, GLsizei count, const GLint *v ) */
+static void
+android_glUniform3iv__IILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLint *v = (GLint *) 0;
+
+    v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining);
+    glUniform3iv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLint *)v
+    );
+    if (_array) {
+        releasePointer(_env, _array, v, JNI_FALSE);
+    }
+}
+
+/* void glUniform4f ( GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w ) */
+static void
+android_glUniform4f__IFFFF
+  (JNIEnv *_env, jobject _this, jint location, jfloat x, jfloat y, jfloat z, jfloat w) {
+    glUniform4f(
+        (GLint)location,
+        (GLfloat)x,
+        (GLfloat)y,
+        (GLfloat)z,
+        (GLfloat)w
+    );
+}
+
+/* void glUniform4fv ( GLint location, GLsizei count, const GLfloat *v ) */
+static void
+android_glUniform4fv__II_3FI
+  (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) {
+    GLfloat *v_base = (GLfloat *) 0;
+    jint _remaining;
+    GLfloat *v = (GLfloat *) 0;
+
+    if (!v_ref) {
+        _env->ThrowNew(IAEClass, "v == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(v_ref) - offset;
+    v_base = (GLfloat *)
+        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
+    v = v_base + offset;
+
+    glUniform4fv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLfloat *)v
+    );
+
+exit:
+    if (v_base) {
+        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glUniform4fv ( GLint location, GLsizei count, const GLfloat *v ) */
+static void
+android_glUniform4fv__IILjava_nio_FloatBuffer_2
+  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLfloat *v = (GLfloat *) 0;
+
+    v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining);
+    glUniform4fv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLfloat *)v
+    );
+    if (_array) {
+        releasePointer(_env, _array, v, JNI_FALSE);
+    }
+}
+
+/* void glUniform4i ( GLint location, GLint x, GLint y, GLint z, GLint w ) */
+static void
+android_glUniform4i__IIIII
+  (JNIEnv *_env, jobject _this, jint location, jint x, jint y, jint z, jint w) {
+    glUniform4i(
+        (GLint)location,
+        (GLint)x,
+        (GLint)y,
+        (GLint)z,
+        (GLint)w
+    );
+}
+
+/* void glUniform4iv ( GLint location, GLsizei count, const GLint *v ) */
+static void
+android_glUniform4iv__II_3II
+  (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) {
+    GLint *v_base = (GLint *) 0;
+    jint _remaining;
+    GLint *v = (GLint *) 0;
+
+    if (!v_ref) {
+        _env->ThrowNew(IAEClass, "v == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(v_ref) - offset;
+    v_base = (GLint *)
+        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
+    v = v_base + offset;
+
+    glUniform4iv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLint *)v
+    );
+
+exit:
+    if (v_base) {
+        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glUniform4iv ( GLint location, GLsizei count, const GLint *v ) */
+static void
+android_glUniform4iv__IILjava_nio_IntBuffer_2
+  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLint *v = (GLint *) 0;
+
+    v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining);
+    glUniform4iv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLint *)v
+    );
+    if (_array) {
+        releasePointer(_env, _array, v, JNI_FALSE);
+    }
+}
+
+/* void glUniformMatrix2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
+static void
+android_glUniformMatrix2fv__IIZ_3FI
+  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
+    GLfloat *value_base = (GLfloat *) 0;
+    jint _remaining;
+    GLfloat *value = (GLfloat *) 0;
+
+    if (!value_ref) {
+        _env->ThrowNew(IAEClass, "value == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(value_ref) - offset;
+    value_base = (GLfloat *)
+        _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
+    value = value_base + offset;
+
+    glUniformMatrix2fv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLboolean)transpose,
+        (GLfloat *)value
+    );
+
+exit:
+    if (value_base) {
+        _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glUniformMatrix2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
+static void
+android_glUniformMatrix2fv__IIZLjava_nio_FloatBuffer_2
+  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLfloat *value = (GLfloat *) 0;
+
+    value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining);
+    glUniformMatrix2fv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLboolean)transpose,
+        (GLfloat *)value
+    );
+    if (_array) {
+        releasePointer(_env, _array, value, JNI_FALSE);
+    }
+}
+
+/* void glUniformMatrix3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
+static void
+android_glUniformMatrix3fv__IIZ_3FI
+  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
+    GLfloat *value_base = (GLfloat *) 0;
+    jint _remaining;
+    GLfloat *value = (GLfloat *) 0;
+
+    if (!value_ref) {
+        _env->ThrowNew(IAEClass, "value == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(value_ref) - offset;
+    value_base = (GLfloat *)
+        _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
+    value = value_base + offset;
+
+    glUniformMatrix3fv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLboolean)transpose,
+        (GLfloat *)value
+    );
+
+exit:
+    if (value_base) {
+        _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glUniformMatrix3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
+static void
+android_glUniformMatrix3fv__IIZLjava_nio_FloatBuffer_2
+  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLfloat *value = (GLfloat *) 0;
+
+    value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining);
+    glUniformMatrix3fv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLboolean)transpose,
+        (GLfloat *)value
+    );
+    if (_array) {
+        releasePointer(_env, _array, value, JNI_FALSE);
+    }
+}
+
+/* void glUniformMatrix4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
+static void
+android_glUniformMatrix4fv__IIZ_3FI
+  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
+    GLfloat *value_base = (GLfloat *) 0;
+    jint _remaining;
+    GLfloat *value = (GLfloat *) 0;
+
+    if (!value_ref) {
+        _env->ThrowNew(IAEClass, "value == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(value_ref) - offset;
+    value_base = (GLfloat *)
+        _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
+    value = value_base + offset;
+
+    glUniformMatrix4fv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLboolean)transpose,
+        (GLfloat *)value
+    );
+
+exit:
+    if (value_base) {
+        _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glUniformMatrix4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
+static void
+android_glUniformMatrix4fv__IIZLjava_nio_FloatBuffer_2
+  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLfloat *value = (GLfloat *) 0;
+
+    value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining);
+    glUniformMatrix4fv(
+        (GLint)location,
+        (GLsizei)count,
+        (GLboolean)transpose,
+        (GLfloat *)value
+    );
+    if (_array) {
+        releasePointer(_env, _array, value, JNI_FALSE);
+    }
+}
+
+/* void glUseProgram ( GLuint program ) */
+static void
+android_glUseProgram__I
+  (JNIEnv *_env, jobject _this, jint program) {
+    glUseProgram(
+        (GLuint)program
+    );
+}
+
+/* void glValidateProgram ( GLuint program ) */
+static void
+android_glValidateProgram__I
+  (JNIEnv *_env, jobject _this, jint program) {
+    glValidateProgram(
+        (GLuint)program
+    );
+}
+
+/* void glVertexAttrib1f ( GLuint indx, GLfloat x ) */
+static void
+android_glVertexAttrib1f__IF
+  (JNIEnv *_env, jobject _this, jint indx, jfloat x) {
+    glVertexAttrib1f(
+        (GLuint)indx,
+        (GLfloat)x
+    );
+}
+
+/* void glVertexAttrib1fv ( GLuint indx, const GLfloat *values ) */
+static void
+android_glVertexAttrib1fv__I_3FI
+  (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) {
+    GLfloat *values_base = (GLfloat *) 0;
+    jint _remaining;
+    GLfloat *values = (GLfloat *) 0;
+
+    if (!values_ref) {
+        _env->ThrowNew(IAEClass, "values == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(values_ref) - offset;
+    values_base = (GLfloat *)
+        _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
+    values = values_base + offset;
+
+    glVertexAttrib1fv(
+        (GLuint)indx,
+        (GLfloat *)values
+    );
+
+exit:
+    if (values_base) {
+        _env->ReleasePrimitiveArrayCritical(values_ref, values_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glVertexAttrib1fv ( GLuint indx, const GLfloat *values ) */
+static void
+android_glVertexAttrib1fv__ILjava_nio_FloatBuffer_2
+  (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLfloat *values = (GLfloat *) 0;
+
+    values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining);
+    glVertexAttrib1fv(
+        (GLuint)indx,
+        (GLfloat *)values
+    );
+    if (_array) {
+        releasePointer(_env, _array, values, JNI_FALSE);
+    }
+}
+
+/* void glVertexAttrib2f ( GLuint indx, GLfloat x, GLfloat y ) */
+static void
+android_glVertexAttrib2f__IFF
+  (JNIEnv *_env, jobject _this, jint indx, jfloat x, jfloat y) {
+    glVertexAttrib2f(
+        (GLuint)indx,
+        (GLfloat)x,
+        (GLfloat)y
+    );
+}
+
+/* void glVertexAttrib2fv ( GLuint indx, const GLfloat *values ) */
+static void
+android_glVertexAttrib2fv__I_3FI
+  (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) {
+    GLfloat *values_base = (GLfloat *) 0;
+    jint _remaining;
+    GLfloat *values = (GLfloat *) 0;
+
+    if (!values_ref) {
+        _env->ThrowNew(IAEClass, "values == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(values_ref) - offset;
+    values_base = (GLfloat *)
+        _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
+    values = values_base + offset;
+
+    glVertexAttrib2fv(
+        (GLuint)indx,
+        (GLfloat *)values
+    );
+
+exit:
+    if (values_base) {
+        _env->ReleasePrimitiveArrayCritical(values_ref, values_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glVertexAttrib2fv ( GLuint indx, const GLfloat *values ) */
+static void
+android_glVertexAttrib2fv__ILjava_nio_FloatBuffer_2
+  (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLfloat *values = (GLfloat *) 0;
+
+    values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining);
+    glVertexAttrib2fv(
+        (GLuint)indx,
+        (GLfloat *)values
+    );
+    if (_array) {
+        releasePointer(_env, _array, values, JNI_FALSE);
+    }
+}
+
+/* void glVertexAttrib3f ( GLuint indx, GLfloat x, GLfloat y, GLfloat z ) */
+static void
+android_glVertexAttrib3f__IFFF
+  (JNIEnv *_env, jobject _this, jint indx, jfloat x, jfloat y, jfloat z) {
+    glVertexAttrib3f(
+        (GLuint)indx,
+        (GLfloat)x,
+        (GLfloat)y,
+        (GLfloat)z
+    );
+}
+
+/* void glVertexAttrib3fv ( GLuint indx, const GLfloat *values ) */
+static void
+android_glVertexAttrib3fv__I_3FI
+  (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) {
+    GLfloat *values_base = (GLfloat *) 0;
+    jint _remaining;
+    GLfloat *values = (GLfloat *) 0;
+
+    if (!values_ref) {
+        _env->ThrowNew(IAEClass, "values == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(values_ref) - offset;
+    values_base = (GLfloat *)
+        _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
+    values = values_base + offset;
+
+    glVertexAttrib3fv(
+        (GLuint)indx,
+        (GLfloat *)values
+    );
+
+exit:
+    if (values_base) {
+        _env->ReleasePrimitiveArrayCritical(values_ref, values_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glVertexAttrib3fv ( GLuint indx, const GLfloat *values ) */
+static void
+android_glVertexAttrib3fv__ILjava_nio_FloatBuffer_2
+  (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLfloat *values = (GLfloat *) 0;
+
+    values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining);
+    glVertexAttrib3fv(
+        (GLuint)indx,
+        (GLfloat *)values
+    );
+    if (_array) {
+        releasePointer(_env, _array, values, JNI_FALSE);
+    }
+}
+
+/* void glVertexAttrib4f ( GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w ) */
+static void
+android_glVertexAttrib4f__IFFFF
+  (JNIEnv *_env, jobject _this, jint indx, jfloat x, jfloat y, jfloat z, jfloat w) {
+    glVertexAttrib4f(
+        (GLuint)indx,
+        (GLfloat)x,
+        (GLfloat)y,
+        (GLfloat)z,
+        (GLfloat)w
+    );
+}
+
+/* void glVertexAttrib4fv ( GLuint indx, const GLfloat *values ) */
+static void
+android_glVertexAttrib4fv__I_3FI
+  (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) {
+    GLfloat *values_base = (GLfloat *) 0;
+    jint _remaining;
+    GLfloat *values = (GLfloat *) 0;
+
+    if (!values_ref) {
+        _env->ThrowNew(IAEClass, "values == null");
+        goto exit;
+    }
+    if (offset < 0) {
+        _env->ThrowNew(IAEClass, "offset < 0");
+        goto exit;
+    }
+    _remaining = _env->GetArrayLength(values_ref) - offset;
+    values_base = (GLfloat *)
+        _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
+    values = values_base + offset;
+
+    glVertexAttrib4fv(
+        (GLuint)indx,
+        (GLfloat *)values
+    );
+
+exit:
+    if (values_base) {
+        _env->ReleasePrimitiveArrayCritical(values_ref, values_base,
+            JNI_ABORT);
+    }
+}
+
+/* void glVertexAttrib4fv ( GLuint indx, const GLfloat *values ) */
+static void
+android_glVertexAttrib4fv__ILjava_nio_FloatBuffer_2
+  (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLfloat *values = (GLfloat *) 0;
+
+    values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining);
+    glVertexAttrib4fv(
+        (GLuint)indx,
+        (GLfloat *)values
+    );
+    if (_array) {
+        releasePointer(_env, _array, values, JNI_FALSE);
+    }
+}
+
+/* void glVertexAttribPointer ( GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *ptr ) */
+static void
+android_glVertexAttribPointerBounds__IIIZILjava_nio_Buffer_2I
+  (JNIEnv *_env, jobject _this, jint indx, jint size, jint type, jboolean normalized, jint stride, jobject ptr_buf, jint remaining) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLvoid *ptr = (GLvoid *) 0;
+
+    if (ptr_buf) {
+        ptr = (GLvoid *) getDirectBufferPointer(_env, ptr_buf);
+        if ( ! ptr ) {
+            return;
+        }
+    }
+    glVertexAttribPointerBounds(
+        (GLuint)indx,
+        (GLint)size,
+        (GLenum)type,
+        (GLboolean)normalized,
+        (GLsizei)stride,
+        (GLvoid *)ptr,
+        (GLsizei)remaining
+    );
+}
+
+/* void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height ) */
+static void
+android_glViewport__IIII
+  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
+    glViewport(
+        (GLint)x,
+        (GLint)y,
+        (GLsizei)width,
+        (GLsizei)height
+    );
+}
+
+static const char *classPathName = "android/opengl/GLES20";
+
+static JNINativeMethod methods[] = {
+{"_nativeClassInit", "()V", (void*)nativeClassInit },
+{"glActiveTexture", "(I)V", (void *) android_glActiveTexture__I },
+{"glAttachShader", "(II)V", (void *) android_glAttachShader__II },
+{"glBindAttribLocation", "(IILjava/lang/String;)V", (void *) android_glBindAttribLocation__IILjava_lang_String_2 },
+{"glBindBuffer", "(II)V", (void *) android_glBindBuffer__II },
+{"glBindFramebuffer", "(II)V", (void *) android_glBindFramebuffer__II },
+{"glBindRenderbuffer", "(II)V", (void *) android_glBindRenderbuffer__II },
+{"glBindTexture", "(II)V", (void *) android_glBindTexture__II },
+{"glBlendColor", "(FFFF)V", (void *) android_glBlendColor__FFFF },
+{"glBlendEquation", "(I)V", (void *) android_glBlendEquation__I },
+{"glBlendEquationSeparate", "(II)V", (void *) android_glBlendEquationSeparate__II },
+{"glBlendFunc", "(II)V", (void *) android_glBlendFunc__II },
+{"glBlendFuncSeparate", "(IIII)V", (void *) android_glBlendFuncSeparate__IIII },
+{"glBufferData", "(IILjava/nio/Buffer;I)V", (void *) android_glBufferData__IILjava_nio_Buffer_2I },
+{"glBufferSubData", "(IIILjava/nio/Buffer;)V", (void *) android_glBufferSubData__IIILjava_nio_Buffer_2 },
+{"glCheckFramebufferStatus", "(I)I", (void *) android_glCheckFramebufferStatus__I },
+{"glClear", "(I)V", (void *) android_glClear__I },
+{"glClearColor", "(FFFF)V", (void *) android_glClearColor__FFFF },
+{"glClearDepthf", "(F)V", (void *) android_glClearDepthf__F },
+{"glClearStencil", "(I)V", (void *) android_glClearStencil__I },
+{"glColorMask", "(ZZZZ)V", (void *) android_glColorMask__ZZZZ },
+{"glCompileShader", "(I)V", (void *) android_glCompileShader__I },
+{"glCompressedTexImage2D", "(IIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2 },
+{"glCompressedTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
+{"glCopyTexImage2D", "(IIIIIIII)V", (void *) android_glCopyTexImage2D__IIIIIIII },
+{"glCopyTexSubImage2D", "(IIIIIIII)V", (void *) android_glCopyTexSubImage2D__IIIIIIII },
+{"glCreateProgram", "()I", (void *) android_glCreateProgram__ },
+{"glCreateShader", "(I)I", (void *) android_glCreateShader__I },
+{"glCullFace", "(I)V", (void *) android_glCullFace__I },
+{"glDeleteBuffers", "(I[II)V", (void *) android_glDeleteBuffers__I_3II },
+{"glDeleteBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteBuffers__ILjava_nio_IntBuffer_2 },
+{"glDeleteFramebuffers", "(I[II)V", (void *) android_glDeleteFramebuffers__I_3II },
+{"glDeleteFramebuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteFramebuffers__ILjava_nio_IntBuffer_2 },
+{"glDeleteProgram", "(I)V", (void *) android_glDeleteProgram__I },
+{"glDeleteRenderbuffers", "(I[II)V", (void *) android_glDeleteRenderbuffers__I_3II },
+{"glDeleteRenderbuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteRenderbuffers__ILjava_nio_IntBuffer_2 },
+{"glDeleteShader", "(I)V", (void *) android_glDeleteShader__I },
+{"glDeleteTextures", "(I[II)V", (void *) android_glDeleteTextures__I_3II },
+{"glDeleteTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteTextures__ILjava_nio_IntBuffer_2 },
+{"glDepthFunc", "(I)V", (void *) android_glDepthFunc__I },
+{"glDepthMask", "(Z)V", (void *) android_glDepthMask__Z },
+{"glDepthRangef", "(FF)V", (void *) android_glDepthRangef__FF },
+{"glDetachShader", "(II)V", (void *) android_glDetachShader__II },
+{"glDisable", "(I)V", (void *) android_glDisable__I },
+{"glDisableVertexAttribArray", "(I)V", (void *) android_glDisableVertexAttribArray__I },
+{"glDrawArrays", "(III)V", (void *) android_glDrawArrays__III },
+{"glDrawElements", "(IIILjava/nio/Buffer;)V", (void *) android_glDrawElements__IIILjava_nio_Buffer_2 },
+{"glEnable", "(I)V", (void *) android_glEnable__I },
+{"glEnableVertexAttribArray", "(I)V", (void *) android_glEnableVertexAttribArray__I },
+{"glFinish", "()V", (void *) android_glFinish__ },
+{"glFlush", "()V", (void *) android_glFlush__ },
+{"glFramebufferRenderbuffer", "(IIII)V", (void *) android_glFramebufferRenderbuffer__IIII },
+{"glFramebufferTexture2D", "(IIIII)V", (void *) android_glFramebufferTexture2D__IIIII },
+{"glFrontFace", "(I)V", (void *) android_glFrontFace__I },
+{"glGenBuffers", "(I[II)V", (void *) android_glGenBuffers__I_3II },
+{"glGenBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenBuffers__ILjava_nio_IntBuffer_2 },
+{"glGenerateMipmap", "(I)V", (void *) android_glGenerateMipmap__I },
+{"glGenFramebuffers", "(I[II)V", (void *) android_glGenFramebuffers__I_3II },
+{"glGenFramebuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenFramebuffers__ILjava_nio_IntBuffer_2 },
+{"glGenRenderbuffers", "(I[II)V", (void *) android_glGenRenderbuffers__I_3II },
+{"glGenRenderbuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenRenderbuffers__ILjava_nio_IntBuffer_2 },
+{"glGenTextures", "(I[II)V", (void *) android_glGenTextures__I_3II },
+{"glGenTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenTextures__ILjava_nio_IntBuffer_2 },
+{"glGetActiveAttrib", "(III[II[II[II[BI)V", (void *) android_glGetActiveAttrib__III_3II_3II_3II_3BI },
+{"glGetActiveAttrib", "(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V", (void *) android_glGetActiveAttrib__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B },
+{"glGetActiveUniform", "(III[II[II[II[BI)V", (void *) android_glGetActiveUniform__III_3II_3II_3II_3BI },
+{"glGetActiveUniform", "(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V", (void *) android_glGetActiveUniform__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B },
+{"glGetAttachedShaders", "(II[II[II)V", (void *) android_glGetAttachedShaders__II_3II_3II },
+{"glGetAttachedShaders", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetAttachedShaders__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 },
+{"glGetAttribLocation", "(ILjava/lang/String;)I", (void *) android_glGetAttribLocation__ILjava_lang_String_2 },
+{"glGetBooleanv", "(I[ZI)V", (void *) android_glGetBooleanv__I_3ZI },
+{"glGetBooleanv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetBooleanv__ILjava_nio_IntBuffer_2 },
+{"glGetBufferParameteriv", "(II[II)V", (void *) android_glGetBufferParameteriv__II_3II },
+{"glGetBufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetBufferParameteriv__IILjava_nio_IntBuffer_2 },
+{"glGetError", "()I", (void *) android_glGetError__ },
+{"glGetFloatv", "(I[FI)V", (void *) android_glGetFloatv__I_3FI },
+{"glGetFloatv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glGetFloatv__ILjava_nio_FloatBuffer_2 },
+{"glGetFramebufferAttachmentParameteriv", "(III[II)V", (void *) android_glGetFramebufferAttachmentParameteriv__III_3II },
+{"glGetFramebufferAttachmentParameteriv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetFramebufferAttachmentParameteriv__IIILjava_nio_IntBuffer_2 },
+{"glGetIntegerv", "(I[II)V", (void *) android_glGetIntegerv__I_3II },
+{"glGetIntegerv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetIntegerv__ILjava_nio_IntBuffer_2 },
+{"glGetProgramiv", "(II[II)V", (void *) android_glGetProgramiv__II_3II },
+{"glGetProgramiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetProgramiv__IILjava_nio_IntBuffer_2 },
+{"glGetProgramInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetProgramInfoLog },
+{"glGetRenderbufferParameteriv", "(II[II)V", (void *) android_glGetRenderbufferParameteriv__II_3II },
+{"glGetRenderbufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetRenderbufferParameteriv__IILjava_nio_IntBuffer_2 },
+{"glGetShaderiv", "(II[II)V", (void *) android_glGetShaderiv__II_3II },
+{"glGetShaderiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetShaderiv__IILjava_nio_IntBuffer_2 },
+{"glGetShaderInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetShaderInfoLog },
+{"glGetShaderPrecisionFormat", "(II[II[II)V", (void *) android_glGetShaderPrecisionFormat__II_3II_3II },
+{"glGetShaderPrecisionFormat", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetShaderPrecisionFormat__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 },
+{"glGetShaderSource", "(II[II[BI)V", (void *) android_glGetShaderSource__II_3II_3BI },
+{"glGetShaderSource", "(IILjava/nio/IntBuffer;B)V", (void *) android_glGetShaderSource__IILjava_nio_IntBuffer_2B },
+{"glGetString", "(I)Ljava/lang/String;", (void *) android_glGetString },
+{"glGetTexParameterfv", "(II[FI)V", (void *) android_glGetTexParameterfv__II_3FI },
+{"glGetTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetTexParameterfv__IILjava_nio_FloatBuffer_2 },
+{"glGetTexParameteriv", "(II[II)V", (void *) android_glGetTexParameteriv__II_3II },
+{"glGetTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameteriv__IILjava_nio_IntBuffer_2 },
+{"glGetUniformfv", "(II[FI)V", (void *) android_glGetUniformfv__II_3FI },
+{"glGetUniformfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetUniformfv__IILjava_nio_FloatBuffer_2 },
+{"glGetUniformiv", "(II[II)V", (void *) android_glGetUniformiv__II_3II },
+{"glGetUniformiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetUniformiv__IILjava_nio_IntBuffer_2 },
+{"glGetUniformLocation", "(ILjava/lang/String;)I", (void *) android_glGetUniformLocation__ILjava_lang_String_2 },
+{"glGetVertexAttribfv", "(II[FI)V", (void *) android_glGetVertexAttribfv__II_3FI },
+{"glGetVertexAttribfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetVertexAttribfv__IILjava_nio_FloatBuffer_2 },
+{"glGetVertexAttribiv", "(II[II)V", (void *) android_glGetVertexAttribiv__II_3II },
+{"glGetVertexAttribiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetVertexAttribiv__IILjava_nio_IntBuffer_2 },
+{"glHint", "(II)V", (void *) android_glHint__II },
+{"glIsBuffer", "(I)Z", (void *) android_glIsBuffer__I },
+{"glIsEnabled", "(I)Z", (void *) android_glIsEnabled__I },
+{"glIsFramebuffer", "(I)Z", (void *) android_glIsFramebuffer__I },
+{"glIsProgram", "(I)Z", (void *) android_glIsProgram__I },
+{"glIsRenderbuffer", "(I)Z", (void *) android_glIsRenderbuffer__I },
+{"glIsShader", "(I)Z", (void *) android_glIsShader__I },
+{"glIsTexture", "(I)Z", (void *) android_glIsTexture__I },
+{"glLineWidth", "(F)V", (void *) android_glLineWidth__F },
+{"glLinkProgram", "(I)V", (void *) android_glLinkProgram__I },
+{"glPixelStorei", "(II)V", (void *) android_glPixelStorei__II },
+{"glPolygonOffset", "(FF)V", (void *) android_glPolygonOffset__FF },
+{"glReadPixels", "(IIIIIILjava/nio/Buffer;)V", (void *) android_glReadPixels__IIIIIILjava_nio_Buffer_2 },
+{"glReleaseShaderCompiler", "()V", (void *) android_glReleaseShaderCompiler__ },
+{"glRenderbufferStorage", "(IIII)V", (void *) android_glRenderbufferStorage__IIII },
+{"glSampleCoverage", "(FZ)V", (void *) android_glSampleCoverage__FZ },
+{"glScissor", "(IIII)V", (void *) android_glScissor__IIII },
+{"glShaderBinary", "(I[IIILjava/nio/Buffer;I)V", (void *) android_glShaderBinary__I_3IIILjava_nio_Buffer_2I },
+{"glShaderBinary", "(ILjava/nio/IntBuffer;ILjava/nio/Buffer;I)V", (void *) android_glShaderBinary__ILjava_nio_IntBuffer_2ILjava_nio_Buffer_2I },
+{"glShaderSource", "(ILjava/lang/String;)V", (void *) android_glShaderSource },
+{"glStencilFunc", "(III)V", (void *) android_glStencilFunc__III },
+{"glStencilFuncSeparate", "(IIII)V", (void *) android_glStencilFuncSeparate__IIII },
+{"glStencilMask", "(I)V", (void *) android_glStencilMask__I },
+{"glStencilMaskSeparate", "(II)V", (void *) android_glStencilMaskSeparate__II },
+{"glStencilOp", "(III)V", (void *) android_glStencilOp__III },
+{"glStencilOpSeparate", "(IIII)V", (void *) android_glStencilOpSeparate__IIII },
+{"glTexImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2 },
+{"glTexParameterf", "(IIF)V", (void *) android_glTexParameterf__IIF },
+{"glTexParameterfv", "(II[FI)V", (void *) android_glTexParameterfv__II_3FI },
+{"glTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glTexParameterfv__IILjava_nio_FloatBuffer_2 },
+{"glTexParameteri", "(III)V", (void *) android_glTexParameteri__III },
+{"glTexParameteriv", "(II[II)V", (void *) android_glTexParameteriv__II_3II },
+{"glTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameteriv__IILjava_nio_IntBuffer_2 },
+{"glTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
+{"glUniform1f", "(IF)V", (void *) android_glUniform1f__IF },
+{"glUniform1fv", "(II[FI)V", (void *) android_glUniform1fv__II_3FI },
+{"glUniform1fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform1fv__IILjava_nio_FloatBuffer_2 },
+{"glUniform1i", "(II)V", (void *) android_glUniform1i__II },
+{"glUniform1iv", "(II[II)V", (void *) android_glUniform1iv__II_3II },
+{"glUniform1iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform1iv__IILjava_nio_IntBuffer_2 },
+{"glUniform2f", "(IFF)V", (void *) android_glUniform2f__IFF },
+{"glUniform2fv", "(II[FI)V", (void *) android_glUniform2fv__II_3FI },
+{"glUniform2fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform2fv__IILjava_nio_FloatBuffer_2 },
+{"glUniform2i", "(III)V", (void *) android_glUniform2i__III },
+{"glUniform2iv", "(II[II)V", (void *) android_glUniform2iv__II_3II },
+{"glUniform2iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform2iv__IILjava_nio_IntBuffer_2 },
+{"glUniform3f", "(IFFF)V", (void *) android_glUniform3f__IFFF },
+{"glUniform3fv", "(II[FI)V", (void *) android_glUniform3fv__II_3FI },
+{"glUniform3fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform3fv__IILjava_nio_FloatBuffer_2 },
+{"glUniform3i", "(IIII)V", (void *) android_glUniform3i__IIII },
+{"glUniform3iv", "(II[II)V", (void *) android_glUniform3iv__II_3II },
+{"glUniform3iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform3iv__IILjava_nio_IntBuffer_2 },
+{"glUniform4f", "(IFFFF)V", (void *) android_glUniform4f__IFFFF },
+{"glUniform4fv", "(II[FI)V", (void *) android_glUniform4fv__II_3FI },
+{"glUniform4fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform4fv__IILjava_nio_FloatBuffer_2 },
+{"glUniform4i", "(IIIII)V", (void *) android_glUniform4i__IIIII },
+{"glUniform4iv", "(II[II)V", (void *) android_glUniform4iv__II_3II },
+{"glUniform4iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform4iv__IILjava_nio_IntBuffer_2 },
+{"glUniformMatrix2fv", "(IIZ[FI)V", (void *) android_glUniformMatrix2fv__IIZ_3FI },
+{"glUniformMatrix2fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix2fv__IIZLjava_nio_FloatBuffer_2 },
+{"glUniformMatrix3fv", "(IIZ[FI)V", (void *) android_glUniformMatrix3fv__IIZ_3FI },
+{"glUniformMatrix3fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix3fv__IIZLjava_nio_FloatBuffer_2 },
+{"glUniformMatrix4fv", "(IIZ[FI)V", (void *) android_glUniformMatrix4fv__IIZ_3FI },
+{"glUniformMatrix4fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix4fv__IIZLjava_nio_FloatBuffer_2 },
+{"glUseProgram", "(I)V", (void *) android_glUseProgram__I },
+{"glValidateProgram", "(I)V", (void *) android_glValidateProgram__I },
+{"glVertexAttrib1f", "(IF)V", (void *) android_glVertexAttrib1f__IF },
+{"glVertexAttrib1fv", "(I[FI)V", (void *) android_glVertexAttrib1fv__I_3FI },
+{"glVertexAttrib1fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib1fv__ILjava_nio_FloatBuffer_2 },
+{"glVertexAttrib2f", "(IFF)V", (void *) android_glVertexAttrib2f__IFF },
+{"glVertexAttrib2fv", "(I[FI)V", (void *) android_glVertexAttrib2fv__I_3FI },
+{"glVertexAttrib2fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib2fv__ILjava_nio_FloatBuffer_2 },
+{"glVertexAttrib3f", "(IFFF)V", (void *) android_glVertexAttrib3f__IFFF },
+{"glVertexAttrib3fv", "(I[FI)V", (void *) android_glVertexAttrib3fv__I_3FI },
+{"glVertexAttrib3fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib3fv__ILjava_nio_FloatBuffer_2 },
+{"glVertexAttrib4f", "(IFFFF)V", (void *) android_glVertexAttrib4f__IFFFF },
+{"glVertexAttrib4fv", "(I[FI)V", (void *) android_glVertexAttrib4fv__I_3FI },
+{"glVertexAttrib4fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib4fv__ILjava_nio_FloatBuffer_2 },
+{"glVertexAttribPointerBounds", "(IIIZILjava/nio/Buffer;I)V", (void *) android_glVertexAttribPointerBounds__IIIZILjava_nio_Buffer_2I },
+{"glViewport", "(IIII)V", (void *) android_glViewport__IIII },
+};
+
+int register_android_opengl_jni_GLES20(JNIEnv *_env)
+{
+    int err;
+    err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));
+    return err;
+}
diff --git a/core/jni/com_google_android_gles_jni_GLImpl.cpp b/core/jni/com_google_android_gles_jni_GLImpl.cpp
index 3e0aea5a..93e4d2b 100644
--- a/core/jni/com_google_android_gles_jni_GLImpl.cpp
+++ b/core/jni/com_google_android_gles_jni_GLImpl.cpp
@@ -35,6 +35,12 @@
         GLsizei stride, const GLvoid *pointer, GLsizei count);
 GL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type,
         GLsizei stride, const GLvoid *pointer, GLsizei count);
+GL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type,
+        GLsizei stride, const GLvoid *pointer, GLsizei count);
+GL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type,
+        GLsizei stride, const GLvoid *pointer, GLsizei count);
+GL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type,
+        GLsizei stride, const GLvoid *pointer, GLsizei count);
 }
 
 static int initialized = 0;
@@ -5391,21 +5397,24 @@
 
 /* void glPointSizePointerOES ( GLenum type, GLsizei stride, const GLvoid *pointer ) */
 static void
-android_glPointSizePointerOES__IILjava_nio_Buffer_2
-  (JNIEnv *_env, jobject _this, jint type, jint stride, jobject pointer_buf) {
+android_glPointSizePointerOESBounds__IILjava_nio_Buffer_2I
+  (JNIEnv *_env, jobject _this, jint type, jint stride, jobject pointer_buf, jint remaining) {
     jarray _array = (jarray) 0;
     jint _remaining;
     GLvoid *pointer = (GLvoid *) 0;
 
-    pointer = (GLvoid *)getPointer(_env, pointer_buf, &_array, &_remaining);
-    glPointSizePointerOES(
+    if (pointer_buf) {
+        pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
+        if ( ! pointer ) {
+            return;
+        }
+    }
+    glPointSizePointerOESBounds(
         (GLenum)type,
         (GLsizei)stride,
-        (GLvoid *)pointer
+        (GLvoid *)pointer,
+        (GLsizei)remaining
     );
-    if (_array) {
-        releasePointer(_env, _array, pointer, JNI_FALSE);
-    }
 }
 
 /* void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, GLint offset ) */
@@ -5754,8 +5763,9 @@
 static void
 android_glCurrentPaletteMatrixOES__I
   (JNIEnv *_env, jobject _this, jint matrixpaletteindex) {
-    _env->ThrowNew(UOEClass,
-        "glCurrentPaletteMatrixOES");
+    glCurrentPaletteMatrixOES(
+        (GLuint)matrixpaletteindex
+    );
 }
 
 /* void glDrawTexfOES ( GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height ) */
@@ -6050,40 +6060,77 @@
 static void
 android_glLoadPaletteFromModelViewMatrixOES__
   (JNIEnv *_env, jobject _this) {
-    _env->ThrowNew(UOEClass,
-        "glLoadPaletteFromModelViewMatrixOES");
+    glLoadPaletteFromModelViewMatrixOES();
 }
 
 /* void glMatrixIndexPointerOES ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
 static void
-android_glMatrixIndexPointerOES__IIILjava_nio_Buffer_2
-  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf) {
-    _env->ThrowNew(UOEClass,
-        "glMatrixIndexPointerOES");
+android_glMatrixIndexPointerOESBounds__IIILjava_nio_Buffer_2I
+  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLvoid *pointer = (GLvoid *) 0;
+
+    if (pointer_buf) {
+        pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
+        if ( ! pointer ) {
+            return;
+        }
+    }
+    glMatrixIndexPointerOESBounds(
+        (GLint)size,
+        (GLenum)type,
+        (GLsizei)stride,
+        (GLvoid *)pointer,
+        (GLsizei)remaining
+    );
 }
 
 /* void glMatrixIndexPointerOES ( GLint size, GLenum type, GLsizei stride, GLint offset ) */
 static void
 android_glMatrixIndexPointerOES__IIII
   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jint offset) {
-    _env->ThrowNew(UOEClass,
-        "glMatrixIndexPointerOES");
+    glMatrixIndexPointerOES(
+        (GLint)size,
+        (GLenum)type,
+        (GLsizei)stride,
+        (const GLvoid *)offset
+    );
 }
 
 /* void glWeightPointerOES ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */
 static void
-android_glWeightPointerOES__IIILjava_nio_Buffer_2
-  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf) {
-    _env->ThrowNew(UOEClass,
-        "glWeightPointerOES");
+android_glWeightPointerOESBounds__IIILjava_nio_Buffer_2I
+  (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) {
+    jarray _array = (jarray) 0;
+    jint _remaining;
+    GLvoid *pointer = (GLvoid *) 0;
+
+    if (pointer_buf) {
+        pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf);
+        if ( ! pointer ) {
+            return;
+        }
+    }
+    glWeightPointerOESBounds(
+        (GLint)size,
+        (GLenum)type,
+        (GLsizei)stride,
+        (GLvoid *)pointer,
+        (GLsizei)remaining
+    );
 }
 
 /* void glWeightPointerOES ( GLint size, GLenum type, GLsizei stride, GLint offset ) */
 static void
 android_glWeightPointerOES__IIII
   (JNIEnv *_env, jobject _this, jint size, jint type, jint stride, jint offset) {
-    _env->ThrowNew(UOEClass,
-        "glWeightPointerOES");
+    glWeightPointerOES(
+        (GLint)size,
+        (GLenum)type,
+        (GLsizei)stride,
+        (const GLvoid *)offset
+    );
 }
 
 /* void glBindFramebufferOES ( GLint target, GLint framebuffer ) */
@@ -6584,7 +6631,7 @@
 {"glPointParameterx", "(II)V", (void *) android_glPointParameterx__II },
 {"glPointParameterxv", "(I[II)V", (void *) android_glPointParameterxv__I_3II },
 {"glPointParameterxv", "(ILjava/nio/IntBuffer;)V", (void *) android_glPointParameterxv__ILjava_nio_IntBuffer_2 },
-{"glPointSizePointerOES", "(IILjava/nio/Buffer;)V", (void *) android_glPointSizePointerOES__IILjava_nio_Buffer_2 },
+{"glPointSizePointerOESBounds", "(IILjava/nio/Buffer;I)V", (void *) android_glPointSizePointerOESBounds__IILjava_nio_Buffer_2I },
 {"glTexCoordPointer", "(IIII)V", (void *) android_glTexCoordPointer__IIII },
 {"glTexEnvi", "(III)V", (void *) android_glTexEnvi__III },
 {"glTexEnviv", "(II[II)V", (void *) android_glTexEnviv__II_3II },
@@ -6611,9 +6658,9 @@
 {"glDrawTexxvOES", "([II)V", (void *) android_glDrawTexxvOES___3II },
 {"glDrawTexxvOES", "(Ljava/nio/IntBuffer;)V", (void *) android_glDrawTexxvOES__Ljava_nio_IntBuffer_2 },
 {"glLoadPaletteFromModelViewMatrixOES", "()V", (void *) android_glLoadPaletteFromModelViewMatrixOES__ },
-{"glMatrixIndexPointerOES", "(IIILjava/nio/Buffer;)V", (void *) android_glMatrixIndexPointerOES__IIILjava_nio_Buffer_2 },
+{"glMatrixIndexPointerOESBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glMatrixIndexPointerOESBounds__IIILjava_nio_Buffer_2I },
 {"glMatrixIndexPointerOES", "(IIII)V", (void *) android_glMatrixIndexPointerOES__IIII },
-{"glWeightPointerOES", "(IIILjava/nio/Buffer;)V", (void *) android_glWeightPointerOES__IIILjava_nio_Buffer_2 },
+{"glWeightPointerOESBounds", "(IIILjava/nio/Buffer;I)V", (void *) android_glWeightPointerOESBounds__IIILjava_nio_Buffer_2I },
 {"glWeightPointerOES", "(IIII)V", (void *) android_glWeightPointerOES__IIII },
 {"glBindFramebufferOES", "(II)V", (void *) android_glBindFramebufferOES__II },
 {"glBindRenderbufferOES", "(II)V", (void *) android_glBindRenderbufferOES__II },
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 6b5b168..67fac9f 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"K souboru nelze získat přístup."</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"Požadovaný soubor nebyl nalezen."</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"Je zpracováváno příliš mnoho požadavků. Opakujte akci později."</string>
-    <string name="notification_title" msgid="1259940370369187045">"Chyba přihlášení k účtu <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"Synchronizace"</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Synchronizace"</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Příliš mnoho smazaných položek služby <xliff:g id="CONTENT_TYPE">%s</xliff:g>."</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"Sleduje vaši fyzickou polohu"</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"Síťová komunikace"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"Umožňuje aplikacím získat přístup k různým funkcím sítě."</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"Vaše účty"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Přístup k dostupným účtům."</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Řízení hardwaru"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Přímý přístup k hardwaru telefonu."</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Telefonní hovory"</string>
@@ -316,7 +319,7 @@
     <string name="permlab_callPrivileged" msgid="4198349211108497879">"přímé volání na libovolná telefonní čísla"</string>
     <string name="permdesc_callPrivileged" msgid="244405067160028452">"Umožňuje aplikaci bez vašeho zásahu vytočit jakékoli telefonní číslo, včetně čísel tísňového volání. Škodlivé aplikace mohou provádět zbytečná a nezákonná volání na tísňové linky."</string>
     <string name="permlab_performCdmaProvisioning" msgid="5604848095315421425">"přímo spustit nastavení telefonu CDMA"</string>
-    <string name="permdesc_performCdmaProvisioning" msgid="6457447676108355905">"Umožňuje aplikaci zahájit poskytování CDMA. Škodlivé aplikace mohou poskytování CDMA zahájit samovolně."</string>
+    <string name="permdesc_performCdmaProvisioning" msgid="6457447676108355905">"Umožňuje aplikaci zahájit zřizování CDMA. Škodlivé aplikace mohou zřizování CDMA zahájit samovolně."</string>
     <string name="permlab_locationUpdates" msgid="7785408253364335740">"ovládání oznámení o aktualizaci polohy"</string>
     <string name="permdesc_locationUpdates" msgid="2300018303720930256">"Umožňuje povolit či zakázat aktualizace polohy prostřednictvím bezdrátového připojení. Aplikace toto nastavení obvykle nepoužívají."</string>
     <string name="permlab_checkinProperties" msgid="7855259461268734914">"přístup k vlastnostem Checkin"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"Vlastní"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"Domů"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"Mobil"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"Práce"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Pracovní fax"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Domácí fax"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"Pager"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"Jiné"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"Zpětné volání"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"Auto"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Firma (hlavní)"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"Hlavní"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Jiný fax"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"Radiotelefon"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"Telex"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"Telefon pro sluchově postižené (TTY/TDD)"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Pracovní mobil"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"Pracovní pager"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"Asistent"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"Narozeniny"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"Výročí"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"Událost"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"Vlastní"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"Domů"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"Práce"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"Jiné"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"Mobil"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"Vlastní"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"Domů"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"Práce"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"Jiné"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"Vlastní"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"Domů"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"Práce"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"Jiné"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"Vlastní"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google Talk"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"Práce"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"Jiné"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"Vlastní"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"pomocí <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="DATE">%1$s</xliff:g> pomocí <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"Zadejte kód PIN"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"Nesprávný kód PIN"</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"Chcete-li telefon odemknout, stiskněte Menu a poté 0."</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"Zkuste to prosím znovu"</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"Nabíjení (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"Nabito."</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"Připojte dobíjecí zařízení."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Není vložena SIM karta."</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"V telefonu není žádná karta SIM."</string>
@@ -530,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"Nabíjení..."</string>
     <string name="battery_low_title" msgid="7923774589611311406">"Prosím připojte dobíjecí zařízení"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"Baterie je vybitá:"</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"Zbývá <xliff:g id="NUMBER">%d%%</xliff:g> nebo méně."</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"Využití baterie"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"Test továrního nastavení se nezdařil"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"Test FACTORY_TEST lze provést pouze u balíčků nainstalovaných ve složce /system/app."</string>
@@ -540,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"Chcete opustit tuto stránku?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Vyberte OK, chcete-li pokračovat, nebo Zrušit, chcete-li na stránce zůstat."</string>
     <string name="save_password_label" msgid="6860261758665825069">"Potvrdit"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"Tip: Dvojitým klepnutím můžete zobrazení přiblížit nebo oddálit."</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"čtení historie a záložek Prohlížeče"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Umožňuje aplikaci číst všechny navštívené adresy URL a záložky Prohlížeče."</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"zápis do historie a záložek Prohlížeče"</string>
@@ -745,8 +803,10 @@
     <string name="extmedia_format_message" msgid="3621369962433523619">"Opravdu chcete kartu SD naformátovat? Všechna data na kartě budou ztracena."</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"Formátovat"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"Ladění přes rozhraní USB připojeno"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"Vyberte, chcete-li zakázat ladění USB."</string>
-    <string name="select_input_method" msgid="6865512749462072765">"Výběr metody zadávání dat"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" AÁBCČDĎEÉĚFGHCHIÍJKLMNŇOÓPQRŘSŠTŤUÚVWXYÝZŽ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789AÁBCČDĎEÉĚFGHCHIÍJKLMNŇOÓPQRŘSŠTŤUÚVWXYÝZŽ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"kandidáti"</u></string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"Vytvořit kontakt"\n"pro <xliff:g id="NUMBER">%s</xliff:g>."</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"Zaškrtnuto"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"Nezaškrtnuto"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"Povolit"</string>
     <string name="deny" msgid="2081879885755434506">"Odepřít"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"Požadováno oprávnění"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"Požadováno oprávnění"\n"pro účet <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"Metoda zadávání dat"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"Synchronizace"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"Usnadnění"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"Tapeta"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"Změnit tapetu"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"Protokol PPTP (Point-to-Point Tunneling Protocol)"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"Protokol L2TP (Layer 2 Tunneling Protocol)"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"Síť VPN L2TP/IPSec s předsdíleným klíčem"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"Síť VPN L2TP/IPSec s certifikátem"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 33c21e3..7b37709 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"Der kunne ikke oprettes adgang til filen."</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"Den anmodede fil blev ikke fundet."</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"Der behandles for mange anmodninger. Prøv igen senere."</string>
-    <string name="notification_title" msgid="1259940370369187045">"Loginfejl for <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"Synkroniser"</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Synkroniser"</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"For mange <xliff:g id="CONTENT_TYPE">%s</xliff:g> sletninger"</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"Overvåg din fysiske placering"</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"Netværkskommunikation"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"Tillader programmer at få adgang til forskellige netværksfunktioner."</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"Dine konti"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Få adgang til de tilgængelige konti."</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Hardwarekontroller"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Direkte adgang til hardware på håndsættet."</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Telefonopkald"</string>
@@ -212,7 +215,7 @@
     <string name="permlab_backup" msgid="470013022865453920">"kontroller sikkerhedskopiering af system, og gendan"</string>
     <string name="permdesc_backup" msgid="4837493065154256525">"Tillader et program at kontrollere systemets sikkerhedskopierings- og gendannelsesmekanisme. Ikke til brug til normale programmer."</string>
     <string name="permlab_backup_data" msgid="4057625941707926463">"Sikkerhedskopier og gendan programmets data"</string>
-    <string name="permdesc_backup_data" msgid="8274426305151227766">"Tillader et program at deltage i systemets sikkerhedskopierings- og gendannelsesmekanisme."</string>
+    <string name="permdesc_backup_data" msgid="8274426305151227766">"Tillader et program at kontrollere systemets sikkerhedskopierings- og gendannelsesmekanisme."</string>
     <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"vis uautoriserede vinduer"</string>
     <string name="permdesc_internalSystemWindow" msgid="5895082268284998469">"Tillader oprettelse af vinduer, der er beregnet til at blive brugt af den interne systembrugergrænseflade. Ikke til brug for normale programmer."</string>
     <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"vis underretninger på systemniveau"</string>
@@ -316,7 +319,7 @@
     <string name="permlab_callPrivileged" msgid="4198349211108497879">"ring direkte op til alle telefonnumre"</string>
     <string name="permdesc_callPrivileged" msgid="244405067160028452">"Tillader programmet at ringe til alle telefonnumre inklusive nødnumre uden din indgriben. Ondsindede programmer kan eventuelt foretage unødvendige og ulovlige opkald til nødtjenester."</string>
     <string name="permlab_performCdmaProvisioning" msgid="5604848095315421425">"start CDMA-telefonopsætning direkte"</string>
-    <string name="permdesc_performCdmaProvisioning" msgid="6457447676108355905">"Tillader, at programmet starter CDMA-levering. Ondsindede programmer kan starte unødvendig CDMA-levering"</string>
+    <string name="permdesc_performCdmaProvisioning" msgid="6457447676108355905">"Tillader, at programmet starter CDMA-levering. Onsindede programmer kan starte unødvendig CDMA-levering"</string>
     <string name="permlab_locationUpdates" msgid="7785408253364335740">"kontroller meddelelser om placeringsopdatering"</string>
     <string name="permdesc_locationUpdates" msgid="2300018303720930256">"Tillader aktivering/deaktivering af placeringsdata fra radioen. Ikke til brug til normale programmer."</string>
     <string name="permlab_checkinProperties" msgid="7855259461268734914">"egenskaber for adgangskontrol"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"Tilpasset"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"Start"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"Mobil"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"Arbejde"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Arbejdsfax"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Hjemmefax"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"Personsøger"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"Andre"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"Tilbagekald"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"Bil"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Virksomhed (hovednummer)"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"Hoved"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Andre faxmeddelelser"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"Radio"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"Telex"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Arbejdsmobiltelefon"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"Personsøger"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"Assistent"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"Fødselsdato"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"Årsdag"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"Begivenhed"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"Tilpasset"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"Start"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"Arbejde"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"Andre"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"Mobil"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"Tilpasset"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"Start"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"Arbejde"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"Andre"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"Tilpasset"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"Start"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"Arbejde"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"Andre"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"Tilpasset"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google Talk"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"Arbejde"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"Andre"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"Tilpasset"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"Indtast PIN-kode"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"Forkert PIN-kode!"</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"Tryk på Menu og dernæst på 0 for at låse op."</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"Beklager! Prøv igen"</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"Oplader (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"Opladt."</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"Tilslut din oplader."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Der er ikke noget SIM-kort."</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Der er ikke noget SIM-kort i telefonen."</string>
@@ -530,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"Oplader ..."</string>
     <string name="battery_low_title" msgid="7923774589611311406">"Forbind oplader"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"Batteriet er ved at blive tomt:"</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"<xliff:g id="NUMBER">%d%%</xliff:g> eller mindre tilbage."</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"Batteriforbrug"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"Fabrikstest mislykkedes"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"Handlingen FACTORY_TEST understøttes kun af pakker installeret i /system/app."</string>
@@ -540,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"Javascript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"Naviger væk fra denne side?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n" Vælg OK for at fortsætte eller Annuller for at blive på den aktuelle side."</string>
     <string name="save_password_label" msgid="6860261758665825069">"Bekræft"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"Tip: Dobbeltklik for at zoome ind eller ud."</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"læs browserens oversigt og bogmærker"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Tillader programmet at læse alle de webadresser, browseren har besøgt, og alle browserens bogmærker."</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"skriv browserens oversigt og bogmærker"</string>
@@ -623,7 +681,7 @@
     <item quantity="one" msgid="2178576254385739855">"i morgen"</item>
     <item quantity="other" msgid="2973062968038355991">"om <xliff:g id="COUNT">%d</xliff:g> dage"</item>
   </plurals>
-    <string name="preposition_for_date" msgid="9093949757757445117">"den <xliff:g id="DATE">%s</xliff:g>"</string>
+    <string name="preposition_for_date" msgid="9093949757757445117">"til <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="preposition_for_time" msgid="5506831244263083793">"kl. <xliff:g id="TIME">%s</xliff:g>"</string>
     <string name="preposition_for_year" msgid="5040395640711867177">"i <xliff:g id="YEAR">%s</xliff:g>"</string>
     <string name="day" msgid="8144195776058119424">"dag"</string>
@@ -745,8 +803,10 @@
     <string name="extmedia_format_message" msgid="3621369962433523619">"Er du sikker på, du ønsker at formatere SD-kortet? Alle data på kortet mistes."</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"Formater"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"USB-fejlretning forbundet"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"Vælg for at deaktivere USB-fejlretning."</string>
-    <string name="select_input_method" msgid="6865512749462072765">"Vælg indtastningsmetode"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"kandidater"</u></string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"Opret kontakt"\n"ved hjælp af <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"kontrolleret"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"ikke kontrolleret"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"Tillad"</string>
     <string name="deny" msgid="2081879885755434506">"Afvis"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"Der er anmodet om tilladelse"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"Der er anmodet om tilladelse"\n"til kontoen <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"Inputmetode"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"Synkroniser"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"Tilgængelighed"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"Tapet"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"Skift tapet"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"Point-to-Point Tunneling Protocol"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"Layer 2 Tunneling Protocol"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"L2TP/IPSec VPN baseret på forhåndsdelt nøglekodning"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"Certifikatbaseret L2TP/IPSec VPN"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 167faa0..af68303c 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"Auf die Datei konnte nicht zugegriffen werden."</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"Die angeforderte Datei wurde nicht gefunden."</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"Es werden zurzeit zu viele Anfragen verarbeitet. Versuchen Sie es später erneut."</string>
-    <string name="notification_title" msgid="1259940370369187045">"Fehler bei Anmeldung für <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"Synchronisieren"</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Synchronisieren"</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Zu viele <xliff:g id="CONTENT_TYPE">%s</xliff:g> gelöscht."</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"Ihren physischen Standort überwachen"</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"Netzwerkkommunikation"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"Ermöglicht Anwendungen den Zugriff auf verschiedene Netzwerkfunktionen."</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"Ihre Konten"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Zugriff auf verfügbare Konten"</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Hardware-Steuerelemente"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Direkter Zugriff auf Hardware über Headset"</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Anrufe"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"Benutzerdefiniert"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"Privat"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"Mobil"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"Arbeit"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Fax (Beruflich)"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Fax (privat)"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"Pager"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"Andere"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"Rückruf"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"Auto"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Firma (Hauptnummer)"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"Hauptnummer"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Weitere Faxnummer"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"Radio"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"Telex"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY/TDD"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Handy (geschäftlich)"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"Pager (beruflich)"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"Zweite Nummer"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"Geburtstag"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"Jahrestag"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"Termin"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"Benutzerdefiniert"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"Privat"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"Beruflich"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"Andere"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"Mobil"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"Benutzerdefiniert"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"Privat"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"Beruflich"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"Andere"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"Benutzerdefiniert"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"Privat"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"Beruflich"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"Andere"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"Benutzerdefiniert"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google Talk"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"Beruflich"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"Andere"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"Benutzerdefiniert"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"über <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="DATE">%1$s</xliff:g> über <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"PIN-Code eingeben"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"Falscher PIN-Code!"</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"Drücken Sie zum Entsperren die Menütaste und dann auf \"0\"."</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"Tut uns leid. Versuchen Sie es noch einmal."</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"Wird geladen (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"Aufgeladen"</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"Bitte Ladegerät anschließen"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Keine SIM-Karte."</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Keine SIM-Karte im Telefon."</string>
@@ -530,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"Wird aufgeladen..."</string>
     <string name="battery_low_title" msgid="7923774589611311406">"Ladegerät anschließen"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"Akku ist fast leer."</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"<xliff:g id="NUMBER">%d%%</xliff:g> oder weniger verbleiben."</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"Akkuverbrauch"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"Werkstest fehlgeschlagen"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"Die Aktion FACTORY_TEST wird nur für unter \"/system/app\" gespeicherte Pakete unterstützt."</string>
@@ -540,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"Von dieser Seite navigieren?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Wählen Sie \"OK\", um fortzufahren, oder wählen Sie \"Abbrechen\", um auf der aktuellen Seite zu bleiben."</string>
     <string name="save_password_label" msgid="6860261758665825069">"Bestätigen"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"Tipp: Zum Heranzoomen und Vergrößern zweimal tippen"</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"Browserverlauf und Lesezeichen lesen"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Ermöglicht der Anwendung, alle URLs, die mit dem Browser besucht wurden, sowie alle Lesezeichen des Browsers zu lesen."</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"Browserverlauf und Lesezeichen schreiben"</string>
@@ -745,8 +803,10 @@
     <string name="extmedia_format_message" msgid="3621369962433523619">"Möchten Sie die SD-Karte wirklich formatieren? Alle Daten auf Ihrer Karte gehen dann verloren."</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"Format"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"USB-Debugging verbunden"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"Zum Deaktivieren des USB-Debugging auswählen"</string>
-    <string name="select_input_method" msgid="6865512749462072765">"Eingabemethode auswählen"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"Kandidaten"</u></string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"Neuer Kontakt"\n"mit <xliff:g id="NUMBER">%s</xliff:g> erstellen"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"aktiviert"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"nicht aktiviert"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"Zulassen"</string>
     <string name="deny" msgid="2081879885755434506">"Ablehnen"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"Berechtigung angefordert"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"Berechtigung erforderlich"\n"für Konto <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"Eingabemethode"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"Synchronisieren"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"Eingabehilfen"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"Hintergrund"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"Hintergrundbild ändern"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"Point-to-Point-Tunneling-Protokoll"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"Layer-2-Tunneling-Protokoll"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"L2TP/IPSec-VPN mit vorinstalliertem Schlüssel"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"Zertifikat mit vorinstalliertem Schlüssel"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 5b02a65..a4ec8c1 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"Η πρόσβαση στο αρχείο δεν ήταν δυνατή."</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"Το αρχείο που ζητήθηκε δεν βρέθηκε."</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"Πραγματοποιείται επεξεργασία πάρα πολλών αιτημάτων. Προσπαθήστε ξανά αργότερα."</string>
-    <string name="notification_title" msgid="1259940370369187045">"Σφάλμα σύνδεσης για <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"Συγχρονισμός"</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Συγχρονισμός"</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Πάρα πολλές <xliff:g id="CONTENT_TYPE">%s</xliff:g> διαγραφές."</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"Παρακολούθηση της φυσικής τοποθεσίας σας"</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"Επικοινωνία δικτύου"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"Επιτρέπει σε εφαρμογές να αποκτήσουν πρόσβαση σε διάφορες λειτουργίες δικτύου."</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"Οι λογαριασμοί σας"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Πρόσβαση στους διαθέσιμους λογαριασμούς."</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Στοιχεία ελέγχου υλικού"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Άμεση πρόσβαση στο υλικό της συσκευής τηλεφώνου."</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Τηλεφωνικές κλήσεις"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"Προσαρμοσμένο"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"Οικία"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"Κινητό"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"Εργασία"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Φαξ εργασίας"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Φαξ οικίας"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"Βομβητής"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"Άλλο"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"Επανάκληση"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"Αυτοκίνητο"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Κύρια εταιρική γραμμή"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"Κύριος"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Άλλο fax"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"Πομπός"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"Τέλεξ"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"Τηλέφωνο TTY/TDD"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Κινητό τηλέφωνο εργασίας"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"Βομβητής εργασίας"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"Βοηθός"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"Γενέθλια"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"Επέτειος"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"Συμβάν"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"Προσαρμοσμένο"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"Οικία"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"Εργασία"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"Άλλο"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"Κινητό"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"Προσαρμοσμένο"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"Οικία"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"Εργασία"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"Άλλο"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"Προσαρμοσμένο"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"Οικία"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"Εργασία"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"Άλλο"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"Προσαρμοσμένο"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google Talk"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"Εργασία"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"Άλλο"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"Προσαρμοσμένο"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"μέσω <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="DATE">%1$s</xliff:g> μέσω <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"Πληκτρολογήστε τον κωδικό αριθμό PIN"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"Εσφαλμένος κωδικός αριθμός PIN!"</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"Για ξεκλείδωμα, πατήστε το πλήκτρο Menu και, στη συνέχεια, το πλήκτρο 0."</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"Προσπαθήστε αργότερα"</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"Φόρτιση (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"Φορτίστηκε."</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"Συνδέστε τον φορτιστή."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Δεν υπάρχει κάρτα SIM."</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Δεν υπάρχει κάρτα SIM στο τηλέφωνο."</string>
@@ -530,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"Φόρτιση..."</string>
     <string name="battery_low_title" msgid="7923774589611311406">"Συνδέστε τον φορτιστή"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"Η στάθμη της μπαταρίας είναι χαμηλή:"</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"Απομένει <xliff:g id="NUMBER">%d%%</xliff:g> ή λιγότερο."</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"Χρήση μπαταρίας"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"Η εργοστασιακή δοκιμή απέτυχε"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"Η ενέργεια FACTORY_TEST υποστηρίζεται μόνο για πακέτα που είναι εγκατεστημένα στον κατάλογο /system/app."</string>
@@ -540,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"Απομάκρυνση από αυτή τη σελίδα;"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Επιλέξτε OK για συνέχεια, ή Ακύρωση για παραμονή στην τρέχουσα σελίδα."</string>
     <string name="save_password_label" msgid="6860261758665825069">"Επιβεβαίωση"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"Συμβουλή: διπλό άγγιγμα για μεγέθυνση και σμίκρυνση."</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"ανάγνωση ιστορικού και σελιδοδεικτών προγράμματος περιήγησης"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Επιτρέπει στην εφαρμογή την ανάγνωση όλων των διευθύνσεων URL που το πρόγραμμα περιήγησης έχει επισκεφθεί και όλων των σελιδοδεικτών του προγράμματος περιήγησης."</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"εγγραφή ιστορικού και σελιδοδεικτών προγράμματος περιήγησης"</string>
@@ -745,8 +803,10 @@
     <string name="extmedia_format_message" msgid="3621369962433523619">"Είστε βέβαιοι ότι θέλετε να διαμορφώσετε την κάρτα SD; Όλα τα δεδομένα στην κάρτα σας θα χαθούν."</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"Διαμόρφωση"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"Συνδέθηκε ο εντοπισμός σφαλμάτων USB"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"Επιλογή για απενεργοποίηση του εντοπισμού σφαλμάτων USB."</string>
-    <string name="select_input_method" msgid="6865512749462072765">"Επιλογή μεθόδου εισόδου"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"υποψήφιοι"</u></string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"Δημιουργία επαφής"\n"με τη χρήση του <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"επιλεγμένο"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"δεν ελέγχθηκε"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"Να επιτρέπεται"</string>
     <string name="deny" msgid="2081879885755434506">"Άρνηση"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"Απαιτείται άδεια"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"Ζητήθηκε άδεια"\n"για τον λογαριασμό <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"Μέθοδος εισόδου"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"Συγχρονισμός"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"Προσβασιμότητα"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"Ταπετσαρία"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"Αλλαγή ταπετσαρίας"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"Πρωτόκολλο Point-to-Point Tunneling Protocol (PPTP)"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"Πρωτόκολλο Layer 2 Tunneling Protocol (L2TP)"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"Κλειδί pre-shared βάσει L2TP/IPSec VPN"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"Πιστοποιητικό βάσει L2TP/IPSec VPN"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index e0408b3..025ae60 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -777,12 +777,6 @@
     <string name="create_contact_using" msgid="4947405226788104538">"Crear contacto "\n"con <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"verificado"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"no verificado"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"Permitir"</string>
     <string name="deny" msgid="2081879885755434506">"Denegar"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"Permiso solicitado"</string>
@@ -796,6 +790,4 @@
     <string name="l2tp_vpn_description" msgid="3750692169378923304">"Protocolo de túnel de nivel 2"</string>
     <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"Clave previamente compartida según L2TP/IPSec VPN"</string>
     <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"Certificado según L2TP/IPSec VPN"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
-    <skip />
 </resources>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index fa6160a..ebe1bb0 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"No se ha podido acceder al archivo."</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"No se ha encontrado el archivo solicitado."</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"Se están procesando demasiadas solicitudes. Vuelve a intentarlo más tarde."</string>
-    <string name="notification_title" msgid="1259940370369187045">"Error de acceso a la cuenta <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"Sincronización"</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Sincronización"</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Demasiadas eliminaciones de <xliff:g id="CONTENT_TYPE">%s</xliff:g>"</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"Controlar su ubicación física"</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"Comunicación de red"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"Permite que las aplicaciones accedan a distintas funciones de red."</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"Tus cuentas"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Acceder a las cuentas disponibles"</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controles de hardware"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Acceso directo al hardware del móvil"</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Llamadas de teléfono"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"Personalizado"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"Casa"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"Móvil"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"Trabajo"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Fax del trabajo"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Fax de casa"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"Buscapersonas"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"Otro"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"Devolución de llamada"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"Coche"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Teléfono principal de la empresa"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"RDSI"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"Principal"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Otro fax"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"Radio"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"Télex"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Móvil del trabajo"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"Buscapersonas del trabajo"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"Asistente"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"Cumpleaños"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"Aniversario"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"Evento"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"Personalizado"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"Casa"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"Trabajo"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"Otro"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"Móvil"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"Personalizada"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"Casa"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"Trabajo"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"Otro"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"Personalizada"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"Casa"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"Trabajo"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"Otro"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"Personalizada"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo!"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google Talk"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"Trabajo"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"Otra"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"Personalizada"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"a través de <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="DATE">%1$s</xliff:g> a través de <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"Introduce el código PIN"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"El código PIN es incorrecto."</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"Para desbloquear el teléfono, pulsa la tecla de menú y, a continuación, pulsa 0."</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"Inténtalo de nuevo"</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"Cargando (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"Cargado"</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"Conecta el cargador"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Falta la tarjeta SIM"</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"No se ha insertado ninguna tarjeta SIM en el teléfono."</string>
@@ -530,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"Cargando..."</string>
     <string name="battery_low_title" msgid="7923774589611311406">"Conecta el cargador"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"Se está agotando la batería:"</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"<xliff:g id="NUMBER">%d%%</xliff:g> o menos disponible"</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"Uso de la batería"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"Fallo en la prueba de fábrica"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"La acción FACTORY_TEST sólo es compatible con los paquetes instalados en /system/app."</string>
@@ -540,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"¿Quieres salir de esta página?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Selecciona \"Aceptar\" para continuar o \"Cancelar\" para permanecer en la página actual."</string>
     <string name="save_password_label" msgid="6860261758665825069">"Confirmar"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"Sugerencia: toca dos veces para ampliar o reducir."</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"leer información de marcadores y del historial del navegador"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Permite que la aplicación lea todas las URL que ha visitado el navegador y todos sus marcadores."</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"escribir en marcadores y en el historial del navegador"</string>
@@ -624,7 +682,7 @@
     <item quantity="other" msgid="2973062968038355991">"dentro de <xliff:g id="COUNT">%d</xliff:g> días"</item>
   </plurals>
     <string name="preposition_for_date" msgid="9093949757757445117">"el <xliff:g id="DATE">%s</xliff:g>"</string>
-    <string name="preposition_for_time" msgid="5506831244263083793">"a la(s) <xliff:g id="TIME">%s</xliff:g>"</string>
+    <string name="preposition_for_time" msgid="5506831244263083793">"a las <xliff:g id="TIME">%s</xliff:g>"</string>
     <string name="preposition_for_year" msgid="5040395640711867177">"en <xliff:g id="YEAR">%s</xliff:g>"</string>
     <string name="day" msgid="8144195776058119424">"día"</string>
     <string name="days" msgid="4774547661021344602">"días"</string>
@@ -745,8 +803,10 @@
     <string name="extmedia_format_message" msgid="3621369962433523619">"¿Estás seguro de que quieres formatear la tarjeta SD? Se perderán todos los datos de la tarjeta."</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"Formato"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"Dispositivo de depuración USB conectado"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"Seleccionar para inhabilitar la depuración USB"</string>
-    <string name="select_input_method" msgid="6865512749462072765">"Seleccionar método de introducción de texto"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"candidatos"</u></string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"Crear un contacto"\n"a partir de <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"seleccionado"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"no seleccionado"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"Permitir"</string>
     <string name="deny" msgid="2081879885755434506">"Denegar"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"Permiso solicitado"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"Permiso solicitado"\n"para la cuenta <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"Método de introducción de texto"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"Sincronización"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"Accesibilidad"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"Fondo de pantalla"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"Cambiar fondo de pantalla"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"Protocolo de túnel punto a punto"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"Protocolo de túnel de nivel 2"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"Red privada virtual L2TP/IPSec basada en clave compartida previamente"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"Red privada virtual L2TP/IPSec basada en certificado"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 75f7406..5647063 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"Impossible d\'accéder au fichier."</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"Le fichier demandé est introuvable."</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"Trop de requêtes sont en cours de traitement. Veuillez réessayer ultérieurement."</string>
-    <string name="notification_title" msgid="1259940370369187045">"Erreur de connexion au compte <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"Synchroniser"</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Synchronisation"</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Trop de contenus supprimés (<xliff:g id="CONTENT_TYPE">%s</xliff:g>)."</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"Suivre votre position géographique"</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"Communications réseau"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"Permet à des applications d\'accéder à différentes fonctionnalités du réseau."</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"Vos comptes"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Accéder aux comptes disponibles"</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Commandes du matériel"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Permet d\'accéder directement au matériel de l\'appareil."</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Appels"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"Personnalisé"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"Domicile"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"Mobile"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"Bureau"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Télécopie bureau"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Télécopie domicile"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"Téléavertisseur"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"Autre"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"Rappel"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"Voiture"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Société (principal)"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"RNIS"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"Principal"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Autre télécopie"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"Radio"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"Télex"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY/TTD (malentendants)"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Mobile (professionnel)"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"Téléavertisseur (professionnel)"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"Assistant"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"Anniversaire"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"Fête"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"Événement"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"Personnalisé"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"Domicile"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"Bureau"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"Autre"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"Mobile"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"Personnalisée"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"Domicile"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"Bureau"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"Autre"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"Personnalisée"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"Domicile"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"Bureau"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"Autre"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"Personnalisée"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google Talk"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"Bureau"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"Autre"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"Personnalisée"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"Saisissez le code PIN"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"Le code PIN est incorrect !"</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"Pour débloquer le clavier, appuyez sur \"Menu\" puis sur 0."</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"Désolé. Merci de réessayer."</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"Chargement (<xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"Chargé"</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"Branchez votre chargeur."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Aucune carte SIM n\'a été trouvée."</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Aucune carte SIM n\'est insérée dans le téléphone."</string>
@@ -530,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"Chargement..."</string>
     <string name="battery_low_title" msgid="7923774589611311406">"Branchez le chargeur"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"Le niveau de la batterie est bas :"</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"Maximum <xliff:g id="NUMBER">%d%%</xliff:g> restants."</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"Utilisation de la batterie"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"Échec du test usine"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"L\'action FACTORY_TEST est uniquement prise en charge pour les paquets de données installés dans in/system/app."</string>
@@ -540,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"Vous souhaitez quitter cette page ?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Sélectionnez OK pour continuer ou Annuler pour rester sur la page actuelle."</string>
     <string name="save_password_label" msgid="6860261758665825069">"Confirmer"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"Conseil : Appuyez deux fois pour effectuer un zoom avant ou arrière."</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"lire l\'historique et les favoris du navigateur"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Autorise l\'application à lire toutes les URL auxquelles le navigateur a accédé et tous ses favoris."</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"écrire dans l\'historique et les favoris du navigateur"</string>
@@ -745,8 +803,10 @@
     <string name="extmedia_format_message" msgid="3621369962433523619">"Voulez-vous vraiment formater la carte SD ? Toutes les données de cette carte seront perdues."</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"Format"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"Débogage USB connecté"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"Sélectionnez cette option pour désactiver le débogage USB."</string>
-    <string name="select_input_method" msgid="6865512749462072765">"Sélectionner un mode de saisie"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"candidats"</u></string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"Ajouter un contact"\n"en utilisant <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"sélectionné"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"non sélectionné"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"Autoriser"</string>
     <string name="deny" msgid="2081879885755434506">"Refuser"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"Autorisation demandée"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"Autorisation demandée"\n"pour le compte <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"Mode de saisie"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"Synchronisation"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"Accessibilité"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"Fond d\'écran"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"Changer de fond d\'écran"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"Protocole de tunnelisation point-à-point"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"Protocole de tunnelisation de niveau 2"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"Clé pré-partagée basée sur L2TP/IPSec VPN"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"Certificat basé sur L2TP/IPSec VPN"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index f89b9ad..f0647e7 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"Impossibile accedere al file."</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"Impossibile trovare il file richiesto."</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"Troppe richieste in fase di elaborazione. Riprova più tardi."</string>
-    <string name="notification_title" msgid="1259940370369187045">"Errore di accesso per <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"Sinc"</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Sincronizzazione"</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Troppe eliminazioni di <xliff:g id="CONTENT_TYPE">%s</xliff:g>."</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"Monitorare la posizione fisica dell\'utente"</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"Comunicazione di rete"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"Consentono l\'accesso delle applicazioni a varie funzionalità di rete."</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"I tuoi account"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Accedere agli account disponibili."</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controlli hardware"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Accedere direttamente all\'hardware del ricevitore."</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Telefonate"</string>
@@ -316,7 +319,7 @@
     <string name="permlab_callPrivileged" msgid="4198349211108497879">"chiamata diretta di tutti i n. telefono"</string>
     <string name="permdesc_callPrivileged" msgid="244405067160028452">"Consente all\'applicazione di chiamare qualsiasi numero, compresi quelli di emergenza, automaticamente. Le applicazioni dannose potrebbero effettuare chiamate non necessarie e illegali a servizi di emergenza."</string>
     <string name="permlab_performCdmaProvisioning" msgid="5604848095315421425">"avviare direttamente la configurazione del telefono CDMA"</string>
-    <string name="permdesc_performCdmaProvisioning" msgid="6457447676108355905">"Consente all\'applicazione di avviare il servizio di provisioning CDMA. Le applicazioni dannose potrebbero avviare il servizio di provisioning CDMA quando non è necessario"</string>
+    <string name="permdesc_performCdmaProvisioning" msgid="6457447676108355905">"Consente all\'applicazione di avviare il servizio di CDMA provisioning. Le applicazioni dannose potrebbero avviare il servizio di CDMA provisioning quando non è necessario"</string>
     <string name="permlab_locationUpdates" msgid="7785408253364335740">"controllo notifiche aggiornamento posizione"</string>
     <string name="permdesc_locationUpdates" msgid="2300018303720930256">"Consente l\'attivazione/disattivazione delle notifiche di aggiornamento della posizione dal segnale cellulare. Da non usare per normali applicazioni."</string>
     <string name="permlab_checkinProperties" msgid="7855259461268734914">"accesso a proprietà di archiviazione"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"Personalizzato"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"Casa"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"Cellulare"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"Ufficio"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Fax ufficio"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Fax casa"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"Cercapersone"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"Altro"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"Callback"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"Automobile"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Azienda, principale"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"Principale"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Altro fax"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"Segnale cellulare"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"Telex"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Cellulare ufficio"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"Cercapersone ufficio"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"Assistente"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"Compleanno"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"Anniversario"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"Evento"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"Personalizzato"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"Casa"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"Ufficio"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"Altro"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"Cellulare"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"Personalizzato"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"Casa"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"Ufficio"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"Altro"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"Personalizzato"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"Casa"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"Ufficio"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"Altro"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"Personalizzato"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google Talk"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"Ufficio"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"Altro"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"Personalizzato"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"tramite <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="DATE">%1$s</xliff:g> tramite <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"Inserisci il PIN"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"Codice PIN errato."</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"Per sbloccare, premi Menu, poi 0."</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"Riprova"</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"In carica (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"Carico."</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"Collegare il caricabatterie."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Nessuna SIM presente."</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Nessuna SIM presente nel telefono."</string>
@@ -530,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"In carica..."</string>
     <string name="battery_low_title" msgid="7923774589611311406">"Collegare il caricabatterie"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"Batteria quasi scarica:"</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"<xliff:g id="NUMBER">%d%%</xliff:g> rimanente o meno."</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"Utilizzo batteria"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"Test di fabbrica non riuscito"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"L\'azione FACTORY_TEST è supportata soltanto per i pacchetti installati in /system/app."</string>
@@ -540,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"Uscire da questa pagina?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Seleziona OK per continuare o Annulla per rimanere nella pagina corrente."</string>
     <string name="save_password_label" msgid="6860261758665825069">"Conferma"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"Suggerimento. Tocca due volte per aumentare/ridurre lo zoom."</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"lettura cronologia e segnalibri del browser"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Consente all\'applicazione di leggere tutti gli URL visitati e tutti i segnalibri del browser."</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"creazione cronologia e segnalibri del browser"</string>
@@ -745,8 +803,10 @@
     <string name="extmedia_format_message" msgid="3621369962433523619">"Formattare la scheda SD? Tutti i dati sulla scheda verranno persi."</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"Formatta"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"Debug USB collegato"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"Seleziona per disattivare il debug USB."</string>
-    <string name="select_input_method" msgid="6865512749462072765">"Seleziona metodo di inserimento"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"candidati"</u></string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"Crea contatto"\n"utilizzando <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"selezionato"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"non selezionato"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"Consenti"</string>
     <string name="deny" msgid="2081879885755434506">"Nega"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"Autorizzazione richiesta"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"Autorizzazione richiesta"\n"per l\'account <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"Metodo inserimento"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"Sinc"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"Accesso facilitato"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"Sfondo"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"Cambia sfondo"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"Protocollo di tunneling Point-to-Point"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"Protocollo di tunneling livello 2"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"VPN L2TP/IPSec basata su chiave precondivisa"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"VPN L2TP/IPSec basata su certificato"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index e26ece2..9517af5 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"ファイルにアクセスできませんでした。"</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"要求されたファイルが見つかりませんでした。"</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"処理中のリクエストが多すぎます。しばらくしてからもう一度試してください。"</string>
-    <string name="notification_title" msgid="1259940370369187045">"ログインエラー: <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"同期"</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"同期"</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"<xliff:g id="CONTENT_TYPE">%s</xliff:g>での削除が多すぎます。"</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"現在地を追跡"</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"ネットワーク通信"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"ネットワークのさまざまな機能へのアクセスをアプリケーションに許可します。"</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"アカウント"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"利用可能なアカウントにアクセスします。"</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"ハードウェアの制御"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"携帯電話のハードウェアに直接アクセスします。"</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"電話/通話"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"カスタム"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"自宅"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"携帯"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"勤務先"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"FAX(勤務先)"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"FAX(自宅)"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"ポケベル"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"その他"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"コールバック"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"クルマ"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"会社代表番号"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"メイン"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"FAX(その他)"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"無線"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"テレックス"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"携帯電話(勤務先)"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"ポケベル(勤務先)"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"アシスタント"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"誕生日"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"記念日"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"予定"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"カスタム"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"自宅"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"勤務先"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"その他"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"携帯"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"カスタム"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"自宅"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"勤務先"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"その他"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"カスタム"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"自宅"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"勤務先"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"その他"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"カスタム"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Googleトーク"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"勤務先"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"その他"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"カスタム"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"<xliff:g id="SOURCE">%1$s</xliff:g>経由"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="DATE">%1$s</xliff:g>、更新元: <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"PINコードを入力"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"PINコードが正しくありません。"</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"MENU、0キーでロック解除"</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"やり直してください"</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"充電中(<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"充電完了。"</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"充電してください。"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"SIMカードが挿入されていません"</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"SIMカードが挿入されていません"</string>
@@ -530,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"充電中..."</string>
     <string name="battery_low_title" msgid="7923774589611311406">"充電してください"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"電池が残り少なくなっています:"</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"残り<xliff:g id="NUMBER">%d%%</xliff:g>未満です。"</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"電池使用量"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"出荷時試験が失敗"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"FACTORY_TEST操作は、/system/appにインストールされたパッケージのみが対象です。"</string>
@@ -540,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"このページから移動しますか?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"移動する場合は[OK]、今のページに残る場合は[キャンセル]を選択してください。"</string>
     <string name="save_password_label" msgid="6860261758665825069">"確認"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"ヒント: ダブルタップで拡大/縮小できます。"</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"ブラウザの履歴とブックマークを読み取る"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"ブラウザでアクセスしたすべてのURLおよびブラウザのすべてのブックマークの読み取りをアプリケーションに許可します。"</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"ブラウザの履歴とブックマークを書き込む"</string>
@@ -745,8 +803,10 @@
     <string name="extmedia_format_message" msgid="3621369962433523619">"SDカードをフォーマットしてもよろしいですか?カード内のすべてのデータが失われます。"</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"フォーマット"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"USBデバッグが接続されました"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"USBデバッグを無効にする場合に選択します。"</string>
-    <string name="select_input_method" msgid="6865512749462072765">"入力方法の選択"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"候補"</u></string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"<xliff:g id="NUMBER">%s</xliff:g>を使って"\n"連絡先を新規登録"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"オン"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"オフ"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"許可"</string>
     <string name="deny" msgid="2081879885755434506">"拒否"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"リクエスト済み権限"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"次のアカウントにアクセスする権限が"\n"リクエストされました:<xliff:g id="ACCOUNT">%s</xliff:g>"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"入力方法"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"同期"</string>
-    <string name="accessibility_binding_label" msgid="4148120742096474641">"ユーザー補助"</string>
+    <string name="accessibility_binding_label" msgid="4148120742096474641">"アクセシビリティ"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"壁紙"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"壁紙を変更"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"ポイントツーポイントトンネリングプロトコル"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"レイヤー2トンネリングプロトコル"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"L2TP/IPSec VPNベースの事前共有鍵"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"L2TP/IPSec VPNベースの証明書"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index fc156b1..0ef3824 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"파일에 액세스할 수 없습니다."</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"요청한 파일을 찾을 수 없습니다."</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"처리 중인 요청이 너무 많습니다. 잠시 후에 다시 시도해 주세요."</string>
-    <string name="notification_title" msgid="1259940370369187045">"<xliff:g id="ACCOUNT">%1$s</xliff:g>에 로그인 오류 발생"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"동기화"</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"동기화"</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"<xliff:g id="CONTENT_TYPE">%s</xliff:g> 삭제가 너무 많습니다."</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"실제 위치 모니터링"</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"네트워크 통신"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"응용프로그램이 다양한 네트워크 기능에 액세스할 수 있도록 합니다."</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"계정"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"사용 가능한 계정에 액세스합니다."</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"하드웨어 제어"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"휴대전화의 하드웨어에 직접 액세스합니다."</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"전화 통화"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"맞춤설정"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"집"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"휴대전화"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"직장"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"직장 팩스"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"집(팩스)"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"호출기"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"기타"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"콜백"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"카폰"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"회사 기본전화"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"기본"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"기타 팩스"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"무선통신"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"텔렉스"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"직장 휴대전화"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"직장 호출기"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"비서"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"생일"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"기념일"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"일정"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"맞춤설정"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"집"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"직장"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"기타"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"모바일"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"맞춤설정"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"집"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"직장"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"기타"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"맞춤설정"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"집"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"직장"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"기타"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"맞춤설정"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google 토크"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"직장"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"기타"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"맞춤설정"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"<xliff:g id="SOURCE">%1$s</xliff:g>을(를) 통해"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="DATE">%1$s</xliff:g>(<xliff:g id="SOURCE">%2$s</xliff:g> 사용)"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"PIN 코드 입력"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"PIN 코드가 잘못되었습니다."</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"잠금해제하려면 메뉴를 누른 다음 0을 누릅니다."</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"죄송합니다. 다시 시도하세요."</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"충전 중(<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"충전되었습니다."</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"충전기를 연결하세요."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"SIM 카드가 없습니다."</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"휴대전화에 SIM 카드가 없습니다."</string>
@@ -530,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"충전 중..."</string>
     <string name="battery_low_title" msgid="7923774589611311406">"충전기를 연결하세요."</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"배터리 전원이 부족합니다."</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"잔여 배터리가 <xliff:g id="NUMBER">%d%%</xliff:g> 이하입니다."</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"배터리 사용"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"출고 테스트 불합격"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"FACTORY_TEST 작업은 /system/app 디렉토리에 설치된 패키지에 대해서만 지원됩니다."</string>
@@ -540,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"자바스크립트"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"다른 페이지를 탐색하시겠습니까?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"계속하려면 \'확인\'을 선택하고 현재 페이지에 그대로 있으려면 \'취소\'를 선택하세요."</string>
     <string name="save_password_label" msgid="6860261758665825069">"확인"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"도움말: 축소/확대하려면 두 번 누릅니다."</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"브라우저의 기록 및 북마크 읽기"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"응용프로그램이 브라우저로 방문한 모든 URL과 브라우저의 모든 북마크를 읽도록 허용합니다."</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"브라우저의 기록 및 북마크 쓰기"</string>
@@ -740,13 +798,15 @@
     <string name="usb_storage_stop_message" msgid="2390958966725232848">"USB 저장소를 끄기 전에 반드시 USB 호스트에서 마운트 해제하세요. USB 저장소를 끄려면 \'끄기\'를 선택하세요."</string>
     <string name="usb_storage_stop_button_mount" msgid="1181858854166273345">"USB 저장소 끄기"</string>
     <string name="usb_storage_stop_button_unmount" msgid="3774611918660582898">"취소"</string>
-    <string name="usb_storage_stop_error_message" msgid="3746037090369246731">"USB 저장소를 끄는 동안 문제가 발생했습니다. USB 호스트와 연결을 해제했는지 확인한 다음 다시 시도하세요."</string>
+    <string name="usb_storage_stop_error_message" msgid="3746037090369246731">"USB 저장소를 끄는 동안 문제가 발생했습니다. USB 호스트를 마운트 해제했는지 확인한 다음 다시 시도하세요."</string>
     <string name="extmedia_format_title" msgid="8663247929551095854">"SD 카드 포맷"</string>
     <string name="extmedia_format_message" msgid="3621369962433523619">"SD 카드를 포맷하시겠습니까? 포맷하면 카드의 모든 데이터를 잃게 됩니다."</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"포맷"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"USB 디버깅 연결됨"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"USB 디버깅을 사용하지 않으려면 선택합니다."</string>
-    <string name="select_input_method" msgid="6865512749462072765">"입력 방법 선택"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"가능한 원인"</u></string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"전화번호부에"\n"<xliff:g id="NUMBER">%s</xliff:g> 추가"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"선택함"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"선택 안함"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"허용"</string>
     <string name="deny" msgid="2081879885755434506">"거부"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"권한 요청"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"<xliff:g id="ACCOUNT">%s</xliff:g> 계정에 대해"\n"권한 요청"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"입력 방법"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"동기화"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"접근성"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"배경화면"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"배경화면 변경"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"PPTP(Point-to-Point Tunneling Protocol)"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"L2TP(Layer 2 Tunneling Protocol)"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"사전 공유 키 기반 L2TP/IPSec VPN"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"인증서 기반 L2TP/IPSec VPN"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values-mcc204-cs/strings.xml b/core/res/res/values-mcc204-cs/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-cs/strings.xml
+++ b/core/res/res/values-mcc204-cs/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-da/strings.xml b/core/res/res/values-mcc204-da/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-da/strings.xml
+++ b/core/res/res/values-mcc204-da/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-de/strings.xml b/core/res/res/values-mcc204-de/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-de/strings.xml
+++ b/core/res/res/values-mcc204-de/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-el/strings.xml b/core/res/res/values-mcc204-el/strings.xml
index 94786f1..97bfe65 100644
--- a/core/res/res/values-mcc204-el/strings.xml
+++ b/core/res/res/values-mcc204-el/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"el_GR"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-es-rUS/strings.xml b/core/res/res/values-mcc204-es-rUS/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-es-rUS/strings.xml
+++ b/core/res/res/values-mcc204-es-rUS/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-es/strings.xml b/core/res/res/values-mcc204-es/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-es/strings.xml
+++ b/core/res/res/values-mcc204-es/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-fr/strings.xml b/core/res/res/values-mcc204-fr/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-fr/strings.xml
+++ b/core/res/res/values-mcc204-fr/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-it/strings.xml b/core/res/res/values-mcc204-it/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-it/strings.xml
+++ b/core/res/res/values-mcc204-it/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-ja/strings.xml b/core/res/res/values-mcc204-ja/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-ja/strings.xml
+++ b/core/res/res/values-mcc204-ja/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-ko/strings.xml b/core/res/res/values-mcc204-ko/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-ko/strings.xml
+++ b/core/res/res/values-mcc204-ko/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-nb/strings.xml b/core/res/res/values-mcc204-nb/strings.xml
deleted file mode 100644
index 94786f1..0000000
--- a/core/res/res/values-mcc204-nb/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
-</resources>
diff --git a/core/res/res/values-mcc204-nl/strings.xml b/core/res/res/values-mcc204-nl/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-nl/strings.xml
+++ b/core/res/res/values-mcc204-nl/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-pl/strings.xml b/core/res/res/values-mcc204-pl/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-pl/strings.xml
+++ b/core/res/res/values-mcc204-pl/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-pt-rPT/strings.xml b/core/res/res/values-mcc204-pt-rPT/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-pt-rPT/strings.xml
+++ b/core/res/res/values-mcc204-pt-rPT/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-pt/strings.xml b/core/res/res/values-mcc204-pt/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-pt/strings.xml
+++ b/core/res/res/values-mcc204-pt/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-ru/strings.xml b/core/res/res/values-mcc204-ru/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-ru/strings.xml
+++ b/core/res/res/values-mcc204-ru/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-sv/strings.xml b/core/res/res/values-mcc204-sv/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-sv/strings.xml
+++ b/core/res/res/values-mcc204-sv/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-tr/strings.xml b/core/res/res/values-mcc204-tr/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-tr/strings.xml
+++ b/core/res/res/values-mcc204-tr/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-zh-rCN/strings.xml b/core/res/res/values-mcc204-zh-rCN/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-zh-rCN/strings.xml
+++ b/core/res/res/values-mcc204-zh-rCN/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc204-zh-rTW/strings.xml b/core/res/res/values-mcc204-zh-rTW/strings.xml
index 94786f1..7d96230 100644
--- a/core/res/res/values-mcc204-zh-rTW/strings.xml
+++ b/core/res/res/values-mcc204-zh-rTW/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="2972154133076909542">"nl_nl"</string>
+    <string name="locale_replacement">"nl_nl"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-cs/strings.xml b/core/res/res/values-mcc230-cs/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-cs/strings.xml
+++ b/core/res/res/values-mcc230-cs/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-da/strings.xml b/core/res/res/values-mcc230-da/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-da/strings.xml
+++ b/core/res/res/values-mcc230-da/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-de/strings.xml b/core/res/res/values-mcc230-de/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-de/strings.xml
+++ b/core/res/res/values-mcc230-de/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-el/strings.xml b/core/res/res/values-mcc230-el/strings.xml
index 63ade62..97bfe65 100644
--- a/core/res/res/values-mcc230-el/strings.xml
+++ b/core/res/res/values-mcc230-el/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"el_GR"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-es-rUS/strings.xml b/core/res/res/values-mcc230-es-rUS/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-es-rUS/strings.xml
+++ b/core/res/res/values-mcc230-es-rUS/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-es/strings.xml b/core/res/res/values-mcc230-es/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-es/strings.xml
+++ b/core/res/res/values-mcc230-es/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-fr/strings.xml b/core/res/res/values-mcc230-fr/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-fr/strings.xml
+++ b/core/res/res/values-mcc230-fr/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-it/strings.xml b/core/res/res/values-mcc230-it/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-it/strings.xml
+++ b/core/res/res/values-mcc230-it/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-ja/strings.xml b/core/res/res/values-mcc230-ja/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-ja/strings.xml
+++ b/core/res/res/values-mcc230-ja/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-ko/strings.xml b/core/res/res/values-mcc230-ko/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-ko/strings.xml
+++ b/core/res/res/values-mcc230-ko/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-nb/strings.xml b/core/res/res/values-mcc230-nb/strings.xml
deleted file mode 100644
index 63ade62..0000000
--- a/core/res/res/values-mcc230-nb/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
-</resources>
diff --git a/core/res/res/values-mcc230-nl/strings.xml b/core/res/res/values-mcc230-nl/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-nl/strings.xml
+++ b/core/res/res/values-mcc230-nl/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-pl/strings.xml b/core/res/res/values-mcc230-pl/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-pl/strings.xml
+++ b/core/res/res/values-mcc230-pl/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-pt-rPT/strings.xml b/core/res/res/values-mcc230-pt-rPT/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-pt-rPT/strings.xml
+++ b/core/res/res/values-mcc230-pt-rPT/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-pt/strings.xml b/core/res/res/values-mcc230-pt/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-pt/strings.xml
+++ b/core/res/res/values-mcc230-pt/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-ru/strings.xml b/core/res/res/values-mcc230-ru/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-ru/strings.xml
+++ b/core/res/res/values-mcc230-ru/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-sv/strings.xml b/core/res/res/values-mcc230-sv/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-sv/strings.xml
+++ b/core/res/res/values-mcc230-sv/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-tr/strings.xml b/core/res/res/values-mcc230-tr/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-tr/strings.xml
+++ b/core/res/res/values-mcc230-tr/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-zh-rCN/strings.xml b/core/res/res/values-mcc230-zh-rCN/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-zh-rCN/strings.xml
+++ b/core/res/res/values-mcc230-zh-rCN/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc230-zh-rTW/strings.xml b/core/res/res/values-mcc230-zh-rTW/strings.xml
index 63ade62..d3ecdbb 100644
--- a/core/res/res/values-mcc230-zh-rTW/strings.xml
+++ b/core/res/res/values-mcc230-zh-rTW/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="9011721823833053909">"cs_cz"</string>
+    <string name="locale_replacement">"cs_cz"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-cs/strings.xml b/core/res/res/values-mcc232-cs/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-cs/strings.xml
+++ b/core/res/res/values-mcc232-cs/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-da/strings.xml b/core/res/res/values-mcc232-da/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-da/strings.xml
+++ b/core/res/res/values-mcc232-da/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-de/strings.xml b/core/res/res/values-mcc232-de/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-de/strings.xml
+++ b/core/res/res/values-mcc232-de/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-el/strings.xml b/core/res/res/values-mcc232-el/strings.xml
index b028927..97bfe65 100644
--- a/core/res/res/values-mcc232-el/strings.xml
+++ b/core/res/res/values-mcc232-el/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"el_GR"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-es-rUS/strings.xml b/core/res/res/values-mcc232-es-rUS/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-es-rUS/strings.xml
+++ b/core/res/res/values-mcc232-es-rUS/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-es/strings.xml b/core/res/res/values-mcc232-es/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-es/strings.xml
+++ b/core/res/res/values-mcc232-es/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-fr/strings.xml b/core/res/res/values-mcc232-fr/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-fr/strings.xml
+++ b/core/res/res/values-mcc232-fr/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-it/strings.xml b/core/res/res/values-mcc232-it/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-it/strings.xml
+++ b/core/res/res/values-mcc232-it/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-ja/strings.xml b/core/res/res/values-mcc232-ja/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-ja/strings.xml
+++ b/core/res/res/values-mcc232-ja/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-ko/strings.xml b/core/res/res/values-mcc232-ko/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-ko/strings.xml
+++ b/core/res/res/values-mcc232-ko/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-nb/strings.xml b/core/res/res/values-mcc232-nb/strings.xml
deleted file mode 100644
index b028927..0000000
--- a/core/res/res/values-mcc232-nb/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
-</resources>
diff --git a/core/res/res/values-mcc232-nl/strings.xml b/core/res/res/values-mcc232-nl/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-nl/strings.xml
+++ b/core/res/res/values-mcc232-nl/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-pl/strings.xml b/core/res/res/values-mcc232-pl/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-pl/strings.xml
+++ b/core/res/res/values-mcc232-pl/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-pt-rPT/strings.xml b/core/res/res/values-mcc232-pt-rPT/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-pt-rPT/strings.xml
+++ b/core/res/res/values-mcc232-pt-rPT/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-pt/strings.xml b/core/res/res/values-mcc232-pt/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-pt/strings.xml
+++ b/core/res/res/values-mcc232-pt/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-ru/strings.xml b/core/res/res/values-mcc232-ru/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-ru/strings.xml
+++ b/core/res/res/values-mcc232-ru/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-sv/strings.xml b/core/res/res/values-mcc232-sv/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-sv/strings.xml
+++ b/core/res/res/values-mcc232-sv/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-tr/strings.xml b/core/res/res/values-mcc232-tr/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-tr/strings.xml
+++ b/core/res/res/values-mcc232-tr/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-zh-rCN/strings.xml b/core/res/res/values-mcc232-zh-rCN/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-zh-rCN/strings.xml
+++ b/core/res/res/values-mcc232-zh-rCN/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc232-zh-rTW/strings.xml b/core/res/res/values-mcc232-zh-rTW/strings.xml
index b028927..4773838 100644
--- a/core/res/res/values-mcc232-zh-rTW/strings.xml
+++ b/core/res/res/values-mcc232-zh-rTW/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="166900303893651370">"de_at"</string>
+    <string name="locale_replacement">"de_at"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-cs/strings.xml b/core/res/res/values-mcc234-cs/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-cs/strings.xml
+++ b/core/res/res/values-mcc234-cs/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-da/strings.xml b/core/res/res/values-mcc234-da/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-da/strings.xml
+++ b/core/res/res/values-mcc234-da/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-de/strings.xml b/core/res/res/values-mcc234-de/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-de/strings.xml
+++ b/core/res/res/values-mcc234-de/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-el/strings.xml b/core/res/res/values-mcc234-el/strings.xml
index bd391e1..97bfe65 100644
--- a/core/res/res/values-mcc234-el/strings.xml
+++ b/core/res/res/values-mcc234-el/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"el_GR"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-es-rUS/strings.xml b/core/res/res/values-mcc234-es-rUS/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-es-rUS/strings.xml
+++ b/core/res/res/values-mcc234-es-rUS/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-es/strings.xml b/core/res/res/values-mcc234-es/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-es/strings.xml
+++ b/core/res/res/values-mcc234-es/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-fr/strings.xml b/core/res/res/values-mcc234-fr/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-fr/strings.xml
+++ b/core/res/res/values-mcc234-fr/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-it/strings.xml b/core/res/res/values-mcc234-it/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-it/strings.xml
+++ b/core/res/res/values-mcc234-it/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-ja/strings.xml b/core/res/res/values-mcc234-ja/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-ja/strings.xml
+++ b/core/res/res/values-mcc234-ja/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-ko/strings.xml b/core/res/res/values-mcc234-ko/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-ko/strings.xml
+++ b/core/res/res/values-mcc234-ko/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-nb/strings.xml b/core/res/res/values-mcc234-nb/strings.xml
deleted file mode 100644
index bd391e1..0000000
--- a/core/res/res/values-mcc234-nb/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
-</resources>
diff --git a/core/res/res/values-mcc234-nl/strings.xml b/core/res/res/values-mcc234-nl/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-nl/strings.xml
+++ b/core/res/res/values-mcc234-nl/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-pl/strings.xml b/core/res/res/values-mcc234-pl/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-pl/strings.xml
+++ b/core/res/res/values-mcc234-pl/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-pt-rPT/strings.xml b/core/res/res/values-mcc234-pt-rPT/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-pt-rPT/strings.xml
+++ b/core/res/res/values-mcc234-pt-rPT/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-pt/strings.xml b/core/res/res/values-mcc234-pt/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-pt/strings.xml
+++ b/core/res/res/values-mcc234-pt/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-ru/strings.xml b/core/res/res/values-mcc234-ru/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-ru/strings.xml
+++ b/core/res/res/values-mcc234-ru/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-sv/strings.xml b/core/res/res/values-mcc234-sv/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-sv/strings.xml
+++ b/core/res/res/values-mcc234-sv/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-tr/strings.xml b/core/res/res/values-mcc234-tr/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-tr/strings.xml
+++ b/core/res/res/values-mcc234-tr/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-zh-rCN/strings.xml b/core/res/res/values-mcc234-zh-rCN/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-zh-rCN/strings.xml
+++ b/core/res/res/values-mcc234-zh-rCN/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc234-zh-rTW/strings.xml b/core/res/res/values-mcc234-zh-rTW/strings.xml
index bd391e1..2538b73 100644
--- a/core/res/res/values-mcc234-zh-rTW/strings.xml
+++ b/core/res/res/values-mcc234-zh-rTW/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="233769627858930762">"en_gb"</string>
+    <string name="locale_replacement">"en_gb"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-cs/strings.xml b/core/res/res/values-mcc260-cs/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-cs/strings.xml
+++ b/core/res/res/values-mcc260-cs/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-da/strings.xml b/core/res/res/values-mcc260-da/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-da/strings.xml
+++ b/core/res/res/values-mcc260-da/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-de/strings.xml b/core/res/res/values-mcc260-de/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-de/strings.xml
+++ b/core/res/res/values-mcc260-de/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-el/strings.xml b/core/res/res/values-mcc260-el/strings.xml
index 13ea1b2..97bfe65 100644
--- a/core/res/res/values-mcc260-el/strings.xml
+++ b/core/res/res/values-mcc260-el/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"el_GR"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-es-rUS/strings.xml b/core/res/res/values-mcc260-es-rUS/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-es-rUS/strings.xml
+++ b/core/res/res/values-mcc260-es-rUS/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-es/strings.xml b/core/res/res/values-mcc260-es/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-es/strings.xml
+++ b/core/res/res/values-mcc260-es/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-fr/strings.xml b/core/res/res/values-mcc260-fr/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-fr/strings.xml
+++ b/core/res/res/values-mcc260-fr/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-it/strings.xml b/core/res/res/values-mcc260-it/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-it/strings.xml
+++ b/core/res/res/values-mcc260-it/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-ja/strings.xml b/core/res/res/values-mcc260-ja/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-ja/strings.xml
+++ b/core/res/res/values-mcc260-ja/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-ko/strings.xml b/core/res/res/values-mcc260-ko/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-ko/strings.xml
+++ b/core/res/res/values-mcc260-ko/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-nb/strings.xml b/core/res/res/values-mcc260-nb/strings.xml
deleted file mode 100644
index 13ea1b2..0000000
--- a/core/res/res/values-mcc260-nb/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
-</resources>
diff --git a/core/res/res/values-mcc260-nl/strings.xml b/core/res/res/values-mcc260-nl/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-nl/strings.xml
+++ b/core/res/res/values-mcc260-nl/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-pl/strings.xml b/core/res/res/values-mcc260-pl/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-pl/strings.xml
+++ b/core/res/res/values-mcc260-pl/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-pt-rPT/strings.xml b/core/res/res/values-mcc260-pt-rPT/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-pt-rPT/strings.xml
+++ b/core/res/res/values-mcc260-pt-rPT/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-pt/strings.xml b/core/res/res/values-mcc260-pt/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-pt/strings.xml
+++ b/core/res/res/values-mcc260-pt/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-ru/strings.xml b/core/res/res/values-mcc260-ru/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-ru/strings.xml
+++ b/core/res/res/values-mcc260-ru/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-sv/strings.xml b/core/res/res/values-mcc260-sv/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-sv/strings.xml
+++ b/core/res/res/values-mcc260-sv/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-tr/strings.xml b/core/res/res/values-mcc260-tr/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-tr/strings.xml
+++ b/core/res/res/values-mcc260-tr/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-zh-rCN/strings.xml b/core/res/res/values-mcc260-zh-rCN/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-zh-rCN/strings.xml
+++ b/core/res/res/values-mcc260-zh-rCN/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc260-zh-rTW/strings.xml b/core/res/res/values-mcc260-zh-rTW/strings.xml
index 13ea1b2..1161f9a 100644
--- a/core/res/res/values-mcc260-zh-rTW/strings.xml
+++ b/core/res/res/values-mcc260-zh-rTW/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="6306793451973344945">"pl_pl"</string>
+    <string name="locale_replacement">"pl_pl"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-cs/strings.xml b/core/res/res/values-mcc262-cs/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-cs/strings.xml
+++ b/core/res/res/values-mcc262-cs/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-da/strings.xml b/core/res/res/values-mcc262-da/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-da/strings.xml
+++ b/core/res/res/values-mcc262-da/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-de/strings.xml b/core/res/res/values-mcc262-de/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-de/strings.xml
+++ b/core/res/res/values-mcc262-de/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-el/strings.xml b/core/res/res/values-mcc262-el/strings.xml
index a90e7cf..97bfe65 100644
--- a/core/res/res/values-mcc262-el/strings.xml
+++ b/core/res/res/values-mcc262-el/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"el_GR"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-es-rUS/strings.xml b/core/res/res/values-mcc262-es-rUS/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-es-rUS/strings.xml
+++ b/core/res/res/values-mcc262-es-rUS/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-es/strings.xml b/core/res/res/values-mcc262-es/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-es/strings.xml
+++ b/core/res/res/values-mcc262-es/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-fr/strings.xml b/core/res/res/values-mcc262-fr/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-fr/strings.xml
+++ b/core/res/res/values-mcc262-fr/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-it/strings.xml b/core/res/res/values-mcc262-it/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-it/strings.xml
+++ b/core/res/res/values-mcc262-it/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-ja/strings.xml b/core/res/res/values-mcc262-ja/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-ja/strings.xml
+++ b/core/res/res/values-mcc262-ja/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-ko/strings.xml b/core/res/res/values-mcc262-ko/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-ko/strings.xml
+++ b/core/res/res/values-mcc262-ko/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-nb/strings.xml b/core/res/res/values-mcc262-nb/strings.xml
deleted file mode 100644
index a90e7cf..0000000
--- a/core/res/res/values-mcc262-nb/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
-</resources>
diff --git a/core/res/res/values-mcc262-nl/strings.xml b/core/res/res/values-mcc262-nl/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-nl/strings.xml
+++ b/core/res/res/values-mcc262-nl/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-pl/strings.xml b/core/res/res/values-mcc262-pl/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-pl/strings.xml
+++ b/core/res/res/values-mcc262-pl/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-pt-rPT/strings.xml b/core/res/res/values-mcc262-pt-rPT/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-pt-rPT/strings.xml
+++ b/core/res/res/values-mcc262-pt-rPT/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-pt/strings.xml b/core/res/res/values-mcc262-pt/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-pt/strings.xml
+++ b/core/res/res/values-mcc262-pt/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-ru/strings.xml b/core/res/res/values-mcc262-ru/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-ru/strings.xml
+++ b/core/res/res/values-mcc262-ru/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-sv/strings.xml b/core/res/res/values-mcc262-sv/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-sv/strings.xml
+++ b/core/res/res/values-mcc262-sv/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-tr/strings.xml b/core/res/res/values-mcc262-tr/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-tr/strings.xml
+++ b/core/res/res/values-mcc262-tr/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-zh-rCN/strings.xml b/core/res/res/values-mcc262-zh-rCN/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-zh-rCN/strings.xml
+++ b/core/res/res/values-mcc262-zh-rCN/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-mcc262-zh-rTW/strings.xml b/core/res/res/values-mcc262-zh-rTW/strings.xml
index a90e7cf..9505cf4 100644
--- a/core/res/res/values-mcc262-zh-rTW/strings.xml
+++ b/core/res/res/values-mcc262-zh-rTW/strings.xml
@@ -15,5 +15,5 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="locale_replacement" msgid="273407696421660814">"de_de"</string>
+    <string name="locale_replacement">"de_de"</string>
 </resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index c0aae98..aa15ad1 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"Kunne ikke åpne filen."</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"Fant ikke den forespurte filen."</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"For mange forespørsler blir behandlet. Prøv igjen senere."</string>
-    <string name="notification_title" msgid="1259940370369187045">"Innloggingsfeil for <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"Synkronisering"</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Synkronisering"</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"For mange slettinger av <xliff:g id="CONTENT_TYPE">%s</xliff:g>."</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"Overvåking av telefonens fysiske plassering"</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"Nettverkstilgang"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"Gir applikasjoner tilgang til diverse nettverksfunksjoner."</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"Google-kontoer"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Tilgang til tilgjengelige Google-kontoer."</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Maskinvarekontroll"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Direkte tilgang til maskinvaren på telefonen."</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Telefonsamtaler"</string>
@@ -195,7 +198,7 @@
     <string name="permdesc_shutdown" msgid="7046500838746291775">"Lar applikasjonen sette aktivitetshåndtereren i avslutningstilstand. Slår ikke systemet helt av."</string>
     <string name="permlab_stopAppSwitches" msgid="4138608610717425573">"forhindre applikasjonsbytte"</string>
     <string name="permdesc_stopAppSwitches" msgid="3857886086919033794">"Lar applikasjonen forhindre brukeren fra å bytte til en annen applikasjon."</string>
-    <string name="permlab_runSetActivityWatcher" msgid="7811586187574696296">"overvåke og kontrollere all applikasjonsoppstart"</string>
+    <string name="permlab_runSetActivityWatcher" msgid="7811586187574696296">"Blokker popup-vinduer"</string>
     <string name="permdesc_runSetActivityWatcher" msgid="3228701938345388092">"Lar applikasjonen overvåke og kontrollere hvordan systemet starter applikasjoner. Ondsinnede applikasjoner kan ta over systemet helt. Denne rettigheten behøves bare for utvikling, aldri for vanlig bruk av telefonen."</string>
     <string name="permlab_broadcastPackageRemoved" msgid="2576333434893532475">"kringkaste melding om fjernet pakke"</string>
     <string name="permdesc_broadcastPackageRemoved" msgid="3453286591439891260">"Lar applikasjonen kringkaste en melding om at en applikasjonspakke er blitt fjernet. Ondsinnede applikasjoner kan bruke dette til å drepe vilkårlige andre kjørende applikasjoner."</string>
@@ -210,9 +213,9 @@
     <string name="permlab_batteryStats" msgid="7863923071360031652">"endre batteristatistikk"</string>
     <string name="permdesc_batteryStats" msgid="5847319823772230560">"Lar applikasjonen endre på innsamlet batteristatistikk. Ikke ment for vanlige applikasjoner."</string>
     <string name="permlab_backup" msgid="470013022865453920">"kontrollere backup og gjenoppretting"</string>
-    <string name="permdesc_backup" msgid="4837493065154256525">"Lar applikasjonen kontrollere systemets backup- og gjenopprettingsmekanisme. Ikke ment for vanlige applikasjoner."</string>
-    <string name="permlab_backup_data" msgid="4057625941707926463">"foreta backup og gjenoppretting av applikasjonens data"</string>
-    <string name="permdesc_backup_data" msgid="8274426305151227766">"Lar applikasjonen delta i systemets backup- og gjenopprettingsmekanisme."</string>
+    <string name="permdesc_backup" msgid="4837493065154256525">"Gir programmet tillatelse til å kontrollere systemets mekanismer for sikkerhetskopiering gjenoppretting. Ikke beregnet på vanlige programmer."</string>
+    <string name="permlab_backup_data" msgid="4057625941707926463">"sikkerhetskopier og gjenopprett programmets data"</string>
+    <string name="permdesc_backup_data" msgid="8274426305151227766">"Gir programmet tillatelse til å ta del i systemets mekanismer for sikkerhetskopiering og gjenoppretting."</string>
     <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"vis uautoriserte vinduer"</string>
     <string name="permdesc_internalSystemWindow" msgid="5895082268284998469">"Tillater at det opprettes vinduer ment for bruk av systemets interne brukergrensesnitt. Ikke ment for vanlige applikasjoner."</string>
     <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"vise advarsler på systemnivå"</string>
@@ -258,7 +261,7 @@
     <string name="permlab_writeSettings" msgid="1365523497395143704">"endre globale systeminnstillinger"</string>
     <string name="permdesc_writeSettings" msgid="838789419871034696">"Lar applikasjonen endre systemets innstillingsdata. Ondsinnede applikasjoner kan skade systemets innstillinger."</string>
     <string name="permlab_writeSecureSettings" msgid="204676251876718288">"endre sikre systeminnstillinger"</string>
-    <string name="permdesc_writeSecureSettings" msgid="5497873143539034724">"Gir programmet tillatelse til å endre systemets data for sikkerhetsinnstilling. Ikke ment for vanlige programmer."</string>
+    <string name="permdesc_writeSecureSettings" msgid="5497873143539034724">"Gir programmet tillatelse til å endre systemets data for sikkerhetsinnstilling. Ikke beregnet på vanlige programmer."</string>
     <string name="permlab_writeGservices" msgid="2149426664226152185">"redigere Google-tjenestekartet"</string>
     <string name="permdesc_writeGservices" msgid="6602362746516676175">"Lar applikasjonen redigere Google-tjenestekartet. Ikke ment for bruk av vanlige applikasjoner."</string>
     <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"starte automatisk sammen med systemet"</string>
@@ -315,8 +318,8 @@
     <string name="permdesc_callPhone" msgid="3369867353692722456">"Lar applikasjonen ringe telefonnummer uten inngripen fra brukeren. Ondsinnede applikasjoner kan forårsake uventede oppringinger på telefonregningen. Merk at dette ikke gir applikasjonen lov til å ringe nødnummer."</string>
     <string name="permlab_callPrivileged" msgid="4198349211108497879">"ringe vilkårlige telefonnummer direkte"</string>
     <string name="permdesc_callPrivileged" msgid="244405067160028452">"Lar applikasjonen ringe hvilket som helst telefonnummer, inkludert nødnummer, uten inngripen fra brukeren. Ondsinnede applikasjoner kan forårsake unødvendige og ulovlige samtaler til nødtjenester."</string>
-    <string name="permlab_performCdmaProvisioning" msgid="5604848095315421425">"begynne CDMA-telefonoppsett direkte"</string>
-    <string name="permdesc_performCdmaProvisioning" msgid="6457447676108355905">"Lar applikasjonen begynne CDMA-oppsett. Ondsinnede applikasjoner kan bruke dette til å starte CDMA-oppsett uten grunn."</string>
+    <string name="permlab_performCdmaProvisioning" msgid="5604848095315421425">"start CDMA-telefonoppsett direkte"</string>
+    <string name="permdesc_performCdmaProvisioning" msgid="6457447676108355905">"Gir programmet tillatelse til å starte klargjøring av CDMA. Skadelige programmer kan starte klargjøring av CDMA uten grunn"</string>
     <string name="permlab_locationUpdates" msgid="7785408253364335740">"kontrollere varsling for plasseringsendring"</string>
     <string name="permdesc_locationUpdates" msgid="2300018303720930256">"Lar applikasjonen slå av/på varsling om plasseringsendringer fra radioen. Ikke ment for vanlige applikasjoner."</string>
     <string name="permlab_checkinProperties" msgid="7855259461268734914">"få tilgang til egenskaper for innsjekking"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"Egendefinert"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"Hjemme"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"Mobil"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"Arbeid"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Faks arbeid"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Faks hjemme"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"Personsøker"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"Annen"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"Tilbakering"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"Bil"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Firma hoved"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"Hoved"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Faks annen"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"Radio"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"Teleks"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"Teksttelefon"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Mobil arbeid"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"Personsøker arbeid"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"Assistent"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"Bursdag"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"Jubileum"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"Akivitet"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"Egendefinert"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"Hjemme"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"Arbeid"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"Annen"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"Mobil"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"Egendefinert"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"Hjemme"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"Arbeid"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"Annen"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"Egendefinert"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"Hjemme"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"Arbeid"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"Annen"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"Egendefinert"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"OQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google Talk"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"Arbeid"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"Annen"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"Egendefinert"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"Skriv inn PIN-kode:"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"Gal PIN-kode!"</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"For å låse opp, trykk på menyknappen og deretter 0."</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"Beklager, prøv igjen:"</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"Lader (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"Fullt ladet"</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"Koble til en batterilader."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Mangler SIM-kort."</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Ikke noe SIM-kort i telefonen."</string>
@@ -530,17 +586,19 @@
     <string name="battery_status_charging" msgid="756617993998772213">"Lader…"</string>
     <string name="battery_low_title" msgid="7923774589611311406">"Koble til en lader"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"Batteriet er nesten tomt:"</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"mindre enn <xliff:g id="NUMBER">%d%%</xliff:g> igjen."</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"Batteribruk"</string>
-    <string name="factorytest_failed" msgid="5410270329114212041">"Fabrikktesten feilet"</string>
+    <string name="factorytest_failed" msgid="5410270329114212041">"Factory test failed"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"The FACTORY_TEST action is only supported for packages installed in /system/app."</string>
     <string name="factorytest_no_action" msgid="872991874799998561">"No package was found that provides the FACTORY_TEST action."</string>
-    <string name="factorytest_reboot" msgid="6320168203050791643">"Omstart"</string>
+    <string name="factorytest_reboot" msgid="6320168203050791643">"Reboot"</string>
     <string name="js_dialog_title" msgid="8143918455087008109">"Siden \'<xliff:g id="TITLE">%s</xliff:g> sier:"</string>
     <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"Naviger bort fra denne siden?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Velg OK for å fortsette, eller Avbryt for å forbli på denne siden."</string>
     <string name="save_password_label" msgid="6860261758665825069">"Bekreft"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"Dobbelttrykk for å zoome inn og ut."</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"lese nettleserens logg og bokmerker"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Lar applikasjonen lese alle adresser nettleseren har besøkt, og alle nettleserens bokmerker."</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"skrive til nettleserens logg og bokmerker"</string>
@@ -623,7 +681,7 @@
     <item quantity="one" msgid="2178576254385739855">"i morgen"</item>
     <item quantity="other" msgid="2973062968038355991">"om <xliff:g id="COUNT">%d</xliff:g> d"</item>
   </plurals>
-    <string name="preposition_for_date" msgid="9093949757757445117">"<xliff:g id="DATE">%s</xliff:g>"</string>
+    <string name="preposition_for_date" msgid="9093949757757445117">"den <xliff:g id="DATE">%s</xliff:g>"</string>
     <string name="preposition_for_time" msgid="5506831244263083793">"kl. <xliff:g id="TIME">%s</xliff:g>"</string>
     <string name="preposition_for_year" msgid="5040395640711867177">"i <xliff:g id="YEAR">%s</xliff:g>"</string>
     <string name="day" msgid="8144195776058119424">"dag"</string>
@@ -675,24 +733,24 @@
     <string name="dialog_alert_title" msgid="2049658708609043103">"Merk"</string>
     <string name="capital_on" msgid="1544682755514494298">"På"</string>
     <string name="capital_off" msgid="6815870386972805832">"Av"</string>
-    <string name="whichApplication" msgid="4533185947064773386">"Fullfør med"</string>
-    <string name="alwaysUse" msgid="4583018368000610438">"Bruk som standardvalg."</string>
-    <string name="clearDefaultHintMsg" msgid="4815455344600932173">"Fjern standardvalg i Innstillinger &gt; Applikasjoner &gt; Installerte applikasjoner."</string>
-    <string name="chooseActivity" msgid="1009246475582238425">"Velg en aktivitet"</string>
-    <string name="noApplications" msgid="1691104391758345586">"Ingen applikasjoner kan gjøre dette."</string>
-    <string name="aerr_title" msgid="653922989522758100">"Beklager!"</string>
-    <string name="aerr_application" msgid="4683614104336409186">"Applikasjonen <xliff:g id="APPLICATION">%1$s</xliff:g> (prosess <xliff:g id="PROCESS">%2$s</xliff:g>) stoppet uventet. Prøv igjen."</string>
-    <string name="aerr_process" msgid="1551785535966089511">"Prosessen <xliff:g id="PROCESS">%1$s</xliff:g> stoppet uventet. Prøv igjen."</string>
-    <string name="anr_title" msgid="3100070910664756057">"Beklager!"</string>
-    <string name="anr_activity_application" msgid="3538242413112507636">"Aktiviteten <xliff:g id="ACTIVITY">%1$s</xliff:g> (i applikasjonen <xliff:g id="APPLICATION">%2$s</xliff:g>) svarer ikke."</string>
-    <string name="anr_activity_process" msgid="5420826626009561014">"Aktiviteten <xliff:g id="ACTIVITY">%1$s</xliff:g> (i prosessen <xliff:g id="PROCESS">%2$s</xliff:g>) svarer ikke."</string>
-    <string name="anr_application_process" msgid="4185842666452210193">"Applikasjonen <xliff:g id="APPLICATION">%1$s</xliff:g> (i prosessen <xliff:g id="PROCESS">%2$s</xliff:g>) svarer ikke."</string>
-    <string name="anr_process" msgid="1246866008169975783">"Prosessen <xliff:g id="PROCESS">%1$s</xliff:g> svarer ikke."</string>
-    <string name="force_close" msgid="3653416315450806396">"Tving avslutning"</string>
+    <string name="whichApplication" msgid="4533185947064773386">"Complete action using"</string>
+    <string name="alwaysUse" msgid="4583018368000610438">"Use by default for this action."</string>
+    <string name="clearDefaultHintMsg" msgid="4815455344600932173">"Clear default in Home Settings &gt; Applications &gt; Manage applications."</string>
+    <string name="chooseActivity" msgid="1009246475582238425">"Select an action"</string>
+    <string name="noApplications" msgid="1691104391758345586">"No applications can perform this action."</string>
+    <string name="aerr_title" msgid="653922989522758100">"Sorry!"</string>
+    <string name="aerr_application" msgid="4683614104336409186">"The application <xliff:g id="APPLICATION">%1$s</xliff:g> (process <xliff:g id="PROCESS">%2$s</xliff:g>) has stopped unexpectedly. Please try again."</string>
+    <string name="aerr_process" msgid="1551785535966089511">"The process <xliff:g id="PROCESS">%1$s</xliff:g> has stopped unexpectedly. Please try again."</string>
+    <string name="anr_title" msgid="3100070910664756057">"Sorry!"</string>
+    <string name="anr_activity_application" msgid="3538242413112507636">"Activity <xliff:g id="ACTIVITY">%1$s</xliff:g> (in application <xliff:g id="APPLICATION">%2$s</xliff:g>) is not responding."</string>
+    <string name="anr_activity_process" msgid="5420826626009561014">"Activity <xliff:g id="ACTIVITY">%1$s</xliff:g> (in process <xliff:g id="PROCESS">%2$s</xliff:g>) is not responding."</string>
+    <string name="anr_application_process" msgid="4185842666452210193">"Application <xliff:g id="APPLICATION">%1$s</xliff:g> (in process <xliff:g id="PROCESS">%2$s</xliff:g>) is not responding."</string>
+    <string name="anr_process" msgid="1246866008169975783">"Process <xliff:g id="PROCESS">%1$s</xliff:g> is not responding."</string>
+    <string name="force_close" msgid="3653416315450806396">"Force close"</string>
     <string name="report" msgid="4060218260984795706">"Rapportér"</string>
-    <string name="wait" msgid="7147118217226317732">"Vent"</string>
+    <string name="wait" msgid="7147118217226317732">"Wait"</string>
     <string name="debug" msgid="9103374629678531849">"Debug"</string>
-    <string name="sendText" msgid="5132506121645618310">"Velg mål for tekst"</string>
+    <string name="sendText" msgid="5132506121645618310">"Select an action for text"</string>
     <string name="volume_ringtone" msgid="6885421406845734650">"Ringetonevolum"</string>
     <string name="volume_music" msgid="5421651157138628171">"Medievolum"</string>
     <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"Spiller over Bluetooth"</string>
@@ -743,10 +801,12 @@
     <string name="usb_storage_stop_error_message" msgid="3746037090369246731">"Det har oppstått et problem ved deaktiveringen av USB-lagring. Kontroller at du har demontert USB-verten, og prøv igjen."</string>
     <string name="extmedia_format_title" msgid="8663247929551095854">"Formatere minnekort"</string>
     <string name="extmedia_format_message" msgid="3621369962433523619">"Er du sikker på at du ønsker å formatere minnekortet? Alle data på kortet vil gå tapt."</string>
-    <string name="extmedia_format_button_format" msgid="4131064560127478695">"Formatér"</string>
+    <string name="extmedia_format_button_format" msgid="4131064560127478695">"Format"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"USB-debugging tilkoblet"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"Velg for å deaktivere USB-debugging."</string>
-    <string name="select_input_method" msgid="6865512749462072765">"Velg inndatametode"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ"</string>
     <string name="candidates_style" msgid="4333913089637062257">"TAG_FONT"<u>"kandidater"</u>"CLOSE_FONT"</string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"Lag kontakt"\n"med nummeret <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"valgt"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"ikke valgt"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"Tillat"</string>
     <string name="deny" msgid="2081879885755434506">"Avslå"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"Tillatelse forespurt"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"Trenger tillatelse"\n"for konto <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"Inndatametode"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"Synkronisering"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"Tilgjengelighet"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"Bakgrunnsbilde"</string>
-    <string name="chooser_wallpaper" msgid="7873476199295190279">"Velg bakgrunnsbilde"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"Punkt-til-punkt-tunneleringsprotokoll"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"Lag 2-tunneleringsprotokoll"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"Passordbasert L2TP/IPSec-VPN"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"Sertifikatbasert L2TP/IPSec-VPN"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <string name="chooser_wallpaper" msgid="7873476199295190279">"Endre bakgrunnsbilde"</string>
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 9b95c09..c299ef8 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"Het bestand kan niet worden geopend."</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"Het opgevraagde bestand is niet gevonden."</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"Er worden te veel aanvragen verwerkt. Probeer het later opnieuw."</string>
-    <string name="notification_title" msgid="1259940370369187045">"Fout bij aanmelding voor \'<xliff:g id="ACCOUNT">%1$s</xliff:g>\'"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"Synchroniseren"</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Synchroniseren"</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Te veel verwijderen voor <xliff:g id="CONTENT_TYPE">%s</xliff:g>."</string>
@@ -434,61 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"Aangepast"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"Thuis"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"Mobiel"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"Werk"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Fax werk"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Fax thuis"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"Pager"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"Overig"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"Terugbelnummer"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"Auto"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Bedrijf, algemeen"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"Algemeen"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Andere fax"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"Radio"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"Telex"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"Teksttelefoon"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Mobiel werk"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"Pager werk"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"Assistent"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
     <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
     <skip />
     <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
     <skip />
     <!-- no translation found for eventTypeOther (5834288791948564594) -->
     <skip />
-    <string name="emailTypeCustom" msgid="8525960257804213846">"Aangepast"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"Thuis"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"Werk"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"Overig"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"Mobiel"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"Aangepast"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"Thuis"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"Werk"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"Overig"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"Aangepast"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"Thuis"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"Werk"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"Overig"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"Aangepast"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google Talk"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"Werk"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"Overig"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"Aangepast"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"PIN-code invoeren"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"Onjuiste PIN-code!"</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"Druk op \'Menu\' en vervolgens op 0 om te ontgrendelen."</string>
@@ -503,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"Probeer het opnieuw"</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"Opladen (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"Opgeladen."</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"Sluit de oplader aan."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Geen SIM-kaart."</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Geen SIM-kaart in telefoon."</string>
@@ -535,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"Opladen..."</string>
     <string name="battery_low_title" msgid="7923774589611311406">"Sluit de oplader aan"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"De accu raakt op:"</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"<xliff:g id="NUMBER">%d%%</xliff:g> of minder resterend."</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"Accugebruik"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"Fabriekstest mislukt"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"De actie FACTORY_TEST wordt alleen ondersteund voor pakketten die zijn geïnstalleerd in /system/app."</string>
@@ -545,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"Wilt u deze pagina verlaten?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Kies OK om door te gaan of Annuleren om op de huidige pagina te blijven."</string>
     <string name="save_password_label" msgid="6860261758665825069">"Bevestigen"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"Tip: tik tweemaal om in of uit te zoomen."</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"browsergeschiedenis en bladwijzers lezen"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Hiermee kan een toepassing de URL\'s lezen die u via de browser heeft bezocht, evenals alle bladwijzers van de browser."</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"browsergeschiedenis en bladwijzers schrijven"</string>
@@ -669,7 +722,7 @@
     <string name="paste" msgid="5629880836805036433">"Plakken"</string>
     <string name="copyUrl" msgid="2538211579596067402">"URL kopiëren"</string>
     <string name="inputMethod" msgid="1653630062304567879">"Invoermethode"</string>
-    <string name="addToDictionary" msgid="8793624991686948709">"\'<xliff:g id="WORD">%s</xliff:g>\' toevoegen aan woordenboek"</string>
+    <string name="addToDictionary" msgid="8793624991686948709">"\' <xliff:g id="WORD">%s</xliff:g>\' toevoegen aan woordenboek"</string>
     <string name="editTextMenuTitle" msgid="1672989176958581452">"Tekst bewerken"</string>
     <string name="low_internal_storage_view_title" msgid="1399732408701697546">"Weinig ruimte"</string>
     <string name="low_internal_storage_view_text" msgid="635106544616378836">"Opslagruimte van telefoon raakt op."</string>
@@ -750,8 +803,10 @@
     <string name="extmedia_format_message" msgid="3621369962433523619">"Weet u zeker dat u de SD-kaart wilt formatteren? Alle gegevens op uw kaart gaan dan verloren."</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"Formatteren"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"USB-foutopsporing verbonden"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"Selecteer deze optie om USB-foutopsporing uit te schakelen."</string>
-    <string name="select_input_method" msgid="6865512749462072765">"Invoermethode selecteren"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"kandidaten"</u></string>
@@ -782,16 +837,11 @@
     <string name="create_contact_using" msgid="4947405226788104538">"Contact maken"\n"met <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"aangevinkt"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"niet aangevinkt"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"Toestaan"</string>
     <string name="deny" msgid="2081879885755434506">"Weigeren"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"Toestemming gevraagd"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"Toestemming gevraagd"\n"voor account \'<xliff:g id="ACCOUNT">%s</xliff:g>\'"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"Invoermethode"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"Synchroniseren"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"Toegankelijkheid"</string>
@@ -805,6 +855,4 @@
     <skip />
     <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
-    <!-- no translation found for upload_file (2897957172366730416) -->
-    <skip />
 </resources>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 6ee52ed..f53bd4c5 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"Nie można uzyskać dostępu do pliku."</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"Nie znaleziono żądanego pliku."</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"Zbyt wiele żądań jest przetwarzanych. Spróbuj ponownie później."</string>
-    <string name="notification_title" msgid="1259940370369187045">"Błąd logowania na konto <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"Synchronizacja"</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Synchronizuj"</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Zbyt wiele usuwanych <xliff:g id="CONTENT_TYPE">%s</xliff:g>."</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"Monitorowanie fizycznej lokalizacji"</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"Połączenia sieciowe"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"Pozwól aplikacjom na dostęp do różnych funkcji sieci."</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"Twoje konta"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Dostęp do udostępnionych kont."</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Sterowanie sprzętowe"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Bezpośredni dostęp do elementów sprzętowych telefonu."</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Połączenia telefoniczne"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"Niestandardowy"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"Domowy"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"Komórkowy"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"Służbowy"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Faks służbowy"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Faks domowy"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"Pager"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"Inny"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"Połączenie zwrotne"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"Samochód"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Firmowy główny"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"Główny"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Inny faks"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"Radio"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"Teleks"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Służbowy komórkowy"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"Pager służbowy"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"Asystent"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"Wiadomość MMS"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"Urodziny"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"Rocznica"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"Wydarzenie"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"Niestandardowy"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"Domowy"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"Służbowy"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"Inny"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"Komórkowy"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"Niestandardowy"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"Domowy"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"Służbowy"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"Inny"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"Niestandardowy"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"Domowy"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"Służbowy"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"Inny"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"Niestandardowy"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google Talk"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"Służbowy"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"Inny"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"Niestandardowy"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"przez <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="DATE">%1$s</xliff:g> za pośrednictwem: <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"Wprowadź kod PIN"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"Błędny kod PIN!"</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"Aby odblokować, naciśnij Menu, a następnie 0."</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"Niestety, spróbuj ponownie"</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"Ładowanie (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"Naładowany."</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"Podłącz ładowarkę."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Brak karty SIM."</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Brak karty SIM w telefonie."</string>
@@ -530,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"Ładowanie..."</string>
     <string name="battery_low_title" msgid="7923774589611311406">"Podłącz ładowarkę"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"Bateria się rozładowuje:"</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"Pozostało: <xliff:g id="NUMBER">%d%%</xliff:g> lub mniej."</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"Użycie baterii"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"Nieudany test fabryczny"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"Czynność FACTORY_TEST jest obsługiwana tylko dla pakietów zainstalowanych w katalogu /system/app."</string>
@@ -540,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"Czy opuścić tę stronę?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Wybierz opcję OK, aby kontynuować, lub opcję Anuluj, aby pozostać na tej stronie."</string>
     <string name="save_password_label" msgid="6860261758665825069">"Potwierdź"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"Wskazówka: dotknij dwukrotnie, aby powiększyć lub pomniejszyć."</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"odczyt historii i zakładek przeglądarki"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Umożliwia aplikacji odczyt wszystkich adresów URL odwiedzonych przez przeglądarkę, a także wszystkich zakładek przeglądarki."</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"zapis historii i zakładek przeglądarki"</string>
@@ -745,8 +803,10 @@
     <string name="extmedia_format_message" msgid="3621369962433523619">"Czy na pewno sformatować kartę SD? Wszystkie dane na karcie zostaną utracone."</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"Formatuj"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"Podłączono moduł debugowania USB"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"Wybierz, aby wyłączyć debugowanie USB."</string>
-    <string name="select_input_method" msgid="6865512749462072765">"Wybierz metodę wprowadzania"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" AĄBCĆDEĘFGHIJKLŁMNŃOÓPQRSŚTUVWXYZŹŻ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"kandydaci"</u></string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"Utwórz kontakt"\n"dla numeru <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"zaznaczone"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"niezaznaczone"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"Zezwól"</string>
     <string name="deny" msgid="2081879885755434506">"Odmów"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"Żądane pozwolenie"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"Prośba o pozwolenie"\n"dotyczące konta <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"Metoda wprowadzania"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"Synchronizacja"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"Ułatwienia dostępu"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"Tapeta"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"Zmień tapetę"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"Protokół PPTP"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"Protokół L2TP"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"Sieć VPN L2TP/IPSec z kluczem PSK"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"Sieć VPN L2TP/IPSec z certyfikatem"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index c86fbdb..891e7ce 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"Não foi possível aceder ao ficheiro."</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"Não foi possível localizar o ficheiro pedido."</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"Existem demasiados pedidos em processamento. Tente novamente mais tarde."</string>
-    <string name="notification_title" msgid="1259940370369187045">"Erro de início de sessão para <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"Sincronização"</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Sincronização"</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Demasiadas eliminações de <xliff:g id="CONTENT_TYPE">%s</xliff:g>."</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"Monitorizar a sua localização física"</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"Comunicação de rede"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"Permite o acesso de aplicações a várias funcionalidades de rede."</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"As suas contas"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Aceda às contas disponíveis."</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controlos de hardware"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Aceda directamente ao hardware no telefone."</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Chamadas"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"Personalizado"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"Residência"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"Telemóvel"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"Emprego"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Fax do emprego"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Fax da residência"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"Pager"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"Outro"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"Rechamada"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"Automóvel"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Telefone principal da empresa"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"RDIS"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"Principal"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Outro fax"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"Rádio"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"Telex"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Telemóvel do emprego"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"Pager do trabalho"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"Assistente"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"Data de nascimento"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"Aniversário"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"Evento"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"Personalizado"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"Residência"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"Emprego"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"Outro"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"Telemóvel"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"Personalizado"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"Residência"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"Emprego"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"Outro"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"Personalizado"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"Residência"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"Emprego"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"Outro"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"Personalizado"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google Talk"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"Emprego"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"Outro"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"Personalizado"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"através do <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="DATE">%1$s</xliff:g> através de <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"Introduzir código PIN"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"Código PIN incorrecto!"</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"Para desbloquear, prima Menu e, em seguida, 0."</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"Lamentamos, tente novamente"</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"A carregar (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"Carregado."</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"Ligue o carregador."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Nenhum cartão SIM."</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Nenhum cartão SIM no telefone."</string>
@@ -530,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"A carregar..."</string>
     <string name="battery_low_title" msgid="7923774589611311406">"Ligue o carregador"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"A bateria está a ficar fraca:"</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"Restam <xliff:g id="NUMBER">%d%%</xliff:g> ou menos."</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"Utilização da bateria"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"O teste de fábrica falhou"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"A acção FACTORY_TEST apenas é suportada para pacotes instalados em /system/app."</string>
@@ -540,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"Navegar para outra página?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Seleccione OK para continuar ou Cancelar para permanecer na página actual."</string>
     <string name="save_password_label" msgid="6860261758665825069">"Confirmar"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"Sugestão: toque duas vezes para aumentar ou diminuir o zoom."</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"ler histórico e marcadores do browser"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Permite que a aplicação leia todos os URLs visitados pelo browser e todos os marcadores do browser."</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"gravar histórico e marcadores do browser"</string>
@@ -745,8 +803,10 @@
     <string name="extmedia_format_message" msgid="3621369962433523619">"Tem a certeza de que pretende formatar o cartão SD? Perder-se-ão todos os dados no cartão."</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"Formatar"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"Depuração USB ligada"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"Seleccione para desactivar depuração USB."</string>
-    <string name="select_input_method" msgid="6865512749462072765">"Seleccionar método de entrada"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"candidatos"</u></string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"Criar contacto"\n"utilizando <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"verificado"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"não verificado"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"Permitir"</string>
     <string name="deny" msgid="2081879885755434506">"Recusar"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"Autorização Solicitada"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"Autorização solicitada"\n"para a conta <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"Método de entrada"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"Sincronização"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"Acessibilidade"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"Imagem de fundo"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"Alterar imagem de fundo"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"Protocolo de túnel ponto a ponto (PPTP)"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"Protocolo de túnel de camada 2 (L2TP)"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"VPN L2TP/IPSec baseada em chave pré- partilhada"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"VPN L2TP/IPSec baseada em certificado"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 70f82ee..265fb62 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"Não foi possível acessar o arquivo."</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"O arquivo solicitado não foi encontrado."</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"Há muitas solicitações sendo processadas. Tente novamente mais tarde."</string>
-    <string name="notification_title" msgid="1259940370369187045">"Erro de login para <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"Sincronizar"</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Sincronizar"</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Muitas exclusões de <xliff:g id="CONTENT_TYPE">%s</xliff:g>."</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"Monitora o seu local físico."</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"Comunicação da rede"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"Permite que os aplicativos acessem diversos recursos de rede."</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"Suas contas"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Acessar as contas disponíveis."</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controles de hardware"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Acessa o hardware diretamente no aparelho."</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Chamadas telefônicas"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"Personalizado"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"Página inicial"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"Celular"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"Comercial"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Fax comercial"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Fax residencial"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"Pager"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"Outros"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"Retorno de chamada"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"Carro"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Empresa (principal)"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"Principal"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Outro fax"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"Rádio"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"Telex"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Celular comercial"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"Pager comercial"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"Assistente"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"Aniversário"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"Data comemorativa"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"Evento"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"Personalizado"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"Página inicial"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"Comercial"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"Outros"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"Celular"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"Personalizado"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"Página inicial"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"Comercial"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"Outros"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"Personalizado"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"Página inicial"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"Comercial"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"Outros"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"Personalizado"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google Talk"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"Comercial"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"Outros"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"Personalizado"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"por meio de <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"Digite o código PIN"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"Código PIN incorreto!"</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"Para desbloquear, pressione Menu e, em seguida, 0."</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"Tente novamente"</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"Carregando (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"Carregado."</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"Conecte o seu carregador."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Sem cartão SIM."</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Não há um cartão SIM no telefone."</string>
@@ -530,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"Carregando..."</string>
     <string name="battery_low_title" msgid="7923774589611311406">"Conecte o carregador"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"A bateria está ficando baixa:"</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"<xliff:g id="NUMBER">%d%%</xliff:g> ou menos restante(s)."</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"Uso da bateria"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"Falha no teste de fábrica"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"A ação FACTORY_TEST é suportada apenas para pacotes instalados em /system/app."</string>
@@ -540,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"Deseja sair desta página?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Selecione OK para continuar ou Cancelar para permanecer na página atual."</string>
     <string name="save_password_label" msgid="6860261758665825069">"Confirmar"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"Dica: toque duas vezes para aumentar e diminuir o zoom."</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"ler histórico e favoritos do Navegador"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Permite que o aplicativo leia todos os URLs visitados pelo Navegador e todos os favoritos do Navegador."</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"gravar histórico e favoritos do Navegador"</string>
@@ -745,8 +803,10 @@
     <string name="extmedia_format_message" msgid="3621369962433523619">"Tem certeza de que deseja formatar o cartão SD? Todos os dados no seu cartão serão perdidos."</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"Formatar"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"Depuração USB conectada"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"Selecione para desativar a depuração USB."</string>
-    <string name="select_input_method" msgid="6865512749462072765">"Selecionar método de entrada"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"candidatos"</u></string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"Criar contato "\n"usando <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"selecionado"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"não selecionado"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"Permitir"</string>
     <string name="deny" msgid="2081879885755434506">"Negar"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"Autorização solicitada"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"Solicitada a permissão"\n"para a conta <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"Método de entrada"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"Sincronizar"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"Acessibilidade"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"Papel de parede"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"Alterar papel de parede"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"Protocolo de encapsulamento ponto a ponto"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"Protocolo de encapsulamento de camada 2"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"VPN L2TP/IPSec com base em chave pré-compartilhada"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"VPN L2TP/IPSec com base em certificado"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 56b75fc..373c45e 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"Не удается получить доступ к файлу."</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"Не удалось найти указанные файлы."</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"Обрабатывается слишком много запросов. Повторите попытку позднее."</string>
-    <string name="notification_title" msgid="1259940370369187045">"Ошибка входа (<xliff:g id="ACCOUNT">%1$s</xliff:g>)"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"Синхр."</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Синхр."</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Слишком много удалений <xliff:g id="CONTENT_TYPE">%s</xliff:g>."</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"Отслеживание физического местоположения"</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"Сетевой обмен данными"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"Позволяет приложениям получать доступ к различным сетевым функциям."</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"Ваши аккаунты"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Доступ к имеющимся аккаунтам."</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Элементы управления аппаратным обеспечением"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Прямой доступ к аппаратному обеспечению телефона."</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Телефонные вызовы"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"Особый"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"Дом"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"Моб."</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"Раб."</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Раб. факс"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Дом. факс"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"Пейджер"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"Другой"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"Обр. вызов"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"В авто"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Раб., осн."</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"Основной"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Доп. факс"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"Радио"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"Телекс"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"Телетайп"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Раб. моб."</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"Рабочий пейджер"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"Секретарь"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"День рождения"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"Юбилей"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"Мероприятие"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"Особый"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"Дом"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"Раб."</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"Другой"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"Моб."</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"Особый"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"Дом"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"Раб."</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"Другой"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"Особый"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"Дом"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"Раб."</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"Другой"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"Особый"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google Talk"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"Раб."</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"Другой"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"Особый"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"с помощью <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="DATE">%1$s</xliff:g> с помощью <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"Введите PIN-код"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"Неверный PIN-код!"</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"Для разблокировки нажмите \"Меню\", а затем 0."</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"Повторите попытку"</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"Идет зарядка (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"Заряжена."</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"Подключите зарядное устройство."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Нет SIM-карты."</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"SIM-карта не установлена."</string>
@@ -530,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"Идет зарядка..."</string>
     <string name="battery_low_title" msgid="7923774589611311406">"Подключите зарядное устройство"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"Батарея разряжена:"</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"Осталось <xliff:g id="NUMBER">%d%%</xliff:g> или меньше."</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"Расход заряда батареи"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"Не удалось провести стандартный тест"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"Действие FACTORY_TEST поддерживается только для пакетов, установленных в /system/app."</string>
@@ -540,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"Перейти с этой страницы?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Нажмите \"ОК\", чтобы продолжить, или \"Отмена\", чтобы остаться на текущей странице."</string>
     <string name="save_password_label" msgid="6860261758665825069">"Подтвердите"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"Совет: нажмите дважды, чтобы увеличить и уменьшить масштаб."</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"считывать историю и закладки браузера"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Разрешает приложению считывать все URL, посещенные браузером, и все его закладки."</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"записывать историю и закладки браузера"</string>
@@ -745,8 +803,10 @@
     <string name="extmedia_format_message" msgid="3621369962433523619">"Отформатировать карту SD? Все данные, находящиеся на карте, будут уничтожены."</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"Формат"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"Отладка USB подключена"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"Нажмите, чтобы отключить отладку USB."</string>
-    <string name="select_input_method" msgid="6865512749462072765">"Выберите способ ввода"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"варианты"</u></string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"Создать контакт"\n"с номером <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"отмечено"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"не проверено"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"Разрешить"</string>
     <string name="deny" msgid="2081879885755434506">"Отклонить"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"Разрешение запрошено"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"Требуется разрешение"\n"для аккаунта <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"Способ ввода"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"Синхр."</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"Специальные возможности"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"Фоновый рисунок"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"Изменить фоновый рисунок"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"Протокол PPTP"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"Протокол L2TP"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"L2TP/IPSec VPN (на основе предв. общ. ключа)"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"L2TP/IPSec VPN (на основе сертификата)"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 3e32b15..db77ee1 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"Det gick inte att komma åt filen."</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"Den begärda filen hittades inte."</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"För många begäranden bearbetas. Försök igen senare."</string>
-    <string name="notification_title" msgid="1259940370369187045">"Inloggningsfel för <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"Synkronisera"</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Synkronisera"</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"För många <xliff:g id="CONTENT_TYPE">%s</xliff:g>-borttagningar."</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"Övervaka din fysiska plats"</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"Nätverkskommunikation"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"Tillåt att program kommer åt olika nätverksfunktioner."</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"Dina konton"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Få åtkomst till tillgängliga konton."</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Kontroller för maskinvara"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Direkt åtkomst till maskinvara på handenheten."</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Telefonsamtal"</string>
@@ -316,7 +319,7 @@
     <string name="permlab_callPrivileged" msgid="4198349211108497879">"ringa telefonnummer direkt"</string>
     <string name="permdesc_callPrivileged" msgid="244405067160028452">"Tillåter att programmet ringer ett telefonnummer, inklusive nödnummer, utan att du behöver göra något. Skadliga program kan ringa onödiga och olagliga samtal till räddningtjänsten."</string>
     <string name="permlab_performCdmaProvisioning" msgid="5604848095315421425">"starta CDMA-telefoninställningar direkt"</string>
-    <string name="permdesc_performCdmaProvisioning" msgid="6457447676108355905">"Tillåter att programmet startar CDMA-anslutning. Skadliga program kan starta CDMA-anslutningar i onödan."</string>
+    <string name="permdesc_performCdmaProvisioning" msgid="6457447676108355905">"Tillåter att programmet startar CDMA-anslutning. Skadliga program kan skada CDMA-anslutningar i onödan."</string>
     <string name="permlab_locationUpdates" msgid="7785408253364335740">"styra meddelanden för platsuppdatering"</string>
     <string name="permdesc_locationUpdates" msgid="2300018303720930256">"Tillåter aktivering och inaktivering av avisering om platsuppdatering i radion. Används inte av vanliga program."</string>
     <string name="permlab_checkinProperties" msgid="7855259461268734914">"få åtkomst till incheckningsegenskaper"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"Anpassad"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"Hem"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"Mobil"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"Arbete"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Arbetsfax"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Hemfax"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"Personsökare"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"Övrigt"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"Återuppringning"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"Bil"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Nummer till företag"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"Telefonnummer"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Annat faxnummer"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"Radio"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"Telex"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Mobiltelefon, arbetet"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"Personsökare, arbetet"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"Assistent"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"Födelsedag"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"Högtidsdag"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"Händelse"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"Anpassad"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"Hem"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"Arbete"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"Övrigt"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"Mobil"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"Anpassad"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"Hem"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"Arbete"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"Övrigt"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"Anpassad"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"Hem"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"Arbete"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"Övrigt"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"Anpassad"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google Talk"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"Arbete"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"Övrigt"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"Anpassad"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"Ange PIN-kod"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"Fel PIN-kod!"</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"Tryck på Meny och sedan på 0 om du vill låsa upp."</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"Försök igen"</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"Laddar (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"Laddad."</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"Anslut din laddare."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Inget SIM-kort."</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Inget SIM-kort i telefonen."</string>
@@ -530,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"Laddar…"</string>
     <string name="battery_low_title" msgid="7923774589611311406">"Anslut laddaren"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"Batteriet håller på att ta slut:"</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"<xliff:g id="NUMBER">%d%%</xliff:g> eller mindre kvar."</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"Batteriförbrukning"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"Det gick fel vid fabrikstestet"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"Åtgärden FACTORY_TEST stöds endast för paket som har installerats i /system/app."</string>
@@ -540,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"Vill du lämna den här den här sidan?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Tryck på OK om du vill fortsätta eller på Avbryt om du vill vara kvar på den aktuella sidan."</string>
     <string name="save_password_label" msgid="6860261758665825069">"Bekräfta"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"Tips! Dubbelklicka om du vill zooma in eller ut."</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"läsa webbläsarhistorik och bokmärken"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Tillåter att program läser alla webbadresser som webbläsaren har öppnat och alla webbläsarens bokmärken."</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"skriva webbläsarhistorik och bokmärken"</string>
@@ -745,8 +803,10 @@
     <string name="extmedia_format_message" msgid="3621369962433523619">"Vill du formatera SD-kortet? Alla data på ditt kort kommer att gå förlorade."</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"Format"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"USB-felsökning ansluten"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"Välj att inaktivera USB-felsökning."</string>
-    <string name="select_input_method" msgid="6865512749462072765">"Välj indatametod"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"kandidater"</u></string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"Skapa kontakt"\n"med <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"markerad"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"inte markerad"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"Tillåt"</string>
     <string name="deny" msgid="2081879885755434506">"Neka"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"Begärd behörighet"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"Behörighet krävs"\n"för kontot <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"Indatametod"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"Synkronisera"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"Tillgänglighet"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"Bakgrund"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"Ändra bakgrund"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"Point-to-Point Tunneling Protocol"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"Layer 2 Tunneling Protocol"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"I förväg delad L2TP/IPSec VPN-nyckel"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"Certifikatsbaserad L2TP/IPSec VPN"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index cae0c03..503ad7d 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"Dosyaya erişilemedi."</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"İstenen dosya bulunamadı."</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"Çok fazla sayıda istek işleniyor. Daha sonra yeniden deneyin."</string>
-    <string name="notification_title" msgid="1259940370369187045">"<xliff:g id="ACCOUNT">%1$s</xliff:g> hesabı için oturum açma hatası"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"Senk."</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"Senk."</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"Çok fazla <xliff:g id="CONTENT_TYPE">%s</xliff:g> silme var."</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"Fiziksel konumunuzu izleyin"</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"Ağ iletişimi"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"Uygulamaların çeşitli ağ özelliklerine erişmesine izin verir."</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"Hesaplarınız"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"Kullanılabilir hesaplara erişin."</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Donanım denetimleri"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"Telefon donanımına doğrudan erişim."</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"Telefon çağrıları"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"Özel"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"Ev"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"Mobil"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"İş"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"İş Faksı"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Ev Faksı"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"Çağrı cihazı"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"Diğer"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"Geri Arama"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"Araç"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Şirket Merkezi"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"Ana"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Diğer Faks"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"Telsiz"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"Teleks"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"İş Yeri Cep Telefonu"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"İş Yeri Çağrı Cihazı"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"Yardımcı"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"Doğum günü"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"Yıldönümü"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"Etkinlik"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"Özel"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"Ev"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"İş"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"Diğer"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"Mobil"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"Özel"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"Ev"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"İş"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"Diğer"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"Özel"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"Ev"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"İş"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"Diğer"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"Özel"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google Talk"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"İş"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"Diğer"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"Özel"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"<xliff:g id="SOURCE">%1$s</xliff:g> aracılığıyla"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="SOURCE">%2$s</xliff:g> ile <xliff:g id="DATE">%1$s</xliff:g> tarihinde"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"PIN kodunu gir"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"Yanlış PIN kodu!"</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"Kilidi açmak için önce Menü\'ye, sonra 0\'a basın."</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"Üzgünüz, lütfen yeniden deneyin"</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"Şarj oluyor (<xliff:g id="PERCENT">%%</xliff:g><xliff:g id="NUMBER">%d</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"Şarj oldu."</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"Şarj cihazınızı bağlayın."</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"SIM kart yok."</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Telefonda SIM kart yok."</string>
@@ -530,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"Şarj oluyor…"</string>
     <string name="battery_low_title" msgid="7923774589611311406">"Lütfen şarj cihazını takın"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"Pil tükeniyor:"</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"<xliff:g id="NUMBER">%d%%</xliff:g> veya daha az kaldı."</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"Pil kullanımı"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"Fabrika testi yapılamadı"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"FACTORY_TEST işlemi yalnızca /system/app dizinine yüklenmiş paketler için desteklenir."</string>
@@ -540,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"Bu sayfadan ayrılıyor musunuz?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Devam etmek için Tamam\'ı, sayfada kalmak için İptal\'i tıklatın."</string>
     <string name="save_password_label" msgid="6860261758665825069">"Onayla"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"İpucu: Yakınlaştırmak ve uzaklaştırmak için iki kez hafifçe vurun."</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"Tarayıcı geçmişini ve favorileri oku"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Uygulamaya Tarayıcının ziyaret etmiş olduğu tüm URL\'leri ve Tarayıcının tüm favorilerini okuma izni verir."</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"Tarayıcı geçmişini ve favorileri yaz"</string>
@@ -745,8 +803,10 @@
     <string name="extmedia_format_message" msgid="3621369962433523619">"SD kartı biçimlendirmek istediğinizden emin misiniz? Kartınızdaki tüm veriler yok olacak."</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"Biçimlendir"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"USB hata ayıklaması bağlandı"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"USB hata ayıklamasını devre dışı bırakmak için tıklayın."</string>
-    <string name="select_input_method" msgid="6865512749462072765">"Giriş yöntemini seç"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"adaylar"</u></string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"<xliff:g id="NUMBER">%s</xliff:g>"\n" ile kişi oluştur"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"seçildi"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"seçilmedi"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"İzin Ver"</string>
     <string name="deny" msgid="2081879885755434506">"Reddet"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"İzin İstendi"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"<xliff:g id="ACCOUNT">%s</xliff:g> hesabı için"\n"İzin İstendi"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"Giriş yöntemi"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"Senkronizasyon"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"Erişebilirlik"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"Duvar Kağıdı"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"Duvar kağıdını değiştir"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"Noktadan Noktaya Tünel Protokolü Kuralları"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"Katman 2 Tünel Protokolü"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"L2TP/IPSec VPN temelli önceden paylaşılmış anahtar"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"L2TP/IPSec VPN temelli sertifika"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 6620a60..474fffc 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"无法访问该文件。"</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"找不到请求的文件。"</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"正在处理的请求太多,请稍后重试。"</string>
-    <string name="notification_title" msgid="1259940370369187045">"<xliff:g id="ACCOUNT">%1$s</xliff:g> 发生登录错误"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"同步"</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"同步"</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"太多<xliff:g id="CONTENT_TYPE">%s</xliff:g>删除项。"</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"监视您的物理位置"</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"网络通信"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"允许应用程序访问各种网络功能。"</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"您的帐户"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"访问可用的帐户。"</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"硬件控制"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"直接访问手机上的硬件。"</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"手机通话"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"自定义"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"住宅"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"手机"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"单位"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"单位传真"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"住宅传真"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"寻呼机"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"其他"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"回拨号码"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"车载电话"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"公司总机"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"总机"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"其他传真"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"无线装置"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"电报"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"单位手机"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"单位寻呼机"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"助理"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"彩信"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"生日"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"周年纪念"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"活动"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"自定义"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"住宅"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"单位"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"其他"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"手机"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"自定义"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"住宅"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"单位"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"其他"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"自定义"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"住宅"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"单位"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"其他"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"自定义"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"雅虎"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google Talk"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"公司"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"其他"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"自定义"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"通过 <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"时间:<xliff:g id="DATE">%1$s</xliff:g>,方式:<xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"输入 PIN 码"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"PIN 码不正确!"</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"要解锁,请先按 MENU 再按 0。"</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"很抱歉,请重试"</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"正在充电 (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"已充满。"</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"连接您的充电器。"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"没有 SIM 卡"</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"手机中无 SIM 卡"</string>
@@ -530,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"正在充电..."</string>
     <string name="battery_low_title" msgid="7923774589611311406">"请连接充电器"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"电量在减少:"</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"电量剩余 <xliff:g id="NUMBER">%d%%</xliff:g> 或更少。"</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"电量使用情况"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"出厂测试失败"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"只有 /system/app 中安装的包支持 FACTORY_TEST 操作。"</string>
@@ -540,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"是否从该页面导航至它处?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"选择“确定”继续,或选择“取消”留在当前页面。"</string>
     <string name="save_password_label" msgid="6860261758665825069">"确认"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"提示:点按两次可放大和缩小。"</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"读取浏览器的历史记录和书签"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"允许应用程序读取用浏览器访问过的所有网址,以及浏览器的所有书签。"</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"写入浏览器的历史记录和书签"</string>
@@ -745,8 +803,10 @@
     <string name="extmedia_format_message" msgid="3621369962433523619">"您确定要格式化 SD 卡?卡上的所有数据都会丢失。"</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"格式化"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"已连接 USB 调试"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"选择停用 USB 调试。"</string>
-    <string name="select_input_method" msgid="6865512749462072765">"选择输入法"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"候选"</u></string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"创建电话号码为"\n"<xliff:g id="NUMBER">%s</xliff:g> 的联系人"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"已选中"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"未选中"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"允许"</string>
     <string name="deny" msgid="2081879885755434506">"拒绝"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"已请求权限"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"已为帐户<xliff:g id="ACCOUNT">%s</xliff:g>"\n"请求了权限"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"输入法"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"同步"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"辅助功能"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"壁纸"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"更改壁纸"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"点对点隧道协议"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"第 2 层隧道协议"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"基于预共享密钥的 L2TP/IPSec VPN"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"基于证书的 L2TP/IPSec VPN"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index b9f344e..3542536 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -111,7 +111,8 @@
     <string name="httpErrorFile" msgid="8250549644091165175">"無法存取此檔案。"</string>
     <string name="httpErrorFileNotFound" msgid="5588380756326017105">"找不到要求的檔案。"</string>
     <string name="httpErrorTooManyRequests" msgid="1235396927087188253">"太多執行要求。請稍後再試一次。"</string>
-    <string name="notification_title" msgid="1259940370369187045">"<xliff:g id="ACCOUNT">%1$s</xliff:g>登入錯誤"</string>
+    <!-- no translation found for notification_title (1259940370369187045) -->
+    <skip />
     <string name="contentServiceSync" msgid="8353523060269335667">"同步處理"</string>
     <string name="contentServiceSyncNotificationTitle" msgid="397743349191901458">"同步處理"</string>
     <string name="contentServiceTooManyDeletesNotificationDesc" msgid="8100981435080696431">"同時刪除太多 <xliff:g id="CONTENT_TYPE">%s</xliff:g>。"</string>
@@ -147,8 +148,10 @@
     <string name="permgroupdesc_location" msgid="2430258821648348660">"監視實際位置"</string>
     <string name="permgrouplab_network" msgid="5808983377727109831">"網路通訊"</string>
     <string name="permgroupdesc_network" msgid="5035763698958415998">"允許應用程式存取多項網路功能。"</string>
-    <string name="permgrouplab_accounts" msgid="3359646291125325519">"您的帳戶"</string>
-    <string name="permgroupdesc_accounts" msgid="4948732641827091312">"存取可用帳戶。"</string>
+    <!-- no translation found for permgrouplab_accounts (3359646291125325519) -->
+    <skip />
+    <!-- no translation found for permgroupdesc_accounts (4948732641827091312) -->
+    <skip />
     <string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"硬體控制"</string>
     <string name="permgroupdesc_hardwareControls" msgid="4357057861225462702">"在免持設備上直接存取硬體。"</string>
     <string name="permgrouplab_phoneCalls" msgid="9067173988325865923">"撥打電話"</string>
@@ -432,58 +435,110 @@
     <item msgid="2506857312718630823">"ICQ"</item>
     <item msgid="1648797903785279353">"Jabber"</item>
   </string-array>
-    <string name="phoneTypeCustom" msgid="1644738059053355820">"自訂"</string>
-    <string name="phoneTypeHome" msgid="2570923463033985887">"住家"</string>
-    <string name="phoneTypeMobile" msgid="6501463557754751037">"行動裝置"</string>
-    <string name="phoneTypeWork" msgid="8863939667059911633">"公司"</string>
-    <string name="phoneTypeFaxWork" msgid="3517792160008890912">"公司傳真"</string>
-    <string name="phoneTypeFaxHome" msgid="2067265972322971467">"住家傳真"</string>
-    <string name="phoneTypePager" msgid="7582359955394921732">"呼叫器"</string>
-    <string name="phoneTypeOther" msgid="1544425847868765990">"其他"</string>
-    <string name="phoneTypeCallback" msgid="2712175203065678206">"回撥電話"</string>
-    <string name="phoneTypeCar" msgid="8738360689616716982">"汽車電話"</string>
-    <string name="phoneTypeCompanyMain" msgid="540434356461478916">"公司代表號"</string>
-    <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string>
-    <string name="phoneTypeMain" msgid="6766137010628326916">"代表號"</string>
-    <string name="phoneTypeOtherFax" msgid="8587657145072446565">"其他傳真"</string>
-    <string name="phoneTypeRadio" msgid="4093738079908667513">"無線電"</string>
-    <string name="phoneTypeTelex" msgid="3367879952476250512">"Telex"</string>
-    <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY/TDD"</string>
-    <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"公司行動電話"</string>
-    <string name="phoneTypeWorkPager" msgid="649938731231157056">"公司呼叫器"</string>
-    <string name="phoneTypeAssistant" msgid="5596772636128562884">"助理"</string>
-    <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string>
-    <string name="eventTypeBirthday" msgid="2813379844211390740">"生日"</string>
-    <string name="eventTypeAnniversary" msgid="3876779744518284000">"週年紀念日"</string>
-    <string name="eventTypeOther" msgid="5834288791948564594">"活動"</string>
-    <string name="emailTypeCustom" msgid="8525960257804213846">"自訂"</string>
-    <string name="emailTypeHome" msgid="449227236140433919">"住家"</string>
-    <string name="emailTypeWork" msgid="3548058059601149973">"公司"</string>
-    <string name="emailTypeOther" msgid="2923008695272639549">"其他"</string>
-    <string name="emailTypeMobile" msgid="119919005321166205">"行動裝置"</string>
-    <string name="postalTypeCustom" msgid="8903206903060479902">"自訂"</string>
-    <string name="postalTypeHome" msgid="8165756977184483097">"住家"</string>
-    <string name="postalTypeWork" msgid="5268172772387694495">"公司"</string>
-    <string name="postalTypeOther" msgid="2726111966623584341">"其他"</string>
-    <string name="imTypeCustom" msgid="2074028755527826046">"自訂"</string>
-    <string name="imTypeHome" msgid="6241181032954263892">"住家"</string>
-    <string name="imTypeWork" msgid="1371489290242433090">"公司"</string>
-    <string name="imTypeOther" msgid="5377007495735915478">"其他"</string>
-    <string name="imProtocolCustom" msgid="6919453836618749992">"自訂"</string>
-    <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string>
-    <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string>
-    <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string>
-    <string name="imProtocolSkype" msgid="9019296744622832951">"Skype"</string>
-    <string name="imProtocolQq" msgid="8887484379494111884">"QQ"</string>
-    <string name="imProtocolGoogleTalk" msgid="3808393979157698766">"Google Talk"</string>
-    <string name="imProtocolIcq" msgid="1574870433606517315">"ICQ"</string>
-    <string name="imProtocolJabber" msgid="2279917630875771722">"Jabber"</string>
-    <string name="imProtocolNetMeeting" msgid="8287625655986827971">"網路會議"</string>
-    <string name="orgTypeWork" msgid="29268870505363872">"公司"</string>
-    <string name="orgTypeOther" msgid="3951781131570124082">"其他"</string>
-    <string name="orgTypeCustom" msgid="225523415372088322">"自訂"</string>
-    <string name="contact_status_update_attribution" msgid="5112589886094402795">"透過 <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
-    <string name="contact_status_update_attribution_with_date" msgid="5945386376369979909">"<xliff:g id="DATE">%1$s</xliff:g>透過「<xliff:g id="SOURCE">%2$s</xliff:g>」"</string>
+    <!-- no translation found for phoneTypeCustom (1644738059053355820) -->
+    <skip />
+    <!-- no translation found for phoneTypeHome (2570923463033985887) -->
+    <skip />
+    <!-- no translation found for phoneTypeMobile (6501463557754751037) -->
+    <skip />
+    <!-- no translation found for phoneTypeWork (8863939667059911633) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxWork (3517792160008890912) -->
+    <skip />
+    <!-- no translation found for phoneTypeFaxHome (2067265972322971467) -->
+    <skip />
+    <!-- no translation found for phoneTypePager (7582359955394921732) -->
+    <skip />
+    <!-- no translation found for phoneTypeOther (1544425847868765990) -->
+    <skip />
+    <!-- no translation found for phoneTypeCallback (2712175203065678206) -->
+    <skip />
+    <!-- no translation found for phoneTypeCar (8738360689616716982) -->
+    <skip />
+    <!-- no translation found for phoneTypeCompanyMain (540434356461478916) -->
+    <skip />
+    <!-- no translation found for phoneTypeIsdn (8022453193171370337) -->
+    <skip />
+    <!-- no translation found for phoneTypeMain (6766137010628326916) -->
+    <skip />
+    <!-- no translation found for phoneTypeOtherFax (8587657145072446565) -->
+    <skip />
+    <!-- no translation found for phoneTypeRadio (4093738079908667513) -->
+    <skip />
+    <!-- no translation found for phoneTypeTelex (3367879952476250512) -->
+    <skip />
+    <!-- no translation found for phoneTypeTtyTdd (8606514378585000044) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkMobile (1311426989184065709) -->
+    <skip />
+    <!-- no translation found for phoneTypeWorkPager (649938731231157056) -->
+    <skip />
+    <!-- no translation found for phoneTypeAssistant (5596772636128562884) -->
+    <skip />
+    <!-- no translation found for phoneTypeMms (7254492275502768992) -->
+    <skip />
+    <!-- no translation found for eventTypeBirthday (2813379844211390740) -->
+    <skip />
+    <!-- no translation found for eventTypeAnniversary (3876779744518284000) -->
+    <skip />
+    <!-- no translation found for eventTypeOther (5834288791948564594) -->
+    <skip />
+    <!-- no translation found for emailTypeCustom (8525960257804213846) -->
+    <skip />
+    <!-- no translation found for emailTypeHome (449227236140433919) -->
+    <skip />
+    <!-- no translation found for emailTypeWork (3548058059601149973) -->
+    <skip />
+    <!-- no translation found for emailTypeOther (2923008695272639549) -->
+    <skip />
+    <!-- no translation found for emailTypeMobile (119919005321166205) -->
+    <skip />
+    <!-- no translation found for postalTypeCustom (8903206903060479902) -->
+    <skip />
+    <!-- no translation found for postalTypeHome (8165756977184483097) -->
+    <skip />
+    <!-- no translation found for postalTypeWork (5268172772387694495) -->
+    <skip />
+    <!-- no translation found for postalTypeOther (2726111966623584341) -->
+    <skip />
+    <!-- no translation found for imTypeCustom (2074028755527826046) -->
+    <skip />
+    <!-- no translation found for imTypeHome (6241181032954263892) -->
+    <skip />
+    <!-- no translation found for imTypeWork (1371489290242433090) -->
+    <skip />
+    <!-- no translation found for imTypeOther (5377007495735915478) -->
+    <skip />
+    <!-- no translation found for imProtocolCustom (6919453836618749992) -->
+    <skip />
+    <!-- no translation found for imProtocolAim (7050360612368383417) -->
+    <skip />
+    <!-- no translation found for imProtocolMsn (144556545420769442) -->
+    <skip />
+    <!-- no translation found for imProtocolYahoo (8271439408469021273) -->
+    <skip />
+    <!-- no translation found for imProtocolSkype (9019296744622832951) -->
+    <skip />
+    <!-- no translation found for imProtocolQq (8887484379494111884) -->
+    <skip />
+    <!-- no translation found for imProtocolGoogleTalk (3808393979157698766) -->
+    <skip />
+    <!-- no translation found for imProtocolIcq (1574870433606517315) -->
+    <skip />
+    <!-- no translation found for imProtocolJabber (2279917630875771722) -->
+    <skip />
+    <!-- no translation found for imProtocolNetMeeting (8287625655986827971) -->
+    <skip />
+    <!-- no translation found for orgTypeWork (29268870505363872) -->
+    <skip />
+    <!-- no translation found for orgTypeOther (3951781131570124082) -->
+    <skip />
+    <!-- no translation found for orgTypeCustom (225523415372088322) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution (5112589886094402795) -->
+    <skip />
+    <!-- no translation found for contact_status_update_attribution_with_date (5945386376369979909) -->
+    <skip />
     <string name="keyguard_password_enter_pin_code" msgid="3731488827218876115">"輸入 PIN 碼"</string>
     <string name="keyguard_password_wrong_pin_code" msgid="1295984114338107718">"PIN 碼錯誤!"</string>
     <string name="keyguard_label_text" msgid="861796461028298424">"如要解鎖,請按 Menu 鍵,然後按 0。"</string>
@@ -498,7 +553,8 @@
     <string name="lockscreen_pattern_wrong" msgid="4817583279053112312">"很抱歉,請再試一次"</string>
     <string name="lockscreen_plugged_in" msgid="613343852842944435">"正在充電 (<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>)"</string>
     <string name="lockscreen_charged" msgid="4938930459620989972">"充電完成。"</string>
-    <string name="lockscreen_battery_short" msgid="3617549178603354656">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
+    <!-- no translation found for lockscreen_battery_short (3617549178603354656) -->
+    <skip />
     <string name="lockscreen_low_battery" msgid="1482873981919249740">"請連接充電器。"</string>
     <string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"沒有 SIM  卡。"</string>
     <string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"手機未插入 SIM 卡。"</string>
@@ -530,7 +586,8 @@
     <string name="battery_status_charging" msgid="756617993998772213">"充電中"</string>
     <string name="battery_low_title" msgid="7923774589611311406">"請連接充電器"</string>
     <string name="battery_low_subtitle" msgid="7388781709819722764">"電池電量即將不足:"</string>
-    <string name="battery_low_percent_format" msgid="696154104579022959">"還剩 <xliff:g id="NUMBER">%d%%</xliff:g> 以下。"</string>
+    <!-- no translation found for battery_low_percent_format (696154104579022959) -->
+    <skip />
     <string name="battery_low_why" msgid="7279169609518386372">"電池使用狀況"</string>
     <string name="factorytest_failed" msgid="5410270329114212041">"出廠測試失敗"</string>
     <string name="factorytest_not_system" msgid="4435201656767276723">"只有安裝在 /system/app 裡的程式才能支援 FACTORY_TEST 操作。"</string>
@@ -540,7 +597,8 @@
     <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
     <string name="js_dialog_before_unload" msgid="1901675448179653089">"離開此頁?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n" 選取 [確定] 離開此頁;或 [取消] 留在此頁。"</string>
     <string name="save_password_label" msgid="6860261758665825069">"確認"</string>
-    <string name="double_tap_toast" msgid="1068216937244567247">"提示:輕按兩下可放大縮小。"</string>
+    <!-- no translation found for double_tap_toast (1068216937244567247) -->
+    <skip />
     <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"讀取瀏覽器的記錄與書籤"</string>
     <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"允許應用程式讀取瀏覽器曾經造訪過的所有網址,以及瀏覽器的所有書籤。"</string>
     <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"寫入瀏覽器的記錄與書籤"</string>
@@ -745,8 +803,10 @@
     <string name="extmedia_format_message" msgid="3621369962433523619">"確定要將 SD 卡格式化嗎?該 SD 卡中的所有資料將會遺失。"</string>
     <string name="extmedia_format_button_format" msgid="4131064560127478695">"格式化"</string>
     <string name="adb_active_notification_title" msgid="6729044778949189918">"USB 偵錯模式已啟用"</string>
-    <string name="adb_active_notification_message" msgid="8470296818270110396">"選取以停用 USB 偵錯。"</string>
-    <string name="select_input_method" msgid="6865512749462072765">"選取輸入方式"</string>
+    <!-- no translation found for adb_active_notification_message (8470296818270110396) -->
+    <skip />
+    <!-- no translation found for select_input_method (6865512749462072765) -->
+    <skip />
     <string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
     <string name="candidates_style" msgid="4333913089637062257"><u>"待選項目"</u></string>
@@ -777,25 +837,22 @@
     <string name="create_contact_using" msgid="4947405226788104538">"建立手機號碼為 <xliff:g id="NUMBER">%s</xliff:g>"\n"的聯絡人"</string>
     <string name="accessibility_compound_button_selected" msgid="5612776946036285686">"已勾選"</string>
     <string name="accessibility_compound_button_unselected" msgid="8864512895673924091">"未勾選"</string>
-    <!-- no translation found for grant_credentials_permission_message_header (6824538733852821001) -->
-    <skip />
-    <!-- no translation found for grant_credentials_permission_message_footer (3125211343379376561) -->
-    <skip />
-    <!-- no translation found for grant_permissions_header_text (2722567482180797717) -->
-    <skip />
     <string name="allow" msgid="7225948811296386551">"允許"</string>
     <string name="deny" msgid="2081879885755434506">"拒絕"</string>
     <string name="permission_request_notification_title" msgid="5390555465778213840">"已要求權限"</string>
-    <string name="permission_request_notification_with_subtitle" msgid="4325409589686688000">"帳戶 <xliff:g id="ACCOUNT">%s</xliff:g> 的"\n"權限要求"</string>
+    <!-- no translation found for permission_request_notification_with_subtitle (4325409589686688000) -->
+    <skip />
     <string name="input_method_binding_label" msgid="1283557179944992649">"輸入方式"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"同步處理"</string>
     <string name="accessibility_binding_label" msgid="4148120742096474641">"協助工具"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"桌布"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"變更桌布"</string>
-    <string name="pptp_vpn_description" msgid="2688045385181439401">"點對點通道通訊協定"</string>
-    <string name="l2tp_vpn_description" msgid="3750692169378923304">"第二層通道通訊協定"</string>
-    <string name="l2tp_ipsec_psk_vpn_description" msgid="3945043564008303239">"採用預先共用金鑰的 L2TP/IPSec VPN"</string>
-    <string name="l2tp_ipsec_crt_vpn_description" msgid="5382714073103653577">"採用憑證的 L2TP/IPSec VPN"</string>
-    <!-- no translation found for upload_file (2897957172366730416) -->
+    <!-- no translation found for pptp_vpn_description (2688045385181439401) -->
+    <skip />
+    <!-- no translation found for l2tp_vpn_description (3750692169378923304) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_psk_vpn_description (3945043564008303239) -->
+    <skip />
+    <!-- no translation found for l2tp_ipsec_crt_vpn_description (5382714073103653577) -->
     <skip />
 </resources>
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 62529f1..c6ef3a0 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -78,7 +78,14 @@
          turned on by default unless explicitly set to false 
          by applications. -->
     <attr name="allowClearUserData" format="boolean" />
-    
+
+    <!-- Option to let applications specify that user data should
+         never be encrypted if an Encrypted File System solution
+         is enabled. Specifically, this is an "opt-out" feature, meaning
+         that, by default, user data will be encrypted if the EFS feature
+         is enabled.-->
+    <attr name="neverEncrypt" format="boolean" />
+
     <!-- Option to indicate this application is only for testing purposes.
          For example, it may expose functionality or data outside of itself
          that would cause a security hole, but is useful for testing.  This
@@ -671,6 +678,7 @@
         <attr name="allowBackup" />
         <attr name="killAfterRestore" />
         <attr name="restoreNeedsApplication" />
+        <attr name="neverEncrypt" />
     </declare-styleable>
     
     <!-- The <code>permission</code> tag declares a security permission that can be
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 0b6f97e..cc54ba3 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -46,26 +46,30 @@
 
     <!-- XXXXX NOTE THE FOLLOWING RESOURCES USE THE WRONG NAMING CONVENTION.
          Please don't copy them, copy anything else. -->
-         
-    <!-- This string array should be overridden by the device to present a list of network attributes.  This is used by the connectivity manager to decide which networks can coexist based on the hardward -->
-    <!-- An Array of "[type-name],[associated radio-name],[priority]  -->
+
+    <!-- This string array should be overridden by the device to present a list of network
+         attributes.  This is used by the connectivity manager to decide which networks can coexist
+         based on the hardware -->
+    <!-- An Array of "[Connection name],[ConnectivityManager connection type],
+         [associated radio-type],[priority]  -->
     <string-array translatable="false" name="networkAttributes">
-        <item>"default,wifi,0"</item>
-        <item>"default,mobile,0"</item>
-        <item>"mms,mobile,1"</item>
-        <item>"supl,mobile,1"</item>
-        <item>"dun,mobile,1"</item>
-        <item>"hipri,mobile,2"</item>
+        <item>"wifi,1,1,1"</item>
+        <item>"mobile,0,0,0"</item>
+        <item>"mobile_mms,2,0,2"</item>
+        <item>"mobile_supl,3,0,2"</item>
+        <item>"mobile_hipri,5,0,3"</item>
     </string-array>
 
-    <!-- This string array should be overridden by the device to present a list of radio attributes.  This is used by the connectivity manager to decide which networks can coexist based on the hardware -->
-    <!-- An Array of "[radio-name],[priority]                        -->
-    <!--              [# simultaneous connection types]"             -->
+    <!-- This string array should be overridden by the device to present a list of radio
+         attributes.  This is used by the connectivity manager to decide which networks can coexist
+         based on the hardware -->
+    <!-- An Array of "[ConnectivityManager connectionType],
+                      [# simultaneous connection types]"  -->
     <string-array translatable="false" name="radioAttributes">
-        <item>"wifi,1,1"</item>
-        <item>"mobile,0,1"</item>
+        <item>"1,1"</item>
+        <item>"0,1"</item>
     </string-array>
-    
+
     <!-- Flag indicating whether the keyguard should be bypassed when
          the slider is open.  This can be set or unset depending how easily
          the slider can be opened (for example, in a pocket or purse). -->
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 311930a..058400f 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -1215,4 +1215,10 @@
   <public type="attr" name="author" id="0x010102b4" />
   <public type="attr" name="autoStart" id="0x010102b5" />
   
+<!-- ===============================================================
+Resources proposed for Flan.
+ =============================================================== -->
+  <eat-comment />
+  <public type="attr" name="neverEncrypt" />
+
 </resources>
diff --git a/docs/html/guide/appendix/app-intents.jd b/docs/html/guide/appendix/app-intents.jd
index 102183b..110196c 100644
--- a/docs/html/guide/appendix/app-intents.jd
+++ b/docs/html/guide/appendix/app-intents.jd
@@ -97,7 +97,7 @@
        the fisheye lens effect that would be present if a 90 degree horizontal                             
        FOV was used in portrait mode.</td></tr>
        <tr><td>mapZoom</td><td>The map zoom of the map location associated with this panorama. This value is passed on to the
-       Maps activity when the Street View "Go to Maps" menu item is chosen. It corresponds to the <em>z</em> paramaeter in
+       Maps activity when the Street View "Go to Maps" menu item is chosen. It corresponds to the <em>z</em> parameter in
        the geo: intent.</td></tr>
        </table>
           </td>
diff --git a/docs/html/guide/appendix/faq/commontasks.jd b/docs/html/guide/appendix/faq/commontasks.jd
index e88a867..c4fc52a 100644
--- a/docs/html/guide/appendix/faq/commontasks.jd
+++ b/docs/html/guide/appendix/faq/commontasks.jd
@@ -328,7 +328,7 @@
 <p>The listening classes, called broadcast receivers, extend {@link android.content.BroadcastReceiver
     BroadcastReceiver}. If you want Android to instantiate the object whenever an appropriate
     intent notification is sent, define the receiver with a <code>&lt;receiver&gt;</code> element
-    in the AndroidManifext.xml file. If the caller is expected to instantiate the
+    in the AndroidManifest.xml file. If the caller is expected to instantiate the
     object in preparation to receive a message, this is not required. The receiver
     will get a call to their {@link android.content.BroadcastReceiver#onReceive(android.content.Context,android.content.Intent)
     BroadcastReceiver.onReceive()} method. A receiver can define an <code>&lt;intent-filter&gt;</code> tag
@@ -468,7 +468,7 @@
 };
 
 
-private void IncomingMotherInlawCall(Connection c) {
+private void IncomingMotherInLawCall(Connection c) {
     String Text;
     
     // &quot;Answer&quot; callback.
@@ -486,7 +486,7 @@
     new AlertDialog.Builder(this)
       .setMessage("Phyllis is calling")
       .setPositiveButton("Answer", acceptMsg)
-      .setOnCanceListener(new OnCancelListener() {
+      .setOnCancelListener(new OnCancelListener() {
         public void onCancel(DialogInterface dialog) {
           rejectMsg.sendToTarget();
         }});
diff --git a/docs/html/guide/appendix/g-app-intents.jd b/docs/html/guide/appendix/g-app-intents.jd
index d4f97c8..2846859 100644
--- a/docs/html/guide/appendix/g-app-intents.jd
+++ b/docs/html/guide/appendix/g-app-intents.jd
@@ -103,7 +103,7 @@
 effect that would be present if a 90 degree horizontal FOV was used in portrait
 mode.</td></tr>
        <tr><td><em>mapZoom</em></td><td>The map zoom of the map location associated with this panorama. This value is passed on to the
-       Maps activity when the Street View "Go to Maps" menu item is chosen. It corresponds to the <em>z</em> paramaeter in
+       Maps activity when the Street View "Go to Maps" menu item is chosen. It corresponds to the <em>z</em> parameter in
        the geo: intent.</td></tr>
        </table>
           </td>
diff --git a/docs/html/guide/appendix/glossary.jd b/docs/html/guide/appendix/glossary.jd
index ef81631..97669ba 100644
--- a/docs/html/guide/appendix/glossary.jd
+++ b/docs/html/guide/appendix/glossary.jd
@@ -167,7 +167,7 @@
     <dd>An XML file that each application must define, to describe the
     application's package name, version, components (activities, intent
     filters, services), imported libraries, and describes the various
-    activies, and so on. See <a
+    activities, and so on. See <a
     href="{@docRoot}guide/topics/manifest/manifest-intro.html">The
     AndroidManifest.xml File</a> for complete information.</dd>
 
diff --git a/docs/html/guide/developing/eclipse-adt.jd b/docs/html/guide/developing/eclipse-adt.jd
index 667aa9f..c01745e 100644
--- a/docs/html/guide/developing/eclipse-adt.jd
+++ b/docs/html/guide/developing/eclipse-adt.jd
@@ -27,7 +27,7 @@
 <ul>
   <li>It gives you access to other Android development tools from inside the Eclipse IDE. For 
 example, ADT lets you access the many capabilities of the DDMS tool: take screenshots, manage 
-port-forwarding, set breakpoints, and view thread and process informationd irectly from Eclipse.</li>
+port-forwarding, set breakpoints, and view thread and process information directly from Eclipse.</li>
   <li>It provides a New Project Wizard, which helps you quickly create and set up all of the 
 basic files you'll need for a new Android application.</li>
   <li>It automates and simplifies the process of building your Android application.</li>
@@ -145,7 +145,7 @@
 <p>If you will be running your applications only on actual device hardware, you do not 
 need an AVD &mdash; see 
 <a href="{@docRoot}guide/developing/device.html">Developing On a Device</a> for information
-on running your applicaiton.</p>
+on running your application.</p>
 
 <h3 id="CreatingAnAvd">Creating an AVD</h3>
 
diff --git a/docs/html/guide/developing/other-ide.jd b/docs/html/guide/developing/other-ide.jd
index 2080873..d043a7d 100644
--- a/docs/html/guide/developing/other-ide.jd
+++ b/docs/html/guide/developing/other-ide.jd
@@ -239,7 +239,7 @@
 <p class="note"><strong>Note:</strong> When installing JDK on Windows, the default is to install 
 in the "Program Files" directory. This location will cause <code>ant</code> to fail, because of 
 the space. To fix the problem, you can specify the JAVA_HOME variable like this: 
-<code>set JAVA_HOME=c:\Prora~1\Java\<jdkdir></code>. The easiest solution, however, is to 
+<code>set JAVA_HOME=c:\Progra~1\Java\<jdkdir></code>. The easiest solution, however, is to 
 install JDK in a non-space directory, for example: <code>c:\java\jdk1.6.0_02</code>.</p>
 
 
diff --git a/docs/html/guide/developing/tools/adb.jd b/docs/html/guide/developing/tools/adb.jd
index e8c726f..2970e61 100644
--- a/docs/html/guide/developing/tools/adb.jd
+++ b/docs/html/guide/developing/tools/adb.jd
@@ -94,7 +94,7 @@
 
 <p>Once the server has set up connections to all emulator instances, you can use adb commands to control and access those instances. Because the server manages connections to emulator/device instances and handles commands from multiple adb clients, you can control any emulator/device instance from any client (or from a script).</p>
 
-<p>The sections below describe the commands that you can use to access adb capabilities and manage the state of an emulator/device. Note that if you are developing Android applications in Eclipse and have installed the ADT plugin, you do not need to access adb from the command line. The ADT plugin provides a trasparent integration of adb into the Eclipse IDE. However, you can still use adb directly as necessary, such as for debugging.</p>
+<p>The sections below describe the commands that you can use to access adb capabilities and manage the state of an emulator/device. Note that if you are developing Android applications in Eclipse and have installed the ADT plugin, you do not need to access adb from the command line. The ADT plugin provides a transparent integration of adb into the Eclipse IDE. However, you can still use adb directly as necessary, such as for debugging.</p>
 
 <a name="issuingcommands"></a>
 
diff --git a/docs/html/guide/developing/tools/adt.jd b/docs/html/guide/developing/tools/adt.jd
index f28b24c..219be67 100644
--- a/docs/html/guide/developing/tools/adt.jd
+++ b/docs/html/guide/developing/tools/adt.jd
@@ -4,7 +4,7 @@
 <p>The Android Development Tools (ADT) plugin adds powerful extensions to the Eclipse integrated development environment. It allows you to create and debug your Android applications easier and faster. If you use Eclipse, the ADT plugin gives you an incredible boost in developing Android applications:</p>
 
 <ul>
-  <li>It gives you access to other Android development tools from inside the Eclipse IDE. For example, ADT lets you access the many capabilities of the DDMS tool: take screenshots, manage port-forwarding, set breakpoints, and view thread and process informationd irectly from Eclipse.</li>
+  <li>It gives you access to other Android development tools from inside the Eclipse IDE. For example, ADT lets you access the many capabilities of the DDMS tool: take screenshots, manage port-forwarding, set breakpoints, and view thread and process information directly from Eclipse.</li>
   <li>It provides a New Project Wizard, which helps you quickly create and set up all of the basic files you'll need for a new Android application.</li>
   <li>It automates and simplifies the process of building your Android application.</li>
   <li>It provides an Android code editor that helps you write valid XML for your Android manifest and resource files.</li>
@@ -102,7 +102,7 @@
 
 <p>Note that the "Android Editors" feature of ADT requires several optional 
 Eclipse components (for example, WST). If you encounter an error when 
-installing ADT, your Eclipse installion might not include those components. 
+installing ADT, your Eclipse installation might not include those components. 
 For information about how to quickly add the necessary components to your 
 Eclipse installation, see the troubleshooting topic 
 <a href="{@docRoot}guide/appendix/faq/troubleshooting.html#installeclipsecomponents">ADT Installation Error: "requires plug-in org.eclipse.wst.sse.ui"</a>.</p>
diff --git a/docs/html/guide/developing/tools/draw9patch.jd b/docs/html/guide/developing/tools/draw9patch.jd
index f25fabb..9607ae7 100644
--- a/docs/html/guide/developing/tools/draw9patch.jd
+++ b/docs/html/guide/developing/tools/draw9patch.jd
@@ -5,7 +5,7 @@
    {@link android.graphics.NinePatch} graphic using a WYSIWYG editor.</p>
 <p>For an introduction to Nine-patch graphics and how they work, please read 
 the section on Nine-patch in the 
-<a href="{@docRoot}guide/topics/resources/available-resources.html#ninepatch">Ninepatch Images</a> topic.</p>
+<a href="{@docRoot}guide/topics/resources/available-resources.html#ninepatch">Nine-patch Images</a> topic.</p>
 
 <div class="sidebox" style="width:auto"><br/>
 <img src="{@docRoot}images/draw9patch-norm.png" alt="" height="300" width="341" />
diff --git a/docs/html/guide/developing/tools/emulator.jd b/docs/html/guide/developing/tools/emulator.jd
index a9b6914..43f9271 100644
--- a/docs/html/guide/developing/tools/emulator.jd
+++ b/docs/html/guide/developing/tools/emulator.jd
@@ -1338,7 +1338,7 @@
 
 <p>You can use the <code>power</code> command to control the simulated power state of the emulator instance.The usage for the command is: </p>
 
-<pre>power &lt;display|ac|status|present|health|capactiy&gt;</pre>
+<pre>power &lt;display|ac|status|present|health|capacity&gt;</pre>
 
 <p>The <code>event</code> command supports the subcommands listed in the table below. </p>
 
@@ -1393,7 +1393,7 @@
 <a name="netdelay"></a>
 <h3>Network Delay Emulation</h3>
 
-<p>The emulator lets you simulate various network latency levels, so that you can test your applicaton in an environment more typical of the actual conditions in which it will run. You can set a latency level or range at emulator startup or you can use the console to change the latency dynamically, while the application is running in the emulator. </p>
+<p>The emulator lets you simulate various network latency levels, so that you can test your application in an environment more typical of the actual conditions in which it will run. You can set a latency level or range at emulator startup or you can use the console to change the latency dynamically, while the application is running in the emulator. </p>
 <p>To set latency at emulator startup, use the  <code>-netdelay</code> emulator option with a supported <code>&lt;delay&gt;</code> value, as listed in the table below. Here are some examples:</p>
 <pre>emulator -netdelay gprs
 emulator -netdelay 40 100</pre>
diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs
index c28cde1..ec7c87c 100644
--- a/docs/html/guide/guide_toc.cs
+++ b/docs/html/guide/guide_toc.cs
@@ -143,7 +143,6 @@
           <li><a href="<?cs var:toroot ?>guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></li>
           <li><a href="<?cs var:toroot ?>guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></li>
           <li><a href="<?cs var:toroot ?>guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></li>
-          <li><a href="<?cs var:toroot ?>guide/topics/manifest/path-permission-element.html">&lt;path-permission&gt;</a></li>
           <li><a href="<?cs var:toroot ?>guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></li>
           <li><a href="<?cs var:toroot ?>guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></li>
           <li><a href="<?cs var:toroot ?>guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></li>
diff --git a/docs/html/guide/practices/ui_guidelines/activity_task_design.jd b/docs/html/guide/practices/ui_guidelines/activity_task_design.jd
index e2fc89c..6cd2199 100644
--- a/docs/html/guide/practices/ui_guidelines/activity_task_design.jd
+++ b/docs/html/guide/practices/ui_guidelines/activity_task_design.jd
@@ -469,7 +469,7 @@
   re-use activities in other applications, and how your activities might
   be re-used by other applications. If you add an activity with the same
   <a href=#intents title="intent filter">intent filter</a> as an
-  exisiting activity, then the system presents the user with a choice
+  existing activity, then the system presents the user with a choice
   between the activities.
 </p>
 
@@ -879,7 +879,7 @@
 <p>
   You can either test that an activity matches the intent, which you can do
   before starting the activity, or catch an exception if starting the
-  activity fails. Both approaches are descibed in the blog posting
+  activity fails. Both approaches are described in the blog posting
   <a href="http://android-developers.blogspot.com/2009/01/can-i-use-this-intent.html">Can
   I use this Intent?</a>.
 </p>
@@ -938,7 +938,7 @@
         the menus, the system compares the "Share" request (an Intent
         object) to available activities (by looking at their intent
         filters) and displays choices to share. In this case, it
-        matches Email, Gmail, Messaging and Picassa. If your activity
+        matches Email, Gmail, Messaging and Picasa. If your activity
         can send a picture or upload it to a website, all it needs to
         do is make itself available for sharing (by setting its intent
         filter).
@@ -978,7 +978,7 @@
       <li>
         <b>Launch your activity <em>only</em> from within another
         application</b> - The previous cases of sharing by way of
-        Email, Gmail, Messaging and Picassa (from within Gallery) are
+        Email, Gmail, Messaging and Picasa (from within Gallery) are
         all activities that can also be started from icons in the
         application launcher at Home. In contrast, the activities for
         cropping a picture and attaching a file cannot be started from
diff --git a/docs/html/guide/practices/ui_guidelines/widget_design.jd b/docs/html/guide/practices/ui_guidelines/widget_design.jd
index 514b315..fc62fe6 100644
--- a/docs/html/guide/practices/ui_guidelines/widget_design.jd
+++ b/docs/html/guide/practices/ui_guidelines/widget_design.jd
@@ -9,7 +9,7 @@
 <ul>
 <li>Widgets have six standard sizes on the Home screen</li>
 <li>Widgets have standards for size, frames, shadows, and file format, which you can copy</li>
-<li>A few tricks make it easier to design widgets that fit graphically on the Home screeen</li>
+<li>A few tricks make it easier to design widgets that fit graphically on the Home screen</li>
 </ul>
 
 <h2>In this document</h2>
diff --git a/docs/html/guide/publishing/versioning.jd b/docs/html/guide/publishing/versioning.jd
index bff8c97..81e5ce0 100644
--- a/docs/html/guide/publishing/versioning.jd
+++ b/docs/html/guide/publishing/versioning.jd
@@ -67,7 +67,7 @@
 <li><code>android:versionCode</code> &mdash; An integer value that represents
 the version of the application code, relative to other versions. 
 
-<p>The value is an integer so that other applications can programatically
+<p>The value is an integer so that other applications can programmatically
 evaluate it, for example to check an upgrade or downgrade relationship. You can
 set the value to any integer you want, however you should make sure that each
 successive release of your application uses a greater value. The system does not
@@ -78,7 +78,7 @@
 versionCode set to 1, then monotonically increase the value with each release,
 regardless whether the release constitutes a major or minor release. This means
 that the <code>android:versionCode</code> value does not necessarily have a
-strong resemblence to the application release version that is visible to the
+strong resemblance to the application release version that is visible to the
 user (see <code>android:versionName</code>, below). Applications and publishing
 services should not display this version value to users.</p>
 </li>
diff --git a/docs/html/guide/topics/appwidgets/index.jd b/docs/html/guide/topics/appwidgets/index.jd
index c9df3ba..0ba05ac 100644
--- a/docs/html/guide/topics/appwidgets/index.jd
+++ b/docs/html/guide/topics/appwidgets/index.jd
@@ -382,7 +382,7 @@
 
 <p>Also, the Activity must be declared in the AppWidgetProviderInfo XML file, with the 
 <code>android:configure</code> attribute (see <a href="#MetaData">Adding 
-the AppWidgetProvierInfo Metadata</a> above). For example, the configuration Activity
+the AppWidgetProviderInfo Metadata</a> above). For example, the configuration Activity
 can be declared like this:</p>
 
 <pre>
diff --git a/docs/html/guide/topics/fundamentals.jd b/docs/html/guide/topics/fundamentals.jd
index 640e44b..c10af8e 100644
--- a/docs/html/guide/topics/fundamentals.jd
+++ b/docs/html/guide/topics/fundamentals.jd
@@ -262,7 +262,7 @@
 </p>
 
 <p>
-There are separate methods for activiating each type of component: 
+There are separate methods for activating each type of component: 
 </p>
 
 <ul>
diff --git a/docs/html/guide/topics/graphics/2d-graphics.jd b/docs/html/guide/topics/graphics/2d-graphics.jd
index af584a2..051427b 100644
--- a/docs/html/guide/topics/graphics/2d-graphics.jd
+++ b/docs/html/guide/topics/graphics/2d-graphics.jd
@@ -43,7 +43,7 @@
 {@link android.graphics.drawable.PictureDrawable}, {@link android.graphics.drawable.LayerDrawable}, and several more.
 Of course, you can also extend these to define your own custom Drawable objects that behave in unique ways.</p>
 
-<p>There are three ways to define and instantiate a Drawable: using an image saved in your project resouces;
+<p>There are three ways to define and instantiate a Drawable: using an image saved in your project resources;
 using an XML file that defines the Drawable properties; or using the normal class constructors. Below, we'll discuss
 each the first two techniques (using constructors is nothing new for an experienced developer).</p>
 
@@ -126,7 +126,7 @@
 <a href="{@docRoot}guide/topics/ui/index.html">User Interface</a>. Hence, you understand the power
 and flexibility inherent in defining objects in XML. This philosophy caries over from Views to Drawables.
 If there is a Drawable object that you'd like to create, which is not initially dependent on variables defined by
-your applicaton code or user interaction, then defining the Drawable in XML is a good option.
+your application code or user interaction, then defining the Drawable in XML is a good option.
 Even if you expect your Drawable to change its properties during the user's experience with your application, 
 you should consider defining the object in XML, as you can always modify properties once it is instantiated.</p>
 
@@ -206,7 +206,7 @@
 It's then given a color and the bounds of the shape are set. If you do not set the bounds, then the
 shape will not be drawn, whereas if you don't set the color, it will default to black.</p>
 <p>With the custom View defined, it can be drawn any way you like. With the sample above, we can
-draw the shape progammatically in an Activity:</p>
+draw the shape programmatically in an Activity:</p>
 <pre>
 CustomDrawableView mCustomDrawableView;
 
@@ -248,7 +248,7 @@
 <h2 id="nine-patch">NinePatchDrawable</h2>
 
 <p>A {@link android.graphics.drawable.NinePatchDrawable} graphic is a stretchable bitmap image, which Android
-will automatically resize to accomodate the contents of the View in which you have placed it as the background. 
+will automatically resize to accommodate the contents of the View in which you have placed it as the background. 
 An example use of a NinePatch is the backgrounds used by standard Android buttons &mdash;
 buttons must stretch to accommodate strings of various lengths. A NinePatch drawable is a standard PNG 
 image that includes an extra 1-pixel-wide border. It must be saved with the extension <code>.9.png</code>,
@@ -271,7 +271,7 @@
     define this drawable area.
 </p>
 <p>To clarify the difference between the different lines, the left and top lines define 
-which pixels of the image are allowed to be replicated in order to strech the image.
+which pixels of the image are allowed to be replicated in order to stretch the image.
 The bottom and right lines define the relative area within the image that the contents
 of the View are allowed to lie within.</p>
 <p>
@@ -281,7 +281,7 @@
 
 <p>This NinePatch defines one stretchable area with the left and top lines
 and the drawable area with the bottom and right lines. In the top image, the dotted grey
-lines identify the regions of the image that will be replicated in order to strech the image. The pink
+lines identify the regions of the image that will be replicated in order to stretch the image. The pink
 rectangle in the bottom image identifies the region in which the contents of the View are allowed.
 If the contents don't fit in this region, then the image will be stretched so that they do.
 </p>
@@ -333,7 +333,7 @@
 If it has a background image, the background image will be transformed along with the text.
 The {@link android.view.animation animation package} provides all the classes used in a tween animation.</p>
 
-<p>A sequence of animation instructions defines the twen animation, defined by either XML or Android code.
+<p>A sequence of animation instructions defines the tween animation, defined by either XML or Android code.
 Like defining a layout, an XML file is recommended because it's more readable, reusable, and swappable 
 than hard-coding the animation. In the example below, we use XML. (To learn more about defining an animation 
 in your application code, instead of XML, refer to the 
@@ -428,7 +428,7 @@
 in the <a href="{@docRoot}guide/topics/resources/available-resources.html#animation">Available Resources</a>.</p>
 
 <p class="note"><strong>Note:</strong> Regardless of how your animation may move or resize, the bounds of the 
-View that holds your animation will not automatically adjust to accomodate it. Even so, the animation will still
+View that holds your animation will not automatically adjust to accommodate it. Even so, the animation will still
 be drawn beyond the bounds of its View and will not be clipped. However, clipping <em>will occur</em>
 if the animation exceeds the bounds of the parent View.</p>
 
diff --git a/docs/html/guide/topics/graphics/index.jd b/docs/html/guide/topics/graphics/index.jd
index bc2a8bf..e1158be 100644
--- a/docs/html/guide/topics/graphics/index.jd
+++ b/docs/html/guide/topics/graphics/index.jd
@@ -112,7 +112,7 @@
 Other classes that you might use also have <code>draw()</code> methods. For example, you'll probably
 have some {@link android.graphics.drawable.Drawable} objects that you want to put on the Canvas. Drawable
 has its own <code>{@link android.graphics.drawable.Drawable#draw(Canvas) draw()}</code> method 
-that takes your Canvas as an arguement.</p>
+that takes your Canvas as an argument.</p>
 
 
 <h3 id="on-view">On a View</h3>
@@ -124,7 +124,7 @@
 The most convenient aspect of doing so is that the Android framework will
 provide you with a pre-defined Canvas to which you will place your drawing calls.</p>
 
-<p>To start, extend the {@link android.view.View} class (or descendent thereof) and define
+<p>To start, extend the {@link android.view.View} class (or descendant thereof) and define
 the <code>{@link android.view.View#onDraw(Canvas) onDraw()}</code> callback method. This method will be called by the Android 
 framework to request that your View draw itself. This is where you will perform all your calls
 to draw through the {@link android.graphics.Canvas}, which is passed to you through the <code>onDraw()</code> callback.</p>
@@ -190,7 +190,7 @@
 you will see traces of the drawings you previously performed.</p>
 
 
-<p>For a sample application, see the Lunar Landar game, in the SDK samples folder:
+<p>For a sample application, see the Lunar Lander game, in the SDK samples folder:
 <code>&lt;your-sdk-directory>/samples/LunarLander/</code>. Or,
 browse the source in the <a href="{@docRoot}guide/samples/index.html">Sample Code</a> section.</p>
 
diff --git a/docs/html/guide/topics/manifest/activity-element.jd b/docs/html/guide/topics/manifest/activity-element.jd
index 83237c6..c22d3e1 100644
--- a/docs/html/guide/topics/manifest/activity-element.jd
+++ b/docs/html/guide/topics/manifest/activity-element.jd
@@ -24,7 +24,7 @@
           android:<a href="#proc">process</a>="<i>string</i>"
           android:<a href="#screen">screenOrientation</a>=["unspecified" | "user" | "behind" |
                                      "landscape" | "portrait" | 
-                                     "sensor" | "nonsensor"]
+                                     "sensor" | "nosensor"]
           android:<a href="#state">stateNotNeeded</a>=["true" | "false"]
           android:<a href="#aff">taskAffinity</a>="<i>string</i>"
           android:<a href="#theme">theme</a>="<i>resource or theme</i>" 
@@ -687,7 +687,7 @@
        keyboard.  Rather, the contents of the window are automatically 
        panned so that the current focus is never obscured by the keyboard
        and users can always see what they are typing.  This is generally less 
-       desireable than resizing, because the user may need to close the soft
+       desirable than resizing, because the user may need to close the soft
        keyboard to get at and interact with obscured parts of the window.</td>
 </tr>
 </table>
diff --git a/docs/html/guide/topics/manifest/data-element.jd b/docs/html/guide/topics/manifest/data-element.jd
index b48c5e0..b77fd05 100644
--- a/docs/html/guide/topics/manifest/data-element.jd
+++ b/docs/html/guide/topics/manifest/data-element.jd
@@ -28,7 +28,7 @@
 These attributes are optional, but also mutually dependent: 
 If a <code><a href="{@docRoot}guide/topics/manifest/data-element.html#scheme">scheme</a></code> is not specified for the 
 intent filter, all the other URI attributes are ignored.  If a 
-<code><a href="{@docRoot}guide/topics/manifest/data-element.html#host">host</a></code> is not specified for the filer, 
+<code><a href="{@docRoot}guide/topics/manifest/data-element.html#host">host</a></code> is not specified for the filter, 
 the {@code port} attribute and all the path attributes are ignored.
 </p>
 
diff --git a/docs/html/guide/topics/manifest/manifest-intro.jd b/docs/html/guide/topics/manifest/manifest-intro.jd
index 89171c1..9e1b18d 100644
--- a/docs/html/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html/guide/topics/manifest/manifest-intro.jd
@@ -112,7 +112,6 @@
 
         <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a>
             <a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission /&gt;</a>
-            <a href="{@docRoot}guide/topics/manifest/path-permission-element.html">&lt;path-permission /&gt;</a>
             <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
         <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;/provider&gt;</a>
 
@@ -141,7 +140,6 @@
 <br/><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
 <br/><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
 <br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
-<br/><code><a href="{@docRoot}guide/topics/manifest/path-permission-element.html">&lt;path-permission /&gt;</a></code>
 <br/><code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
 <br/><code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
 <br/><code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
diff --git a/docs/html/guide/topics/manifest/path-permission-element.jd b/docs/html/guide/topics/manifest/path-permission-element.jd
deleted file mode 100644
index 5c271a7..0000000
--- a/docs/html/guide/topics/manifest/path-permission-element.jd
+++ /dev/null
@@ -1,104 +0,0 @@
-page.title=&lt;path-permission&gt;
-@jd:body
-
-<dl class="xml">
-<dt>syntax:</dt>
-<dd><pre class="stx">
-&lt;path-permission android:<a href="#path">path</a>="<i>string</i>"
-                 android:<a href="#pathPrefix">pathPrefix</a>="<i>string</i>"
-                 android:<a href="#pathPattern">pathPattern</a>="<i>string</i>"
-                 android:<a href="#permission">permission</a>="<i>string</i>"
-                 android:<a href="#readPermission">readPermission</a>="<i>string</i>"
-                 android:<a href="#writePermission">writePermission</a>="<i>string</i>" /&gt;
-</pre></dd>
-
-<dt>contained in:</dt>
-<dd><code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code></dd>
-
-<!--
-<dt>can contain:</dt>
-</dd>
--->
-
-<dt>description:</dt>
-<dd>Defines the path and required permissions for a specific subset of data
-within a content provider. This element can be
-specified multiple times to supply multiple paths.
-
-</dd>
-
-<dt>attributes:</dt>
-
-<dd><dl class="attr">
-<dt><a name="path"></a>{@code android:path}</dt>
-<dd>A complete URI path for a subset of content provider data. 
-Permission can be granted only to the particular data identified by this path. 
-When used to provide search suggestion content, it must be appended 
-with "/search_suggest_query".
-</dd>
-
-<dt><a name="pathPrefix"></a>{@code android:pathPrefix}</dt>
-<dd>The initial part of a URI path for a subset of content provider data.
-Permission can be granted to all data subsets with paths that share this initial part.
-</dd>
-
-<dt><a name="pathPattern"></a>{@code android:pathPattern}</dt>
-<dd>A complete URI path for a subset of content provider data,
-but one that can use the following wildcards:
- 
-<ul> 
-<li>An asterisk ('<code class="Code prettyprint">*</code>'). This matches a sequence of 0 to many occurrences of
-the immediately preceding character.</li> 
- 
-<li>A period followed by an asterisk ("<code class="Code prettyprint">.*</code>"). This matches any sequence of 
-0 or more characters.</li> 
-</ul> 
- 
-<p> 
-Because '<code class="Code prettyprint">\</code>' is used as an escape character when the string is read 
-from XML (before it is parsed as a pattern), you will need to double-escape.
-For example, a literal '<code class="Code prettyprint">*</code>' would be written as "<code class="Code prettyprint">\\*</code>" and a 
-literal '<code class="Code prettyprint">\</code>' would be written as "<code class="Code prettyprint">\\</code>".  This is basically 
-the same as what you would need to write if constructing the string in Java code.
-</p> 
-<p> 
-For more information on these types of patterns, see the descriptions of 
-<a href="/reference/android/os/PatternMatcher.html#PATTERN_LITERAL">PATTERN_LITERAL</a>,
-<a href="/reference/android/os/PatternMatcher.html#PATTERN_PREFIX">PATTERN_PREFIX</a>, and
-<a href="/reference/android/os/PatternMatcher.html#PATTERN_SIMPLE_GLOB">PATTERN_SIMPLE_GLOB</a> in the
-<a href="/reference/android/os/PatternMatcher.html">PatternMatcher</a> class.
-</p>
-</dd>
-
-<dt><a name="permission"></a>{@code android:permission}</dt>
-<dd>The name of a permission that clients must have in order to read or write the
-content provider's data.  This attribute is a convenient way of setting a 
-single permission for both reading and writing.  However, the 
-<code>readPermission</code> and 
-<code>writePermission</code> attributes take precedence
-over this one.
-</dd> 
-
-<dt><a name="readPermission"></a>{@code android:readPermission}</dt>
-<dd>A permission that clients must have in order to query the content provider.
-</dd> 
-
-<dt><a name="writePermission"></a>{@code android:writePermission}</dt>
-<dd>A permission that clients must have in order to make changes to the data controlled by the content provider.
-</dd> 
-
-
-
-</dl></dd>
-
-<!-- ##api level indication## -->
-<dt>introduced in:</dt>
-<dd>API Level 4</dd>
-
-<dt>see also:</dt>
-<dd>{@link android.app.SearchManager}</dd>
-<dd>{@link android.Manifest.permission}</dd>
-<dd><a href="/guide/topics/security/security.html">Security and
-Permissions</a></dd>
-
-</dl>
diff --git a/docs/html/guide/topics/manifest/permission-tree-element.jd b/docs/html/guide/topics/manifest/permission-tree-element.jd
index 3074354..aecc930 100644
--- a/docs/html/guide/topics/manifest/permission-tree-element.jd
+++ b/docs/html/guide/topics/manifest/permission-tree-element.jd
@@ -46,7 +46,7 @@
 <dd>The name that's at the base of the permission tree.  It serves as 
 a prefix to all permission names in the tree.  Java-style scoping should 
 be used to ensure that the name is unique.  The name must have more than 
-two period-separated seqments in its path &mdash; for example, 
+two period-separated segments in its path &mdash; for example, 
 {@code com.example.base} is OK, but {@code com.example} is not.</dd>
 
 </dl></dd>
diff --git a/docs/html/guide/topics/manifest/provider-element.jd b/docs/html/guide/topics/manifest/provider-element.jd
index 98892f1..c80b207 100644
--- a/docs/html/guide/topics/manifest/provider-element.jd
+++ b/docs/html/guide/topics/manifest/provider-element.jd
@@ -25,9 +25,7 @@
 
 <dt>can contain:</dt>
 <dd><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
-<br/><code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
-<br/><code><a href="{@docRoot}guide/topics/manifest/path-permission-element.html">&lt;path-permission /&gt;</a></code>
-</dd>
+<br/><code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code></dd>
 
 <dt>description:</dt>
 <dd>Declares a content provider &mdash; a subclass of 
@@ -187,7 +185,7 @@
 Normally, a content provider is instantiated in the process of the 
 application that defined it.  However, if this flag is set to "{@code true}", 
 the system can create an instance in every process where there's a client 
-that wants to interact withit, thus avoiding the overhead of interprocess 
+that wants to interact with it, thus avoiding the overhead of interprocess 
 communication.
 </p></dd>
 
diff --git a/docs/html/guide/topics/manifest/receiver-element.jd b/docs/html/guide/topics/manifest/receiver-element.jd
index 280d402..b208917 100644
--- a/docs/html/guide/topics/manifest/receiver-element.jd
+++ b/docs/html/guide/topics/manifest/receiver-element.jd
@@ -17,7 +17,7 @@
 <dd><code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code></dd>
 
 <dt>can contain:</dt>
-<dd><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filer&gt;</a></code>
+<dd><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
 <br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code></dd>
 
 <dt>description:</dt>
diff --git a/docs/html/guide/topics/manifest/service-element.jd b/docs/html/guide/topics/manifest/service-element.jd
index e5ac7b5..0a44e2c 100644
--- a/docs/html/guide/topics/manifest/service-element.jd
+++ b/docs/html/guide/topics/manifest/service-element.jd
@@ -17,7 +17,7 @@
 <dd><code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code></dd>
 
 <dt>can contain:</dt>
-<dd><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filer&gt;</a></code>
+<dd><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
 <br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code></dd>
 
 <dt>description:</dt>
diff --git a/docs/html/guide/topics/media/jet/jetcreator_manual.jd b/docs/html/guide/topics/media/jet/jetcreator_manual.jd
index 9692d97..214c79e 100644
--- a/docs/html/guide/topics/media/jet/jetcreator_manual.jd
+++ b/docs/html/guide/topics/media/jet/jetcreator_manual.jd
@@ -993,7 +993,7 @@
      results, scoring or other game actions can take place. </li>
   <li><span
      lang=EN-IE>Musical transitions between levels or action sequences can be
-     synchronized to be musically seemless.</li>
+     synchronized to be musically seamless.</li>
 </ol>
 
 
diff --git a/docs/html/guide/topics/providers/content-providers.jd b/docs/html/guide/topics/providers/content-providers.jd
index 86dcebf..5da760a 100644
--- a/docs/html/guide/topics/providers/content-providers.jd
+++ b/docs/html/guide/topics/providers/content-providers.jd
@@ -731,7 +731,7 @@
 URI for a TransportationProvider class could be defined as follows:
 
 <pre>public static final Uri CONTENT_URI = 
-               Uri.parse("content://com.example.codelab.transporationprovider");</pre>
+               Uri.parse("content://com.example.codelab.transportationprovider");</pre>
 
 <p>
 If the provider has subtables, also define {@code CONTENT_URI} constants for
@@ -740,9 +740,9 @@
 For example:
 </p>
 
-<p style="margin-left: 2em">{@code content://com.example.codelab.transporationprovider/train} 
-<br/>{@code content://com.example.codelab.transporationprovider/air/domestic}
-<br/>{@code content://com.example.codelab.transporationprovider/air/international}</p>
+<p style="margin-left: 2em">{@code content://com.example.codelab.transportationprovider/train} 
+<br/>{@code content://com.example.codelab.transportationprovider/air/domestic}
+<br/>{@code content://com.example.codelab.transportationprovider/air/international}</p>
 
 <p>
 For an overview of {@code content:} URIs, see the <a href="#urisum">Content URI 
diff --git a/docs/html/guide/topics/resources/available-resources.jd b/docs/html/guide/topics/resources/available-resources.jd
index f5f1475..0e003a0e 100644
--- a/docs/html/guide/topics/resources/available-resources.jd
+++ b/docs/html/guide/topics/resources/available-resources.jd
@@ -225,7 +225,7 @@
 <p>
     The following declares two strings: the first &mdash; simple text with no
     formatting (resulting in a CharSequence that is simply a String object) &mdash; the second includes formatting information in the string (resulting
-    in a CharSequence that is a complex data structure). If you are using the custom editor for string files in Eclipse, the HTML formatting tags will automatically be escaped and you will need to use {@link android.content.Context#getString(int) Context.getString()} and {@link android.text.Html#fromHtml} to retreive the resource and then convert it to formatted text.
+    in a CharSequence that is a complex data structure). If you are using the custom editor for string files in Eclipse, the HTML formatting tags will automatically be escaped and you will need to use {@link android.content.Context#getString(int) Context.getString()} and {@link android.text.Html#fromHtml} to retrieve the resource and then convert it to formatted text.
 </p>
 <pre>
 &lt;resources&gt;
diff --git a/docs/html/guide/topics/resources/resources-i18n.jd b/docs/html/guide/topics/resources/resources-i18n.jd
index 091bc62..0e7d585 100755
--- a/docs/html/guide/topics/resources/resources-i18n.jd
+++ b/docs/html/guide/topics/resources/resources-i18n.jd
@@ -762,7 +762,7 @@
 contains all of the standard view attributes: padding, visibility,
 background, etc.; when View is inflated it uses this style class to
 retrieve those values from the XML file (at which point style and theme
-information is applied as approriate) and load them into its instance.</p>
+information is applied as appropriate) and load them into its instance.</p>
 
 <p><strong>Configuration</strong>: For any particular resource identifier, there may be
 multiple different available values depending on the current configuration.
diff --git a/docs/html/guide/topics/ui/binding.jd b/docs/html/guide/topics/ui/binding.jd
index 85aed18..4725321 100644
--- a/docs/html/guide/topics/ui/binding.jd
+++ b/docs/html/guide/topics/ui/binding.jd
@@ -37,7 +37,7 @@
 
 <h2 id="FillingTheLayout">Filling the Layout with Data</h2>
 <p>Inserting data into the layout is typically done by binding the AdapterView class to an {@link
-android.widget.Adapter}, which retireves data from an external source (perhaps a list that
+android.widget.Adapter}, which retrieves data from an external source (perhaps a list that
 the code supplies or query results from the device's database). </p>
 <p>The following code sample does the following:</p>
 <ol>
@@ -68,7 +68,7 @@
     android.R.layout.simple_spinner_item, // Use a template
                                           // that displays a
                                           // text view
-    cur, // Give the cursor to the list adatper
+    cur, // Give the cursor to the list adapter
     new String[] {People.NAME}, // Map the NAME column in the
                                          // people database to...
     new int[] {android.R.id.text1}); // The "text1" view defined in
@@ -86,7 +86,7 @@
 that the data has been changed and it should refresh itself.</p>
 
 <h2 id="HandlingUserSelections">Handling User Selections</h2>
-<p>You handle the user's selecction by setting the class's {@link
+<p>You handle the user's selection by setting the class's {@link
 android.widget.AdapterView.OnItemClickListener} member to a listener and
 catching the selection changes. </p>
 <pre>
diff --git a/docs/html/guide/topics/ui/custom-components.jd b/docs/html/guide/topics/ui/custom-components.jd
index 76d1034..6027a82 100644
--- a/docs/html/guide/topics/ui/custom-components.jd
+++ b/docs/html/guide/topics/ui/custom-components.jd
@@ -159,7 +159,7 @@
 <p class="note"><strong>Note:</strong>
 This does not apply to 3D graphics. If you want to
 use 3D graphics, you must extend {@link android.view.SurfaceView SurfaceView}
-instead of View, and draw from a seperate thread. See the
+instead of View, and draw from a separate thread. See the
 GLSurfaceViewActivity sample
 for details.</p>
 
@@ -443,7 +443,7 @@
 similar to what you want, you can simply extend that component and just
 override the behavior that you want to change. You can do all of the things
 you would do with a fully customized component, but by starting with a more
-specialized class in the View heirarchy, you can also get a lot of behavior for
+specialized class in the View hierarchy, you can also get a lot of behavior for
 free that probably does exactly what you want.</p>
 <p>For example, the SDK includes a <a
 href="{@docRoot}guide/samples/NotePad/index.html">NotePad application</a> in the
diff --git a/docs/html/guide/topics/ui/declaring-layout.jd b/docs/html/guide/topics/ui/declaring-layout.jd
index 80ad7b8..fdd5ddd 100644
--- a/docs/html/guide/topics/ui/declaring-layout.jd
+++ b/docs/html/guide/topics/ui/declaring-layout.jd
@@ -119,7 +119,7 @@
 
 <p>The <code>onCreate()</code> callback method in your Activity is called by the Android framework when
 your Activity is launched (see the discussion on Lifecycles, in the 
-<a href="{@docRoot}guide/topics/fundamentals.html#lcycles">Application Fundamantals</a>, for more on this).</p>
+<a href="{@docRoot}guide/topics/fundamentals.html#lcycles">Application Fundamentals</a>, for more on this).</p>
 
 
 <h2 id="attributes">Attributes</h2>
diff --git a/docs/html/guide/topics/ui/dialogs.jd b/docs/html/guide/topics/ui/dialogs.jd
index 4e4ca14..c476b0d 100644
--- a/docs/html/guide/topics/ui/dialogs.jd
+++ b/docs/html/guide/topics/ui/dialogs.jd
@@ -154,7 +154,7 @@
 
 <h3>Using dismiss listeners</h3>
 
-<p>If you'd like your applcation to perform some procedures the moment that a dialog is dismissed, 
+<p>If you'd like your application to perform some procedures the moment that a dialog is dismissed, 
 then you should attach an on-dismiss listener to your Dialog.</p>
 
 <p>First define the {@link android.content.DialogInterface.OnDismissListener} interface.
diff --git a/docs/html/guide/topics/ui/how-android-draws.jd b/docs/html/guide/topics/ui/how-android-draws.jd
index 21f9833..efb55a2 100644
--- a/docs/html/guide/topics/ui/how-android-draws.jd
+++ b/docs/html/guide/topics/ui/how-android-draws.jd
@@ -51,7 +51,7 @@
    </p>
    
    <div class="sidebox"><p>
-   To intiate a layout, call <code>{@link android.view.View#requestLayout}</code>. This method is typically
+   To initiate a layout, call <code>{@link android.view.View#requestLayout}</code>. This method is typically
    called by a View on itself when it believes that is can no longer fit within
    its current bounds.</p>
    </div>
@@ -86,7 +86,7 @@
     child. The child must use this size, and guarantee that all of its
     descendants will fit within this size.</li>
     <li><var>AT_MOST</var>: This is used by the parent to impose a maximum size on the
-    child. The child must gurantee that it and all of its descendants will fit
+    child. The child must guarantee that it and all of its descendants will fit
     within this size.</li>
    </ul>
    
diff --git a/docs/html/guide/topics/ui/index.jd b/docs/html/guide/topics/ui/index.jd
index ef23672..494bda8 100644
--- a/docs/html/guide/topics/ui/index.jd
+++ b/docs/html/guide/topics/ui/index.jd
@@ -74,7 +74,7 @@
 
 <p>The most common way to define your layout and express the view hierarchy is with an XML layout file.
 XML offers a human-readable structure for the layout, much like HTML. Each element in XML is 
-either a View or ViewGroup object (or descendent thereof). View objects are leaves in the tree, 
+either a View or ViewGroup object (or descendant thereof). View objects are leaves in the tree, 
 ViewGroup objects are branches in the tree (see the View Hierarchy figure above).</p>
 <p>The name of an XML element
 is respective to the Java class that it represents. So a <code>&lt;TextView></code> element creates
diff --git a/docs/html/guide/topics/ui/menus.jd b/docs/html/guide/topics/ui/menus.jd
index bae94ca..0129e8f 100644
--- a/docs/html/guide/topics/ui/menus.jd
+++ b/docs/html/guide/topics/ui/menus.jd
@@ -86,7 +86,7 @@
 Usually, you'll want to use one that accepts an <var>itemId</var> argument. 
 This is a unique integer that allows you to identify the item during a callback.</p>
 
-<p>When a menu item is selected from the Options Menu, you will recieve a callback to the
+<p>When a menu item is selected from the Options Menu, you will receive a callback to the
 <code>{@link android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}</code> 
 method of your Activity. This callback passes you the 
 <code>MenuItem</code> that has been selected. You can identify the item by requesting the 
@@ -216,7 +216,7 @@
 All we need from
 this is the list ID for the selected item, so whether editing a note or deleting it, 
 we find the ID with the {@code AdapterContextMenuInfo.info} field of the object. This ID
-is passed to the <code>editNote()</code> and <code>deleteNote()</code> methods to perfrom
+is passed to the <code>editNote()</code> and <code>deleteNote()</code> methods to perform
 the respective action.</p>
 
 <p>Now, to register this context menu for all the items in a {@link android.widget.ListView},
@@ -338,7 +338,7 @@
 <img align="right" src="{@docRoot}images/radio_buttons.png" alt="" />
 <p>Any menu item can be used as an interface for turning options on and off. This can
 be indicated with a checkbox for stand-alone options, or radio buttons for groups of
-mutually exlusive options (see the screenshot, to the right).</p>
+mutually exclusive options (see the screenshot, to the right).</p>
 
 <p class="note"><strong>Note:</strong> Menu items in the Icon Menu cannot
 display a checkbox or radio button. If you choose to make items in the Icon Menu checkable,
@@ -490,7 +490,7 @@
          null,   // Specific items to place first (none)
          intent, // Intent created above that describes our requirements
          0,      // Additional flags to control items (none)
-         null);  // Array of MenuItems that corrolate to specific items (none)
+         null);  // Array of MenuItems that correlate to specific items (none)
 
     return true;
 }</pre>
diff --git a/docs/html/guide/topics/ui/notifiers/index.jd b/docs/html/guide/topics/ui/notifiers/index.jd
index 5b37f5b6..f7ccce7 100644
--- a/docs/html/guide/topics/ui/notifiers/index.jd
+++ b/docs/html/guide/topics/ui/notifiers/index.jd
@@ -25,7 +25,7 @@
   <li>When an event such as saving a file is complete, a small message
 should appear to confirm that the save was successful.</li>
   <li>If the application is running in the background and needs the user's attention, 
-the application should create a notificaiton that allows the user to respond at 
+the application should create a notification that allows the user to respond at 
 his or her convenience.</li>
   <li>If the application is 
 performing work that the user must wait for (such as loading a file), 
@@ -49,7 +49,7 @@
 
 <img src="{@docRoot}images/toast.png" alt="" style="float:right" />
 
-<p>A toast notificaiton is a message that pops up on the surface of the window.
+<p>A toast notification is a message that pops up on the surface of the window.
 It only fills the amount of space required for the message and the user's current
 activity remains visible and interactive. The notification automatically fades in and 
 out, and does not accept interaction events. Because a toast can be created from a background 
@@ -97,7 +97,7 @@
 
 <p>You should use a dialog when you need to show a progress bar or a short
 message that requires confirmation from the user (such as an alert with "OK" and "Cancel" buttons). 
-You can use also use dialogs as integral componenents
+You can use also use dialogs as integral components
 in your application's UI and for other purposes besides notifications.
 For a complete discussion on all the available types of dialogs, 
 including its uses for notifications, refer to 
diff --git a/docs/html/guide/topics/ui/notifiers/notifications.jd b/docs/html/guide/topics/ui/notifiers/notifications.jd
index e6fa48f..a0dd9f1 100644
--- a/docs/html/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html/guide/topics/ui/notifiers/notifications.jd
@@ -316,7 +316,7 @@
   your notification is on-going.</dd>
   <dt><var>number</var> field</dt>
   <dd>This value indicates the current number of events represented by the notification.
-  The appropriate number is overlayed on top of the status bar icon.
+  The appropriate number is overlaid on top of the status bar icon.
   If you intend to use this field, then you must start with "1" when the Notification is first
   created. (If you change the value from zero to anything greater during an update, the number
   is not shown.)</dd>
@@ -375,7 +375,7 @@
 </pre>
 
     <p>This layout is used for the expanded view,
-    but the content of the ImageView and TextView still needs to be defined by the applicaiton.
+    but the content of the ImageView and TextView still needs to be defined by the application.
     RemoteViews offers some convenient methods that allow you to define this content...</p>
   </li>
 
@@ -389,7 +389,7 @@
 notification.contentView = contentView;
 </pre>
 
-    <p>As shown here, pass the applicaiton's package name and the layout 
+    <p>As shown here, pass the application's package name and the layout 
     resource ID to the RemoteViews constructor. Then, define the content for the ImageView and TextView,
     using the {@link android.widget.RemoteViews#setImageViewResource(int, int) setImageViewResource()}
     and {@link android.widget.RemoteViews#setTextViewText(int, CharSequence) setTextViewText()}.
diff --git a/docs/html/guide/topics/ui/notifiers/toasts.jd b/docs/html/guide/topics/ui/notifiers/toasts.jd
index a800c3c..5b324d2 100644
--- a/docs/html/guide/topics/ui/notifiers/toasts.jd
+++ b/docs/html/guide/topics/ui/notifiers/toasts.jd
@@ -18,7 +18,7 @@
   </div>
 </div>
 
-<p>A toast notificaiton is a message that pops up on the surface of the window.
+<p>A toast notification is a message that pops up on the surface of the window.
 It only fills the amount of space required for the message and the user's current
 activity remains visible and interactive. The notification automatically fades in and 
 out, and does not accept interaction events.</p>
diff --git a/docs/html/guide/topics/ui/themes.jd b/docs/html/guide/topics/ui/themes.jd
index 41e8563..03995126 100644
--- a/docs/html/guide/topics/ui/themes.jd
+++ b/docs/html/guide/topics/ui/themes.jd
@@ -111,7 +111,7 @@
 </p>
 
 <h3 id="inTheManifest">Set the theme in the manifest</h3>
-<p>To set this theme for all the activites of your application, open the AndroidManifest.xml file and 
+<p>To set this theme for all the activities of your application, open the AndroidManifest.xml file and 
 edit the <code>&lt;application></code> tag to include the <code>android:theme</code> attribute with the 
 theme name:</p>
 
diff --git a/docs/html/guide/topics/ui/ui-events.jd b/docs/html/guide/topics/ui/ui-events.jd
index 5628d46..6b30e44 100644
--- a/docs/html/guide/topics/ui/ui-events.jd
+++ b/docs/html/guide/topics/ui/ui-events.jd
@@ -139,7 +139,7 @@
     this event can have multiple actions that follow each other. So, if you return <em>false</em> when the
     down action event is received, you indicate that you have not consumed the event and are also
     not interested in subsequent actions from this event. Thus, you will not be called for any other actions
-    within the event, such as a fingure gesture, or the eventual up action event.</li>
+    within the event, such as a finger gesture, or the eventual up action event.</li>
 </ul>
 
 <p>Remember that key events are always delivered to the View currently in focus. They are dispatched starting from the top
diff --git a/docs/html/guide/topics/views/custom-views.jd b/docs/html/guide/topics/views/custom-views.jd
index c5f9346..4e0e164 100644
--- a/docs/html/guide/topics/views/custom-views.jd
+++ b/docs/html/guide/topics/views/custom-views.jd
@@ -151,7 +151,7 @@
 <p><em>Note:</em>
 Except for 3D graphics. If you want to
 use 3D graphics, you must extend {@link android.view.SurfaceView SurfaceView}
-instead of View, and draw from a seperate thread. See the
+instead of View, and draw from a separate thread. See the
 GLSurfaceViewActivity sample
 for details.</p>
 <p><code>onMeasure()</code> is a little more involved. <code>onMeasure()</code>
@@ -171,7 +171,7 @@
   <li>
     The overridden <code>onMeasure()</code> method is called with width and
     height measure specifications (<code>widthMeasureSpec</code> and
-    <code>heighMeasureSpec</code> parameters, both are integer codes
+    <code>heightMeasureSpec</code> parameters, both are integer codes
     representing dimensions) which should be treated as requirements for
     the restrictions on the width and height measurements you should produce. A
     full reference to the kind of restrictions these specifications can require
@@ -434,7 +434,7 @@
 similar to what you want, you can simply extend that component and just
 override the behavior that you want to change. You can do all of the things
 you would do with a fully customized component, but by starting with a more
-specialized class in the View heirarchy, you can also get a lot of behavior for
+specialized class in the View hierarchy, you can also get a lot of behavior for
 free that probably does exactly what you want.</p>
 <p>For example, the SDK includes a <a
 href="{@docRoot}samples/NotePad/index.html">NotePad application</a> in the
diff --git a/docs/html/guide/tutorials/hello-world.jd b/docs/html/guide/tutorials/hello-world.jd
index 58d1a16..f6b54ff 100644
--- a/docs/html/guide/tutorials/hello-world.jd
+++ b/docs/html/guide/tutorials/hello-world.jd
@@ -478,12 +478,12 @@
 because it lets you quickly and interactively locate the specific reference
 you're looking for.</p>
 
-<p>It's possible yours looks slighly different than this (perhaps the hexadecimal values are different). 
+<p>It's possible yours looks slightly different than this (perhaps the hexadecimal values are different). 
 For now, notice the inner class named "layout", and its
 member field "main". The Eclipse plugin noticed the XML
 layout file named main.xml and generated a class for it here.  As you add other
 resources to your project (such as strings in the <code>res/values/string.xml</code> file or drawables inside
-the <code>res/drawable/</code> direcory) you'll see <code>R.java</code> change to keep up.</p>
+the <code>res/drawable/</code> directory) you'll see <code>R.java</code> change to keep up.</p>
 <p>When not using Eclipse, this class file will be generated for you at build time (with the Ant tool).</p>
 <p><em>You should never edit this file by hand.</em></p>
 </div>
diff --git a/docs/html/guide/tutorials/views/hello-autocomplete.jd b/docs/html/guide/tutorials/views/hello-autocomplete.jd
index fba1ad8..07235a1 100644
--- a/docs/html/guide/tutorials/views/hello-autocomplete.jd
+++ b/docs/html/guide/tutorials/views/hello-autocomplete.jd
@@ -44,7 +44,7 @@
     textView.setAdapter(adapter);
 }
 </pre>
-	<p>Here, we create an AutoComplteteTextView from our layout. We then 
+	<p>Here, we create an AutoCompleteTextView from our layout. We then 
 	create an {@link android.widget.ArrayAdapter} that binds a <code>simple_dropdown_item_1line</code>
 	layout item to each entry in the <code>COUNTRIES</code> array (which we'll add next).
 	The last part sets the ArrayAdapter to associate with our AutoCompleteTextView.</p>
diff --git a/docs/html/guide/tutorials/views/hello-formstuff.jd b/docs/html/guide/tutorials/views/hello-formstuff.jd
index da4289c..b554001 100644
--- a/docs/html/guide/tutorials/views/hello-formstuff.jd
+++ b/docs/html/guide/tutorials/views/hello-formstuff.jd
@@ -175,7 +175,7 @@
 </li>
 <li>To do something when each is selected, we'll need an OnClickListener. Unlike the other 
 listeners we've created, instead of creating this one as an anonymous inner class, 
-we'll create it as a new object. This way, we can re-use the OnClickLIstener for 
+we'll create it as a new object. This way, we can re-use the OnClickListener for 
 both RadioButtons. So, add the following code in the HelloFormStuff Activity
 (<em>outside</em> the <code>onCreate()</code> method):
 <pre>
diff --git a/docs/html/guide/tutorials/views/hello-gridview.jd b/docs/html/guide/tutorials/views/hello-gridview.jd
index ffb6c93..186c4e7 100644
--- a/docs/html/guide/tutorials/views/hello-gridview.jd
+++ b/docs/html/guide/tutorials/views/hello-gridview.jd
@@ -94,7 +94,7 @@
 }
 </pre>
     <p>First we take care of some required methods inherited from BaseAdapter.
-    The constructor and <code>getCount()</code> are self-explanitory. Normally, <code>getItem()</code>
+    The constructor and <code>getCount()</code> are self-explanatory. Normally, <code>getItem()</code>
     should return the actual object at the specified position in our Adapter, but for this Hello World,
     we're not going to bother. Likewise, <code>getItemId()</code> should return the row id of
     the item, but right now we don't care.</p>
diff --git a/docs/html/guide/tutorials/views/hello-mapview.jd b/docs/html/guide/tutorials/views/hello-mapview.jd
index 7a21485..458db4f 100644
--- a/docs/html/guide/tutorials/views/hello-mapview.jd
+++ b/docs/html/guide/tutorials/views/hello-mapview.jd
@@ -81,7 +81,7 @@
 
    <li>Now open the HelloMapView.java file. For this Activity, we're going to extend the special sub-class of 
       Activity called MapActivity, so change the class declaration to extend 
-      MapActicity, instead of Activity:</p>
+      MapActivity, instead of Activity:</p>
 
       <pre>public class HelloMapView extends MapActivity {</pre>
 
diff --git a/docs/html/guide/tutorials/views/hello-tabwidget.jd b/docs/html/guide/tutorials/views/hello-tabwidget.jd
index 8424616..98dddf53 100644
--- a/docs/html/guide/tutorials/views/hello-tabwidget.jd
+++ b/docs/html/guide/tutorials/views/hello-tabwidget.jd
@@ -53,7 +53,7 @@
     be associated with a different tab.
     In this case, each tab simply shows a different {@link android.widget.TextView} with some text. </p>
     <p>Notice that the TabWidget and the FrameLayout elements have specific <code>android</code> namespace IDs. These are necessary
-    so that the TabHost can automatically retireve references to them, populate the TabWidget with the tabs that we'll define
+    so that the TabHost can automatically retrieve references to them, populate the TabWidget with the tabs that we'll define
     in our code, and swap the views in the FrameLayout. We've also defined our own IDs for each TextView, which we'll use to 
     associate each tab with the view that it should reveal.</p>
     <p>Of course, you can 
diff --git a/docs/html/sdk/1.5_r3/upgrading.jd b/docs/html/sdk/1.5_r3/upgrading.jd
index f853d25..18c1314 100644
--- a/docs/html/sdk/1.5_r3/upgrading.jd
+++ b/docs/html/sdk/1.5_r3/upgrading.jd
@@ -174,7 +174,7 @@
 <ol>
     <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong>.</li>
     <li>Select the <strong>Available Software</strong> tab.</li>
-    <li>Expand the entry for the Andriod plugin (may be listed as the location URL)
+    <li>Expand the entry for the Android plugin (may be listed as the location URL)
       and select "Developer Tools" by checking the box next to it, then click 
       <strong>Install</strong>.</li>
     <li>On the next window, "Android DDMS" and "Android Development Tools" 
@@ -272,7 +272,7 @@
 your AIDL Java files will be generated in here. You <strong>must</strong> remove
 the old <code>R.java</code> and old auto-generated AIDL java files from the 
 <code>src/</code> folder. (This
-does not apply to your own hand-crafted parcelabe AIDL java files.)</p>
+does not apply to your own hand-crafted parcelable AIDL java files.)</p>
 
 <p class="note"><strong>Note:</strong> The "activitycreator" tool has been replaced 
 by the new "android" tool. For information on creating new projects with the android tool,
@@ -368,7 +368,7 @@
   listens for special keypress events that only occur on a keypad, then your application
   should degrade gracefully when there is no keyboard available.
   </li>
-  <li>Performs its own layout orientation changes based on the acceletometer (or via other
+  <li>Performs its own layout orientation changes based on the accelerometer (or via other
   sensors). Some devices running Android 1.5 will automatically rotate the orientation
   (and all devices have the option to turn on auto-rotation), so if your application also
   attempts to rotate the orientation, it can result in strange behavior. In addition, if your
diff --git a/docs/html/sdk/RELEASENOTES.jd b/docs/html/sdk/RELEASENOTES.jd
index fdaba61..5c3abf8 100644
--- a/docs/html/sdk/RELEASENOTES.jd
+++ b/docs/html/sdk/RELEASENOTES.jd
@@ -328,7 +328,7 @@
   <ul>
     <li>Multiple versions of the Android platform are included (Android 1.1,
 Android 1.5). The tools are updated to let you deploy your application
-on any platform in the SDK, which helps you ensure forward-compitility and, 
+on any platform in the SDK, which helps you ensure forward-compatibility and, 
 if applicable, backward-compatibility.</li>
     <li>Introduces <a href="{@docRoot}guide/developing/tools/avd.html">Android
 Virtual Devices</a> &mdash; (AVD) configurations of options that you
@@ -339,7 +339,7 @@
 Android SDK to give you access to one or more external Android libraries and/or
 a customized (but compliant) system image that can run in the emulator. </li>
     <li>The new Eclipse ADT plugin (version 0.9.x) offers new Wizards to let you
-create projects targetted for specific Android configurations, generate XML
+create projects targeted for specific Android configurations, generate XML
 resources (such as layouts, animations, and menus), generate alternate layouts,
 and export and sign your application for publishing.</li>
     <li>Improved JUnit support in ADT</li>
@@ -655,9 +655,9 @@
 
 <h3>Other Notes</h3>
 
-<p><strong>T-Mobile G1 Compatability</strong></p>
+<p><strong>T-Mobile G1 Compatibility</strong></p>
 
-<p>This version of the SDK has been tested for compatability with the first 
+<p>This version of the SDK has been tested for compatibility with the first 
 Android-powered mobile device, the <a href="http://www.t-mobileg1.com">T-Mobile
 G1</a>. </p>
 
diff --git a/docs/html/sdk/ndk/1.5_r1/index.jd b/docs/html/sdk/ndk/1.5_r1/index.jd
index 7ccbbcd..16d543d 100644
--- a/docs/html/sdk/ndk/1.5_r1/index.jd
+++ b/docs/html/sdk/ndk/1.5_r1/index.jd
@@ -146,7 +146,7 @@
 
 <p>The sections below describe the system and software requirements for using
 the Android NDK, as well as platform compatibility considerations that affect
-appplications using libraries produced with the NDK. </p>
+applications using libraries produced with the NDK. </p>
 
 <h4>The Android SDK</h4>
 <ul>
diff --git a/docs/html/videos/index.jd b/docs/html/videos/index.jd
index 4e53aac..157c077 100644
--- a/docs/html/videos/index.jd
+++ b/docs/html/videos/index.jd
@@ -98,7 +98,7 @@
     // Check whether this playlist includes the video title inside the description meta-data, so we can remove it
     if (playlistsWithTitleInDescription.indexOf(playlistId) != -1) {
       var lines = fullDescription.split("\n");
-      // If the first line includes the first 17 chars from the title, let's use the title from the desciption instead (because it's a more complete title)
+      // If the first line includes the first 17 chars from the title, let's use the title from the description instead (because it's a more complete title)
       // This accounts for, literally, "Google I/O 2009 -", which is (so far) the min AND max for properly identifying a title in the only playlist with titles in the description
       if (lines[0].indexOf(title.slice(0,16)) != -1) {  
 			h3Title = "<h3>" + lines[0] + "</h3>"; 	
@@ -332,7 +332,7 @@
 <script type="text/javascript">
 // Initialization actions
 showFeatured();            // load featured videos
-showPlaylists();           // load playslists
+showPlaylists();           // load playlists
 </script>
 
-	
\ No newline at end of file
+	
diff --git a/graphics/java/android/renderscript/ProgramFragment.java b/graphics/java/android/renderscript/ProgramFragment.java
index 1a72578..2b2557d 100644
--- a/graphics/java/android/renderscript/ProgramFragment.java
+++ b/graphics/java/android/renderscript/ProgramFragment.java
@@ -71,6 +71,7 @@
         Element mIn;
         Element mOut;
         boolean mPointSpriteEnable;
+        String mShader;
 
         private class Slot {
             Type mType;
@@ -94,6 +95,10 @@
             }
         }
 
+        public void setShader(String s) {
+            mShader = s;
+        }
+
         public void setType(int slot, Type t)
             throws IllegalArgumentException {
             if((slot < 0) || (slot >= MAX_SLOT)) {
@@ -146,6 +151,10 @@
                 }
             }
 
+            if (b.mShader != null) {
+                rs.nProgramFragmentSetShader(b.mShader);
+            }
+
             int id = rs.nProgramFragmentCreate();
             return new ProgramFragment(id, rs);
         }
diff --git a/graphics/java/android/renderscript/ProgramVertex.java b/graphics/java/android/renderscript/ProgramVertex.java
index ba97d5b..e284984 100644
--- a/graphics/java/android/renderscript/ProgramVertex.java
+++ b/graphics/java/android/renderscript/ProgramVertex.java
@@ -46,6 +46,7 @@
         Light[] mLights;
         int mLightCount;
         boolean mTextureMatrixEnable;
+        String mShader;
 
 
         public Builder(RenderScript rs, Element in, Element out) {
@@ -60,6 +61,10 @@
             mTextureMatrixEnable = enable;
         }
 
+        public void setShader(String s) {
+            mShader = s;
+        }
+
         public void addLight(Light l) throws IllegalStateException {
             if(mLightCount >= MAX_LIGHT) {
                 throw new IllegalArgumentException("Max light count exceeded.");
@@ -80,10 +85,14 @@
                 outID = b.mOut.mID;
             }
             rs.nProgramVertexBegin(inID, outID);
-            for(int ct=0; ct < b.mLightCount; ct++) {
-                rs.nProgramVertexAddLight(b.mLights[ct].mID);
+            if (b.mShader != null) {
+                rs.nProgramVertexSetShader(b.mShader);
+            } else {
+                for(int ct=0; ct < b.mLightCount; ct++) {
+                    rs.nProgramVertexAddLight(b.mLights[ct].mID);
+                }
+                rs.nProgramVertexSetTextureMatrixEnable(b.mTextureMatrixEnable);
             }
-            rs.nProgramVertexSetTextureMatrixEnable(b.mTextureMatrixEnable);
             int id = rs.nProgramVertexCreate();
             return new ProgramVertex(id, rs);
         }
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index 0d8b675..c8213c8 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -171,12 +171,14 @@
     native void nProgramFragmentBindTexture(int vpf, int slot, int a);
     native void nProgramFragmentBindSampler(int vpf, int slot, int s);
     native void nProgramFragmentSetSlot(int slot, boolean enable, int env, int vt);
+    native void nProgramFragmentSetShader(String txt);
     native int  nProgramFragmentCreate();
 
     native void nProgramVertexBindAllocation(int pv, int mID);
     native void nProgramVertexBegin(int inID, int outID);
     native void nProgramVertexSetTextureMatrixEnable(boolean enable);
     native void nProgramVertexAddLight(int id);
+    native void nProgramVertexSetShader(String txt);
     native int  nProgramVertexCreate();
 
     native void nLightBegin();
diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp
index af3bc74..ea5feb8 100644
--- a/graphics/jni/android_renderscript_RenderScript.cpp
+++ b/graphics/jni/android_renderscript_RenderScript.cpp
@@ -1053,9 +1053,20 @@
     return (jint)rsProgramFragmentStoreCreate(con);
 }
 
+
 // ---------------------------------------------------------------------------
 
 static void
+nProgramFragmentSetShader(JNIEnv *_env, jobject _this, jstring name)
+{
+    RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
+    const char* n = _env->GetStringUTFChars(name, NULL);
+    LOG_API("nProgramFragmentSetShader, con(%p)", con);
+    rsProgramFragmentSetShader(con, n, _env->GetStringUTFLength(name));
+    _env->ReleaseStringUTFChars(name, n);
+}
+
+static void
 nProgramFragmentBegin(JNIEnv *_env, jobject _this, jint in, jint out, jboolean pointSpriteEnable)
 {
     RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
@@ -1098,6 +1109,17 @@
 // ---------------------------------------------------------------------------
 
 static void
+nProgramVertexSetShader(JNIEnv *_env, jobject _this, jstring name)
+{
+    RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
+    const char* n = _env->GetStringUTFChars(name, NULL);
+    LOG_API("nProgramVertexSetShader, con(%p)", con);
+    rsProgramVertexSetShader(con, n, _env->GetStringUTFLength(name));
+    _env->ReleaseStringUTFChars(name, n);
+}
+
+
+static void
 nProgramVertexBegin(JNIEnv *_env, jobject _this, jint in, jint out)
 {
     RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
@@ -1436,6 +1458,7 @@
 {"nProgramFragmentBindTexture",    "(III)V",                               (void*)nProgramFragmentBindTexture },
 {"nProgramFragmentBindSampler",    "(III)V",                               (void*)nProgramFragmentBindSampler },
 {"nProgramFragmentSetSlot",        "(IZII)V",                              (void*)nProgramFragmentSetSlot },
+{"nProgramFragmentSetShader",      "(Ljava/lang/String;)V",                (void*)nProgramFragmentSetShader },
 {"nProgramFragmentCreate",         "()I",                                  (void*)nProgramFragmentCreate },
 
 {"nProgramRasterCreate",           "(IIZZZ)I",                             (void*)nProgramRasterCreate },
@@ -1446,6 +1469,7 @@
 {"nProgramVertexBegin",            "(II)V",                                (void*)nProgramVertexBegin },
 {"nProgramVertexSetTextureMatrixEnable",   "(Z)V",                         (void*)nProgramVertexSetTextureMatrixEnable },
 {"nProgramVertexAddLight",         "(I)V",                                 (void*)nProgramVertexAddLight },
+{"nProgramVertexSetShader",        "(Ljava/lang/String;)V",                (void*)nProgramVertexSetShader },
 {"nProgramVertexCreate",           "()I",                                  (void*)nProgramVertexCreate },
 
 {"nLightBegin",                    "()V",                                  (void*)nLightBegin },
diff --git a/libs/rs/Android.mk b/libs/rs/Android.mk
index 262ac8d..3080ab0 100644
--- a/libs/rs/Android.mk
+++ b/libs/rs/Android.mk
@@ -96,11 +96,14 @@
 	rsScript.cpp \
 	rsScriptC.cpp \
 	rsScriptC_Lib.cpp \
+        rsShaderCache.cpp \
 	rsSimpleMesh.cpp \
 	rsThreadIO.cpp \
-	rsType.cpp
+	rsType.cpp \
+	rsVertexArray.cpp
 
-LOCAL_SHARED_LIBRARIES += libcutils libutils libEGL libGLESv1_CM libui libacc
+
+LOCAL_SHARED_LIBRARIES += libcutils libutils libEGL libGLESv1_CM libGLESv2 libui libacc
 LOCAL_LDLIBS := -lpthread -ldl
 LOCAL_MODULE:= libRS
 LOCAL_MODULE_TAGS := optional
diff --git a/libs/rs/java/Film/src/com/android/film/FilmView.java b/libs/rs/java/Film/src/com/android/film/FilmView.java
index 1c5b2bc..4a201fd 100644
--- a/libs/rs/java/Film/src/com/android/film/FilmView.java
+++ b/libs/rs/java/Film/src/com/android/film/FilmView.java
@@ -42,19 +42,29 @@
 
     public FilmView(Context context) {
         super(context);
-
         //setFocusable(true);
     }
 
     private RenderScript mRS;
     private FilmRS mRender;
 
+
     public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
         super.surfaceChanged(holder, format, w, h);
+        if (mRS == null) {
+            mRS = createRenderScript(true);
+            mRS.contextSetSurface(w, h, holder.getSurface());
+            mRender = new FilmRS();
+            mRender.init(mRS, getResources(), w, h);
+        }
+    }
 
-        mRS = createRenderScript(true);
-        mRender = new FilmRS();
-        mRender.init(mRS, getResources(), w, h);
+    @Override
+    protected void onDetachedFromWindow() {
+        if(mRS != null) {
+            mRS = null;
+            destroyRenderScript();
+        }
     }
 
     @Override
diff --git a/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java b/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java
index 1e7c5a2..fcb93f4 100644
--- a/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java
+++ b/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java
@@ -51,7 +51,7 @@
     public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
         super.surfaceChanged(holder, format, w, h);
         if (mRS == null) {
-            mRS = createRenderScript(false, true);
+            mRS = createRenderScript(false);
             mRS.contextSetSurface(w, h, holder.getSurface());
             mRender = new FountainRS();
             mRender.init(mRS, getResources(), w, h);
diff --git a/libs/rs/java/Rollo/Android.mk b/libs/rs/java/Rollo/Android.mk
deleted file mode 100644
index 5a4957c..0000000
--- a/libs/rs/java/Rollo/Android.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-#LOCAL_STATIC_JAVA_LIBRARIES := android.renderscript
-
-LOCAL_PACKAGE_NAME := Rollo
-
-include $(BUILD_PACKAGE)
diff --git a/libs/rs/java/Rollo/AndroidManifest.xml b/libs/rs/java/Rollo/AndroidManifest.xml
deleted file mode 100644
index 12cb28f..0000000
--- a/libs/rs/java/Rollo/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.rollo">
-    <application
-        android:label="Rollo"
-        android:icon="@drawable/test_pattern">
-        <activity android:name="Rollo"
-                  android:theme="@android:style/Theme.Translucent"
-                  android:icon="@drawable/test_pattern">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-    </application>
-</manifest>
diff --git a/libs/rs/java/Rollo/res/drawable/test_pattern.png b/libs/rs/java/Rollo/res/drawable/test_pattern.png
deleted file mode 100644
index e7d1455..0000000
--- a/libs/rs/java/Rollo/res/drawable/test_pattern.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/browser.png b/libs/rs/java/Rollo/res/raw/browser.png
deleted file mode 100644
index 513f0be..0000000
--- a/libs/rs/java/Rollo/res/raw/browser.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/calendar.png b/libs/rs/java/Rollo/res/raw/calendar.png
deleted file mode 100644
index 030ae73..0000000
--- a/libs/rs/java/Rollo/res/raw/calendar.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/g1155.png b/libs/rs/java/Rollo/res/raw/g1155.png
deleted file mode 100644
index 68e1843..0000000
--- a/libs/rs/java/Rollo/res/raw/g1155.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/g2140.png b/libs/rs/java/Rollo/res/raw/g2140.png
deleted file mode 100644
index 8c4e853..0000000
--- a/libs/rs/java/Rollo/res/raw/g2140.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/maps.png b/libs/rs/java/Rollo/res/raw/maps.png
deleted file mode 100644
index fd5fc39..0000000
--- a/libs/rs/java/Rollo/res/raw/maps.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/market.png b/libs/rs/java/Rollo/res/raw/market.png
deleted file mode 100644
index 83b6910..0000000
--- a/libs/rs/java/Rollo/res/raw/market.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/path1920.png b/libs/rs/java/Rollo/res/raw/path1920.png
deleted file mode 100644
index 3510665..0000000
--- a/libs/rs/java/Rollo/res/raw/path1920.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/path1927.png b/libs/rs/java/Rollo/res/raw/path1927.png
deleted file mode 100644
index fccc846..0000000
--- a/libs/rs/java/Rollo/res/raw/path1927.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/path3099.png b/libs/rs/java/Rollo/res/raw/path3099.png
deleted file mode 100644
index 527ebf6..0000000
--- a/libs/rs/java/Rollo/res/raw/path3099.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/path3950.png b/libs/rs/java/Rollo/res/raw/path3950.png
deleted file mode 100644
index 59a646a..0000000
--- a/libs/rs/java/Rollo/res/raw/path3950.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/path431.png b/libs/rs/java/Rollo/res/raw/path431.png
deleted file mode 100644
index 5d2ed75..0000000
--- a/libs/rs/java/Rollo/res/raw/path431.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/path4481.png b/libs/rs/java/Rollo/res/raw/path4481.png
deleted file mode 100644
index 78be0fc..0000000
--- a/libs/rs/java/Rollo/res/raw/path4481.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/path5168.png b/libs/rs/java/Rollo/res/raw/path5168.png
deleted file mode 100644
index a7c3a19..0000000
--- a/libs/rs/java/Rollo/res/raw/path5168.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/path676.png b/libs/rs/java/Rollo/res/raw/path676.png
deleted file mode 100644
index 2099690..0000000
--- a/libs/rs/java/Rollo/res/raw/path676.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/path754.png b/libs/rs/java/Rollo/res/raw/path754.png
deleted file mode 100644
index 88aed5b..0000000
--- a/libs/rs/java/Rollo/res/raw/path754.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/path815.png b/libs/rs/java/Rollo/res/raw/path815.png
deleted file mode 100644
index 407570f..0000000
--- a/libs/rs/java/Rollo/res/raw/path815.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/photos.png b/libs/rs/java/Rollo/res/raw/photos.png
deleted file mode 100644
index 1ed8f1e..0000000
--- a/libs/rs/java/Rollo/res/raw/photos.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/polygon2408.png b/libs/rs/java/Rollo/res/raw/polygon2408.png
deleted file mode 100644
index 4413954..0000000
--- a/libs/rs/java/Rollo/res/raw/polygon2408.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/res/raw/rollo.c b/libs/rs/java/Rollo/res/raw/rollo.c
deleted file mode 100644
index b31be81..0000000
--- a/libs/rs/java/Rollo/res/raw/rollo.c
+++ /dev/null
@@ -1,184 +0,0 @@
-#pragma version(1)
-#pragma stateVertex(PV)
-#pragma stateFragment(PF)
-#pragma stateStore(PFS)
-
-// Scratch buffer layout
-#define SCRATCH_FADE 0
-#define SCRATCH_ZOOM 1
-#define SCRATCH_ROT 2
-
-//#define STATE_POS_X             0
-#define STATE_DONE              1
-//#define STATE_PRESSURE          2
-#define STATE_ZOOM              3
-//#define STATE_WARP              4
-#define STATE_ORIENTATION       5
-#define STATE_SELECTION         6
-#define STATE_FIRST_VISIBLE     7
-#define STATE_COUNT             8
-#define STATE_TOUCH             9
-
-
-float filter(float val, float target, float str)
-{
-    float delta = (target - val);
-    return val + delta * str;
-}
-
-int main(void* con, int ft, int launchID)
-{
-    int rowCount;
-    int row;
-    int col;
-    int imageID;
-    int done = loadI32(0, STATE_DONE);
-    int selectedID = loadI32(0, STATE_SELECTION);
-
-    float f = loadF(2, 0);
-
-    pfClearColor(0.0f, 0.0f, 0.0f, f);
-    if (done) {
-        if (f > 0.02f) {
-            //f = f - 0.02f;
-            //storeF(2, 0, f);
-        }
-    } else {
-        if (f < 0.8f) {
-            f = f + 0.02f;
-            storeF(2, 0, f);
-        }
-    }
-
-    float touchCut = 1.f;
-    if (loadI32(0, STATE_TOUCH)) {
-        touchCut = 4.f;
-    }
-
-
-    float targetZoom = ((float)loadI32(0, STATE_ZOOM)) / 1000.f;
-    float zoom = filter(loadF(2, SCRATCH_ZOOM), targetZoom, 0.15 * touchCut);
-    storeF(2, SCRATCH_ZOOM, zoom);
-
-    float targetRot = loadI32(0, STATE_FIRST_VISIBLE) / 180.0f * 3.14f;
-    targetRot = targetRot * 0.80f - .12f;
-    float drawRot = filter(loadF(2, SCRATCH_ROT), targetRot, 0.1f * touchCut);
-    storeF(2, SCRATCH_ROT, drawRot);
-
-    float diam = 8.f;
-    float scale = 1.0f / zoom;
-
-    // Bug makes 1.0f alpha fail.
-    color(1.0f, 1.0f, 1.0f, 0.99f);
-
-    float rot = drawRot * scale;
-    float rotStep = 16.0f / 180.0f * 3.14f * scale;
-    rowCount = 4;
-    int index = 0;
-    int iconCount = loadI32(0, STATE_COUNT);
-    while (iconCount) {
-        float tmpSin = sinf(rot);
-        float tmpCos = cosf(rot);
-            //debugF("rot", rot);
-
-        float tx1 = tmpSin * diam - (tmpCos * scale * 0.9f);
-        float tx2 = tx1 + (tmpCos * scale * 1.8f);
-        float tz1 = tmpCos * diam + (tmpSin * scale * 0.9f);
-        float tz2 = tz1 - (tmpSin * scale * 1.8f);
-
-        int y;
-        for (y = rowCount -1; (y >= 0) && iconCount; y--) {
-            float ty1 = ((y * 3.1f) - 5.f) * scale;
-            float ty2 = ty1 + scale * 1.8f;
-            bindTexture(NAMED_PF, 0, loadI32(1, index));
-            drawQuad(tx1, ty1, tz1,
-                     tx2, ty1, tz2,
-                     tx2, ty2, tz2,
-                     tx1, ty2, tz1);
-
-            iconCount--;
-            index++;
-        }
-        rot = rot + rotStep;
-    }
-
-    if ((zoom < 1.1f) && (zoom > 0.9f)) {
-        bindProgramVertex(NAMED_PVOrtho);
-        bindProgramFragment(NAMED_PFText);
-        bindProgramStore(NAMED_PFSText);
-
-        rot = drawRot * scale;
-        index = 0;
-        iconCount = loadI32(0, STATE_COUNT);
-        while (iconCount) {
-            int y;
-
-            float tx = 240.f + floorf(sinf(rot) * 430.f) - 64.f + 16.f;
-
-            float alpha = 2.4f - (fabsf(tx - 240.f + 48.f) / 76.f);
-            if (alpha > 0.99f) {
-                alpha = 0.99f;
-            }
-            alpha = alpha * (1.f - (fabsf(zoom - 1.f) * 10.f));
-
-            tx = tx + 0.25f;
-
-            for (y = rowCount -1; (y >= 0) && iconCount; y--) {
-
-                if (alpha > 0) {
-                    color(1.0f, 1.0f, 1.0f, alpha);
-
-                    float ty = 605.f - y * 150.f;
-
-                    ty = ty + 0.25f;
-
-                    bindTexture(NAMED_PFText, 0, loadI32(3, index));
-                    drawRect(tx, ty, tx + 128.f, ty + 32.f, 0.5f);
-                }
-                iconCount--;
-                index++;
-            }
-            rot = rot + rotStep;
-        }
-
-
-        bindProgramVertex(NAMED_PV);
-        bindProgramFragment(NAMED_PF);
-        bindProgramStore(NAMED_PFS);
-    }
-
-    // Draw the selected icon
-    color(1.0f, 1.0f, 1.0f, 0.9f);
-    rot = drawRot * scale;
-    index = 0;
-    iconCount = loadI32(0, STATE_COUNT);
-    while (iconCount) {
-        int y;
-        for (y = rowCount -1; (y >= 0) && iconCount; y--) {
-            if (index == selectedID) {
-
-                float tmpSin = sinf(rot) * scale;
-                float tmpCos = cosf(rot) * scale;
-                float tx1 = tmpSin * diam * 0.9f - tmpCos * 2.f;
-                float tx2 = tx1 + (tmpCos * 4.f);
-                float tz1 = tmpCos * diam * 0.9f + tmpSin * 2.f;
-                float tz2 = tz1 - (tmpSin * 4.f);
-
-                float ty1 = ((y * 3.1f) - 4.5f) * scale;
-                float ty2 = ty1 + scale * 4.f;
-                bindTexture(NAMED_PF, 0, loadI32(1, index));
-                drawQuad(tx1, ty1, tz1,
-                         tx2, ty1, tz2,
-                         tx2, ty2, tz2,
-                         tx1, ty2, tz1);
-            }
-            iconCount--;
-            index++;
-        }
-        rot = rot + rotStep;
-    }
-
-    return 1;
-}
-
-
diff --git a/libs/rs/java/Rollo/res/raw/rollo2.c b/libs/rs/java/Rollo/res/raw/rollo2.c
deleted file mode 100644
index 5b5cb2d..0000000
--- a/libs/rs/java/Rollo/res/raw/rollo2.c
+++ /dev/null
@@ -1,155 +0,0 @@
-#pragma version(1)
-#pragma stateVertex(PV)
-#pragma stateFragment(PF)
-#pragma stateStore(PFS)
-
-// Scratch buffer layout
-#define SCRATCH_FADE 0
-#define SCRATCH_ZOOM 1
-#define SCRATCH_ROT 2
-
-//#define STATE_POS_X             0
-#define STATE_DONE              1
-//#define STATE_PRESSURE          2
-#define STATE_ZOOM              3
-//#define STATE_WARP              4
-#define STATE_ORIENTATION       5
-#define STATE_SELECTION         6
-#define STATE_FIRST_VISIBLE     7
-#define STATE_COUNT             8
-#define STATE_TOUCH             9
-
-float filter(float val, float target, float str)
-{
-    float delta = (target - val);
-    return val + delta * str;
-}
-
-
-int main(void* con, int ft, int launchID)
-{
-    int rowCount;
-    int imageID;
-    int done = loadI32(0, STATE_DONE);
-    int selectedID = loadI32(0, STATE_SELECTION);
-    int iconCount = loadI32(0, STATE_COUNT);
-
-    float f = loadF(2, 0);
-
-    float iconSize = 1.f;
-    float iconSpacing = 0.2f;
-    float z = 4.f;
-
-    pfClearColor(0.0f, 0.0f, 0.0f, f);
-    if (done) {
-    } else {
-        if (f < 0.8f) {
-            f = f + 0.02f;
-            storeF(2, 0, f);
-        }
-    }
-
-    float touchCut = 1.f;
-    if (loadI32(0, STATE_TOUCH)) {
-        touchCut = 5.f;
-    }
-
-
-    float targetZoom = ((float)loadI32(0, STATE_ZOOM)) / 1000.f;
-    float zoom = filter(loadF(2, SCRATCH_ZOOM), targetZoom, 0.15 * touchCut);
-    storeF(2, SCRATCH_ZOOM, zoom);
-
-    float targetPos = loadI32(0, STATE_FIRST_VISIBLE) / (-20.0f);
-    float pos = filter(loadF(2, SCRATCH_ROT), targetPos, 0.1f * touchCut);
-    storeF(2, SCRATCH_ROT, pos);
-    pos = pos - 1.f;
-
-    color(1.0f, 1.0f, 1.0f, 1.0f);
-
-
-    // Draw flat icons first
-    int index = ((int)pos) * 4;
-    int row;
-    int col;
-    float xoffset = -0.3f;
-    float gridSize = iconSize * 4.f + iconSpacing * 3.f;
-    float yoffset = (pos - ((int)pos));
-    for (row = 0; row < 4; row ++) {
-        float ty1 = (gridSize / 2.f) - ((float)row - yoffset) * (iconSize + iconSpacing) - iconSize;
-        float ty2 = ty1 + iconSize;
-
-        for (col = 0; (col < 4) && (index < iconCount); col ++) {
-            if (index >= 0) {
-                bindTexture(NAMED_PF, 0, loadI32(1, index));
-                float fcol = col;
-                float tx1 = xoffset + (-gridSize / 2.f) + (fcol * (iconSize + iconSpacing));
-                float tx2 = tx1 + iconSize;
-
-                drawQuad(tx1, ty1, z,
-                         tx2, ty1, z,
-                         tx2, ty2, z,
-                         tx1, ty2, z);
-            }
-            index++;
-        }
-    }
-
-    // bottom roller
-    {
-        float roll = (1.f - yoffset) * 0.5f * 3.14f;
-        float tmpSin = sinf(roll);
-        float tmpCos = cosf(roll);
-
-        for (col = 0; (col < 4) && (index < iconCount) && (index >= 0); col ++) {
-            float ty2 = (gridSize / 2.f) - ((float)row - yoffset) * (iconSize + iconSpacing);
-            float ty1 = ty2 - tmpCos * iconSize;
-
-            float tz1 = z + tmpSin * iconSize;
-            float tz2 = z;
-
-            float tx1 = xoffset + (-gridSize / 2.f) + ((float)col * (iconSize + iconSpacing));
-            float tx2 = tx1 + iconSize;
-
-            bindTexture(NAMED_PF, 0, loadI32(1, index));
-            drawQuad(tx1, ty1, tz1,
-                     tx2, ty1, tz1,
-                     tx2, ty2, tz2,
-                     tx1, ty2, tz2);
-            index++;
-        }
-    }
-
-    // Top roller
-    {
-        index = (((int)pos) * 4) - 4;
-        float roll = yoffset * 0.5f * 3.14f;
-        float tmpSin = sinf(roll);
-        float tmpCos = cosf(roll);
-
-        for (col = 0; (col < 4) && (index < iconCount) && (index >= 0); col ++) {
-            float ty1 = (gridSize / 2.f) - ((float)-1.f - yoffset) * (iconSize + iconSpacing) - iconSize;
-            float ty2 = ty1 + tmpCos * iconSize;
-
-            float tz1 = z;
-            float tz2 = z + tmpSin * iconSize;
-
-            float tx1 = xoffset + (-gridSize / 2.f) + ((float)col * (iconSize + iconSpacing));
-            float tx2 = tx1 + iconSize;
-
-            bindTexture(NAMED_PF, 0, loadI32(1, index));
-            drawQuad(tx1, ty1, tz1,
-                     tx2, ty1, tz1,
-                     tx2, ty2, tz2,
-                     tx1, ty2, tz2);
-            index++;
-        }
-    }
-
-
-
-
-    return 1;
-}
-
-
-
diff --git a/libs/rs/java/Rollo/res/raw/settings.png b/libs/rs/java/Rollo/res/raw/settings.png
deleted file mode 100644
index dd2cd95..0000000
--- a/libs/rs/java/Rollo/res/raw/settings.png
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Rollo/src/com/android/rollo/Rollo.java b/libs/rs/java/Rollo/src/com/android/rollo/Rollo.java
deleted file mode 100644
index 400d801..0000000
--- a/libs/rs/java/Rollo/src/com/android/rollo/Rollo.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.rollo;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScript;
-
-import android.app.Activity;
-import android.content.res.Configuration;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.provider.Settings.System;
-import android.util.Config;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.Window;
-import android.widget.Button;
-import android.widget.ListView;
-
-import java.lang.Runtime;
-
-public class Rollo extends Activity {
-    //EventListener mListener = new EventListener();
-
-    private static final String LOG_TAG = "libRS_jni";
-    private static final boolean DEBUG  = false;
-    private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV;
-
-    private RolloView mView;
-
-    // get the current looper (from your Activity UI thread for instance
-
-
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        // Create our Preview view and set it as the content of our
-        // Activity
-        mView = new RolloView(this);
-        setContentView(mView);
-    }
-
-    @Override
-    protected void onResume() {
-        // Ideally a game should implement onResume() and onPause()
-        // to take appropriate action when the activity looses focus
-        super.onResume();
-        mView.onResume();
-    }
-
-    @Override
-    protected void onPause() {
-        // Ideally a game should implement onResume() and onPause()
-        // to take appropriate action when the activity looses focus
-        super.onPause();
-        mView.onPause();
-
-        Runtime.getRuntime().exit(0);
-    }
-
-
-    static void log(String message) {
-        if (LOG_ENABLED) {
-            Log.v(LOG_TAG, message);
-        }
-    }
-
-
-}
-
diff --git a/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java b/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java
deleted file mode 100644
index ff89bc3..0000000
--- a/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.rollo;
-
-import java.io.Writer;
-
-import android.renderscript.RenderScript;
-import android.renderscript.ProgramVertex;
-import android.renderscript.Element;
-import android.renderscript.Allocation;
-import android.renderscript.Script;
-import android.renderscript.ScriptC;
-import android.renderscript.ProgramFragment;
-import android.renderscript.ProgramStore;
-import android.renderscript.Sampler;
-
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.graphics.Typeface;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.util.Log;
-
-public class RolloRS {
-    //public static final int STATE_SELECTED_ID = 0;
-    public static final int STATE_DONE = 1;
-    //public static final int STATE_PRESSURE = 2;
-    public static final int STATE_ZOOM = 3;
-    //public static final int STATE_WARP = 4;
-    public static final int STATE_ORIENTATION = 5;
-    public static final int STATE_SELECTION = 6;
-    public static final int STATE_FIRST_VISIBLE = 7;
-    public static final int STATE_COUNT = 8;
-    public static final int STATE_TOUCH = 9;
-
-
-    public RolloRS() {
-    }
-
-    public void init(RenderScript rs, Resources res, int width, int height) {
-        mRS = rs;
-        mRes = res;
-        mWidth = width;
-        mHeight = height;
-        initNamed();
-        initRS();
-    }
-
-    public void setPosition(float column) {
-        mAllocStateBuf[STATE_FIRST_VISIBLE] = (int)(column * (-20));
-        mAllocState.data(mAllocStateBuf);
-    }
-
-    public void setTouch(boolean touch) {
-        mAllocStateBuf[STATE_TOUCH] = touch ? 1 : 0;
-        mAllocState.data(mAllocStateBuf);
-    }
-
-    public void setZoom(float z) {
-        //Log.e("rs", "zoom " + Float.toString(z));
-
-        mAllocStateBuf[STATE_ZOOM] = (int)(z * 1000.f);
-        mAllocState.data(mAllocStateBuf);
-    }
-
-    public void setSelected(int index) {
-        //Log.e("rs",  "setSelected " + Integer.toString(index));
-
-        mAllocStateBuf[STATE_SELECTION] = index;
-        mAllocStateBuf[STATE_DONE] = 1;
-        mAllocState.data(mAllocStateBuf);
-    }
-
-    private int mWidth;
-    private int mHeight;
-
-    private Resources mRes;
-    private RenderScript mRS;
-    private Script mScript;
-    private Sampler mSampler;
-    private Sampler mSamplerText;
-    private ProgramStore mPSBackground;
-    private ProgramStore mPSText;
-    private ProgramFragment mPFImages;
-    private ProgramFragment mPFText;
-    private ProgramVertex mPV;
-    private ProgramVertex.MatrixAllocation mPVAlloc;
-    private ProgramVertex mPVOrtho;
-    private ProgramVertex.MatrixAllocation mPVOrthoAlloc;
-    private Allocation[] mIcons;
-    private Allocation[] mLabels;
-
-    private int[] mAllocStateBuf;
-    private Allocation mAllocState;
-
-    private int[] mAllocIconIDBuf;
-    private Allocation mAllocIconID;
-
-    private int[] mAllocLabelIDBuf;
-    private Allocation mAllocLabelID;
-
-    private int[] mAllocScratchBuf;
-    private Allocation mAllocScratch;
-
-    private void initNamed() {
-        Sampler.Builder sb = new Sampler.Builder(mRS);
-        sb.setMin(Sampler.Value.LINEAR);//_MIP_LINEAR);
-        sb.setMag(Sampler.Value.LINEAR);
-        sb.setWrapS(Sampler.Value.CLAMP);
-        sb.setWrapT(Sampler.Value.CLAMP);
-        mSampler = sb.create();
-
-        sb.setMin(Sampler.Value.NEAREST);
-        sb.setMag(Sampler.Value.NEAREST);
-        mSamplerText = sb.create();
-
-
-        ProgramFragment.Builder bf = new ProgramFragment.Builder(mRS, null, null);
-        bf.setTexEnable(true, 0);
-        bf.setTexEnvMode(ProgramFragment.EnvMode.MODULATE, 0);
-        mPFImages = bf.create();
-        mPFImages.setName("PF");
-        mPFImages.bindSampler(mSampler, 0);
-
-        bf.setTexEnvMode(ProgramFragment.EnvMode.MODULATE, 0);
-        mPFText = bf.create();
-        mPFText.setName("PFText");
-        mPFText.bindSampler(mSamplerText, 0);
-
-        ProgramStore.Builder bs = new ProgramStore.Builder(mRS, null, null);
-        bs.setDepthFunc(ProgramStore.DepthFunc.LESS);
-        bs.setDitherEnable(false);
-        bs.setDepthMask(true);
-        bs.setBlendFunc(ProgramStore.BlendSrcFunc.SRC_ALPHA,
-                        ProgramStore.BlendDstFunc.ONE_MINUS_SRC_ALPHA);
-        mPSBackground = bs.create();
-        mPSBackground.setName("PFS");
-
-        bs.setDepthFunc(ProgramStore.DepthFunc.ALWAYS);
-        bs.setDepthMask(false);
-        bs.setBlendFunc(ProgramStore.BlendSrcFunc.SRC_ALPHA,
-                        ProgramStore.BlendDstFunc.ONE_MINUS_SRC_ALPHA);
-        mPSText = bs.create();
-        mPSText.setName("PFSText");
-
-        mPVAlloc = new ProgramVertex.MatrixAllocation(mRS);
-        mPVAlloc.setupProjectionNormalized(mWidth, mHeight);
-
-        ProgramVertex.Builder pvb = new ProgramVertex.Builder(mRS, null, null);
-        mPV = pvb.create();
-        mPV.setName("PV");
-        mPV.bindAllocation(mPVAlloc);
-
-        mPVOrthoAlloc = new ProgramVertex.MatrixAllocation(mRS);
-        mPVOrthoAlloc.setupOrthoWindow(mWidth, mHeight);
-
-        pvb.setTextureMatrixEnable(true);
-        mPVOrtho = pvb.create();
-        mPVOrtho.setName("PVOrtho");
-        mPVOrtho.bindAllocation(mPVOrthoAlloc);
-
-        mRS.contextBindProgramVertex(mPV);
-
-        mAllocScratchBuf = new int[32];
-        mAllocScratch = Allocation.createSized(mRS,
-            Element.USER_I32(mRS), mAllocScratchBuf.length);
-        mAllocScratch.data(mAllocScratchBuf);
-
-        Log.e("rs", "Done loading named");
-
-
-
-        {
-            mIcons = new Allocation[29];
-            mAllocIconIDBuf = new int[mIcons.length];
-            mAllocIconID = Allocation.createSized(mRS,
-                Element.USER_I32(mRS), mAllocIconIDBuf.length);
-
-            mLabels = new Allocation[29];
-            mAllocLabelIDBuf = new int[mLabels.length];
-            mAllocLabelID = Allocation.createSized(mRS,
-                Element.USER_I32(mRS), mLabels.length);
-
-            Element ie8888 = Element.RGBA_8888(mRS);
-
-            mIcons[0] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.browser, ie8888, true);
-            mIcons[1] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.market, ie8888, true);
-            mIcons[2] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.photos, ie8888, true);
-            mIcons[3] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.settings, ie8888, true);
-            mIcons[4] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.calendar, ie8888, true);
-            mIcons[5] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.g1155, ie8888, true);
-            mIcons[6] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.g2140, ie8888, true);
-            mIcons[7] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.maps, ie8888, true);
-            mIcons[8] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path431, ie8888, true);
-            mIcons[9] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path676, ie8888, true);
-            mIcons[10] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path754, ie8888, true);
-            mIcons[11] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path815, ie8888, true);
-            mIcons[12] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path1920, ie8888, true);
-            mIcons[13] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path1927, ie8888, true);
-            mIcons[14] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path3099, ie8888, true);
-            mIcons[15] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path3950, ie8888, true);
-            mIcons[16] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path4481, ie8888, true);
-            mIcons[17] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.path5168, ie8888, true);
-            mIcons[18] = Allocation.createFromBitmapResource(mRS, mRes, R.raw.polygon2408, ie8888, true);
-
-            mLabels[0] = makeTextBitmap("browser");
-            mLabels[1] = makeTextBitmap("market");
-            mLabels[2] = makeTextBitmap("photos");
-            mLabels[3] = makeTextBitmap("settings");
-            mLabels[4] = makeTextBitmap("calendar");
-            mLabels[5] = makeTextBitmap("g1155");
-            mLabels[6] = makeTextBitmap("g2140");
-            mLabels[7] = makeTextBitmap("maps");
-            mLabels[8] = makeTextBitmap("path431");
-            mLabels[9] = makeTextBitmap("path676");
-            mLabels[10] = makeTextBitmap("path754");
-            mLabels[11] = makeTextBitmap("path815");
-            mLabels[12] = makeTextBitmap("path1920");
-            mLabels[13] = makeTextBitmap("path1927");
-            mLabels[14] = makeTextBitmap("path3099");
-            mLabels[15] = makeTextBitmap("path3950");
-            mLabels[16] = makeTextBitmap("path4481");
-            mLabels[17] = makeTextBitmap("path5168");
-            mLabels[18] = makeTextBitmap("polygon2408");
-
-            mIcons[19] = mIcons[0];
-            mIcons[20] = mIcons[1];
-            mIcons[21] = mIcons[2];
-            mIcons[22] = mIcons[3];
-            mIcons[23] = mIcons[4];
-            mIcons[24] = mIcons[5];
-            mIcons[25] = mIcons[6];
-            mIcons[26] = mIcons[7];
-            mIcons[27] = mIcons[8];
-            mIcons[28] = mIcons[9];
-
-            mLabels[19] = mLabels[0];
-            mLabels[20] = mLabels[1];
-            mLabels[21] = mLabels[2];
-            mLabels[22] = mLabels[3];
-            mLabels[23] = mLabels[4];
-            mLabels[24] = mLabels[5];
-            mLabels[25] = mLabels[6];
-            mLabels[26] = mLabels[7];
-            mLabels[27] = mLabels[8];
-            mLabels[28] = mLabels[9];
-
-            for(int ct=0; ct < mIcons.length; ct++) {
-                mIcons[ct].uploadToTexture(0);
-                mLabels[ct].uploadToTexture(0);
-                mAllocIconIDBuf[ct] = mIcons[ct].getID();
-                mAllocLabelIDBuf[ct] = mLabels[ct].getID();
-            }
-            mAllocIconID.data(mAllocIconIDBuf);
-            mAllocLabelID.data(mAllocLabelIDBuf);
-        }
-
-    }
-
-    Allocation makeTextBitmap(String t) {
-        Bitmap b = Bitmap.createBitmap(128, 32, Bitmap.Config.ARGB_8888);
-        Canvas c = new Canvas(b);
-        Paint p = new Paint();
-        p.setTypeface(Typeface.DEFAULT_BOLD);
-        p.setTextSize(20);
-        p.setColor(0xffffffff);
-        c.drawText(t, 2, 26, p);
-        return Allocation.createFromBitmap(mRS, b, Element.RGBA_8888(mRS), true);
-    }
-
-
-    private void initRS() {
-        ScriptC.Builder sb = new ScriptC.Builder(mRS);
-        sb.setScript(mRes, R.raw.rollo);
-        //sb.setScript(mRes, R.raw.rollo2);
-        sb.setRoot(true);
-        mScript = sb.create();
-        mScript.setClearColor(0.0f, 0.0f, 0.0f, 0.0f);
-
-        mAllocStateBuf = new int[] {0, 0, 0, 8, 0, 0, -1, 0, mAllocIconIDBuf.length, 0, 0};
-        mAllocState = Allocation.createSized(mRS,
-            Element.USER_I32(mRS), mAllocStateBuf.length);
-        mScript.bindAllocation(mAllocState, 0);
-        mScript.bindAllocation(mAllocIconID, 1);
-        mScript.bindAllocation(mAllocScratch, 2);
-        mScript.bindAllocation(mAllocLabelID, 3);
-        setPosition(0);
-        setZoom(1);
-
-        //RenderScript.File f = mRS.fileOpen("/sdcard/test.a3d");
-
-        mRS.contextBindRootScript(mScript);
-    }
-}
-
-
diff --git a/libs/rs/java/Rollo/src/com/android/rollo/RolloView.java b/libs/rs/java/Rollo/src/com/android/rollo/RolloView.java
deleted file mode 100644
index 7524a0e..0000000
--- a/libs/rs/java/Rollo/src/com/android/rollo/RolloView.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.rollo;
-
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.concurrent.Semaphore;
-import java.lang.Float;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScript;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.os.Handler;
-import android.os.Message;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.Surface;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.graphics.PixelFormat;
-
-
-public class RolloView extends RSSurfaceView {
-    public RolloView(Context context) {
-        super(context);
-        setFocusable(true);
-        getHolder().setFormat(PixelFormat.TRANSLUCENT);
-    }
-
-    private RenderScript mRS;
-    private RolloRS mRender;
-
-    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
-        super.surfaceChanged(holder, format, w, h);
-
-        mRS = createRenderScript(false);
-        mRender = new RolloRS();
-        mRender.init(mRS, getResources(), w, h);
-    }
-
-    @Override
-    public boolean onKeyDown(int keyCode, KeyEvent event)
-    {
-        // break point at here
-        // this method doesn't work when 'extends View' include 'extends ScrollView'.
-        return super.onKeyDown(keyCode, event);
-    }
-
-    boolean mControlMode = false;
-    boolean mZoomMode = false;
-    boolean mFlingMode = false;
-    float mFlingX = 0;
-    float mFlingY = 0;
-    float mColumn = -1;
-    float mOldColumn;
-    float mZoom = 1;
-
-    int mIconCount = 29;
-    int mRows = 4;
-    int mColumns = (mIconCount + mRows - 1) / mRows;
-
-    float mMaxZoom = ((float)mColumns) / 3.f;
-
-
-    void setColumn(boolean clamp)
-    {
-        //Log.e("rs", " col = " + Float.toString(mColumn));
-        float c = mColumn;
-        if(c > (mColumns -2)) {
-            c = (mColumns -2);
-        }
-        if(c < 0) {
-            c = 0;
-        }
-        mRender.setPosition(c);
-        if(clamp) {
-            mColumn = c;
-        }
-    }
-
-    void computeSelection(float x, float y)
-    {
-        float col = mColumn + (x - 0.5f) * 4 + 1.25f;
-        int iCol = (int)(col + 0.25f);
-
-        float row = (y / 0.8f) * mRows;
-        int iRow = (int)(row - 0.5f);
-
-        mRender.setSelected(iCol * mRows + iRow);
-    }
-
-    @Override
-    public boolean onTouchEvent(MotionEvent ev)
-    {
-        boolean ret = true;
-        int act = ev.getAction();
-        if (act == ev.ACTION_UP) {
-            ret = false;
-        }
-
-        float nx = ev.getX() / getWidth();
-        float ny = ev.getY() / getHeight();
-
-        //Log.e("rs", "width=" + Float.toString(getWidth()));
-        //Log.e("rs", "height=" + Float.toString(getHeight()));
-
-        mRender.setTouch(ret);
-
-        if((ny > 0.85f) || mControlMode) {
-            mFlingMode = false;
-
-            // Projector control
-            if((nx > 0.2f) && (nx < 0.8f) || mControlMode) {
-                if(act != ev.ACTION_UP) {
-                    float zoom = mMaxZoom;
-                    if(mControlMode) {
-                        if(!mZoomMode) {
-                            zoom = 1.f;
-                        }
-                        float dx = nx - mFlingX;
-
-                        if((ny < 0.9) && mZoomMode) {
-                            zoom = mMaxZoom - ((0.9f - ny) * 10.f);
-                            if(zoom < 1) {
-                                zoom = 1;
-                                mZoomMode = false;
-                            }
-                            mOldColumn = mColumn;
-                        }
-                        mColumn += dx * 4;// * zoom;
-                        if(zoom > 1.01f) {
-                            mColumn += (mZoom - zoom) * (nx - 0.5f) * 4 * zoom;
-                        }
-                    } else {
-                        mOldColumn = mColumn;
-                        mColumn = ((float)mColumns) / 2;
-                        mControlMode = true;
-                        mZoomMode = true;
-                    }
-                    mZoom = zoom;
-                    mFlingX = nx;
-                    mRender.setZoom(zoom);
-                    if(mZoom < 1.01f) {
-                        computeSelection(nx, ny);
-                    }
-                } else {
-                    mControlMode = false;
-                    mColumn = mOldColumn;
-                    mRender.setZoom(1.f);
-                    mRender.setSelected(-1);
-                }
-            } else {
-                // Do something with corners here....
-            }
-            setColumn(true);
-
-        } else {
-            // icon control
-            if(act != ev.ACTION_UP) {
-                if(mFlingMode) {
-                    mColumn += (mFlingX - nx) * 4;
-                    setColumn(true);
-                }
-                mFlingMode = true;
-                mFlingX = nx;
-                mFlingY = ny;
-            } else {
-                mFlingMode = false;
-                mColumn = (float)(java.lang.Math.floor(mColumn * 0.25f + 0.3f) * 4.f) + 1.f;
-                setColumn(true);
-            }
-        }
-
-
-        return ret;
-    }
-
-    @Override
-    public boolean onTrackballEvent(MotionEvent ev)
-    {
-        float x = ev.getX();
-        float y = ev.getY();
-        //Float tx = new Float(x);
-        //Float ty = new Float(y);
-        //Log.e("rs", "tbe " + tx.toString() + ", " + ty.toString());
-
-
-        return true;
-    }
-
-}
-
-
diff --git a/libs/rs/rs.spec b/libs/rs/rs.spec
index a4e72d9..c7ae18a 100644
--- a/libs/rs/rs.spec
+++ b/libs/rs/rs.spec
@@ -372,6 +372,11 @@
 	param bool pointSpriteEnable
 	}
 
+ProgramFragmentSetShader {
+	param const char * text
+	param uint32_t length
+	}
+
 ProgramFragmentBindTexture {
 	param RsProgramFragment pf
 	param uint32_t slot
@@ -414,6 +419,11 @@
 	param bool enable
 	}
 
+ProgramVertexSetShader {
+	param const char * text
+	param uint32_t length
+	}
+
 ProgramVertexAddLight {
 	param RsLight light
 	}
diff --git a/libs/rs/rsAllocation.cpp b/libs/rs/rsAllocation.cpp
index ff8d29f..3aee6b8 100644
--- a/libs/rs/rsAllocation.cpp
+++ b/libs/rs/rsAllocation.cpp
@@ -148,6 +148,7 @@
         return;
     }
     memcpy(mPtr, data, size);
+    sendDirty();
 }
 
 void Allocation::read(void *data)
@@ -168,6 +169,7 @@
         return;
     }
     memcpy(ptr, data, size);
+    sendDirty();
 }
 
 void Allocation::subData(uint32_t xoff, uint32_t yoff,
@@ -192,6 +194,7 @@
         src += lineSize;
         dst += destW * eSize;
     }
+    sendDirty();
 }
 
 void Allocation::subData(uint32_t xoff, uint32_t yoff, uint32_t zoff,
@@ -199,6 +202,22 @@
 {
 }
 
+void Allocation::addProgramToDirty(const Program *p)
+{
+    mToDirtyList.add(p);
+}
+
+void Allocation::removeProgramToDirty(const Program *p)
+{
+    for (size_t ct=0; ct < mToDirtyList.size(); ct++) {
+        if (mToDirtyList[ct] == p) {
+            mToDirtyList.removeAt(ct);
+            return;
+        }
+    }
+    rsAssert(0);
+}
+
 void Allocation::dumpLOGV(const char *prefix) const
 {
     ObjectBase::dumpLOGV(prefix);
@@ -215,9 +234,14 @@
     LOGV("%s allocation mIsTexture=%i mTextureID=%i, mIsVertexBuffer=%i, mBufferID=%i",
           prefix, mIsTexture, mTextureID, mIsVertexBuffer, mBufferID);
 
-
 }
 
+void Allocation::sendDirty() const
+{
+    for (size_t ct=0; ct < mToDirtyList.size(); ct++) {
+        mToDirtyList[ct]->forceDirty();
+    }
+}
 
 /////////////////
 //
@@ -452,31 +476,24 @@
     RsAllocation ret = rsi_AllocationCreateFromBitmap(rsc, w2, h2, _dst, _src, genMips, tmp);
     free(tmp);
     return ret;
-
-
-
-
 }
 
 void rsi_AllocationData(Context *rsc, RsAllocation va, const void *data, uint32_t sizeBytes)
 {
     Allocation *a = static_cast<Allocation *>(va);
     a->data(data, sizeBytes);
-    rsc->allocationCheck(a);
 }
 
 void rsi_Allocation1DSubData(Context *rsc, RsAllocation va, uint32_t xoff, uint32_t count, const void *data, uint32_t sizeBytes)
 {
     Allocation *a = static_cast<Allocation *>(va);
     a->subData(xoff, count, data, sizeBytes);
-    rsc->allocationCheck(a);
 }
 
 void rsi_Allocation2DSubData(Context *rsc, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, const void *data, uint32_t sizeBytes)
 {
     Allocation *a = static_cast<Allocation *>(va);
     a->subData(xoff, yoff, w, h, data, sizeBytes);
-    rsc->allocationCheck(a);
 }
 
 void rsi_AllocationRead(Context *rsc, RsAllocation va, void *data)
diff --git a/libs/rs/rsAllocation.h b/libs/rs/rsAllocation.h
index f54284a..490abcf 100644
--- a/libs/rs/rsAllocation.h
+++ b/libs/rs/rsAllocation.h
@@ -23,7 +23,7 @@
 namespace android {
 namespace renderscript {
 
-
+class Program;
 
 class Allocation : public ObjectBase
 {
@@ -65,13 +65,19 @@
     void enableGLVertexBuffers() const;
     void setupGLIndexBuffers() const;
 
+    void addProgramToDirty(const Program *);
+    void removeProgramToDirty(const Program *);
+
     virtual void dumpLOGV(const char *prefix) const;
 
-
 protected:
+    void sendDirty() const;
+
     ObjectBaseRef<const Type> mType;
     void * mPtr;
 
+    Vector<const Program *> mToDirtyList;
+
     // Usage restrictions
     bool mCpuWrite;
     bool mCpuRead;
diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp
index 52074ca..3d2caff 100644
--- a/libs/rs/rsContext.cpp
+++ b/libs/rs/rsContext.cpp
@@ -50,11 +50,12 @@
     }
 }
 
-void Context::initEGL()
+void Context::initEGL(bool useGL2)
 {
     mEGL.mNumConfigs = -1;
     EGLint configAttribs[128];
     EGLint *configAttribsPtr = configAttribs;
+    EGLint context_attribs2[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE };
 
     memset(configAttribs, 0, sizeof(configAttribs));
 
@@ -62,6 +63,12 @@
     configAttribsPtr[1] = EGL_WINDOW_BIT;
     configAttribsPtr += 2;
 
+    if (useGL2) {
+        configAttribsPtr[0] = EGL_RENDERABLE_TYPE;
+        configAttribsPtr[1] = EGL_OPENGL_ES2_BIT;
+        configAttribsPtr += 2;
+    }
+
     if (mUseDepth) {
         configAttribsPtr[0] = EGL_DEPTH_SIZE;
         configAttribsPtr[1] = 16;
@@ -91,7 +98,11 @@
     //eglChooseConfig(mEGL.mDisplay, configAttribs, &mEGL.mConfig, 1, &mEGL.mNumConfigs);
 
 
-    mEGL.mContext = eglCreateContext(mEGL.mDisplay, mEGL.mConfig, EGL_NO_CONTEXT, NULL);
+    if (useGL2) {
+        mEGL.mContext = eglCreateContext(mEGL.mDisplay, mEGL.mConfig, EGL_NO_CONTEXT, context_attribs2);
+    } else {
+        mEGL.mContext = eglCreateContext(mEGL.mDisplay, mEGL.mConfig, EGL_NO_CONTEXT, NULL);
+    }
     checkEglError("eglCreateContext");
     if (mEGL.mContext == EGL_NO_CONTEXT) {
         LOGE("eglCreateContext returned EGL_NO_CONTEXT");
@@ -223,10 +234,20 @@
 
 void Context::setupCheck()
 {
-    mFragmentStore->setupGL(this, &mStateFragmentStore);
-    mFragment->setupGL(this, &mStateFragment);
-    mRaster->setupGL(this, &mStateRaster);
-    mVertex->setupGL(this, &mStateVertex);
+    if (checkVersion2_0()) {
+        mShaderCache.lookup(mVertex.get(), mFragment.get());
+
+        mFragmentStore->setupGL2(this, &mStateFragmentStore);
+        mFragment->setupGL2(this, &mStateFragment, &mShaderCache);
+        mRaster->setupGL2(this, &mStateRaster);
+        mVertex->setupGL2(this, &mStateVertex, &mShaderCache);
+
+    } else {
+        mFragmentStore->setupGL(this, &mStateFragmentStore);
+        mFragment->setupGL(this, &mStateFragment);
+        mRaster->setupGL(this, &mStateRaster);
+        mVertex->setupGL(this, &mStateVertex);
+    }
 }
 
 static bool getProp(const char *str)
@@ -247,10 +268,6 @@
      rsc->props.mLogScripts = getProp("debug.rs.script");
      rsc->props.mLogObjects = getProp("debug.rs.objects");
 
-     //pthread_mutex_lock(&gInitMutex);
-     //rsc->initEGL();
-     //pthread_mutex_unlock(&gInitMutex);
-
      ScriptTLSStruct *tlsStruct = new ScriptTLSStruct;
      if (!tlsStruct) {
          LOGE("Error allocating tls storage");
@@ -271,6 +288,7 @@
      rsc->setFragment(NULL);
      rsc->mStateFragmentStore.init(rsc, rsc->mEGL.mWidth, rsc->mEGL.mHeight);
      rsc->setFragmentStore(NULL);
+     rsc->mStateVertexArray.init(rsc);
 
      rsc->mRunning = true;
      bool mDraw = true;
@@ -449,7 +467,7 @@
         if (!mEGL.mContext) {
             first = true;
             pthread_mutex_lock(&gInitMutex);
-            initEGL();
+            initEGL(true);
             pthread_mutex_unlock(&gInitMutex);
         }
 
@@ -480,14 +498,24 @@
 
             //LOGV("EGL Version %i %i", mEGL.mMajorVersion, mEGL.mMinorVersion);
             LOGV("GL Version %s", mGL.mVersion);
-            LOGV("GL Vendor %s", mGL.mVendor);
+            //LOGV("GL Vendor %s", mGL.mVendor);
             LOGV("GL Renderer %s", mGL.mRenderer);
             //LOGV("GL Extensions %s", mGL.mExtensions);
 
-            if ((strlen((const char *)mGL.mVersion) < 12) || memcmp(mGL.mVersion, "OpenGL ES-CM", 12)) {
+            const char *verptr = NULL;
+            if (strlen((const char *)mGL.mVersion) > 9) {
+                if (!memcmp(mGL.mVersion, "OpenGL ES-CM", 12)) {
+                    verptr = (const char *)mGL.mVersion + 12;
+                }
+                if (!memcmp(mGL.mVersion, "OpenGL ES ", 10)) {
+                    verptr = (const char *)mGL.mVersion + 9;
+                }
+            }
+
+            if (!verptr) {
                 LOGE("Error, OpenGL ES Lite not supported");
             } else {
-                sscanf((const char *)mGL.mVersion + 13, "%i.%i", &mGL.mMajorVersion, &mGL.mMinorVersion);
+                sscanf(verptr, " %i.%i", &mGL.mMajorVersion, &mGL.mMinorVersion);
             }
         }
 
@@ -536,13 +564,6 @@
     }
 }
 
-void Context::allocationCheck(const Allocation *a)
-{
-    mVertex->checkUpdatedAllocation(a);
-    mFragment->checkUpdatedAllocation(a);
-    mFragmentStore->checkUpdatedAllocation(a);
-}
-
 void Context::setVertex(ProgramVertex *pv)
 {
     if (pv == NULL) {
@@ -550,7 +571,6 @@
     } else {
         mVertex.set(pv);
     }
-    mVertex->forceDirty();
 }
 
 void Context::assignName(ObjectBase *obj, const char *name, uint32_t len)
diff --git a/libs/rs/rsContext.h b/libs/rs/rsContext.h
index 4e0f653..a5e73da 100644
--- a/libs/rs/rsContext.h
+++ b/libs/rs/rsContext.h
@@ -37,6 +37,8 @@
 #include "rsProgramFragmentStore.h"
 #include "rsProgramRaster.h"
 #include "rsProgramVertex.h"
+#include "rsShaderCache.h"
+#include "rsVertexArray.h"
 
 #include "rsgApiStructs.h"
 #include "rsLocklessFifo.h"
@@ -72,8 +74,10 @@
     ProgramRasterState mStateRaster;
     ProgramVertexState mStateVertex;
     LightState mStateLight;
+    VertexArrayState mStateVertexArray;
 
     ScriptCState mScriptC;
+    ShaderCache mShaderCache;
 
     void swapBuffers();
     void setRootScript(Script *);
@@ -90,7 +94,6 @@
     const ProgramVertex * getVertex() {return mVertex.get();}
 
     void setupCheck();
-    void allocationCheck(const Allocation *);
 
     void pause();
     void resume();
@@ -223,7 +226,7 @@
 private:
     Context();
 
-    void initEGL();
+    void initEGL(bool useGL2);
     void deinitEGL();
 
     bool runRootScript();
diff --git a/libs/rs/rsProgram.cpp b/libs/rs/rsProgram.cpp
index 5f2a609..db40f16 100644
--- a/libs/rs/rsProgram.cpp
+++ b/libs/rs/rsProgram.cpp
@@ -17,6 +17,9 @@
 #include "rsContext.h"
 #include "rsProgram.h"
 
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
 using namespace android;
 using namespace android::renderscript;
 
@@ -25,6 +28,10 @@
 {
     mAllocFile = __FILE__;
     mAllocLine = __LINE__;
+    mDirty = true;
+    mShaderID = 0;
+    mAttribCount = 0;
+    mUniformCount = 0;
 
     mElementIn.set(in);
     mElementOut.set(out);
@@ -32,19 +39,66 @@
 
 Program::~Program()
 {
+    bindAllocation(NULL);
 }
 
 
 void Program::bindAllocation(Allocation *alloc)
 {
+    if (mConstants.get() == alloc) {
+        return;
+    }
+    if (mConstants.get()) {
+        mConstants.get()->removeProgramToDirty(this);
+    }
     mConstants.set(alloc);
+    if (alloc) {
+        alloc->addProgramToDirty(this);
+    }
     mDirty = true;
 }
 
-void Program::checkUpdatedAllocation(const Allocation *alloc)
+void Program::createShader()
 {
-    if (mConstants.get() == alloc) {
-        mDirty = true;
+}
+
+bool Program::loadShader(uint32_t type)
+{
+    mShaderID = glCreateShader(type);
+    rsAssert(mShaderID);
+
+    LOGV("Loading shader type %x, ID %i", type, mShaderID);
+    LOGE(mShader.string());
+
+    if (mShaderID) {
+        const char * ss = mShader.string();
+        glShaderSource(mShaderID, 1, &ss, NULL);
+        glCompileShader(mShaderID);
+
+        GLint compiled = 0;
+        glGetShaderiv(mShaderID, GL_COMPILE_STATUS, &compiled);
+        if (!compiled) {
+            GLint infoLen = 0;
+            glGetShaderiv(mShaderID, GL_INFO_LOG_LENGTH, &infoLen);
+            if (infoLen) {
+                char* buf = (char*) malloc(infoLen);
+                if (buf) {
+                    glGetShaderInfoLog(mShaderID, infoLen, NULL, buf);
+                    LOGE("Could not compile shader \n%s\n", buf);
+                    free(buf);
+                }
+                glDeleteShader(mShaderID);
+                mShaderID = 0;
+                return false;
+            }
+        }
     }
+    LOGV("--Shader load result %x ", glGetError());
+    return true;
+}
+
+void Program::setShader(const char *txt, uint32_t len)
+{
+    mUserShader.setTo(txt, len);
 }
 
diff --git a/libs/rs/rsProgram.h b/libs/rs/rsProgram.h
index 57c654f..abd461b 100644
--- a/libs/rs/rsProgram.h
+++ b/libs/rs/rsProgram.h
@@ -25,15 +25,27 @@
 namespace renderscript {
 
 
+class ShaderCache;
 
 class Program : public ObjectBase
 {
 public:
+    const static uint32_t MAX_ATTRIBS = 8;
+    const static uint32_t MAX_UNIFORMS = 16;
+
     Program(Context *, Element *in, Element *out);
     virtual ~Program();
 
     void bindAllocation(Allocation *);
-    void checkUpdatedAllocation(const Allocation *);
+    virtual void createShader();
+
+    uint32_t getShaderID() const {return mShaderID;}
+    void setShader(const char *, uint32_t len);
+
+    uint32_t getAttribCount() const {return mAttribCount;}
+    uint32_t getUniformCount() const {return mUniformCount;}
+    const String8 & getAttribName(uint32_t i) const {return mAttribNames[i];}
+    const String8 & getUniformName(uint32_t i) const {return mUniformNames[i];}
 
 protected:
     // Components not listed in "in" will be passed though
@@ -44,10 +56,19 @@
     ObjectBaseRef<Allocation> mConstants;
 
     mutable bool mDirty;
+    String8 mShader;
+    String8 mUserShader;
+    uint32_t mShaderID;
 
+    uint32_t mAttribCount;
+    uint32_t mUniformCount;
+    String8 mAttribNames[MAX_ATTRIBS];
+    String8 mUniformNames[MAX_UNIFORMS];
+
+    bool loadShader(uint32_t type);
 
 public:
-    void forceDirty() {mDirty = true;}
+    void forceDirty() const {mDirty = true;}
 };
 
 
diff --git a/libs/rs/rsProgramFragment.cpp b/libs/rs/rsProgramFragment.cpp
index 708a0e0..b239ce8 100644
--- a/libs/rs/rsProgramFragment.cpp
+++ b/libs/rs/rsProgramFragment.cpp
@@ -19,6 +19,8 @@
 
 #include <GLES/gl.h>
 #include <GLES/glext.h>
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
 
 using namespace android;
 using namespace android::renderscript;
@@ -109,6 +111,105 @@
     mDirty = false;
 }
 
+void ProgramFragment::setupGL2(const Context *rsc, ProgramFragmentState *state, ShaderCache *sc)
+{
+    //LOGE("sgl2 frag1 %x", glGetError());
+    if ((state->mLast.get() == this) && !mDirty) {
+        //return;
+    }
+    state->mLast.set(this);
+
+    for (uint32_t ct=0; ct < MAX_TEXTURE; ct++) {
+        glActiveTexture(GL_TEXTURE0 + ct);
+        if (!(mTextureEnableMask & (1 << ct)) || !mTextures[ct].get()) {
+            glDisable(GL_TEXTURE_2D);
+            continue;
+        }
+
+        glBindTexture(GL_TEXTURE_2D, mTextures[ct]->getTextureID());
+        if (mSamplers[ct].get()) {
+            mSamplers[ct]->setupGL();
+        } else {
+            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+        }
+
+        glEnable(GL_TEXTURE_2D);
+        glUniform1i(sc->fragUniformSlot(ct), ct);
+    }
+
+    glActiveTexture(GL_TEXTURE0);
+    mDirty = false;
+
+    //LOGE("sgl2 frag2 %x", glGetError());
+}
+
+void ProgramFragment::loadShader() {
+    Program::loadShader(GL_FRAGMENT_SHADER);
+}
+
+void ProgramFragment::createShader()
+{
+    mShader.setTo("precision mediump float;\n");
+    mShader.append("varying vec4 varColor;\n");
+    mShader.append("varying vec4 varTex0;\n");
+
+    uint32_t mask = mTextureEnableMask;
+    uint32_t texNum = 0;
+    while (mask) {
+        if (mask & 1) {
+            char buf[64];
+            mShader.append("uniform sampler2D uni_Tex");
+            sprintf(buf, "%i", texNum);
+            mShader.append(buf);
+            mShader.append(";\n");
+        }
+        mask >>= 1;
+        texNum++;
+    }
+
+
+    mShader.append("void main() {\n");
+    //mShader.append("  gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);\n");
+    mShader.append("  vec4 col = varColor;\n");
+
+    if (mTextureEnableMask) {
+        if (mPointSpriteEnable) {
+            mShader.append("  vec2 tex0 = gl_PointCoord;\n");
+        } else {
+            mShader.append("  vec2 tex0 = varTex0.xy;\n");
+        }
+    }
+
+    mask = mTextureEnableMask;
+    texNum = 0;
+    while (mask) {
+        if (mask & 1) {
+            switch(mEnvModes[texNum]) {
+            case RS_TEX_ENV_MODE_REPLACE:
+                mShader.append("  col = texture2D(uni_Tex0, tex0);\n");
+                break;
+            case RS_TEX_ENV_MODE_MODULATE:
+                mShader.append("  col *= texture2D(uni_Tex0, tex0);\n");
+                break;
+            case RS_TEX_ENV_MODE_DECAL:
+                mShader.append("  col = texture2D(uni_Tex0, tex0);\n");
+                break;
+            }
+
+        }
+        mask >>= 1;
+        texNum++;
+    }
+
+    //mShader.append("  col.a = 1.0;\n");
+    //mShader.append("  col.r = 0.5;\n");
+
+    mShader.append("  gl_FragColor = col;\n");
+    mShader.append("}\n");
+}
 
 void ProgramFragment::bindTexture(uint32_t slot, Allocation *a)
 {
@@ -173,7 +274,14 @@
     }
 }
 
+void ProgramFragment::init(Context *rsc)
+{
+    mUniformCount = 2;
+    mUniformNames[0].setTo("uni_Tex0");
+    mUniformNames[1].setTo("uni_Tex1");
 
+    createShader();
+}
 
 ProgramFragmentState::ProgramFragmentState()
 {
@@ -190,6 +298,7 @@
 {
     ProgramFragment *pf = new ProgramFragment(rsc, NULL, NULL, false);
     mDefault.set(pf);
+    pf->init(rsc);
 }
 
 void ProgramFragmentState::deinit(Context *rsc)
@@ -237,10 +346,16 @@
     rsc->mStateFragment.mPF->setTexEnable(slot, enable);
 }
 
+void rsi_ProgramFragmentSetShader(Context *rsc, const char *txt, uint32_t len)
+{
+    rsc->mStateFragment.mPF->setShader(txt, len);
+}
+
 RsProgramFragment rsi_ProgramFragmentCreate(Context *rsc)
 {
     ProgramFragment *pf = rsc->mStateFragment.mPF;
     pf->incUserRef();
+    pf->init(rsc);
     rsc->mStateFragment.mPF = 0;
     return pf;
 }
diff --git a/libs/rs/rsProgramFragment.h b/libs/rs/rsProgramFragment.h
index e26c6e8..6fc852e 100644
--- a/libs/rs/rsProgramFragment.h
+++ b/libs/rs/rsProgramFragment.h
@@ -36,7 +36,7 @@
     virtual ~ProgramFragment();
 
     virtual void setupGL(const Context *, ProgramFragmentState *);
-
+    virtual void setupGL2(const Context *, ProgramFragmentState *, ShaderCache *sc);
 
 
     void bindTexture(uint32_t slot, Allocation *);
@@ -46,6 +46,9 @@
     void setEnvMode(uint32_t slot, RsTexEnvMode);
     void setTexEnable(uint32_t slot, bool);
 
+    virtual void createShader();
+    virtual void loadShader();
+    virtual void init(Context *rsc);
 
 
 protected:
diff --git a/libs/rs/rsProgramFragmentStore.cpp b/libs/rs/rsProgramFragmentStore.cpp
index de33d9c..d7d5c75 100644
--- a/libs/rs/rsProgramFragmentStore.cpp
+++ b/libs/rs/rsProgramFragmentStore.cpp
@@ -83,10 +83,44 @@
     } else {
         glDisable(GL_DITHER);
     }
-
-
 }
 
+void ProgramFragmentStore::setupGL2(const Context *rsc, ProgramFragmentStoreState *state)
+{
+    if (state->mLast.get() == this) {
+        return;
+    }
+    state->mLast.set(this);
+
+    glColorMask(mColorRWriteEnable,
+                mColorGWriteEnable,
+                mColorBWriteEnable,
+                mColorAWriteEnable);
+    if (mBlendEnable) {
+        glEnable(GL_BLEND);
+        glBlendFunc(mBlendSrc, mBlendDst);
+    } else {
+        glDisable(GL_BLEND);
+    }
+
+    //LOGE("pfs  %i, %i, %x", mDepthWriteEnable, mDepthTestEnable, mDepthFunc);
+
+    glDepthMask(mDepthWriteEnable);
+    if(mDepthTestEnable || mDepthWriteEnable) {
+        glEnable(GL_DEPTH_TEST);
+        glDepthFunc(mDepthFunc);
+    } else {
+        glDisable(GL_DEPTH_TEST);
+    }
+
+    if (mDitherEnable) {
+        glEnable(GL_DITHER);
+    } else {
+        glDisable(GL_DITHER);
+    }
+}
+
+
 void ProgramFragmentStore::setDitherEnable(bool enable)
 {
     mDitherEnable = enable;
diff --git a/libs/rs/rsProgramFragmentStore.h b/libs/rs/rsProgramFragmentStore.h
index a344387..3f9d8c9 100644
--- a/libs/rs/rsProgramFragmentStore.h
+++ b/libs/rs/rsProgramFragmentStore.h
@@ -32,6 +32,7 @@
     virtual ~ProgramFragmentStore();
 
     virtual void setupGL(const Context *, ProgramFragmentStoreState *);
+    virtual void setupGL2(const Context *, ProgramFragmentStoreState *);
 
     void setDepthFunc(RsDepthFunc);
     void setDepthMask(bool);
diff --git a/libs/rs/rsProgramRaster.cpp b/libs/rs/rsProgramRaster.cpp
index 51ae7cf..f0039f7 100644
--- a/libs/rs/rsProgramRaster.cpp
+++ b/libs/rs/rsProgramRaster.cpp
@@ -86,6 +86,14 @@
     }
 }
 
+void ProgramRaster::setupGL2(const Context *rsc, ProgramRasterState *state)
+{
+    if (state->mLast.get() == this) {
+        return;
+    }
+    state->mLast.set(this);
+}
+
 
 
 ProgramRasterState::ProgramRasterState()
diff --git a/libs/rs/rsProgramRaster.h b/libs/rs/rsProgramRaster.h
index a6d5ba8..4efecb4 100644
--- a/libs/rs/rsProgramRaster.h
+++ b/libs/rs/rsProgramRaster.h
@@ -37,6 +37,7 @@
     virtual ~ProgramRaster();
 
     virtual void setupGL(const Context *, ProgramRasterState *);
+    virtual void setupGL2(const Context *, ProgramRasterState *);
 
     void setLineWidth(float w);
     void setPointSize(float s);
diff --git a/libs/rs/rsProgramVertex.cpp b/libs/rs/rsProgramVertex.cpp
index 68f589f..482739c 100644
--- a/libs/rs/rsProgramVertex.cpp
+++ b/libs/rs/rsProgramVertex.cpp
@@ -19,6 +19,8 @@
 
 #include <GLES/gl.h>
 #include <GLES/glext.h>
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
 
 using namespace android;
 using namespace android::renderscript;
@@ -92,6 +94,74 @@
     mDirty = false;
 }
 
+void ProgramVertex::loadShader() {
+    Program::loadShader(GL_VERTEX_SHADER);
+}
+
+void ProgramVertex::createShader()
+{
+    mShader.setTo("");
+
+    for (uint32_t ct=0; ct < mAttribCount; ct++) {
+        mShader.append("attribute vec4 ");
+        mShader.append(mAttribNames[ct]);
+        mShader.append(";\n");
+    }
+
+    for (uint32_t ct=0; ct < mUniformCount; ct++) {
+        mShader.append("uniform mat4 ");
+        mShader.append(mUniformNames[ct]);
+        mShader.append(";\n");
+    }
+
+    mShader.append("varying vec4 varColor;\n");
+    mShader.append("varying vec4 varTex0;\n");
+
+    if (mUserShader.length() > 1) {
+        mShader.append(mUserShader);
+    } else {
+        mShader.append("void main() {\n");
+        mShader.append("  gl_Position = uni_MVP * attrib_Position;\n");
+        mShader.append("  gl_PointSize = attrib_PointSize.x;\n");
+
+        mShader.append("  varColor = attrib_Color;\n");
+        if (mTextureMatrixEnable) {
+            mShader.append("  varTex0 = uni_TexMatrix * attrib_T0;\n");
+        } else {
+            mShader.append("  varTex0 = attrib_T0;\n");
+        }
+        //mShader.append("  pos.x = pos.x / 480.0;\n");
+        //mShader.append("  pos.y = pos.y / 800.0;\n");
+        //mShader.append("  gl_Position = pos;\n");
+        mShader.append("}\n");
+    }
+}
+
+void ProgramVertex::setupGL2(const Context *rsc, ProgramVertexState *state, ShaderCache *sc)
+{
+    //LOGE("sgl2 vtx1 %x", glGetError());
+    if ((state->mLast.get() == this) && !mDirty) {
+        //return;
+    }
+
+    const float *f = static_cast<const float *>(mConstants->getPtr());
+
+    Matrix mvp;
+    mvp.load(&f[RS_PROGRAM_VERTEX_PROJECTION_OFFSET]);
+    Matrix t;
+    t.load(&f[RS_PROGRAM_VERTEX_MODELVIEW_OFFSET]);
+    mvp.multiply(&t);
+
+    glUniformMatrix4fv(sc->vtxUniformSlot(0), 1, GL_FALSE, mvp.m);
+    if (mTextureMatrixEnable) {
+        glUniformMatrix4fv(sc->vtxUniformSlot(1), 1, GL_FALSE,
+                           &f[RS_PROGRAM_VERTEX_TEXTURE_OFFSET]);
+    }
+
+    state->mLast.set(this);
+    //LOGE("sgl2 vtx2 %x", glGetError());
+}
+
 void ProgramVertex::addLight(const Light *l)
 {
     if (mLightCount < MAX_LIGHTS) {
@@ -130,6 +200,25 @@
     mvp.vectorMultiply(v4out, v3in);
 }
 
+void ProgramVertex::init(Context *rsc)
+{
+    mAttribCount = 6;
+    mAttribNames[VertexArray::POSITION].setTo("attrib_Position");
+    mAttribNames[VertexArray::COLOR].setTo("attrib_Color");
+    mAttribNames[VertexArray::NORMAL].setTo("attrib_Normal");
+    mAttribNames[VertexArray::POINT_SIZE].setTo("attrib_PointSize");
+    mAttribNames[VertexArray::TEXTURE_0].setTo("attrib_T0");
+    mAttribNames[VertexArray::TEXTURE_1].setTo("attrib_T1");
+
+    mUniformCount = 2;
+    mUniformNames[0].setTo("uni_MVP");
+    mUniformNames[1].setTo("uni_TexMatrix");
+
+    createShader();
+}
+
+///////////////////////////////////////////////////////////////////////
+
 ProgramVertexState::ProgramVertexState()
 {
     mPV = NULL;
@@ -154,7 +243,7 @@
     Allocation *alloc = (Allocation *)rsi_AllocationCreateTyped(rsc, mAllocType.get());
     mDefaultAlloc.set(alloc);
     mDefault.set(pv);
-
+    pv->init(rsc);
     pv->bindAllocation(alloc);
 
     updateSize(rsc, w, h);
@@ -194,6 +283,7 @@
 {
     ProgramVertex *pv = rsc->mStateVertex.mPV;
     pv->incUserRef();
+    pv->init(rsc);
     rsc->mStateVertex.mPV = 0;
     return pv;
 }
@@ -209,6 +299,11 @@
     rsc->mStateVertex.mPV->setTextureMatrixEnable(enable);
 }
 
+void rsi_ProgramVertexSetShader(Context *rsc, const char *txt, uint32_t len)
+{
+    rsc->mStateVertex.mPV->setShader(txt, len);
+}
+
 void rsi_ProgramVertexAddLight(Context *rsc, RsLight light)
 {
     rsc->mStateVertex.mPV->addLight(static_cast<const Light *>(light));
diff --git a/libs/rs/rsProgramVertex.h b/libs/rs/rsProgramVertex.h
index a97ba38..aa626da 100644
--- a/libs/rs/rsProgramVertex.h
+++ b/libs/rs/rsProgramVertex.h
@@ -34,6 +34,7 @@
     virtual ~ProgramVertex();
 
     virtual void setupGL(const Context *rsc, ProgramVertexState *state);
+    virtual void setupGL2(const Context *rsc, ProgramVertexState *state, ShaderCache *sc);
 
 
     void setTextureMatrixEnable(bool e) {mTextureMatrixEnable = e;}
@@ -45,6 +46,10 @@
 
     void transformToScreen(const Context *, float *v4out, const float *v3in) const;
 
+    virtual void createShader();
+    virtual void loadShader();
+    virtual void init(Context *);
+
 
 protected:
     uint32_t mLightCount;
diff --git a/libs/rs/rsSampler.cpp b/libs/rs/rsSampler.cpp
index b793750..f9bdb2e 100644
--- a/libs/rs/rsSampler.cpp
+++ b/libs/rs/rsSampler.cpp
@@ -64,7 +64,6 @@
 
     };
 
-
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, trans[mMinFilter]);
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, trans[mMagFilter]);
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, trans[mWrapS]);
diff --git a/libs/rs/rsScriptC_Lib.cpp b/libs/rs/rsScriptC_Lib.cpp
index 23888ff..55a8391 100644
--- a/libs/rs/rsScriptC_Lib.cpp
+++ b/libs/rs/rsScriptC_Lib.cpp
@@ -26,6 +26,8 @@
 
 #include <GLES/gl.h>
 #include <GLES/glext.h>
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
 
 #include <time.h>
 
@@ -102,8 +104,9 @@
 
 static void SC_updateSimpleMesh(RsSimpleMesh mesh)
 {
+    GET_TLS();
     SimpleMesh *sm = static_cast<SimpleMesh *>(mesh);
-    sm->uploadAll();
+    sm->uploadAll(rsc);
 }
 
 static uint32_t SC_loadU32(uint32_t bank, uint32_t offset)
@@ -683,13 +686,13 @@
     rsc->setupCheck();
 
     float vtx[] = { x1, y1, z1, x2, y2, z2 };
-
-    glBindBuffer(GL_ARRAY_BUFFER, 0);
-    glEnableClientState(GL_VERTEX_ARRAY);
-    glVertexPointer(3, GL_FLOAT, 0, vtx);
-
-    glDisableClientState(GL_NORMAL_ARRAY);
-    glDisableClientState(GL_COLOR_ARRAY);
+    VertexArray va;
+    va.setPosition(2, GL_FLOAT, 12, (uint32_t)&vtx);
+    if (rsc->checkVersion2_0()) {
+        va.setupGL2(&rsc->mStateVertexArray, &rsc->mShaderCache);
+    } else {
+        va.setupGL(&rsc->mStateVertexArray);
+    }
 
     glDrawArrays(GL_LINES, 0, 2);
 }
@@ -701,12 +704,13 @@
 
     float vtx[] = { x, y, z };
 
-    glBindBuffer(GL_ARRAY_BUFFER, 0);
-    glEnableClientState(GL_VERTEX_ARRAY);
-    glVertexPointer(3, GL_FLOAT, 0, vtx);
-
-    glDisableClientState(GL_NORMAL_ARRAY);
-    glDisableClientState(GL_COLOR_ARRAY);
+    VertexArray va;
+    va.setPosition(1, GL_FLOAT, 12, (uint32_t)&vtx);
+    if (rsc->checkVersion2_0()) {
+        va.setupGL2(&rsc->mStateVertexArray, &rsc->mShaderCache);
+    } else {
+        va.setupGL(&rsc->mStateVertexArray);
+    }
 
     glDrawArrays(GL_POINTS, 0, 1);
 }
@@ -721,6 +725,7 @@
                                  float u4, float v4)
 {
     GET_TLS();
+    rsc->setupCheck();
 
     //LOGE("Quad");
     //LOGE("%4.2f, %4.2f, %4.2f", x1, y1, z1);
@@ -731,26 +736,17 @@
     float vtx[] = {x1,y1,z1, x2,y2,z2, x3,y3,z3, x4,y4,z4};
     const float tex[] = {u1,v1, u2,v2, u3,v3, u4,v4};
 
-    rsc->setupCheck();
+    VertexArray va;
+    va.setPosition(2, GL_FLOAT, 12, (uint32_t)&vtx);
+    va.setTexture(2, GL_FLOAT, 8, (uint32_t)&tex, 0);
+    //va.setTexture(2, GL_FLOAT, 8, (uint32_t)&tex, 1);
+    //
+    if (rsc->checkVersion2_0()) {
+        va.setupGL2(&rsc->mStateVertexArray, &rsc->mShaderCache);
+    } else {
+        va.setupGL(&rsc->mStateVertexArray);
+    }
 
-    glBindBuffer(GL_ARRAY_BUFFER, 0);
-    //glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, tm->mBufferObjects[1]);
-
-    glEnableClientState(GL_VERTEX_ARRAY);
-    glVertexPointer(3, GL_FLOAT, 0, vtx);
-
-    glClientActiveTexture(GL_TEXTURE0);
-    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-    glTexCoordPointer(2, GL_FLOAT, 0, tex);
-    glClientActiveTexture(GL_TEXTURE1);
-    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-    glTexCoordPointer(2, GL_FLOAT, 0, tex);
-    glClientActiveTexture(GL_TEXTURE0);
-
-    glDisableClientState(GL_NORMAL_ARRAY);
-    glDisableClientState(GL_COLOR_ARRAY);
-
-    //glColorPointer(4, GL_UNSIGNED_BYTE, 12, ptr);
 
     glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
 }
@@ -769,18 +765,24 @@
 static void SC_drawSpriteScreenspace(float x, float y, float z, float w, float h)
 {
     GET_TLS();
-    rsc->setupCheck();
+    ObjectBaseRef<const ProgramVertex> tmp(rsc->getVertex());
+    rsc->setVertex(rsc->getDefaultProgramVertex());
+    //rsc->setupCheck();
 
-    GLint crop[4] = {0, h, w, -h};
-    glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop);
-    glDrawTexfOES(x, y, z, w, h);
+    //GLint crop[4] = {0, h, w, -h};
+
+    float sh = rsc->getHeight();
+
+    SC_drawQuad(x,   sh - y,     z,
+                x+w, sh - y,     z,
+                x+w, sh - (y+h), z,
+                x,   sh - (y+h), z);
+    rsc->setVertex((ProgramVertex *)tmp.get());
 }
 
 static void SC_drawSprite(float x, float y, float z, float w, float h)
 {
     GET_TLS();
-    rsc->setupCheck();
-
     float vin[3] = {x, y, z};
     float vout[4];
 
@@ -802,9 +804,8 @@
     //LOGE("ds  out2 %f %f %f", vout[0], vout[1], vout[2]);
 
     // U, V, W, H
-    GLint crop[4] = {0, h, w, -h};
-    glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop);
-    glDrawTexiOES(vout[0], vout[1], 0/*vout[2]*/, w, h);
+    SC_drawSpriteScreenspace(vout[0], vout[1], z, h, w);
+    //rsc->setupCheck();
 }
 
 
@@ -822,7 +823,7 @@
     GET_TLS();
     SimpleMesh *sm = static_cast<SimpleMesh *>(vsm);
     rsc->setupCheck();
-    sm->render();
+    sm->render(rsc);
 }
 
 static void SC_drawSimpleMeshRange(RsSimpleMesh vsm, uint32_t start, uint32_t len)
@@ -830,7 +831,7 @@
     GET_TLS();
     SimpleMesh *sm = static_cast<SimpleMesh *>(vsm);
     rsc->setupCheck();
-    sm->renderRange(start, len);
+    sm->renderRange(rsc, start, len);
 }
 
 
@@ -840,7 +841,12 @@
 
 static void SC_color(float r, float g, float b, float a)
 {
-    glColor4f(r, g, b, a);
+    GET_TLS();
+    if (rsc->checkVersion2_0()) {
+        glVertexAttrib4f(1, r, g, b, a);
+    } else {
+        glColor4f(r, g, b, a);
+    }
 }
 
 static void SC_ambient(float r, float g, float b, float a)
@@ -945,9 +951,14 @@
 
 static void SC_hsb(float h, float s, float b, float a)
 {
+    GET_TLS();
     float rgb[3];
     SC_hsbToRgb(h, s, b, rgb);
-    glColor4f(rgb[0], rgb[1], rgb[2], a);
+    if (rsc->checkVersion2_0()) {
+        glVertexAttrib4f(1, rgb[0], rgb[1], rgb[2], a);
+    } else {
+        glColor4f(rgb[0], rgb[1], rgb[2], a);
+    }
 }
 
 static void SC_uploadToTexture(RsAllocation va, uint32_t baseMipLevel)
diff --git a/libs/rs/rsShaderCache.cpp b/libs/rs/rsShaderCache.cpp
new file mode 100644
index 0000000..4b16677
--- /dev/null
+++ b/libs/rs/rsShaderCache.cpp
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "rsContext.h"
+
+#include <GLES/gl.h>
+#include <GLES2/gl2.h>
+
+using namespace android;
+using namespace android::renderscript;
+
+
+ShaderCache::ShaderCache()
+{
+    mEntryCount = 0;
+    mEntryAllocationCount = 16;
+    mEntries = (entry_t *)calloc(mEntryAllocationCount, sizeof(entry_t));
+}
+
+ShaderCache::~ShaderCache()
+{
+    for (uint32_t ct=0; ct < mEntryCount; ct++) {
+        glDeleteProgram(mEntries[ct].program);
+    }
+
+    mEntryCount = 0;
+    mEntryAllocationCount = 0;
+    free(mEntries);
+}
+
+bool ShaderCache::lookup(ProgramVertex *vtx, ProgramFragment *frag)
+{
+    if (!vtx->getShaderID()) {
+        vtx->loadShader();
+    }
+    if (!frag->getShaderID()) {
+        frag->loadShader();
+    }
+    //LOGV("ShaderCache lookup  vtx %i, frag %i", vtx->getShaderID(), frag->getShaderID());
+
+    for (uint32_t ct=0; ct < mEntryCount; ct++) {
+        if ((mEntries[ct].vtx == vtx->getShaderID()) &&
+            (mEntries[ct].frag == frag->getShaderID())) {
+
+            //LOGV("SC using program %i", mEntries[ct].program);
+            glUseProgram(mEntries[ct].program);
+            mCurrent = &mEntries[ct];
+            //LOGV("ShaderCache hit, using %i", ct);
+            return true;
+        }
+    }
+    // Not in cache, add it.
+
+    if (mEntryAllocationCount == mEntryCount) {
+        // Out of space, make some.
+        mEntryAllocationCount *= 2;
+        entry_t *e = (entry_t *)calloc(mEntryAllocationCount, sizeof(entry_t));
+        if (!e) {
+            LOGE("Out of memory for ShaderCache::lookup");
+            return false;
+        }
+        memcpy(e, mEntries, sizeof(entry_t) * mEntryCount);
+        free(mEntries);
+        mEntries = e;
+    }
+
+    //LOGV("ShaderCache miss, using %i", mEntryCount);
+    //LOGE("e0 %x", glGetError());
+
+    entry_t *e = &mEntries[mEntryCount];
+    mCurrent = e;
+    e->vtx = vtx->getShaderID();
+    e->frag = frag->getShaderID();
+    e->program = glCreateProgram();
+    if (mEntries[mEntryCount].program) {
+        GLuint pgm = e->program;
+        glAttachShader(pgm, vtx->getShaderID());
+        //LOGE("e1 %x", glGetError());
+        glAttachShader(pgm, frag->getShaderID());
+
+        glBindAttribLocation(pgm, VertexArray::POSITION, "attrib_Position");
+        glBindAttribLocation(pgm, VertexArray::COLOR, "attrib_Color");
+
+
+        //LOGE("e2 %x", glGetError());
+        glLinkProgram(pgm);
+        //LOGE("e3 %x", glGetError());
+        GLint linkStatus = GL_FALSE;
+        glGetProgramiv(pgm, GL_LINK_STATUS, &linkStatus);
+        if (linkStatus != GL_TRUE) {
+            GLint bufLength = 0;
+            glGetProgramiv(pgm, GL_INFO_LOG_LENGTH, &bufLength);
+            if (bufLength) {
+                char* buf = (char*) malloc(bufLength);
+                if (buf) {
+                    glGetProgramInfoLog(pgm, bufLength, NULL, buf);
+                    LOGE("Could not link program:\n%s\n", buf);
+                    free(buf);
+                }
+            }
+            glDeleteProgram(pgm);
+        }
+        for (uint32_t ct=0; ct < vtx->getAttribCount(); ct++) {
+            e->mVtxAttribSlots[ct] = glGetAttribLocation(pgm, vtx->getAttribName(ct));
+            LOGV("vtx A, %s = %d\n", vtx->getAttribName(ct).string(), e->mVtxAttribSlots[ct]);
+        }
+        for (uint32_t ct=0; ct < vtx->getUniformCount(); ct++) {
+            e->mVtxUniformSlots[ct] = glGetUniformLocation(pgm, vtx->getUniformName(ct));
+            LOGV("vtx U, %s = %d\n", vtx->getUniformName(ct).string(), e->mVtxUniformSlots[ct]);
+        }
+        for (uint32_t ct=0; ct < vtx->getUniformCount(); ct++) {
+            e->mFragUniformSlots[ct] = glGetUniformLocation(pgm, frag->getUniformName(ct));
+            LOGV("frag U, %s = %d\n", frag->getUniformName(ct).string(), e->mFragUniformSlots[ct]);
+        }
+    }
+
+    //LOGV("SC made program %i", e->program);
+    glUseProgram(e->program);
+    mEntryCount++;
+    return true;
+}
+
+void ShaderCache::cleanupVertex(uint32_t id)
+{
+}
+
+void ShaderCache::cleanupFragment(uint32_t id)
+{
+}
+
+void ShaderCache::cleanupAll()
+{
+}
+
diff --git a/libs/rs/rsShaderCache.h b/libs/rs/rsShaderCache.h
new file mode 100644
index 0000000..4d9f8ec
--- /dev/null
+++ b/libs/rs/rsShaderCache.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_SHADER_CACHE_H
+#define ANDROID_SHADER_CACHE_H
+
+
+#include "rsObjectBase.h"
+#include "rsVertexArray.h"
+
+// ---------------------------------------------------------------------------
+namespace android {
+namespace renderscript {
+
+
+// An element is a group of Components that occupies one cell in a structure.
+class ShaderCache
+{
+public:
+    ShaderCache();
+    virtual ~ShaderCache();
+
+    bool lookup(ProgramVertex *, ProgramFragment *);
+
+    void cleanupVertex(uint32_t id);
+    void cleanupFragment(uint32_t id);
+
+    void cleanupAll();
+
+    int32_t vtxAttribSlot(uint32_t a) const {return mCurrent->mVtxAttribSlots[a];}
+    int32_t vtxUniformSlot(uint32_t a) const {return mCurrent->mVtxUniformSlots[a];}
+    int32_t fragAttribSlot(uint32_t a) const {return mCurrent->mFragAttribSlots[a];}
+    int32_t fragUniformSlot(uint32_t a) const {return mCurrent->mFragUniformSlots[a];}
+
+protected:
+    typedef struct {
+        uint32_t vtx;
+        uint32_t frag;
+        uint32_t program;
+        int32_t mVtxAttribSlots[Program::MAX_ATTRIBS];
+        int32_t mVtxUniformSlots[Program::MAX_UNIFORMS];
+        int32_t mFragAttribSlots[Program::MAX_ATTRIBS];
+        int32_t mFragUniformSlots[Program::MAX_UNIFORMS];
+    } entry_t;
+    entry_t *mEntries;
+    entry_t *mCurrent;
+
+    uint32_t mEntryCount;
+    uint32_t mEntryAllocationCount;
+
+};
+
+
+
+}
+}
+#endif //ANDROID_SHADER_CACHE_H
+
+
+
+
diff --git a/libs/rs/rsSimpleMesh.cpp b/libs/rs/rsSimpleMesh.cpp
index b082fd7..edfe967 100644
--- a/libs/rs/rsSimpleMesh.cpp
+++ b/libs/rs/rsSimpleMesh.cpp
@@ -34,39 +34,36 @@
     delete[] mVertexBuffers;
 }
 
-void SimpleMesh::render() const
+void SimpleMesh::render(Context *rsc) const
 {
     if (mPrimitiveType.get()) {
-        renderRange(0, mPrimitiveType->getDimX());
+        renderRange(rsc, 0, mPrimitiveType->getDimX());
         return;
     }
 
     if (mIndexType.get()) {
-        renderRange(0, mIndexType->getDimX());
+        renderRange(rsc, 0, mIndexType->getDimX());
         return;
     }
 
-    renderRange(0, mVertexTypes[0]->getDimX());
+    renderRange(rsc, 0, mVertexTypes[0]->getDimX());
 }
 
-void SimpleMesh::renderRange(uint32_t start, uint32_t len) const
+void SimpleMesh::renderRange(Context *rsc, uint32_t start, uint32_t len) const
 {
     if (len < 1) {
         return;
     }
 
-    glDisableClientState(GL_VERTEX_ARRAY);
-    glDisableClientState(GL_NORMAL_ARRAY);
-    glDisableClientState(GL_COLOR_ARRAY);
-    for (uint32_t ct=0; ct < RS_MAX_TEXTURE; ct++) {
-        glClientActiveTexture(GL_TEXTURE0 + ct);
-        glDisableClientState(GL_TEXTURE_COORD_ARRAY);
-    }
-    glClientActiveTexture(GL_TEXTURE0);
-
+    VertexArray va;
     for (uint32_t ct=0; ct < mVertexTypeCount; ct++) {
-        glBindBuffer(GL_ARRAY_BUFFER, mVertexBuffers[ct]->getBufferObjectID());
-        mVertexTypes[ct]->enableGLVertexBuffer();
+        va.setActiveBuffer(mVertexBuffers[ct]->getBufferObjectID());
+        mVertexTypes[ct]->enableGLVertexBuffer(&va);
+    }
+    if (rsc->checkVersion2_0()) {
+        va.setupGL2(0, &rsc->mShaderCache);
+    } else {
+        va.setupGL(0);
     }
 
     if (mIndexType.get()) {
@@ -77,7 +74,7 @@
     }
 }
 
-void SimpleMesh::uploadAll()
+void SimpleMesh::uploadAll(Context *rsc)
 {
     for (uint32_t ct=0; ct < mVertexTypeCount; ct++) {
         if (mVertexBuffers[ct].get()) {
diff --git a/libs/rs/rsSimpleMesh.h b/libs/rs/rsSimpleMesh.h
index 1e5c908..6defbda 100644
--- a/libs/rs/rsSimpleMesh.h
+++ b/libs/rs/rsSimpleMesh.h
@@ -45,9 +45,9 @@
     uint32_t mGLPrimitive;
 
 
-    void render() const;
-    void renderRange(uint32_t start, uint32_t len) const;
-    void uploadAll();
+    void render(Context *) const;
+    void renderRange(Context *, uint32_t start, uint32_t len) const;
+    void uploadAll(Context *);
 
 
 protected:
diff --git a/libs/rs/rsType.cpp b/libs/rs/rsType.cpp
index ddaa2f0..044ec46 100644
--- a/libs/rs/rsType.cpp
+++ b/libs/rs/rsType.cpp
@@ -245,7 +245,7 @@
     }
 }
 
-void Type::enableGLVertexBuffer() const
+void Type::enableGLVertexBuffer(VertexArray *va) const
 {
     // Note: We are only going to enable buffers and never disable them
     // here.  The reasonis more than one Allocation may be used as a vertex
@@ -254,49 +254,39 @@
 
     uint32_t stride = mElement->getSizeBytes();
     if (mGL.mVtx.size) {
-        //LOGE("va vtx %i %x, %i, %p", mGL.mVtx.size, mGL.mVtx.type, stride, (void *)mGL.mVtx.offset);
-        glEnableClientState(GL_VERTEX_ARRAY);
-        glVertexPointer(mGL.mVtx.size,
+        va->setPosition(mGL.mVtx.size,
                         mGL.mVtx.type,
                         stride,
-                        (void *)mGL.mVtx.offset);
+                        mGL.mVtx.offset);
     }
 
     if (mGL.mNorm.size) {
-        //LOGE("va norm %i %x, %i, %p", mGL.mNorm.size, mGL.mNorm.type, stride, (void *)mGL.mNorm.offset);
-        glEnableClientState(GL_NORMAL_ARRAY);
-        rsAssert(mGL.mNorm.size == 3);
-        glNormalPointer(mGL.mNorm.type,
-                        stride,
-                        (void *)mGL.mNorm.offset);
+        va->setNormal(mGL.mNorm.type,
+                      stride,
+                      mGL.mNorm.offset);
     }
 
     if (mGL.mColor.size) {
-        glEnableClientState(GL_COLOR_ARRAY);
-        glColorPointer(mGL.mColor.size,
-                       mGL.mColor.type,
-                       stride,
-                       (void *)mGL.mColor.offset);
+        va->setColor(mGL.mColor.size,
+                     mGL.mColor.type,
+                     stride,
+                     mGL.mColor.offset);
     }
 
     for (uint32_t ct=0; ct < RS_MAX_TEXTURE; ct++) {
         if (mGL.mTex[ct].size) {
-            //LOGE("va tex%i %i %x, %i, %p", ct, mGL.mTex[ct].size, mGL.mTex[ct].type, stride, (void *)mGL.mTex[ct].offset);
-            glClientActiveTexture(GL_TEXTURE0 + ct);
-            glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-            glTexCoordPointer(mGL.mTex[ct].size,
-                              mGL.mTex[ct].type,
-                              stride,
-                              (void *)mGL.mTex[ct].offset);
+            va->setTexture(mGL.mTex[ct].size,
+                           mGL.mTex[ct].type,
+                           stride,
+                           mGL.mTex[ct].offset,
+                           ct);
         }
     }
-    glClientActiveTexture(GL_TEXTURE0);
 
     if (mGL.mPointSize.size) {
-        glEnableClientState(GL_POINT_SIZE_ARRAY_OES);
-        glPointSizePointerOES(mGL.mPointSize.type,
-                              stride,
-                              (void *)mGL.mPointSize.offset);
+        va->setPointSize(mGL.mPointSize.type,
+                         stride,
+                         mGL.mPointSize.offset);
     }
 
 }
diff --git a/libs/rs/rsType.h b/libs/rs/rsType.h
index 2c43405..d261d58 100644
--- a/libs/rs/rsType.h
+++ b/libs/rs/rsType.h
@@ -67,7 +67,7 @@
     void clear();
     void compute();
 
-    void enableGLVertexBuffer() const;
+    void enableGLVertexBuffer(class VertexArray *) const;
 
     void dumpLOGV(const char *prefix) const;
 
diff --git a/libs/rs/rsVertexArray.cpp b/libs/rs/rsVertexArray.cpp
new file mode 100644
index 0000000..34d42ed
--- /dev/null
+++ b/libs/rs/rsVertexArray.cpp
@@ -0,0 +1,203 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "rsContext.h"
+
+#include <GLES/gl.h>
+#include <GLES2/gl2.h>
+
+using namespace android;
+using namespace android::renderscript;
+
+
+VertexArray::VertexArray()
+{
+    memset(mAttribs, 0, sizeof(mAttribs));
+    mActiveBuffer = 0;
+}
+
+VertexArray::~VertexArray()
+{
+}
+
+
+void VertexArray::clearAll()
+{
+    memset(mAttribs, 0, sizeof(mAttribs));
+    mActiveBuffer = 0;
+}
+
+void VertexArray::clear(AttribName n)
+{
+    mAttribs[n].size = 0;
+}
+
+void VertexArray::setPosition(uint32_t size, uint32_t type, uint32_t stride, uint32_t offset)
+{
+    mAttribs[POSITION].buffer = mActiveBuffer;
+    mAttribs[POSITION].type = type;
+    mAttribs[POSITION].size = size;
+    mAttribs[POSITION].offset = offset;
+    mAttribs[POSITION].stride = stride;
+    mAttribs[POSITION].normalized = false;
+}
+
+void VertexArray::setColor(uint32_t size, uint32_t type, uint32_t stride, uint32_t offset)
+{
+    mAttribs[COLOR].buffer = mActiveBuffer;
+    mAttribs[COLOR].type = type;
+    mAttribs[COLOR].size = size;
+    mAttribs[COLOR].offset = offset;
+    mAttribs[COLOR].stride = stride;
+    mAttribs[COLOR].normalized = type != GL_FLOAT;
+}
+
+void VertexArray::setNormal(uint32_t type, uint32_t stride, uint32_t offset)
+{
+    mAttribs[NORMAL].buffer = mActiveBuffer;
+    mAttribs[NORMAL].type = type;
+    mAttribs[NORMAL].size = 3;
+    mAttribs[NORMAL].offset = offset;
+    mAttribs[NORMAL].stride = stride;
+    mAttribs[NORMAL].normalized = type != GL_FLOAT;
+}
+
+void VertexArray::setPointSize(uint32_t type, uint32_t stride, uint32_t offset)
+{
+    mAttribs[POINT_SIZE].buffer = mActiveBuffer;
+    mAttribs[POINT_SIZE].type = type;
+    mAttribs[POINT_SIZE].size = 1;
+    mAttribs[POINT_SIZE].offset = offset;
+    mAttribs[POINT_SIZE].stride = stride;
+    mAttribs[POINT_SIZE].normalized = false;
+}
+
+void VertexArray::setTexture(uint32_t size, uint32_t type, uint32_t stride, uint32_t offset, uint32_t num)
+{
+    mAttribs[TEXTURE_0 + num].buffer = mActiveBuffer;
+    mAttribs[TEXTURE_0 + num].type = type;
+    mAttribs[TEXTURE_0 + num].size = size;
+    mAttribs[TEXTURE_0 + num].offset = offset;
+    mAttribs[TEXTURE_0 + num].stride = stride;
+    mAttribs[TEXTURE_0 + num].normalized = false;
+}
+
+void VertexArray::logAttrib(uint32_t idx) const {
+    LOGE("va %i: buf=%i  size=%i  type=0x%x  stride=0x%x  offset=0x%x", idx,
+         mAttribs[idx].buffer,
+         mAttribs[idx].size,
+         mAttribs[idx].type,
+         mAttribs[idx].stride,
+         mAttribs[idx].offset);
+}
+
+void VertexArray::setupGL(class VertexArrayState *state) const
+{
+    if (mAttribs[POSITION].size) {
+        //logAttrib(POSITION);
+        glEnableClientState(GL_VERTEX_ARRAY);
+        glBindBuffer(GL_ARRAY_BUFFER, mAttribs[POSITION].buffer);
+        glVertexPointer(mAttribs[POSITION].size,
+                        mAttribs[POSITION].type,
+                        mAttribs[POSITION].stride,
+                        (void *)mAttribs[POSITION].offset);
+    } else {
+        rsAssert(0);
+    }
+
+    if (mAttribs[NORMAL].size) {
+        //logAttrib(NORMAL);
+        glEnableClientState(GL_NORMAL_ARRAY);
+        rsAssert(mAttribs[NORMAL].size == 3);
+        glBindBuffer(GL_ARRAY_BUFFER, mAttribs[NORMAL].buffer);
+        glNormalPointer(mAttribs[NORMAL].type,
+                        mAttribs[NORMAL].stride,
+                        (void *)mAttribs[NORMAL].offset);
+    } else {
+        glDisableClientState(GL_NORMAL_ARRAY);
+    }
+
+    if (mAttribs[COLOR].size) {
+        //logAttrib(COLOR);
+        glEnableClientState(GL_COLOR_ARRAY);
+        glBindBuffer(GL_ARRAY_BUFFER, mAttribs[COLOR].buffer);
+        glColorPointer(mAttribs[COLOR].size,
+                       mAttribs[COLOR].type,
+                       mAttribs[COLOR].stride,
+                       (void *)mAttribs[COLOR].offset);
+    } else {
+        glDisableClientState(GL_COLOR_ARRAY);
+    }
+
+    for (uint32_t ct=0; ct < RS_MAX_TEXTURE; ct++) {
+        glClientActiveTexture(GL_TEXTURE0 + ct);
+        if (mAttribs[TEXTURE_0 + ct].size) {
+            //logAttrib(TEXTURE_0 + ct);
+            glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+            glBindBuffer(GL_ARRAY_BUFFER, mAttribs[TEXTURE_0 + ct].buffer);
+            glTexCoordPointer(mAttribs[TEXTURE_0 + ct].size,
+                              mAttribs[TEXTURE_0 + ct].type,
+                              mAttribs[TEXTURE_0 + ct].stride,
+                              (void *)mAttribs[TEXTURE_0 + ct].offset);
+        } else {
+            glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+        }
+    }
+    glClientActiveTexture(GL_TEXTURE0);
+
+    if (mAttribs[POINT_SIZE].size) {
+        //logAttrib(POINT_SIZE);
+        glEnableClientState(GL_POINT_SIZE_ARRAY_OES);
+        glBindBuffer(GL_ARRAY_BUFFER, mAttribs[POINT_SIZE].buffer);
+        glPointSizePointerOES(mAttribs[POINT_SIZE].type,
+                              mAttribs[POINT_SIZE].stride,
+                              (void *)mAttribs[POINT_SIZE].offset);
+    } else {
+        glDisableClientState(GL_POINT_SIZE_ARRAY_OES);
+    }
+}
+
+void VertexArray::setupGL2(class VertexArrayState *state, ShaderCache *sc) const
+{
+    for (int ct=1; ct < _LAST; ct++) {
+        glDisableVertexAttribArray(ct);
+    }
+
+    for (int ct=0; ct < _LAST; ct++) {
+        if (mAttribs[ct].size) {
+            //logAttrib(ct);
+            glEnableVertexAttribArray(sc->vtxAttribSlot(ct));
+            glBindBuffer(GL_ARRAY_BUFFER, mAttribs[ct].buffer);
+            //LOGV("attp %i %i", ct, sc->vtxAttribSlot(ct));
+
+            glVertexAttribPointer(sc->vtxAttribSlot(ct),
+                                  mAttribs[ct].size,
+                                  mAttribs[ct].type,
+                                  mAttribs[ct].normalized,
+                                  mAttribs[ct].stride,
+                                  (void *)mAttribs[ct].offset);
+        } else {
+            //glDisableVertexAttribArray(ct);
+            rsAssert(ct);
+        }
+    }
+}
+////////////////////////////////////////////
+
+void VertexArrayState::init(Context *) {
+    memset(this, 0, sizeof(this));
+}
+
diff --git a/libs/rs/rsVertexArray.h b/libs/rs/rsVertexArray.h
new file mode 100644
index 0000000..235ffef
--- /dev/null
+++ b/libs/rs/rsVertexArray.h
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_VERTEX_ARRAY_H
+#define ANDROID_VERTEX_ARRAY_H
+
+
+#include "rsObjectBase.h"
+
+// ---------------------------------------------------------------------------
+namespace android {
+namespace renderscript {
+
+class ShaderCache;
+
+// An element is a group of Components that occupies one cell in a structure.
+class VertexArray
+{
+public:
+    VertexArray();
+    virtual ~VertexArray();
+
+    enum AttribName {
+        POSITION,
+        COLOR,
+        NORMAL,
+        POINT_SIZE,
+        TEXTURE_0,
+        TEXTURE_1,
+        _LAST
+    };
+
+    typedef struct {
+        uint32_t buffer;
+        uint32_t offset;
+        uint32_t type;
+        uint32_t size;
+        uint32_t stride;
+        bool normalized;
+    } Attrib;
+
+
+    void clearAll();
+    void clear(AttribName);
+
+    void setActiveBuffer(uint32_t id) {mActiveBuffer = id;}
+
+    void setPosition(uint32_t size, uint32_t type, uint32_t stride, uint32_t offset);
+    void setColor(uint32_t size, uint32_t type, uint32_t stride, uint32_t offset);
+    void setNormal(uint32_t type, uint32_t stride, uint32_t offset);
+    void setPointSize(uint32_t type, uint32_t stride, uint32_t offset);
+    void setTexture(uint32_t size, uint32_t type, uint32_t stride, uint32_t offset, uint32_t num);
+
+    void setupGL(class VertexArrayState *) const;
+    void setupGL2(class VertexArrayState *, ShaderCache *) const;
+    void logAttrib(uint32_t idx) const;
+
+protected:
+    uint32_t mActiveBuffer;
+    Attrib mAttribs[_LAST];
+};
+
+
+class VertexArrayState {
+public:
+    void init(Context *);
+
+    VertexArray::Attrib mAttribs[VertexArray::_LAST];
+};
+
+
+}
+}
+#endif //ANDROID_LIGHT_H
+
+
+
diff --git a/media/sdutils/Android.mk b/media/sdutils/Android.mk
index dafb8a6..74e1eca 100644
--- a/media/sdutils/Android.mk
+++ b/media/sdutils/Android.mk
@@ -6,7 +6,7 @@
 LOCAL_SRC_FILES:= \
 	sdutil.cpp \
 
-LOCAL_SHARED_LIBRARIES := libhardware_legacy libcutils libutils libc
+LOCAL_SHARED_LIBRARIES := libhardware_legacy libbinder libcutils libutils libc
 
 LOCAL_MODULE:= sdutil
 LOCAL_MODULE_TAGS := debug
diff --git a/media/tests/omxjpegdecoder/Android.mk b/media/tests/omxjpegdecoder/Android.mk
new file mode 100644
index 0000000..e989078
--- /dev/null
+++ b/media/tests/omxjpegdecoder/Android.mk
@@ -0,0 +1,55 @@
+# Copyright (C) 2009 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+ifeq ($(BUILD_WITH_FULL_STAGEFRIGHT),true)
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+        omx_jpeg_decoder.cpp \
+        jpeg_decoder_bench.cpp \
+        SkOmxPixelRef.cpp \
+        StreamSource.cpp
+
+
+# add external/skia/src/images/SkImageDecoder_libjpeg.cpp
+LOCAL_SRC_FILES += \
+        ../../../../../external/skia/src/images/SkImageDecoder_libjpeg.cpp
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libskia \
+    libstagefright
+
+LOCAL_C_INCLUDES := \
+    $(JNI_H_INCLUDE) \
+    $(TOP)/external/jpeg \
+    $(TOP)/external/skia/include/config \
+    $(TOP)/external/skia/include/core \
+    $(TOP)/external/skia/include/images \
+    $(TOP)/external/skia/include/utils \
+    $(TOP)/external/skia/include/effects \
+    $(TOP)/frameworks/base/media/libstagefright \
+    $(TOP)/external/opencore/extern_libs_v2/khronos/openmax/include \
+    $(TOP)/frameworks/base/include/ \
+    $(TOP)/frameworks/base/
+
+LOCAL_MODULE := jpeg_bench
+
+LOCAL_MODULE_TAGS := optional
+
+include $(BUILD_EXECUTABLE)
+
+endif
diff --git a/media/tests/omxjpegdecoder/SkOmxPixelRef.cpp b/media/tests/omxjpegdecoder/SkOmxPixelRef.cpp
new file mode 100644
index 0000000..3acc0ee
--- /dev/null
+++ b/media/tests/omxjpegdecoder/SkOmxPixelRef.cpp
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <media/stagefright/MediaDebug.h>
+#include <SkBitmap.h>
+
+#include "SkOmxPixelRef.h"
+
+using namespace android;
+
+SkOmxPixelRef::SkOmxPixelRef(SkColorTable* ctable, MediaBuffer* buffer,
+        sp<OMXCodec> decoder)  {
+    mBuffer = buffer;
+    mDecoder = decoder;
+    mSize = buffer->size();
+    mCTable = ctable;
+    SkSafeRef(mCTable);
+}
+
+SkOmxPixelRef::~SkOmxPixelRef() {
+    mBuffer->release();
+    CHECK_EQ(mDecoder->stop(), OK);
+    SkSafeUnref(mCTable);
+}
+
+void* SkOmxPixelRef::onLockPixels(SkColorTable** ct) {
+    *ct = mCTable;
+    return mBuffer->data();
+}
+
+void SkOmxPixelRef::onUnlockPixels() {
+    // nothing to do
+}
diff --git a/media/tests/omxjpegdecoder/SkOmxPixelRef.h b/media/tests/omxjpegdecoder/SkOmxPixelRef.h
new file mode 100644
index 0000000..4ab5a73
--- /dev/null
+++ b/media/tests/omxjpegdecoder/SkOmxPixelRef.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef SKOMXPIXELREF_DEFINED
+#define SKOMXPIXELREF_DEFINED
+
+#include <media/stagefright/MediaBuffer.h>
+#include <media/stagefright/OMXClient.h>
+#include <media/stagefright/OMXCodec.h>
+#include <SkPixelRef.h>
+
+namespace android {
+
+class SkOmxPixelRef : public SkPixelRef {
+public:
+    SkOmxPixelRef(SkColorTable* ctable, MediaBuffer* buffer,
+            sp<OMXCodec> decoder);
+    virtual ~SkOmxPixelRef();
+
+     //! Return the allocation size for the pixels
+    size_t getSize() const { return mSize; }
+
+protected:
+    // overrides from SkPixelRef
+    virtual void* onLockPixels(SkColorTable**);
+    virtual void onUnlockPixels();
+
+private:
+    MediaBuffer* mBuffer;
+    sp<OMXCodec> mDecoder;
+    size_t          mSize;
+    SkColorTable*   mCTable;
+
+    typedef SkPixelRef INHERITED;
+};
+
+} // namespace android
+#endif // SKOMXPIXELREF_DEFINED
diff --git a/media/tests/omxjpegdecoder/StreamSource.cpp b/media/tests/omxjpegdecoder/StreamSource.cpp
new file mode 100644
index 0000000..76aa85b
--- /dev/null
+++ b/media/tests/omxjpegdecoder/StreamSource.cpp
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <media/stagefright/MediaDebug.h>
+
+#include "StreamSource.h"
+
+namespace android {
+
+StreamSource::StreamSource(SkStream *stream)
+        : mStream(stream) {
+    CHECK(stream != NULL);
+    mSize = stream->getLength();
+}
+
+StreamSource::~StreamSource() {
+    delete mStream;
+    mStream = NULL;
+}
+
+status_t StreamSource::initCheck() const {
+    return mStream != NULL ? OK : NO_INIT;
+}
+
+ssize_t StreamSource::readAt(off_t offset, void *data, size_t size) {
+    Mutex::Autolock autoLock(mLock);
+
+    mStream->rewind();
+    mStream->skip(offset);
+    ssize_t result = mStream->read(data, size);
+
+    return result;
+}
+
+status_t StreamSource::getSize(off_t *size) {
+      *size = mSize;
+      return OK;
+}
+
+}  // namespace android
diff --git a/media/tests/omxjpegdecoder/StreamSource.h b/media/tests/omxjpegdecoder/StreamSource.h
new file mode 100644
index 0000000..c1ed5bf
--- /dev/null
+++ b/media/tests/omxjpegdecoder/StreamSource.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef STREAM_SOURCE_H_
+
+#define STREAM_SOURCE_H_
+
+#include <stdio.h>
+
+#include <core/SkStream.h>
+#include <media/stagefright/DataSource.h>
+#include <media/stagefright/MediaErrors.h>
+#include <utils/threads.h>
+
+namespace android {
+
+class StreamSource : public DataSource {
+public:
+    // Pass the ownership of SkStream to StreamSource.
+    StreamSource(SkStream *SkStream);
+    virtual status_t initCheck() const;
+    virtual ssize_t readAt(off_t offset, void *data, size_t size);
+    virtual status_t getSize(off_t *size);
+
+protected:
+    virtual ~StreamSource();
+
+private:
+    SkStream *mStream;
+    size_t mSize;
+    Mutex mLock;
+
+    StreamSource(const StreamSource &);
+    StreamSource &operator=(const StreamSource &);
+};
+
+}  // namespace android
+
+#endif  // STREAM_SOURCE_H_
diff --git a/media/tests/omxjpegdecoder/jpeg_decoder_bench.cpp b/media/tests/omxjpegdecoder/jpeg_decoder_bench.cpp
new file mode 100644
index 0000000..78b89ca
--- /dev/null
+++ b/media/tests/omxjpegdecoder/jpeg_decoder_bench.cpp
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "OmxJpegDecoder"
+#include <sys/time.h>
+#include <utils/Log.h>
+
+#include <binder/ProcessState.h>
+
+#include "SkBitmap.h"
+#include "SkImageDecoder.h"
+#include "SkStream.h"
+#include "omx_jpeg_decoder.h"
+
+class SkJPEGImageDecoder : public SkImageDecoder {
+public:
+    virtual Format getFormat() const {
+        return kJPEG_Format;
+    }
+
+protected:
+    virtual bool onDecode(SkStream* stream, SkBitmap* bm,
+                          SkBitmap::Config pref, Mode);
+};
+
+int nullObjectReturn(const char msg[]) {
+    if (msg) {
+        SkDebugf("--- %s\n", msg);
+    }
+    return -1;
+}
+
+static int64_t getNowUs() {
+    struct timeval tv;
+    gettimeofday(&tv, NULL);
+
+    return tv.tv_usec + (int64_t) tv.tv_sec * 1000000;
+}
+
+int testDecodeBounds(SkImageDecoder* decoder, SkStream* stream,
+        SkBitmap* bitmap) {
+    int64_t startTime = getNowUs();
+    SkBitmap::Config prefConfig = SkBitmap::kARGB_8888_Config;
+    SkImageDecoder::Mode decodeMode = SkImageDecoder::kDecodeBounds_Mode;
+
+    // Decode the input stream and then use the bitmap.
+    if (!decoder->decode(stream, bitmap, prefConfig, decodeMode)) {
+        return nullObjectReturn("decoder->decode returned false");
+    } else {
+        int64_t delay = getNowUs() - startTime;
+        printf("WidthxHeight: %dx%d\n", bitmap->width(), bitmap->height());
+        printf("Decoding Time in BoundsMode %.1f msec.\n", delay / 1000.0f);
+        return 0;
+    }
+}
+
+int testDecodePixels(SkImageDecoder* decoder, SkStream* stream,
+        SkBitmap* bitmap) {
+    int64_t startTime = getNowUs();
+    SkBitmap::Config prefConfig = SkBitmap::kARGB_8888_Config;
+    SkImageDecoder::Mode decodeMode = SkImageDecoder::kDecodePixels_Mode;
+
+    // Decode the input stream and then use the bitmap.
+    if (!decoder->decode(stream, bitmap, prefConfig, decodeMode)) {
+        return nullObjectReturn("decoder->decode returned false");
+    } else {
+        int64_t delay = getNowUs() - startTime;
+        printf("Decoding Time in PixelsMode %.1f msec.\n", delay / 1000.0f);
+        char* filename = "/sdcard/omxJpegDecodedBitmap.rgba";
+        return storeBitmapToFile(bitmap, filename);
+    }
+}
+
+int testDecoder(SkImageDecoder* decoder, char* filename) {
+    // test DecodeMode == Pixels
+    SkStream* stream = new SkFILEStream(filename);
+    SkBitmap* bitmap = new SkBitmap;
+    testDecodePixels(decoder, stream, bitmap);
+    delete bitmap;
+
+    // test DecodeMode == Bounds
+    stream = new SkFILEStream(filename);
+    bitmap = new SkBitmap;
+    testDecodeBounds(decoder, stream, bitmap);
+    delete bitmap;
+
+    delete decoder;
+    return 0;
+}
+
+int main(int argc, char** argv) {
+    android::ProcessState::self()->startThreadPool();
+
+    printf("Decoding jpeg with libjpeg...\n");
+    SkJPEGImageDecoder* libjpeg = new SkJPEGImageDecoder;
+    testDecoder(libjpeg, argv[1]);
+
+    printf("\nDecoding jpeg with OMX...\n");
+    OmxJpegImageDecoder* omx = new OmxJpegImageDecoder;
+    testDecoder(omx, argv[1]);
+    return 0;
+}
diff --git a/media/tests/omxjpegdecoder/omx_jpeg_decoder.cpp b/media/tests/omxjpegdecoder/omx_jpeg_decoder.cpp
new file mode 100644
index 0000000..8d02f46
--- /dev/null
+++ b/media/tests/omxjpegdecoder/omx_jpeg_decoder.cpp
@@ -0,0 +1,197 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "OmxJpegDecoder"
+#include <sys/time.h>
+#include <utils/Log.h>
+
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <binder/IServiceManager.h>
+#include <binder/ProcessState.h>
+#include <media/IMediaPlayerService.h>
+#include <media/stagefright/MediaDebug.h>
+#include <media/stagefright/MediaSource.h>
+#include <media/stagefright/MetaData.h>
+#include <media/stagefright/OMXClient.h>
+#include <media/stagefright/OMXCodec.h>
+#include <SkMallocPixelRef.h>
+
+#include "omx_jpeg_decoder.h"
+#include "SkOmxPixelRef.h"
+#include "StreamSource.h"
+
+using namespace android;
+
+static void getJpegOutput(MediaBuffer* buffer, char* filename) {
+    int size = buffer->range_length();
+    int offset = buffer->range_offset();
+    FILE *pFile = fopen(filename, "w+");
+
+    if (pFile == NULL) {
+        printf("Error: cannot open %s.\n", filename);
+    } else {
+        char* data = (char*) buffer->data();
+        data += offset;
+        while (size > 0) {
+            int numChars = fwrite(data, sizeof(char), 1024, pFile);
+            int numBytes = numChars * sizeof(char);
+            size -= numBytes;
+            data += numBytes;
+        }
+        fclose(pFile);
+    }
+    return;
+}
+
+extern int storeBitmapToFile(SkBitmap* bitmap, char* filename) {
+    bitmap->lockPixels();
+    void* data = bitmap->getPixels();
+    int size = bitmap->getSize();
+    FILE* fp = fopen(filename, "w+");
+
+    if (NULL == fp) {
+        printf("Cannot open the output file! \n");
+        return -1;
+    } else {
+        while (size > 0) {
+            int numChars = fwrite(data, sizeof(char), 1024, fp);
+            int numBytes = numChars * sizeof(char);
+            size -= numBytes;
+            data += numBytes;
+        }
+        fclose(fp);
+    }
+    return 0;
+}
+
+static int64_t getNowUs() {
+    struct timeval tv;
+    gettimeofday(&tv, NULL);
+
+    return (int64_t)tv.tv_usec + tv.tv_sec * 1000000;
+}
+
+OmxJpegImageDecoder::OmxJpegImageDecoder() {
+    status_t err = mClient.connect();
+    CHECK_EQ(err, OK);
+}
+
+OmxJpegImageDecoder::~OmxJpegImageDecoder() {
+    mClient.disconnect();
+}
+
+bool OmxJpegImageDecoder::onDecode(SkStream* stream,
+        SkBitmap* bm, SkBitmap::Config pref, Mode mode) {
+    sp<MediaSource> source = prepareMediaSource(stream);
+    sp<MetaData> meta = source->getFormat();
+    int width;
+    int height;
+    meta->findInt32(kKeyWidth, &width);
+    meta->findInt32(kKeyHeight, &height);
+    configBitmapSize(bm, pref, width, height);
+
+    // mode == DecodeBounds
+    if (mode == SkImageDecoder::kDecodeBounds_Mode) {
+        return true;
+    }
+
+    // mode == DecodePixels
+    if (!this->allocPixelRef(bm, NULL)) {
+        LOGI(LOG_TAG, "Cannot allocPixelRef()!");
+        return false;
+    }
+
+    sp<OMXCodec> decoder = getDecoder(&mClient, source);
+    return decodeSource(decoder, source, bm);
+}
+
+JPEGSource* OmxJpegImageDecoder::prepareMediaSource(SkStream* stream) {
+    DataSource::RegisterDefaultSniffers();
+    sp<DataSource> dataSource = new StreamSource(stream);
+    return new JPEGSource(dataSource);
+}
+
+sp<OMXCodec> OmxJpegImageDecoder::getDecoder(
+        OMXClient *client, const sp<MediaSource>& source) {
+    sp<MetaData> meta = source->getFormat();
+    sp<OMXCodec> decoder = OMXCodec::Create(
+            client->interface(), meta, false /* createEncoder */, source);
+
+    CHECK(decoder != NULL);
+    return decoder;
+}
+
+bool OmxJpegImageDecoder::decodeSource(sp<OMXCodec> decoder,
+        const sp<MediaSource>& source, SkBitmap* bm) {
+    status_t rt = decoder->start();
+    if (rt != OK) {
+        LOGE(LOG_TAG, "Cannot start OMX Decoder!");
+        return false;
+    }
+    int64_t startTime = getNowUs();
+    MediaBuffer *buffer;
+
+    // decode source
+    status_t err = decoder->read(&buffer, NULL);
+    int64_t duration = getNowUs() - startTime;
+
+    if (err != OK) {
+        CHECK_EQ(buffer, NULL);
+    }
+    printf("Duration in decoder->read(): %.1f (msecs). \n",
+                duration / 1E3 );
+
+    /* Mark the code for now, since we attend to copy buffer to SkBitmap.
+    // Install pixelRef to Bitmap.
+    installPixelRef(buffer, decoder, bm);*/
+
+    // Copy pixels from buffer to bm.
+    // May need to check buffer->rawBytes() == bm->rawBytes().
+    CHECK_EQ(buffer->size(), bm->getSize());
+    memcpy(bm->getPixels(), buffer->data(), buffer->size());
+    buffer->release();
+    decoder->stop();
+
+    return true;
+}
+
+void OmxJpegImageDecoder::installPixelRef(MediaBuffer *buffer, sp<OMXCodec> decoder,
+        SkBitmap* bm) {
+
+    // set bm's pixelref based on the data in buffer.
+    SkAutoLockPixels alp(*bm);
+    SkPixelRef* pr = new SkOmxPixelRef(NULL, buffer, decoder);
+    bm->setPixelRef(pr)->unref();
+    bm->lockPixels();
+    return;
+}
+
+void OmxJpegImageDecoder::configBitmapSize(SkBitmap* bm, SkBitmap::Config pref,
+        int width, int height) {
+    bm->setConfig(getColorSpaceConfig(pref), width, height);
+    bm->setIsOpaque(true);
+}
+
+SkBitmap::Config OmxJpegImageDecoder::getColorSpaceConfig(
+        SkBitmap::Config pref) {
+
+    // Set the color space to ARGB_8888 for now
+    // because of limitation in hardware support.
+    return SkBitmap::kARGB_8888_Config;
+}
diff --git a/media/tests/omxjpegdecoder/omx_jpeg_decoder.h b/media/tests/omxjpegdecoder/omx_jpeg_decoder.h
new file mode 100644
index 0000000..21e2ae6
--- /dev/null
+++ b/media/tests/omxjpegdecoder/omx_jpeg_decoder.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef OMXJPEGIMAGEDECODER
+#define OMXJPEGIMAGEDECODER
+
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <media/stagefright/JPEGSource.h>
+#include <media/stagefright/MediaSource.h>
+#include <media/stagefright/OMXClient.h>
+#include <media/stagefright/OMXCodec.h>
+#include <SkImageDecoder.h>
+#include <SkStream.h>
+
+using namespace android;
+
+extern int storeBitmapToFile(SkBitmap* bitmap, char* filename);
+
+class OmxJpegImageDecoder : public SkImageDecoder {
+public:
+    OmxJpegImageDecoder();
+    ~OmxJpegImageDecoder();
+
+    virtual Format getFormat() const {
+        return kJPEG_Format;
+    }
+
+protected:
+    virtual bool onDecode(SkStream* stream, SkBitmap* bm,
+            SkBitmap::Config pref, Mode mode);
+
+private:
+    JPEGSource* prepareMediaSource(SkStream* stream);
+    sp<OMXCodec> getDecoder(OMXClient* client, const sp<MediaSource>& source);
+    bool decodeSource(sp<OMXCodec> decoder, const sp<MediaSource>& source,
+            SkBitmap* bm);
+    void installPixelRef(MediaBuffer* buffer, sp<OMXCodec> decoder,
+            SkBitmap* bm);
+    void configBitmapSize(SkBitmap* bm, SkBitmap::Config pref, int width,
+            int height);
+    SkBitmap::Config getColorSpaceConfig(SkBitmap::Config pref);
+
+    OMXClient mClient;
+};
+
+#endif
diff --git a/opengl/java/android/opengl/GLES11.java b/opengl/java/android/opengl/GLES11.java
index 3399af7..1ca179b 100644
--- a/opengl/java/android/opengl/GLES11.java
+++ b/opengl/java/android/opengl/GLES11.java
@@ -150,6 +150,7 @@
 	    _nativeClassInit();
     }
 
+    private static Buffer _pointSizePointerOES;
     // C function void glBindBuffer ( GLenum target, GLuint buffer )
 
     public static native void glBindBuffer(
@@ -596,11 +597,30 @@
 
     // C function void glPointSizePointerOES ( GLenum type, GLsizei stride, const GLvoid *pointer )
 
-    public static native void glPointSizePointerOES(
+    private static native void glPointSizePointerOESBounds(
+        int type,
+        int stride,
+        java.nio.Buffer pointer,
+        int remaining
+    );
+
+    public static void glPointSizePointerOES(
         int type,
         int stride,
         java.nio.Buffer pointer
-    );
+    ) {
+        glPointSizePointerOESBounds(
+            type,
+            stride,
+            pointer,
+            pointer.remaining()
+        );
+        if (((type == GL_FLOAT) ||
+             (type == GL_FIXED)) &&
+            (stride >= 0)) {
+            _pointSizePointerOES = pointer;
+        }
+    }
 
     // C function void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, GLint offset )
 
diff --git a/opengl/java/android/opengl/GLES11Ext.java b/opengl/java/android/opengl/GLES11Ext.java
index 4384e9e..25d5467 100644
--- a/opengl/java/android/opengl/GLES11Ext.java
+++ b/opengl/java/android/opengl/GLES11Ext.java
@@ -19,6 +19,8 @@
 
 package android.opengl;
 
+import java.nio.Buffer;
+
 public class GLES11Ext {
     public static final int GL_BLEND_EQUATION_RGB_OES                               = 0x8009;
     public static final int GL_BLEND_EQUATION_ALPHA_OES                             = 0x883D;
@@ -129,6 +131,12 @@
 	    _nativeClassInit();
     }
     
+    private static final int GL_BYTE = GLES10.GL_BYTE;
+    private static final int GL_FIXED = GLES10.GL_FIXED;
+    private static final int GL_FLOAT = GLES10.GL_FLOAT;
+    private static final int GL_SHORT = GLES10.GL_SHORT;
+    
+    private static Buffer _matrixIndexPointerOES;
     // C function void glBlendEquationSeparateOES ( GLenum modeRGB, GLenum modeAlpha )
 
     public static native void glBlendEquationSeparateOES(
@@ -866,21 +874,63 @@
 
     // C function void glMatrixIndexPointerOES ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer )
 
-    public static native void glMatrixIndexPointerOES(
+    private static native void glMatrixIndexPointerOESBounds(
+        int size,
+        int type,
+        int stride,
+        java.nio.Buffer pointer,
+        int remaining
+    );
+
+    public static void glMatrixIndexPointerOES(
         int size,
         int type,
         int stride,
         java.nio.Buffer pointer
-    );
+    ) {
+        glMatrixIndexPointerOESBounds(
+            size,
+            type,
+            stride,
+            pointer,
+            pointer.remaining()
+        );
+        if (((size == 2) ||
+             (size == 3) ||
+             (size == 4)) &&
+            ((type == GL_FLOAT) ||
+             (type == GL_BYTE) ||
+             (type == GL_SHORT) ||
+             (type == GL_FIXED)) &&
+            (stride >= 0)) {
+            _matrixIndexPointerOES = pointer;
+        }
+    }
 
     // C function void glWeightPointerOES ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer )
 
-    public static native void glWeightPointerOES(
+    private static native void glWeightPointerOESBounds(
+        int size,
+        int type,
+        int stride,
+        java.nio.Buffer pointer,
+        int remaining
+    );
+
+    public static void glWeightPointerOES(
         int size,
         int type,
         int stride,
         java.nio.Buffer pointer
-    );
+    ) {
+        glWeightPointerOESBounds(
+            size,
+            type,
+            stride,
+            pointer,
+            pointer.remaining()
+        );
+    }
 
     // C function void glDepthRangefOES ( GLclampf zNear, GLclampf zFar )
 
diff --git a/opengl/java/android/opengl/GLES20.java b/opengl/java/android/opengl/GLES20.java
new file mode 100644
index 0000000..b8aac0e
--- /dev/null
+++ b/opengl/java/android/opengl/GLES20.java
@@ -0,0 +1,1857 @@
+/*
+**
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License"); 
+** you may not use this file except in compliance with the License. 
+** You may obtain a copy of the License at 
+**
+**     http://www.apache.org/licenses/LICENSE-2.0 
+**
+** Unless required by applicable law or agreed to in writing, software 
+** distributed under the License is distributed on an "AS IS" BASIS, 
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+** See the License for the specific language governing permissions and 
+** limitations under the License.
+*/
+
+// This source file is automatically generated
+
+package android.opengl;
+
+/** OpenGL ES 2.0
+ */
+public class GLES20 {
+    public static final int GL_ACTIVE_TEXTURE                          = 0x84E0;
+    public static final int GL_DEPTH_BUFFER_BIT                        = 0x00000100;
+    public static final int GL_STENCIL_BUFFER_BIT                      = 0x00000400;
+    public static final int GL_COLOR_BUFFER_BIT                        = 0x00004000;
+    public static final int GL_FALSE                                   = 0;
+    public static final int GL_TRUE                                    = 1;
+    public static final int GL_POINTS                                  = 0x0000;
+    public static final int GL_LINES                                   = 0x0001;
+    public static final int GL_LINE_LOOP                               = 0x0002;
+    public static final int GL_LINE_STRIP                              = 0x0003;
+    public static final int GL_TRIANGLES                               = 0x0004;
+    public static final int GL_TRIANGLE_STRIP                          = 0x0005;
+    public static final int GL_TRIANGLE_FAN                            = 0x0006;
+    public static final int GL_ZERO                                    = 0;
+    public static final int GL_ONE                                     = 1;
+    public static final int GL_SRC_COLOR                               = 0x0300;
+    public static final int GL_ONE_MINUS_SRC_COLOR                     = 0x0301;
+    public static final int GL_SRC_ALPHA                               = 0x0302;
+    public static final int GL_ONE_MINUS_SRC_ALPHA                     = 0x0303;
+    public static final int GL_DST_ALPHA                               = 0x0304;
+    public static final int GL_ONE_MINUS_DST_ALPHA                     = 0x0305;
+    public static final int GL_DST_COLOR                               = 0x0306;
+    public static final int GL_ONE_MINUS_DST_COLOR                     = 0x0307;
+    public static final int GL_SRC_ALPHA_SATURATE                      = 0x0308;
+    public static final int GL_FUNC_ADD                                = 0x8006;
+    public static final int GL_BLEND_EQUATION                          = 0x8009;
+    public static final int GL_BLEND_EQUATION_RGB                      = 0x8009;   /* same as BLEND_EQUATION */
+    public static final int GL_BLEND_EQUATION_ALPHA                    = 0x883D;
+    public static final int GL_FUNC_SUBTRACT                           = 0x800A;
+    public static final int GL_FUNC_REVERSE_SUBTRACT                   = 0x800B;
+    public static final int GL_BLEND_DST_RGB                           = 0x80C8;
+    public static final int GL_BLEND_SRC_RGB                           = 0x80C9;
+    public static final int GL_BLEND_DST_ALPHA                         = 0x80CA;
+    public static final int GL_BLEND_SRC_ALPHA                         = 0x80CB;
+    public static final int GL_CONSTANT_COLOR                          = 0x8001;
+    public static final int GL_ONE_MINUS_CONSTANT_COLOR                = 0x8002;
+    public static final int GL_CONSTANT_ALPHA                          = 0x8003;
+    public static final int GL_ONE_MINUS_CONSTANT_ALPHA                = 0x8004;
+    public static final int GL_BLEND_COLOR                             = 0x8005;
+    public static final int GL_ARRAY_BUFFER                            = 0x8892;
+    public static final int GL_ELEMENT_ARRAY_BUFFER                    = 0x8893;
+    public static final int GL_ARRAY_BUFFER_BINDING                    = 0x8894;
+    public static final int GL_ELEMENT_ARRAY_BUFFER_BINDING            = 0x8895;
+    public static final int GL_STREAM_DRAW                             = 0x88E0;
+    public static final int GL_STATIC_DRAW                             = 0x88E4;
+    public static final int GL_DYNAMIC_DRAW                            = 0x88E8;
+    public static final int GL_BUFFER_SIZE                             = 0x8764;
+    public static final int GL_BUFFER_USAGE                            = 0x8765;
+    public static final int GL_CURRENT_VERTEX_ATTRIB                   = 0x8626;
+    public static final int GL_FRONT                                   = 0x0404;
+    public static final int GL_BACK                                    = 0x0405;
+    public static final int GL_FRONT_AND_BACK                          = 0x0408;
+    public static final int GL_TEXTURE_2D                              = 0x0DE1;
+    public static final int GL_CULL_FACE                               = 0x0B44;
+    public static final int GL_BLEND                                   = 0x0BE2;
+    public static final int GL_DITHER                                  = 0x0BD0;
+    public static final int GL_STENCIL_TEST                            = 0x0B90;
+    public static final int GL_DEPTH_TEST                              = 0x0B71;
+    public static final int GL_SCISSOR_TEST                            = 0x0C11;
+    public static final int GL_POLYGON_OFFSET_FILL                     = 0x8037;
+    public static final int GL_SAMPLE_ALPHA_TO_COVERAGE                = 0x809E;
+    public static final int GL_SAMPLE_COVERAGE                         = 0x80A0;
+    public static final int GL_NO_ERROR                                = 0;
+    public static final int GL_INVALID_ENUM                            = 0x0500;
+    public static final int GL_INVALID_VALUE                           = 0x0501;
+    public static final int GL_INVALID_OPERATION                       = 0x0502;
+    public static final int GL_OUT_OF_MEMORY                           = 0x0505;
+    public static final int GL_CW                                      = 0x0900;
+    public static final int GL_CCW                                     = 0x0901;
+    public static final int GL_LINE_WIDTH                              = 0x0B21;
+    public static final int GL_ALIASED_POINT_SIZE_RANGE                = 0x846D;
+    public static final int GL_ALIASED_LINE_WIDTH_RANGE                = 0x846E;
+    public static final int GL_CULL_FACE_MODE                          = 0x0B45;
+    public static final int GL_FRONT_FACE                              = 0x0B46;
+    public static final int GL_DEPTH_RANGE                             = 0x0B70;
+    public static final int GL_DEPTH_WRITEMASK                         = 0x0B72;
+    public static final int GL_DEPTH_CLEAR_VALUE                       = 0x0B73;
+    public static final int GL_DEPTH_FUNC                              = 0x0B74;
+    public static final int GL_STENCIL_CLEAR_VALUE                     = 0x0B91;
+    public static final int GL_STENCIL_FUNC                            = 0x0B92;
+    public static final int GL_STENCIL_FAIL                            = 0x0B94;
+    public static final int GL_STENCIL_PASS_DEPTH_FAIL                 = 0x0B95;
+    public static final int GL_STENCIL_PASS_DEPTH_PASS                 = 0x0B96;
+    public static final int GL_STENCIL_REF                             = 0x0B97;
+    public static final int GL_STENCIL_VALUE_MASK                      = 0x0B93;
+    public static final int GL_STENCIL_WRITEMASK                       = 0x0B98;
+    public static final int GL_STENCIL_BACK_FUNC                       = 0x8800;
+    public static final int GL_STENCIL_BACK_FAIL                       = 0x8801;
+    public static final int GL_STENCIL_BACK_PASS_DEPTH_FAIL            = 0x8802;
+    public static final int GL_STENCIL_BACK_PASS_DEPTH_PASS            = 0x8803;
+    public static final int GL_STENCIL_BACK_REF                        = 0x8CA3;
+    public static final int GL_STENCIL_BACK_VALUE_MASK                 = 0x8CA4;
+    public static final int GL_STENCIL_BACK_WRITEMASK                  = 0x8CA5;
+    public static final int GL_VIEWPORT                                = 0x0BA2;
+    public static final int GL_SCISSOR_BOX                             = 0x0C10;
+    public static final int GL_COLOR_CLEAR_VALUE                       = 0x0C22;
+    public static final int GL_COLOR_WRITEMASK                         = 0x0C23;
+    public static final int GL_UNPACK_ALIGNMENT                        = 0x0CF5;
+    public static final int GL_PACK_ALIGNMENT                          = 0x0D05;
+    public static final int GL_MAX_TEXTURE_SIZE                        = 0x0D33;
+    public static final int GL_MAX_VIEWPORT_DIMS                       = 0x0D3A;
+    public static final int GL_SUBPIXEL_BITS                           = 0x0D50;
+    public static final int GL_RED_BITS                                = 0x0D52;
+    public static final int GL_GREEN_BITS                              = 0x0D53;
+    public static final int GL_BLUE_BITS                               = 0x0D54;
+    public static final int GL_ALPHA_BITS                              = 0x0D55;
+    public static final int GL_DEPTH_BITS                              = 0x0D56;
+    public static final int GL_STENCIL_BITS                            = 0x0D57;
+    public static final int GL_POLYGON_OFFSET_UNITS                    = 0x2A00;
+    public static final int GL_POLYGON_OFFSET_FACTOR                   = 0x8038;
+    public static final int GL_TEXTURE_BINDING_2D                      = 0x8069;
+    public static final int GL_SAMPLE_BUFFERS                          = 0x80A8;
+    public static final int GL_SAMPLES                                 = 0x80A9;
+    public static final int GL_SAMPLE_COVERAGE_VALUE                   = 0x80AA;
+    public static final int GL_SAMPLE_COVERAGE_INVERT                  = 0x80AB;
+    public static final int GL_NUM_COMPRESSED_TEXTURE_FORMATS          = 0x86A2;
+    public static final int GL_COMPRESSED_TEXTURE_FORMATS              = 0x86A3;
+    public static final int GL_DONT_CARE                               = 0x1100;
+    public static final int GL_FASTEST                                 = 0x1101;
+    public static final int GL_NICEST                                  = 0x1102;
+    public static final int GL_GENERATE_MIPMAP_HINT                    = 0x8192;
+    public static final int GL_BYTE                                    = 0x1400;
+    public static final int GL_UNSIGNED_BYTE                           = 0x1401;
+    public static final int GL_SHORT                                   = 0x1402;
+    public static final int GL_UNSIGNED_SHORT                          = 0x1403;
+    public static final int GL_INT                                     = 0x1404;
+    public static final int GL_UNSIGNED_INT                            = 0x1405;
+    public static final int GL_FLOAT                                   = 0x1406;
+    public static final int GL_FIXED                                   = 0x140C;
+    public static final int GL_DEPTH_COMPONENT                         = 0x1902;
+    public static final int GL_ALPHA                                   = 0x1906;
+    public static final int GL_RGB                                     = 0x1907;
+    public static final int GL_RGBA                                    = 0x1908;
+    public static final int GL_LUMINANCE                               = 0x1909;
+    public static final int GL_LUMINANCE_ALPHA                         = 0x190A;
+    public static final int GL_UNSIGNED_SHORT_4_4_4_4                  = 0x8033;
+    public static final int GL_UNSIGNED_SHORT_5_5_5_1                  = 0x8034;
+    public static final int GL_UNSIGNED_SHORT_5_6_5                    = 0x8363;
+    public static final int GL_FRAGMENT_SHADER                           = 0x8B30;
+    public static final int GL_VERTEX_SHADER                             = 0x8B31;
+    public static final int GL_MAX_VERTEX_ATTRIBS                        = 0x8869;
+    public static final int GL_MAX_VERTEX_UNIFORM_VECTORS                = 0x8DFB;
+    public static final int GL_MAX_VARYING_VECTORS                       = 0x8DFC;
+    public static final int GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS          = 0x8B4D;
+    public static final int GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS            = 0x8B4C;
+    public static final int GL_MAX_TEXTURE_IMAGE_UNITS                   = 0x8872;
+    public static final int GL_MAX_FRAGMENT_UNIFORM_VECTORS              = 0x8DFD;
+    public static final int GL_SHADER_TYPE                               = 0x8B4F;
+    public static final int GL_DELETE_STATUS                             = 0x8B80;
+    public static final int GL_LINK_STATUS                               = 0x8B82;
+    public static final int GL_VALIDATE_STATUS                           = 0x8B83;
+    public static final int GL_ATTACHED_SHADERS                          = 0x8B85;
+    public static final int GL_ACTIVE_UNIFORMS                           = 0x8B86;
+    public static final int GL_ACTIVE_UNIFORM_MAX_LENGTH                 = 0x8B87;
+    public static final int GL_ACTIVE_ATTRIBUTES                         = 0x8B89;
+    public static final int GL_ACTIVE_ATTRIBUTE_MAX_LENGTH               = 0x8B8A;
+    public static final int GL_SHADING_LANGUAGE_VERSION                  = 0x8B8C;
+    public static final int GL_CURRENT_PROGRAM                           = 0x8B8D;
+    public static final int GL_NEVER                                   = 0x0200;
+    public static final int GL_LESS                                    = 0x0201;
+    public static final int GL_EQUAL                                   = 0x0202;
+    public static final int GL_LEQUAL                                  = 0x0203;
+    public static final int GL_GREATER                                 = 0x0204;
+    public static final int GL_NOTEQUAL                                = 0x0205;
+    public static final int GL_GEQUAL                                  = 0x0206;
+    public static final int GL_ALWAYS                                  = 0x0207;
+    public static final int GL_KEEP                                    = 0x1E00;
+    public static final int GL_REPLACE                                 = 0x1E01;
+    public static final int GL_INCR                                    = 0x1E02;
+    public static final int GL_DECR                                    = 0x1E03;
+    public static final int GL_INVERT                                  = 0x150A;
+    public static final int GL_INCR_WRAP                               = 0x8507;
+    public static final int GL_DECR_WRAP                               = 0x8508;
+    public static final int GL_VENDOR                                  = 0x1F00;
+    public static final int GL_RENDERER                                = 0x1F01;
+    public static final int GL_VERSION                                 = 0x1F02;
+    public static final int GL_EXTENSIONS                              = 0x1F03;
+    public static final int GL_NEAREST                                 = 0x2600;
+    public static final int GL_LINEAR                                  = 0x2601;
+    public static final int GL_NEAREST_MIPMAP_NEAREST                  = 0x2700;
+    public static final int GL_LINEAR_MIPMAP_NEAREST                   = 0x2701;
+    public static final int GL_NEAREST_MIPMAP_LINEAR                   = 0x2702;
+    public static final int GL_LINEAR_MIPMAP_LINEAR                    = 0x2703;
+    public static final int GL_TEXTURE_MAG_FILTER                      = 0x2800;
+    public static final int GL_TEXTURE_MIN_FILTER                      = 0x2801;
+    public static final int GL_TEXTURE_WRAP_S                          = 0x2802;
+    public static final int GL_TEXTURE_WRAP_T                          = 0x2803;
+    public static final int GL_TEXTURE                                 = 0x1702;
+    public static final int GL_TEXTURE_CUBE_MAP                        = 0x8513;
+    public static final int GL_TEXTURE_BINDING_CUBE_MAP                = 0x8514;
+    public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_X             = 0x8515;
+    public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_X             = 0x8516;
+    public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Y             = 0x8517;
+    public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y             = 0x8518;
+    public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Z             = 0x8519;
+    public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z             = 0x851A;
+    public static final int GL_MAX_CUBE_MAP_TEXTURE_SIZE               = 0x851C;
+    public static final int GL_TEXTURE0                                = 0x84C0;
+    public static final int GL_TEXTURE1                                = 0x84C1;
+    public static final int GL_TEXTURE2                                = 0x84C2;
+    public static final int GL_TEXTURE3                                = 0x84C3;
+    public static final int GL_TEXTURE4                                = 0x84C4;
+    public static final int GL_TEXTURE5                                = 0x84C5;
+    public static final int GL_TEXTURE6                                = 0x84C6;
+    public static final int GL_TEXTURE7                                = 0x84C7;
+    public static final int GL_TEXTURE8                                = 0x84C8;
+    public static final int GL_TEXTURE9                                = 0x84C9;
+    public static final int GL_TEXTURE10                               = 0x84CA;
+    public static final int GL_TEXTURE11                               = 0x84CB;
+    public static final int GL_TEXTURE12                               = 0x84CC;
+    public static final int GL_TEXTURE13                               = 0x84CD;
+    public static final int GL_TEXTURE14                               = 0x84CE;
+    public static final int GL_TEXTURE15                               = 0x84CF;
+    public static final int GL_TEXTURE16                               = 0x84D0;
+    public static final int GL_TEXTURE17                               = 0x84D1;
+    public static final int GL_TEXTURE18                               = 0x84D2;
+    public static final int GL_TEXTURE19                               = 0x84D3;
+    public static final int GL_TEXTURE20                               = 0x84D4;
+    public static final int GL_TEXTURE21                               = 0x84D5;
+    public static final int GL_TEXTURE22                               = 0x84D6;
+    public static final int GL_TEXTURE23                               = 0x84D7;
+    public static final int GL_TEXTURE24                               = 0x84D8;
+    public static final int GL_TEXTURE25                               = 0x84D9;
+    public static final int GL_TEXTURE26                               = 0x84DA;
+    public static final int GL_TEXTURE27                               = 0x84DB;
+    public static final int GL_TEXTURE28                               = 0x84DC;
+    public static final int GL_TEXTURE29                               = 0x84DD;
+    public static final int GL_TEXTURE30                               = 0x84DE;
+    public static final int GL_TEXTURE31                               = 0x84DF;
+    public static final int GL_REPEAT                                  = 0x2901;
+    public static final int GL_CLAMP_TO_EDGE                           = 0x812F;
+    public static final int GL_MIRRORED_REPEAT                         = 0x8370;
+    public static final int GL_FLOAT_VEC2                              = 0x8B50;
+    public static final int GL_FLOAT_VEC3                              = 0x8B51;
+    public static final int GL_FLOAT_VEC4                              = 0x8B52;
+    public static final int GL_INT_VEC2                                = 0x8B53;
+    public static final int GL_INT_VEC3                                = 0x8B54;
+    public static final int GL_INT_VEC4                                = 0x8B55;
+    public static final int GL_BOOL                                    = 0x8B56;
+    public static final int GL_BOOL_VEC2                               = 0x8B57;
+    public static final int GL_BOOL_VEC3                               = 0x8B58;
+    public static final int GL_BOOL_VEC4                               = 0x8B59;
+    public static final int GL_FLOAT_MAT2                              = 0x8B5A;
+    public static final int GL_FLOAT_MAT3                              = 0x8B5B;
+    public static final int GL_FLOAT_MAT4                              = 0x8B5C;
+    public static final int GL_SAMPLER_2D                              = 0x8B5E;
+    public static final int GL_SAMPLER_CUBE                            = 0x8B60;
+    public static final int GL_VERTEX_ATTRIB_ARRAY_ENABLED                 = 0x8622;
+    public static final int GL_VERTEX_ATTRIB_ARRAY_SIZE                    = 0x8623;
+    public static final int GL_VERTEX_ATTRIB_ARRAY_STRIDE                  = 0x8624;
+    public static final int GL_VERTEX_ATTRIB_ARRAY_TYPE                    = 0x8625;
+    public static final int GL_VERTEX_ATTRIB_ARRAY_NORMALIZED              = 0x886A;
+    public static final int GL_VERTEX_ATTRIB_ARRAY_POINTER                 = 0x8645;
+    public static final int GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING          = 0x889F;
+    public static final int GL_IMPLEMENTATION_COLOR_READ_TYPE            = 0x8B9A;
+    public static final int GL_IMPLEMENTATION_COLOR_READ_FORMAT          = 0x8B9B;
+    public static final int GL_COMPILE_STATUS                          = 0x8B81;
+    public static final int GL_INFO_LOG_LENGTH                         = 0x8B84;
+    public static final int GL_SHADER_SOURCE_LENGTH                    = 0x8B88;
+    public static final int GL_SHADER_COMPILER                         = 0x8DFA;
+    public static final int GL_SHADER_BINARY_FORMATS                   = 0x8DF8;
+    public static final int GL_NUM_SHADER_BINARY_FORMATS               = 0x8DF9;
+    public static final int GL_LOW_FLOAT                               = 0x8DF0;
+    public static final int GL_MEDIUM_FLOAT                            = 0x8DF1;
+    public static final int GL_HIGH_FLOAT                              = 0x8DF2;
+    public static final int GL_LOW_INT                                 = 0x8DF3;
+    public static final int GL_MEDIUM_INT                              = 0x8DF4;
+    public static final int GL_HIGH_INT                                = 0x8DF5;
+    public static final int GL_FRAMEBUFFER                             = 0x8D40;
+    public static final int GL_RENDERBUFFER                            = 0x8D41;
+    public static final int GL_RGBA4                                   = 0x8056;
+    public static final int GL_RGB5_A1                                 = 0x8057;
+    public static final int GL_RGB565                                  = 0x8D62;
+    public static final int GL_DEPTH_COMPONENT16                       = 0x81A5;
+    public static final int GL_STENCIL_INDEX                           = 0x1901;
+    public static final int GL_STENCIL_INDEX8                          = 0x8D48;
+    public static final int GL_RENDERBUFFER_WIDTH                      = 0x8D42;
+    public static final int GL_RENDERBUFFER_HEIGHT                     = 0x8D43;
+    public static final int GL_RENDERBUFFER_INTERNAL_FORMAT            = 0x8D44;
+    public static final int GL_RENDERBUFFER_RED_SIZE                   = 0x8D50;
+    public static final int GL_RENDERBUFFER_GREEN_SIZE                 = 0x8D51;
+    public static final int GL_RENDERBUFFER_BLUE_SIZE                  = 0x8D52;
+    public static final int GL_RENDERBUFFER_ALPHA_SIZE                 = 0x8D53;
+    public static final int GL_RENDERBUFFER_DEPTH_SIZE                 = 0x8D54;
+    public static final int GL_RENDERBUFFER_STENCIL_SIZE               = 0x8D55;
+    public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE      = 0x8CD0;
+    public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME      = 0x8CD1;
+    public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL    = 0x8CD2;
+    public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3;
+    public static final int GL_COLOR_ATTACHMENT0                       = 0x8CE0;
+    public static final int GL_DEPTH_ATTACHMENT                        = 0x8D00;
+    public static final int GL_STENCIL_ATTACHMENT                      = 0x8D20;
+    public static final int GL_NONE                                    = 0;
+    public static final int GL_FRAMEBUFFER_COMPLETE                    = 0x8CD5;
+    public static final int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT       = 0x8CD6;
+    public static final int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT          = 0x8CD7;
+    public static final int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS       = 0x8CD9;
+    public static final int GL_FRAMEBUFFER_UNSUPPORTED                 = 0x8CDD;
+    public static final int GL_FRAMEBUFFER_BINDING                     = 0x8CA6;
+    public static final int GL_RENDERBUFFER_BINDING                    = 0x8CA7;
+    public static final int GL_MAX_RENDERBUFFER_SIZE                   = 0x84E8;
+    public static final int GL_INVALID_FRAMEBUFFER_OPERATION           = 0x0506;
+
+    native private static void _nativeClassInit();
+    static {
+	    _nativeClassInit();
+    }
+    // C function void glActiveTexture ( GLenum texture )
+
+    public static native void glActiveTexture(
+        int texture
+    );
+
+    // C function void glAttachShader ( GLuint program, GLuint shader )
+
+    public static native void glAttachShader(
+        int program,
+        int shader
+    );
+
+    // C function void glBindAttribLocation ( GLuint program, GLuint index, const char *name )
+
+    public static native void glBindAttribLocation(
+        int program,
+        int index,
+        String name
+    );
+
+    // C function void glBindBuffer ( GLenum target, GLuint buffer )
+
+    public static native void glBindBuffer(
+        int target,
+        int buffer
+    );
+
+    // C function void glBindFramebuffer ( GLenum target, GLuint framebuffer )
+
+    public static native void glBindFramebuffer(
+        int target,
+        int framebuffer
+    );
+
+    // C function void glBindRenderbuffer ( GLenum target, GLuint renderbuffer )
+
+    public static native void glBindRenderbuffer(
+        int target,
+        int renderbuffer
+    );
+
+    // C function void glBindTexture ( GLenum target, GLuint texture )
+
+    public static native void glBindTexture(
+        int target,
+        int texture
+    );
+
+    // C function void glBlendColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha )
+
+    public static native void glBlendColor(
+        float red,
+        float green,
+        float blue,
+        float alpha
+    );
+
+    // C function void glBlendEquation ( GLenum mode )
+
+    public static native void glBlendEquation(
+        int mode
+    );
+
+    // C function void glBlendEquationSeparate ( GLenum modeRGB, GLenum modeAlpha )
+
+    public static native void glBlendEquationSeparate(
+        int modeRGB,
+        int modeAlpha
+    );
+
+    // C function void glBlendFunc ( GLenum sfactor, GLenum dfactor )
+
+    public static native void glBlendFunc(
+        int sfactor,
+        int dfactor
+    );
+
+    // C function void glBlendFuncSeparate ( GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha )
+
+    public static native void glBlendFuncSeparate(
+        int srcRGB,
+        int dstRGB,
+        int srcAlpha,
+        int dstAlpha
+    );
+
+    // C function void glBufferData ( GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage )
+
+    public static native void glBufferData(
+        int target,
+        int size,
+        java.nio.Buffer data,
+        int usage
+    );
+
+    // C function void glBufferSubData ( GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data )
+
+    public static native void glBufferSubData(
+        int target,
+        int offset,
+        int size,
+        java.nio.Buffer data
+    );
+
+    // C function GLenum glCheckFramebufferStatus ( GLenum target )
+
+    public static native int glCheckFramebufferStatus(
+        int target
+    );
+
+    // C function void glClear ( GLbitfield mask )
+
+    public static native void glClear(
+        int mask
+    );
+
+    // C function void glClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha )
+
+    public static native void glClearColor(
+        float red,
+        float green,
+        float blue,
+        float alpha
+    );
+
+    // C function void glClearDepthf ( GLclampf depth )
+
+    public static native void glClearDepthf(
+        float depth
+    );
+
+    // C function void glClearStencil ( GLint s )
+
+    public static native void glClearStencil(
+        int s
+    );
+
+    // C function void glColorMask ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha )
+
+    public static native void glColorMask(
+        boolean red,
+        boolean green,
+        boolean blue,
+        boolean alpha
+    );
+
+    // C function void glCompileShader ( GLuint shader )
+
+    public static native void glCompileShader(
+        int shader
+    );
+
+    // C function void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data )
+
+    public static native void glCompressedTexImage2D(
+        int target,
+        int level,
+        int internalformat,
+        int width,
+        int height,
+        int border,
+        int imageSize,
+        java.nio.Buffer data
+    );
+
+    // C function void glCompressedTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data )
+
+    public static native void glCompressedTexSubImage2D(
+        int target,
+        int level,
+        int xoffset,
+        int yoffset,
+        int width,
+        int height,
+        int format,
+        int imageSize,
+        java.nio.Buffer data
+    );
+
+    // C function void glCopyTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border )
+
+    public static native void glCopyTexImage2D(
+        int target,
+        int level,
+        int internalformat,
+        int x,
+        int y,
+        int width,
+        int height,
+        int border
+    );
+
+    // C function void glCopyTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height )
+
+    public static native void glCopyTexSubImage2D(
+        int target,
+        int level,
+        int xoffset,
+        int yoffset,
+        int x,
+        int y,
+        int width,
+        int height
+    );
+
+    // C function GLuint glCreateProgram ( void )
+
+    public static native int glCreateProgram(
+    );
+
+    // C function GLuint glCreateShader ( GLenum type )
+
+    public static native int glCreateShader(
+        int type
+    );
+
+    // C function void glCullFace ( GLenum mode )
+
+    public static native void glCullFace(
+        int mode
+    );
+
+    // C function void glDeleteBuffers ( GLsizei n, const GLuint *buffers )
+
+    public static native void glDeleteBuffers(
+        int n,
+        int[] buffers,
+        int offset
+    );
+
+    // C function void glDeleteBuffers ( GLsizei n, const GLuint *buffers )
+
+    public static native void glDeleteBuffers(
+        int n,
+        java.nio.IntBuffer buffers
+    );
+
+    // C function void glDeleteFramebuffers ( GLsizei n, const GLuint *framebuffers )
+
+    public static native void glDeleteFramebuffers(
+        int n,
+        int[] framebuffers,
+        int offset
+    );
+
+    // C function void glDeleteFramebuffers ( GLsizei n, const GLuint *framebuffers )
+
+    public static native void glDeleteFramebuffers(
+        int n,
+        java.nio.IntBuffer framebuffers
+    );
+
+    // C function void glDeleteProgram ( GLuint program )
+
+    public static native void glDeleteProgram(
+        int program
+    );
+
+    // C function void glDeleteRenderbuffers ( GLsizei n, const GLuint *renderbuffers )
+
+    public static native void glDeleteRenderbuffers(
+        int n,
+        int[] renderbuffers,
+        int offset
+    );
+
+    // C function void glDeleteRenderbuffers ( GLsizei n, const GLuint *renderbuffers )
+
+    public static native void glDeleteRenderbuffers(
+        int n,
+        java.nio.IntBuffer renderbuffers
+    );
+
+    // C function void glDeleteShader ( GLuint shader )
+
+    public static native void glDeleteShader(
+        int shader
+    );
+
+    // C function void glDeleteTextures ( GLsizei n, const GLuint *textures )
+
+    public static native void glDeleteTextures(
+        int n,
+        int[] textures,
+        int offset
+    );
+
+    // C function void glDeleteTextures ( GLsizei n, const GLuint *textures )
+
+    public static native void glDeleteTextures(
+        int n,
+        java.nio.IntBuffer textures
+    );
+
+    // C function void glDepthFunc ( GLenum func )
+
+    public static native void glDepthFunc(
+        int func
+    );
+
+    // C function void glDepthMask ( GLboolean flag )
+
+    public static native void glDepthMask(
+        boolean flag
+    );
+
+    // C function void glDepthRangef ( GLclampf zNear, GLclampf zFar )
+
+    public static native void glDepthRangef(
+        float zNear,
+        float zFar
+    );
+
+    // C function void glDetachShader ( GLuint program, GLuint shader )
+
+    public static native void glDetachShader(
+        int program,
+        int shader
+    );
+
+    // C function void glDisable ( GLenum cap )
+
+    public static native void glDisable(
+        int cap
+    );
+
+    // C function void glDisableVertexAttribArray ( GLuint index )
+
+    public static native void glDisableVertexAttribArray(
+        int index
+    );
+
+    // C function void glDrawArrays ( GLenum mode, GLint first, GLsizei count )
+
+    public static native void glDrawArrays(
+        int mode,
+        int first,
+        int count
+    );
+
+    // C function void glDrawElements ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices )
+
+    public static native void glDrawElements(
+        int mode,
+        int count,
+        int type,
+        java.nio.Buffer indices
+    );
+
+    // C function void glEnable ( GLenum cap )
+
+    public static native void glEnable(
+        int cap
+    );
+
+    // C function void glEnableVertexAttribArray ( GLuint index )
+
+    public static native void glEnableVertexAttribArray(
+        int index
+    );
+
+    // C function void glFinish ( void )
+
+    public static native void glFinish(
+    );
+
+    // C function void glFlush ( void )
+
+    public static native void glFlush(
+    );
+
+    // C function void glFramebufferRenderbuffer ( GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer )
+
+    public static native void glFramebufferRenderbuffer(
+        int target,
+        int attachment,
+        int renderbuffertarget,
+        int renderbuffer
+    );
+
+    // C function void glFramebufferTexture2D ( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level )
+
+    public static native void glFramebufferTexture2D(
+        int target,
+        int attachment,
+        int textarget,
+        int texture,
+        int level
+    );
+
+    // C function void glFrontFace ( GLenum mode )
+
+    public static native void glFrontFace(
+        int mode
+    );
+
+    // C function void glGenBuffers ( GLsizei n, GLuint *buffers )
+
+    public static native void glGenBuffers(
+        int n,
+        int[] buffers,
+        int offset
+    );
+
+    // C function void glGenBuffers ( GLsizei n, GLuint *buffers )
+
+    public static native void glGenBuffers(
+        int n,
+        java.nio.IntBuffer buffers
+    );
+
+    // C function void glGenerateMipmap ( GLenum target )
+
+    public static native void glGenerateMipmap(
+        int target
+    );
+
+    // C function void glGenFramebuffers ( GLsizei n, GLuint *framebuffers )
+
+    public static native void glGenFramebuffers(
+        int n,
+        int[] framebuffers,
+        int offset
+    );
+
+    // C function void glGenFramebuffers ( GLsizei n, GLuint *framebuffers )
+
+    public static native void glGenFramebuffers(
+        int n,
+        java.nio.IntBuffer framebuffers
+    );
+
+    // C function void glGenRenderbuffers ( GLsizei n, GLuint *renderbuffers )
+
+    public static native void glGenRenderbuffers(
+        int n,
+        int[] renderbuffers,
+        int offset
+    );
+
+    // C function void glGenRenderbuffers ( GLsizei n, GLuint *renderbuffers )
+
+    public static native void glGenRenderbuffers(
+        int n,
+        java.nio.IntBuffer renderbuffers
+    );
+
+    // C function void glGenTextures ( GLsizei n, GLuint *textures )
+
+    public static native void glGenTextures(
+        int n,
+        int[] textures,
+        int offset
+    );
+
+    // C function void glGenTextures ( GLsizei n, GLuint *textures )
+
+    public static native void glGenTextures(
+        int n,
+        java.nio.IntBuffer textures
+    );
+
+    // C function void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name )
+
+    public static native void glGetActiveAttrib(
+        int program,
+        int index,
+        int bufsize,
+        int[] length,
+        int lengthOffset,
+        int[] size,
+        int sizeOffset,
+        int[] type,
+        int typeOffset,
+        byte[] name,
+        int nameOffset
+    );
+
+    // C function void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name )
+
+    public static native void glGetActiveAttrib(
+        int program,
+        int index,
+        int bufsize,
+        java.nio.IntBuffer length,
+        java.nio.IntBuffer size,
+        java.nio.IntBuffer type,
+        byte name
+    );
+
+    // C function void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name )
+
+    public static native void glGetActiveUniform(
+        int program,
+        int index,
+        int bufsize,
+        int[] length,
+        int lengthOffset,
+        int[] size,
+        int sizeOffset,
+        int[] type,
+        int typeOffset,
+        byte[] name,
+        int nameOffset
+    );
+
+    // C function void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name )
+
+    public static native void glGetActiveUniform(
+        int program,
+        int index,
+        int bufsize,
+        java.nio.IntBuffer length,
+        java.nio.IntBuffer size,
+        java.nio.IntBuffer type,
+        byte name
+    );
+
+    // C function void glGetAttachedShaders ( GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders )
+
+    public static native void glGetAttachedShaders(
+        int program,
+        int maxcount,
+        int[] count,
+        int countOffset,
+        int[] shaders,
+        int shadersOffset
+    );
+
+    // C function void glGetAttachedShaders ( GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders )
+
+    public static native void glGetAttachedShaders(
+        int program,
+        int maxcount,
+        java.nio.IntBuffer count,
+        java.nio.IntBuffer shaders
+    );
+
+    // C function int glGetAttribLocation ( GLuint program, const char *name )
+
+    public static native int glGetAttribLocation(
+        int program,
+        String name
+    );
+
+    // C function void glGetBooleanv ( GLenum pname, GLboolean *params )
+
+    public static native void glGetBooleanv(
+        int pname,
+        boolean[] params,
+        int offset
+    );
+
+    // C function void glGetBooleanv ( GLenum pname, GLboolean *params )
+
+    public static native void glGetBooleanv(
+        int pname,
+        java.nio.IntBuffer params
+    );
+
+    // C function void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params )
+
+    public static native void glGetBufferParameteriv(
+        int target,
+        int pname,
+        int[] params,
+        int offset
+    );
+
+    // C function void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params )
+
+    public static native void glGetBufferParameteriv(
+        int target,
+        int pname,
+        java.nio.IntBuffer params
+    );
+
+    // C function GLenum glGetError ( void )
+
+    public static native int glGetError(
+    );
+
+    // C function void glGetFloatv ( GLenum pname, GLfloat *params )
+
+    public static native void glGetFloatv(
+        int pname,
+        float[] params,
+        int offset
+    );
+
+    // C function void glGetFloatv ( GLenum pname, GLfloat *params )
+
+    public static native void glGetFloatv(
+        int pname,
+        java.nio.FloatBuffer params
+    );
+
+    // C function void glGetFramebufferAttachmentParameteriv ( GLenum target, GLenum attachment, GLenum pname, GLint *params )
+
+    public static native void glGetFramebufferAttachmentParameteriv(
+        int target,
+        int attachment,
+        int pname,
+        int[] params,
+        int offset
+    );
+
+    // C function void glGetFramebufferAttachmentParameteriv ( GLenum target, GLenum attachment, GLenum pname, GLint *params )
+
+    public static native void glGetFramebufferAttachmentParameteriv(
+        int target,
+        int attachment,
+        int pname,
+        java.nio.IntBuffer params
+    );
+
+    // C function void glGetIntegerv ( GLenum pname, GLint *params )
+
+    public static native void glGetIntegerv(
+        int pname,
+        int[] params,
+        int offset
+    );
+
+    // C function void glGetIntegerv ( GLenum pname, GLint *params )
+
+    public static native void glGetIntegerv(
+        int pname,
+        java.nio.IntBuffer params
+    );
+
+    // C function void glGetProgramiv ( GLuint program, GLenum pname, GLint *params )
+
+    public static native void glGetProgramiv(
+        int program,
+        int pname,
+        int[] params,
+        int offset
+    );
+
+    // C function void glGetProgramiv ( GLuint program, GLenum pname, GLint *params )
+
+    public static native void glGetProgramiv(
+        int program,
+        int pname,
+        java.nio.IntBuffer params
+    );
+
+    // C function void glGetProgramInfoLog( GLuint program, GLsizei maxLength, GLsizei * length,
+ 	//     GLchar * infoLog);
+
+    public static native String glGetProgramInfoLog(
+        int program
+    );
+    // C function void glGetRenderbufferParameteriv ( GLenum target, GLenum pname, GLint *params )
+
+    public static native void glGetRenderbufferParameteriv(
+        int target,
+        int pname,
+        int[] params,
+        int offset
+    );
+
+    // C function void glGetRenderbufferParameteriv ( GLenum target, GLenum pname, GLint *params )
+
+    public static native void glGetRenderbufferParameteriv(
+        int target,
+        int pname,
+        java.nio.IntBuffer params
+    );
+
+    // C function void glGetShaderiv ( GLuint shader, GLenum pname, GLint *params )
+
+    public static native void glGetShaderiv(
+        int shader,
+        int pname,
+        int[] params,
+        int offset
+    );
+
+    // C function void glGetShaderiv ( GLuint shader, GLenum pname, GLint *params )
+
+    public static native void glGetShaderiv(
+        int shader,
+        int pname,
+        java.nio.IntBuffer params
+    );
+
+    // C function void glGetShaderInfoLog( GLuint shader, GLsizei maxLength, GLsizei * length,
+ 	//     GLchar * infoLog);
+
+    public static native String glGetShaderInfoLog(
+        int shader
+    );
+    // C function void glGetShaderPrecisionFormat ( GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision )
+
+    public static native void glGetShaderPrecisionFormat(
+        int shadertype,
+        int precisiontype,
+        int[] range,
+        int rangeOffset,
+        int[] precision,
+        int precisionOffset
+    );
+
+    // C function void glGetShaderPrecisionFormat ( GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision )
+
+    public static native void glGetShaderPrecisionFormat(
+        int shadertype,
+        int precisiontype,
+        java.nio.IntBuffer range,
+        java.nio.IntBuffer precision
+    );
+
+    // C function void glGetShaderSource ( GLuint shader, GLsizei bufsize, GLsizei *length, char *source )
+
+    public static native void glGetShaderSource(
+        int shader,
+        int bufsize,
+        int[] length,
+        int lengthOffset,
+        byte[] source,
+        int sourceOffset
+    );
+
+    // C function void glGetShaderSource ( GLuint shader, GLsizei bufsize, GLsizei *length, char *source )
+
+    public static native void glGetShaderSource(
+        int shader,
+        int bufsize,
+        java.nio.IntBuffer length,
+        byte source
+    );
+
+    // C function const GLubyte * glGetString ( GLenum name )
+
+    public static native String glGetString(
+        int name
+    );
+    // C function void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params )
+
+    public static native void glGetTexParameterfv(
+        int target,
+        int pname,
+        float[] params,
+        int offset
+    );
+
+    // C function void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params )
+
+    public static native void glGetTexParameterfv(
+        int target,
+        int pname,
+        java.nio.FloatBuffer params
+    );
+
+    // C function void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params )
+
+    public static native void glGetTexParameteriv(
+        int target,
+        int pname,
+        int[] params,
+        int offset
+    );
+
+    // C function void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params )
+
+    public static native void glGetTexParameteriv(
+        int target,
+        int pname,
+        java.nio.IntBuffer params
+    );
+
+    // C function void glGetUniformfv ( GLuint program, GLint location, GLfloat *params )
+
+    public static native void glGetUniformfv(
+        int program,
+        int location,
+        float[] params,
+        int offset
+    );
+
+    // C function void glGetUniformfv ( GLuint program, GLint location, GLfloat *params )
+
+    public static native void glGetUniformfv(
+        int program,
+        int location,
+        java.nio.FloatBuffer params
+    );
+
+    // C function void glGetUniformiv ( GLuint program, GLint location, GLint *params )
+
+    public static native void glGetUniformiv(
+        int program,
+        int location,
+        int[] params,
+        int offset
+    );
+
+    // C function void glGetUniformiv ( GLuint program, GLint location, GLint *params )
+
+    public static native void glGetUniformiv(
+        int program,
+        int location,
+        java.nio.IntBuffer params
+    );
+
+    // C function int glGetUniformLocation ( GLuint program, const char *name )
+
+    public static native int glGetUniformLocation(
+        int program,
+        String name
+    );
+
+    // C function void glGetVertexAttribfv ( GLuint index, GLenum pname, GLfloat *params )
+
+    public static native void glGetVertexAttribfv(
+        int index,
+        int pname,
+        float[] params,
+        int offset
+    );
+
+    // C function void glGetVertexAttribfv ( GLuint index, GLenum pname, GLfloat *params )
+
+    public static native void glGetVertexAttribfv(
+        int index,
+        int pname,
+        java.nio.FloatBuffer params
+    );
+
+    // C function void glGetVertexAttribiv ( GLuint index, GLenum pname, GLint *params )
+
+    public static native void glGetVertexAttribiv(
+        int index,
+        int pname,
+        int[] params,
+        int offset
+    );
+
+    // C function void glGetVertexAttribiv ( GLuint index, GLenum pname, GLint *params )
+
+    public static native void glGetVertexAttribiv(
+        int index,
+        int pname,
+        java.nio.IntBuffer params
+    );
+
+    // C function void glHint ( GLenum target, GLenum mode )
+
+    public static native void glHint(
+        int target,
+        int mode
+    );
+
+    // C function GLboolean glIsBuffer ( GLuint buffer )
+
+    public static native boolean glIsBuffer(
+        int buffer
+    );
+
+    // C function GLboolean glIsEnabled ( GLenum cap )
+
+    public static native boolean glIsEnabled(
+        int cap
+    );
+
+    // C function GLboolean glIsFramebuffer ( GLuint framebuffer )
+
+    public static native boolean glIsFramebuffer(
+        int framebuffer
+    );
+
+    // C function GLboolean glIsProgram ( GLuint program )
+
+    public static native boolean glIsProgram(
+        int program
+    );
+
+    // C function GLboolean glIsRenderbuffer ( GLuint renderbuffer )
+
+    public static native boolean glIsRenderbuffer(
+        int renderbuffer
+    );
+
+    // C function GLboolean glIsShader ( GLuint shader )
+
+    public static native boolean glIsShader(
+        int shader
+    );
+
+    // C function GLboolean glIsTexture ( GLuint texture )
+
+    public static native boolean glIsTexture(
+        int texture
+    );
+
+    // C function void glLineWidth ( GLfloat width )
+
+    public static native void glLineWidth(
+        float width
+    );
+
+    // C function void glLinkProgram ( GLuint program )
+
+    public static native void glLinkProgram(
+        int program
+    );
+
+    // C function void glPixelStorei ( GLenum pname, GLint param )
+
+    public static native void glPixelStorei(
+        int pname,
+        int param
+    );
+
+    // C function void glPolygonOffset ( GLfloat factor, GLfloat units )
+
+    public static native void glPolygonOffset(
+        float factor,
+        float units
+    );
+
+    // C function void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels )
+
+    public static native void glReadPixels(
+        int x,
+        int y,
+        int width,
+        int height,
+        int format,
+        int type,
+        java.nio.Buffer pixels
+    );
+
+    // C function void glReleaseShaderCompiler ( void )
+
+    public static native void glReleaseShaderCompiler(
+    );
+
+    // C function void glRenderbufferStorage ( GLenum target, GLenum internalformat, GLsizei width, GLsizei height )
+
+    public static native void glRenderbufferStorage(
+        int target,
+        int internalformat,
+        int width,
+        int height
+    );
+
+    // C function void glSampleCoverage ( GLclampf value, GLboolean invert )
+
+    public static native void glSampleCoverage(
+        float value,
+        boolean invert
+    );
+
+    // C function void glScissor ( GLint x, GLint y, GLsizei width, GLsizei height )
+
+    public static native void glScissor(
+        int x,
+        int y,
+        int width,
+        int height
+    );
+
+    // C function void glShaderBinary ( GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length )
+
+    public static native void glShaderBinary(
+        int n,
+        int[] shaders,
+        int offset,
+        int binaryformat,
+        java.nio.Buffer binary,
+        int length
+    );
+
+    // C function void glShaderBinary ( GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length )
+
+    public static native void glShaderBinary(
+        int n,
+        java.nio.IntBuffer shaders,
+        int binaryformat,
+        java.nio.Buffer binary,
+        int length
+    );
+
+    // C function void glShaderSource ( GLuint shader, GLsizei count, const GLchar ** string, const GLint* length )
+
+    public static native void glShaderSource(
+        int shader,
+        String string
+    );
+    // C function void glStencilFunc ( GLenum func, GLint ref, GLuint mask )
+
+    public static native void glStencilFunc(
+        int func,
+        int ref,
+        int mask
+    );
+
+    // C function void glStencilFuncSeparate ( GLenum face, GLenum func, GLint ref, GLuint mask )
+
+    public static native void glStencilFuncSeparate(
+        int face,
+        int func,
+        int ref,
+        int mask
+    );
+
+    // C function void glStencilMask ( GLuint mask )
+
+    public static native void glStencilMask(
+        int mask
+    );
+
+    // C function void glStencilMaskSeparate ( GLenum face, GLuint mask )
+
+    public static native void glStencilMaskSeparate(
+        int face,
+        int mask
+    );
+
+    // C function void glStencilOp ( GLenum fail, GLenum zfail, GLenum zpass )
+
+    public static native void glStencilOp(
+        int fail,
+        int zfail,
+        int zpass
+    );
+
+    // C function void glStencilOpSeparate ( GLenum face, GLenum fail, GLenum zfail, GLenum zpass )
+
+    public static native void glStencilOpSeparate(
+        int face,
+        int fail,
+        int zfail,
+        int zpass
+    );
+
+    // C function void glTexImage2D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels )
+
+    public static native void glTexImage2D(
+        int target,
+        int level,
+        int internalformat,
+        int width,
+        int height,
+        int border,
+        int format,
+        int type,
+        java.nio.Buffer pixels
+    );
+
+    // C function void glTexParameterf ( GLenum target, GLenum pname, GLfloat param )
+
+    public static native void glTexParameterf(
+        int target,
+        int pname,
+        float param
+    );
+
+    // C function void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params )
+
+    public static native void glTexParameterfv(
+        int target,
+        int pname,
+        float[] params,
+        int offset
+    );
+
+    // C function void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params )
+
+    public static native void glTexParameterfv(
+        int target,
+        int pname,
+        java.nio.FloatBuffer params
+    );
+
+    // C function void glTexParameteri ( GLenum target, GLenum pname, GLint param )
+
+    public static native void glTexParameteri(
+        int target,
+        int pname,
+        int param
+    );
+
+    // C function void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params )
+
+    public static native void glTexParameteriv(
+        int target,
+        int pname,
+        int[] params,
+        int offset
+    );
+
+    // C function void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params )
+
+    public static native void glTexParameteriv(
+        int target,
+        int pname,
+        java.nio.IntBuffer params
+    );
+
+    // C function void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels )
+
+    public static native void glTexSubImage2D(
+        int target,
+        int level,
+        int xoffset,
+        int yoffset,
+        int width,
+        int height,
+        int format,
+        int type,
+        java.nio.Buffer pixels
+    );
+
+    // C function void glUniform1f ( GLint location, GLfloat x )
+
+    public static native void glUniform1f(
+        int location,
+        float x
+    );
+
+    // C function void glUniform1fv ( GLint location, GLsizei count, const GLfloat *v )
+
+    public static native void glUniform1fv(
+        int location,
+        int count,
+        float[] v,
+        int offset
+    );
+
+    // C function void glUniform1fv ( GLint location, GLsizei count, const GLfloat *v )
+
+    public static native void glUniform1fv(
+        int location,
+        int count,
+        java.nio.FloatBuffer v
+    );
+
+    // C function void glUniform1i ( GLint location, GLint x )
+
+    public static native void glUniform1i(
+        int location,
+        int x
+    );
+
+    // C function void glUniform1iv ( GLint location, GLsizei count, const GLint *v )
+
+    public static native void glUniform1iv(
+        int location,
+        int count,
+        int[] v,
+        int offset
+    );
+
+    // C function void glUniform1iv ( GLint location, GLsizei count, const GLint *v )
+
+    public static native void glUniform1iv(
+        int location,
+        int count,
+        java.nio.IntBuffer v
+    );
+
+    // C function void glUniform2f ( GLint location, GLfloat x, GLfloat y )
+
+    public static native void glUniform2f(
+        int location,
+        float x,
+        float y
+    );
+
+    // C function void glUniform2fv ( GLint location, GLsizei count, const GLfloat *v )
+
+    public static native void glUniform2fv(
+        int location,
+        int count,
+        float[] v,
+        int offset
+    );
+
+    // C function void glUniform2fv ( GLint location, GLsizei count, const GLfloat *v )
+
+    public static native void glUniform2fv(
+        int location,
+        int count,
+        java.nio.FloatBuffer v
+    );
+
+    // C function void glUniform2i ( GLint location, GLint x, GLint y )
+
+    public static native void glUniform2i(
+        int location,
+        int x,
+        int y
+    );
+
+    // C function void glUniform2iv ( GLint location, GLsizei count, const GLint *v )
+
+    public static native void glUniform2iv(
+        int location,
+        int count,
+        int[] v,
+        int offset
+    );
+
+    // C function void glUniform2iv ( GLint location, GLsizei count, const GLint *v )
+
+    public static native void glUniform2iv(
+        int location,
+        int count,
+        java.nio.IntBuffer v
+    );
+
+    // C function void glUniform3f ( GLint location, GLfloat x, GLfloat y, GLfloat z )
+
+    public static native void glUniform3f(
+        int location,
+        float x,
+        float y,
+        float z
+    );
+
+    // C function void glUniform3fv ( GLint location, GLsizei count, const GLfloat *v )
+
+    public static native void glUniform3fv(
+        int location,
+        int count,
+        float[] v,
+        int offset
+    );
+
+    // C function void glUniform3fv ( GLint location, GLsizei count, const GLfloat *v )
+
+    public static native void glUniform3fv(
+        int location,
+        int count,
+        java.nio.FloatBuffer v
+    );
+
+    // C function void glUniform3i ( GLint location, GLint x, GLint y, GLint z )
+
+    public static native void glUniform3i(
+        int location,
+        int x,
+        int y,
+        int z
+    );
+
+    // C function void glUniform3iv ( GLint location, GLsizei count, const GLint *v )
+
+    public static native void glUniform3iv(
+        int location,
+        int count,
+        int[] v,
+        int offset
+    );
+
+    // C function void glUniform3iv ( GLint location, GLsizei count, const GLint *v )
+
+    public static native void glUniform3iv(
+        int location,
+        int count,
+        java.nio.IntBuffer v
+    );
+
+    // C function void glUniform4f ( GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w )
+
+    public static native void glUniform4f(
+        int location,
+        float x,
+        float y,
+        float z,
+        float w
+    );
+
+    // C function void glUniform4fv ( GLint location, GLsizei count, const GLfloat *v )
+
+    public static native void glUniform4fv(
+        int location,
+        int count,
+        float[] v,
+        int offset
+    );
+
+    // C function void glUniform4fv ( GLint location, GLsizei count, const GLfloat *v )
+
+    public static native void glUniform4fv(
+        int location,
+        int count,
+        java.nio.FloatBuffer v
+    );
+
+    // C function void glUniform4i ( GLint location, GLint x, GLint y, GLint z, GLint w )
+
+    public static native void glUniform4i(
+        int location,
+        int x,
+        int y,
+        int z,
+        int w
+    );
+
+    // C function void glUniform4iv ( GLint location, GLsizei count, const GLint *v )
+
+    public static native void glUniform4iv(
+        int location,
+        int count,
+        int[] v,
+        int offset
+    );
+
+    // C function void glUniform4iv ( GLint location, GLsizei count, const GLint *v )
+
+    public static native void glUniform4iv(
+        int location,
+        int count,
+        java.nio.IntBuffer v
+    );
+
+    // C function void glUniformMatrix2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value )
+
+    public static native void glUniformMatrix2fv(
+        int location,
+        int count,
+        boolean transpose,
+        float[] value,
+        int offset
+    );
+
+    // C function void glUniformMatrix2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value )
+
+    public static native void glUniformMatrix2fv(
+        int location,
+        int count,
+        boolean transpose,
+        java.nio.FloatBuffer value
+    );
+
+    // C function void glUniformMatrix3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value )
+
+    public static native void glUniformMatrix3fv(
+        int location,
+        int count,
+        boolean transpose,
+        float[] value,
+        int offset
+    );
+
+    // C function void glUniformMatrix3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value )
+
+    public static native void glUniformMatrix3fv(
+        int location,
+        int count,
+        boolean transpose,
+        java.nio.FloatBuffer value
+    );
+
+    // C function void glUniformMatrix4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value )
+
+    public static native void glUniformMatrix4fv(
+        int location,
+        int count,
+        boolean transpose,
+        float[] value,
+        int offset
+    );
+
+    // C function void glUniformMatrix4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value )
+
+    public static native void glUniformMatrix4fv(
+        int location,
+        int count,
+        boolean transpose,
+        java.nio.FloatBuffer value
+    );
+
+    // C function void glUseProgram ( GLuint program )
+
+    public static native void glUseProgram(
+        int program
+    );
+
+    // C function void glValidateProgram ( GLuint program )
+
+    public static native void glValidateProgram(
+        int program
+    );
+
+    // C function void glVertexAttrib1f ( GLuint indx, GLfloat x )
+
+    public static native void glVertexAttrib1f(
+        int indx,
+        float x
+    );
+
+    // C function void glVertexAttrib1fv ( GLuint indx, const GLfloat *values )
+
+    public static native void glVertexAttrib1fv(
+        int indx,
+        float[] values,
+        int offset
+    );
+
+    // C function void glVertexAttrib1fv ( GLuint indx, const GLfloat *values )
+
+    public static native void glVertexAttrib1fv(
+        int indx,
+        java.nio.FloatBuffer values
+    );
+
+    // C function void glVertexAttrib2f ( GLuint indx, GLfloat x, GLfloat y )
+
+    public static native void glVertexAttrib2f(
+        int indx,
+        float x,
+        float y
+    );
+
+    // C function void glVertexAttrib2fv ( GLuint indx, const GLfloat *values )
+
+    public static native void glVertexAttrib2fv(
+        int indx,
+        float[] values,
+        int offset
+    );
+
+    // C function void glVertexAttrib2fv ( GLuint indx, const GLfloat *values )
+
+    public static native void glVertexAttrib2fv(
+        int indx,
+        java.nio.FloatBuffer values
+    );
+
+    // C function void glVertexAttrib3f ( GLuint indx, GLfloat x, GLfloat y, GLfloat z )
+
+    public static native void glVertexAttrib3f(
+        int indx,
+        float x,
+        float y,
+        float z
+    );
+
+    // C function void glVertexAttrib3fv ( GLuint indx, const GLfloat *values )
+
+    public static native void glVertexAttrib3fv(
+        int indx,
+        float[] values,
+        int offset
+    );
+
+    // C function void glVertexAttrib3fv ( GLuint indx, const GLfloat *values )
+
+    public static native void glVertexAttrib3fv(
+        int indx,
+        java.nio.FloatBuffer values
+    );
+
+    // C function void glVertexAttrib4f ( GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w )
+
+    public static native void glVertexAttrib4f(
+        int indx,
+        float x,
+        float y,
+        float z,
+        float w
+    );
+
+    // C function void glVertexAttrib4fv ( GLuint indx, const GLfloat *values )
+
+    public static native void glVertexAttrib4fv(
+        int indx,
+        float[] values,
+        int offset
+    );
+
+    // C function void glVertexAttrib4fv ( GLuint indx, const GLfloat *values )
+
+    public static native void glVertexAttrib4fv(
+        int indx,
+        java.nio.FloatBuffer values
+    );
+
+    // C function void glVertexAttribPointer ( GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *ptr )
+
+    private static native void glVertexAttribPointerBounds(
+        int indx,
+        int size,
+        int type,
+        boolean normalized,
+        int stride,
+        java.nio.Buffer ptr,
+        int remaining
+    );
+
+    public static void glVertexAttribPointer(
+        int indx,
+        int size,
+        int type,
+        boolean normalized,
+        int stride,
+        java.nio.Buffer ptr
+    ) {
+        glVertexAttribPointerBounds(
+            indx,
+            size,
+            type,
+            normalized,
+            stride,
+            ptr,
+            ptr.remaining()
+        );
+    }
+
+    // C function void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height )
+
+    public static native void glViewport(
+        int x,
+        int y,
+        int width,
+        int height
+    );
+
+}
diff --git a/opengl/java/android/opengl/GLErrorWrapper.java b/opengl/java/android/opengl/GLErrorWrapper.java
index 884a1a0..9b66e49 100644
--- a/opengl/java/android/opengl/GLErrorWrapper.java
+++ b/opengl/java/android/opengl/GLErrorWrapper.java
@@ -958,4 +958,424 @@
         checkError();
         return valid;
     }
+
+    public void glBindBuffer(int target, int buffer) {
+        checkThread();
+        mgl11.glBindBuffer(target, buffer);
+        checkError();
+    }
+
+    public void glBufferData(int target, int size, Buffer data, int usage) {
+        checkThread();
+        mgl11.glBufferData(target, size, data, usage);
+        checkError();
+    }
+
+    public void glBufferSubData(int target, int offset, int size, Buffer data) {
+        checkThread();
+        mgl11.glBufferSubData(target, offset, size, data);
+        checkError();
+    }
+
+    public void glColor4ub(byte red, byte green, byte blue, byte alpha) {
+        checkThread();
+        mgl11.glColor4ub(red, green, blue, alpha);
+        checkError();    }
+
+    public void glColorPointer(int size, int type, int stride, int offset) {
+        checkThread();
+        mgl11.glColorPointer(size, type, stride, offset);
+        checkError();
+    }
+
+    public void glDeleteBuffers(int n, int[] buffers, int offset) {
+        checkThread();
+        mgl11.glDeleteBuffers(n, buffers, offset);
+        checkError();
+    }
+
+    public void glDeleteBuffers(int n, IntBuffer buffers) {
+        checkThread();
+        mgl11.glDeleteBuffers(n, buffers);
+        checkError();
+    }
+
+    public void glDrawElements(int mode, int count, int type, int offset) {
+        checkThread();
+        mgl11.glDrawElements(mode, count, type, offset);
+        checkError();
+    }
+
+    public void glGenBuffers(int n, int[] buffers, int offset) {
+        checkThread();
+        mgl11.glGenBuffers(n, buffers, offset);
+        checkError();
+    }
+
+    public void glGenBuffers(int n, IntBuffer buffers) {
+        checkThread();
+        mgl11.glGenBuffers(n, buffers);
+        checkError();
+    }
+
+    public void glGetBooleanv(int pname, boolean[] params, int offset) {
+        checkThread();
+        mgl11.glGetBooleanv(pname, params, offset);
+        checkError();
+    }
+
+    public void glGetBooleanv(int pname, IntBuffer params) {
+        checkThread();
+        mgl11.glGetBooleanv(pname, params);
+        checkError();
+    }
+
+    public void glGetBufferParameteriv(int target, int pname, int[] params,
+            int offset) {
+        checkThread();
+        mgl11.glGetBufferParameteriv(target, pname, params, offset);
+        checkError();
+    }
+
+    public void glGetBufferParameteriv(int target, int pname, IntBuffer params) {
+        checkThread();
+        mgl11.glGetBufferParameteriv(target, pname, params);
+        checkError();
+    }
+
+    public void glGetClipPlanef(int pname, float[] eqn, int offset) {
+        checkThread();
+        mgl11.glGetClipPlanef(pname, eqn, offset);
+        checkError();
+    }
+
+    public void glGetClipPlanef(int pname, FloatBuffer eqn) {
+        checkThread();
+        mgl11.glGetClipPlanef(pname, eqn);
+        checkError();
+    }
+
+    public void glGetClipPlanex(int pname, int[] eqn, int offset) {
+        checkThread();
+        mgl11.glGetClipPlanex(pname, eqn, offset);
+        checkError();
+    }
+
+    public void glGetClipPlanex(int pname, IntBuffer eqn) {
+        checkThread();
+        mgl11.glGetClipPlanex(pname, eqn);
+        checkError();
+    }
+
+    public void glGetFixedv(int pname, int[] params, int offset) {
+        checkThread();
+        mgl11.glGetFixedv(pname, params, offset);
+        checkError();
+    }
+
+    public void glGetFixedv(int pname, IntBuffer params) {
+        checkThread();
+        mgl11.glGetFixedv(pname, params);
+        checkError();
+    }
+
+    public void glGetFloatv(int pname, float[] params, int offset) {
+        checkThread();
+        mgl11.glGetFloatv(pname, params, offset);
+        checkError();
+    }
+
+    public void glGetFloatv(int pname, FloatBuffer params) {
+        checkThread();
+        mgl11.glGetFloatv(pname, params);
+        checkError();
+    }
+
+    public void glGetLightfv(int light, int pname, float[] params, int offset) {
+        checkThread();
+        mgl11.glGetLightfv(light, pname, params, offset);
+        checkError();
+    }
+
+    public void glGetLightfv(int light, int pname, FloatBuffer params) {
+        checkThread();
+        mgl11.glGetLightfv(light, pname, params);
+        checkError();
+    }
+
+    public void glGetLightxv(int light, int pname, int[] params, int offset) {
+        checkThread();
+        mgl11.glGetLightxv(light, pname, params, offset);
+        checkError();
+    }
+
+    public void glGetLightxv(int light, int pname, IntBuffer params) {
+        checkThread();
+        mgl11.glGetLightxv(light, pname, params);
+        checkError();
+    }
+
+    public void glGetMaterialfv(int face, int pname, float[] params, int offset) {
+        checkThread();
+        mgl11.glGetMaterialfv(face, pname, params, offset);
+        checkError();
+    }
+
+    public void glGetMaterialfv(int face, int pname, FloatBuffer params) {
+        checkThread();
+        mgl11.glGetMaterialfv(face, pname, params);
+        checkError();
+    }
+
+    public void glGetMaterialxv(int face, int pname, int[] params, int offset) {
+        checkThread();
+        mgl11.glGetMaterialxv(face, pname, params, offset);
+        checkError();
+    }
+
+    public void glGetMaterialxv(int face, int pname, IntBuffer params) {
+        checkThread();
+        mgl11.glGetMaterialxv(face, pname, params);
+        checkError();
+    }
+
+    public void glGetPointerv(int pname, Buffer[] params) {
+        checkThread();
+        mgl11.glGetPointerv(pname, params);
+        checkError();
+    }
+
+    public void glGetTexEnviv(int env, int pname, int[] params, int offset) {
+        checkThread();
+        mgl11.glGetTexEnviv(env, pname, params, offset);
+        checkError();
+    }
+
+    public void glGetTexEnviv(int env, int pname, IntBuffer params) {
+        checkThread();
+        mgl11.glGetTexEnviv(env, pname, params);
+        checkError();
+    }
+
+    public void glGetTexEnvxv(int env, int pname, int[] params, int offset) {
+        checkThread();
+        mgl11.glGetTexEnvxv(env, pname, params, offset);
+        checkError();
+    }
+
+    public void glGetTexEnvxv(int env, int pname, IntBuffer params) {
+        checkThread();
+        mgl11.glGetTexEnvxv(env, pname, params);
+        checkError();
+    }
+
+    public void glGetTexParameterfv(int target, int pname, float[] params,
+            int offset) {
+        checkThread();
+        mgl11.glGetTexParameterfv(target, pname, params, offset);
+        checkError();
+    }
+
+    public void glGetTexParameterfv(int target, int pname, FloatBuffer params) {
+        checkThread();
+        mgl11.glGetTexParameterfv(target, pname, params);
+        checkError();
+    }
+
+    public void glGetTexParameteriv(int target, int pname, int[] params,
+            int offset) {
+        checkThread();
+        mgl11.glGetTexParameteriv(target, pname, params, offset);
+        checkError();
+    }
+
+    public void glGetTexParameteriv(int target, int pname, IntBuffer params) {
+        checkThread();
+        mgl11.glGetTexParameteriv(target, pname, params);
+        checkError();
+    }
+
+    public void glGetTexParameterxv(int target, int pname, int[] params,
+            int offset) {
+        checkThread();
+        mgl11.glGetTexParameterxv(target, pname, params, offset);
+        checkError();
+    }
+
+    public void glGetTexParameterxv(int target, int pname, IntBuffer params) {
+        checkThread();
+        mgl11.glGetTexParameterxv(target, pname, params);
+        checkError();
+    }
+
+    public boolean glIsBuffer(int buffer) {
+        checkThread();
+        boolean valid = mgl11.glIsBuffer(buffer);
+        checkError();
+        return valid;
+    }
+
+    public boolean glIsEnabled(int cap) {
+        checkThread();
+        boolean valid = mgl11.glIsEnabled(cap);
+        checkError();
+        return valid;
+    }
+
+    public boolean glIsTexture(int texture) {
+        checkThread();
+        boolean valid = mgl11.glIsTexture(texture);
+        checkError();
+        return valid;
+    }
+
+    public void glNormalPointer(int type, int stride, int offset) {
+        checkThread();
+        mgl11.glNormalPointer(type, stride, offset);
+        checkError();
+    }
+
+    public void glPointParameterf(int pname, float param) {
+        checkThread();
+        mgl11.glPointParameterf(pname, param);
+        checkError();
+    }
+
+    public void glPointParameterfv(int pname, float[] params, int offset) {
+        checkThread();
+        mgl11.glPointParameterfv(pname, params, offset);
+        checkError();
+    }
+
+    public void glPointParameterfv(int pname, FloatBuffer params) {
+        checkThread();
+        mgl11.glPointParameterfv(pname, params);
+        checkError();
+    }
+
+    public void glPointParameterx(int pname, int param) {
+        checkThread();
+        mgl11.glPointParameterx(pname, param);
+        checkError();
+    }
+
+    public void glPointParameterxv(int pname, int[] params, int offset) {
+        checkThread();
+        mgl11.glPointParameterxv(pname, params, offset);
+        checkError();
+    }
+
+    public void glPointParameterxv(int pname, IntBuffer params) {
+        checkThread();
+        mgl11.glPointParameterxv(pname, params);
+        checkError();
+    }
+
+    public void glPointSizePointerOES(int type, int stride, Buffer pointer) {
+        checkThread();
+        mgl11.glPointSizePointerOES(type, stride, pointer);
+        checkError();
+    }
+
+    public void glTexCoordPointer(int size, int type, int stride, int offset) {
+        checkThread();
+        mgl11.glTexCoordPointer(size, type, stride, offset);
+        checkError();
+    }
+
+    public void glTexEnvi(int target, int pname, int param) {
+        checkThread();
+        mgl11.glTexEnvi(target, pname, param);
+        checkError();
+    }
+
+    public void glTexEnviv(int target, int pname, int[] params, int offset) {
+        checkThread();
+        mgl11.glTexEnviv(target, pname, params, offset);
+        checkError();
+    }
+
+    public void glTexEnviv(int target, int pname, IntBuffer params) {
+        checkThread();
+        mgl11.glTexEnviv(target, pname, params);
+        checkError();
+    }
+
+    public void glTexParameterfv(int target, int pname, float[] params,
+            int offset) {
+        checkThread();
+        mgl11.glTexParameterfv(target, pname, params, offset);
+        checkError();
+    }
+
+    public void glTexParameterfv(int target, int pname, FloatBuffer params) {
+        checkThread();
+        mgl11.glTexParameterfv(target, pname, params);
+        checkError();
+    }
+
+    public void glTexParameteri(int target, int pname, int param) {
+        checkThread();
+        mgl11.glTexParameteri(target, pname, param);
+        checkError();
+    }
+
+    public void glTexParameterxv(int target, int pname, int[] params, int offset) {
+        checkThread();
+        mgl11.glTexParameterxv(target, pname, params, offset);
+        checkError();
+    }
+
+    public void glTexParameterxv(int target, int pname, IntBuffer params) {
+        checkThread();
+        mgl11.glTexParameterxv(target, pname, params);
+        checkError();
+    }
+
+    public void glVertexPointer(int size, int type, int stride, int offset) {
+        checkThread();
+        mgl11.glVertexPointer(size, type, stride, offset);
+        checkError();
+    }
+
+    public void glCurrentPaletteMatrixOES(int matrixpaletteindex) {
+        checkThread();
+        mgl11Ext.glCurrentPaletteMatrixOES(matrixpaletteindex);
+        checkError();
+    }
+
+    public void glLoadPaletteFromModelViewMatrixOES() {
+        checkThread();
+        mgl11Ext.glLoadPaletteFromModelViewMatrixOES();
+        checkError();
+    }
+
+    public void glMatrixIndexPointerOES(int size, int type, int stride,
+            Buffer pointer) {
+        checkThread();
+        mgl11Ext.glMatrixIndexPointerOES(size, type, stride, pointer);
+        checkError();
+    }
+
+    public void glMatrixIndexPointerOES(int size, int type, int stride,
+            int offset) {
+        checkThread();
+        mgl11Ext.glMatrixIndexPointerOES(size, type, stride, offset);
+        checkError();
+    }
+
+    public void glWeightPointerOES(int size, int type, int stride,
+            Buffer pointer) {
+        checkThread();
+        mgl11Ext.glWeightPointerOES(size, type, stride, pointer);
+        checkError();
+    }
+
+    public void glWeightPointerOES(int size, int type, int stride, int offset) {
+        checkThread();
+        mgl11Ext.glWeightPointerOES(size, type, stride, offset);
+        checkError();
+    }
+
+
 }
diff --git a/opengl/java/android/opengl/GLLogWrapper.java b/opengl/java/android/opengl/GLLogWrapper.java
index f332448..6e97f67 100644
--- a/opengl/java/android/opengl/GLLogWrapper.java
+++ b/opengl/java/android/opengl/GLLogWrapper.java
@@ -932,83 +932,83 @@
         boolean convertWholeBuffer = (byteCount < 0);
         if (input instanceof ByteBuffer) {
             ByteBuffer input2 = (ByteBuffer) input;
+            int position = input2.position();
             if (convertWholeBuffer) {
-                byteCount = input2.limit();
+                byteCount = input2.limit() - position;
             }
             result = ByteBuffer.allocate(byteCount).order(input2.order());
-            int position = input2.position();
             for (int i = 0; i < byteCount; i++) {
                 result.put(input2.get());
             }
             input2.position(position);
         } else if (input instanceof CharBuffer) {
             CharBuffer input2 = (CharBuffer) input;
+            int position = input2.position();
             if (convertWholeBuffer) {
-                byteCount = input2.limit() * 2;
+                byteCount = (input2.limit() - position) * 2;
             }
             result = ByteBuffer.allocate(byteCount).order(input2.order());
             CharBuffer result2 = result.asCharBuffer();
-            int position = input2.position();
             for (int i = 0; i < byteCount / 2; i++) {
                 result2.put(input2.get());
             }
             input2.position(position);
         } else if (input instanceof ShortBuffer) {
             ShortBuffer input2 = (ShortBuffer) input;
+            int position = input2.position();
             if (convertWholeBuffer) {
-                byteCount = input2.limit() * 2;
+                byteCount = (input2.limit() - position)* 2;
             }
             result = ByteBuffer.allocate(byteCount).order(input2.order());
             ShortBuffer result2 = result.asShortBuffer();
-            int position = input2.position();
             for (int i = 0; i < byteCount / 2; i++) {
                 result2.put(input2.get());
             }
             input2.position(position);
         } else if (input instanceof IntBuffer) {
             IntBuffer input2 = (IntBuffer) input;
+            int position = input2.position();
             if (convertWholeBuffer) {
-                byteCount = input2.limit() * 4;
+                byteCount = (input2.limit() - position) * 4;
             }
             result = ByteBuffer.allocate(byteCount).order(input2.order());
             IntBuffer result2 = result.asIntBuffer();
-            int position = input2.position();
             for (int i = 0; i < byteCount / 4; i++) {
                 result2.put(input2.get());
             }
             input2.position(position);
         } else if (input instanceof FloatBuffer) {
             FloatBuffer input2 = (FloatBuffer) input;
+            int position = input2.position();
             if (convertWholeBuffer) {
-                byteCount = input2.limit() * 4;
+                byteCount = (input2.limit() - position) * 4;
             }
             result = ByteBuffer.allocate(byteCount).order(input2.order());
             FloatBuffer result2 = result.asFloatBuffer();
-            int position = input2.position();
             for (int i = 0; i < byteCount / 4; i++) {
                 result2.put(input2.get());
             }
             input2.position(position);
         } else if (input instanceof DoubleBuffer) {
             DoubleBuffer input2 = (DoubleBuffer) input;
+            int position = input2.position();
             if (convertWholeBuffer) {
-                byteCount = input2.limit() * 8;
+                byteCount = (input2.limit() - position) * 8;
             }
             result = ByteBuffer.allocate(byteCount).order(input2.order());
             DoubleBuffer result2 = result.asDoubleBuffer();
-            int position = input2.position();
             for (int i = 0; i < byteCount / 8; i++) {
                 result2.put(input2.get());
             }
             input2.position(position);
         } else if (input instanceof LongBuffer) {
             LongBuffer input2 = (LongBuffer) input;
+            int position = input2.position();
             if (convertWholeBuffer) {
-                byteCount = input2.limit() * 8;
+                byteCount = (input2.limit() - position) * 8;
             }
             result = ByteBuffer.allocate(byteCount).order(input2.order());
             LongBuffer result2 = result.asLongBuffer();
-            int position = input2.position();
             for (int i = 0; i < byteCount / 8; i++) {
                 result2.put(input2.get());
             }
@@ -1064,8 +1064,8 @@
         }
         builder.append(" ");
         builder.append(name + ":{");
-        if (pointer == null) {
-            builder.append("undefined");
+        if (pointer == null || pointer.mTempByteBuffer == null ) {
+            builder.append("undefined }");
             return;
         }
         if (pointer.mStride < 0) {
@@ -2767,230 +2767,684 @@
         return valid;
     }
 
-    // Unsupported GL11 methods
-
     public void glBindBuffer(int target, int buffer) {
-        throw new UnsupportedOperationException();
+        begin("glBindBuffer");
+        arg("target", target);
+        arg("buffer", buffer);
+        end();
+        mgl11.glBindBuffer(target, buffer);
+        checkError();
     }
 
     public void glBufferData(int target, int size, Buffer data, int usage) {
-        throw new UnsupportedOperationException();
+        begin("glBufferData");
+        arg("target", target);
+        arg("size", size);
+        arg("data", data.toString());
+        arg("usage", usage);
+        end();
+        mgl11.glBufferData(target, size, data, usage);
+        checkError();
     }
 
     public void glBufferSubData(int target, int offset, int size, Buffer data) {
-        throw new UnsupportedOperationException();
+        begin("glBufferSubData");
+        arg("target", target);
+        arg("offset", offset);
+        arg("size", size);
+        arg("data", data.toString());
+        end();
+        mgl11.glBufferSubData(target, offset, size, data);
+        checkError();
     }
 
     public void glColor4ub(byte red, byte green, byte blue, byte alpha) {
-        throw new UnsupportedOperationException();
+        begin("glColor4ub");
+        arg("red", red);
+        arg("green", green);
+        arg("blue", blue);
+        arg("alpha", alpha);
+        end();
+        mgl11.glColor4ub(red, green, blue, alpha);
+        checkError();
     }
 
     public void glDeleteBuffers(int n, int[] buffers, int offset) {
-        throw new UnsupportedOperationException();
+        begin("glDeleteBuffers");
+        arg("n", n);
+        arg("buffers", buffers.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glDeleteBuffers(n, buffers, offset);
+        checkError();
     }
 
     public void glDeleteBuffers(int n, IntBuffer buffers) {
-        throw new UnsupportedOperationException();
+        begin("glDeleteBuffers");
+        arg("n", n);
+        arg("buffers", buffers.toString());
+        end();
+        mgl11.glDeleteBuffers(n, buffers);
+        checkError();
     }
 
     public void glGenBuffers(int n, int[] buffers, int offset) {
-        throw new UnsupportedOperationException();
+        begin("glGenBuffers");
+        arg("n", n);
+        arg("buffers", buffers.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glGenBuffers(n, buffers, offset);
+        checkError();
     }
 
     public void glGenBuffers(int n, IntBuffer buffers) {
-        throw new UnsupportedOperationException();
+        begin("glGenBuffers");
+        arg("n", n);
+        arg("buffers", buffers.toString());
+        end();
+        mgl11.glGenBuffers(n, buffers);
+        checkError();
     }
 
     public void glGetBooleanv(int pname, boolean[] params, int offset) {
-        throw new UnsupportedOperationException();
+        begin("glGetBooleanv");
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glGetBooleanv(pname, params, offset);
+        checkError();
     }
 
     public void glGetBooleanv(int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glGetBooleanv");
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glGetBooleanv(pname, params);
+        checkError();
     }
 
-    public void glGetBufferParameteriv(int target, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
+    public void glGetBufferParameteriv(int target, int pname, int[] params,
+            int offset) {
+        begin("glGetBufferParameteriv");
+        arg("target", target);
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glGetBufferParameteriv(target, pname, params, offset);
+        checkError();
     }
 
     public void glGetBufferParameteriv(int target, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glGetBufferParameteriv");
+        arg("target", target);
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glGetBufferParameteriv(target, pname, params);
+        checkError();
     }
 
     public void glGetClipPlanef(int pname, float[] eqn, int offset) {
-        throw new UnsupportedOperationException();
+        begin("glGetClipPlanef");
+        arg("pname", pname);
+        arg("eqn", eqn.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glGetClipPlanef(pname, eqn, offset);
+        checkError();
     }
 
     public void glGetClipPlanef(int pname, FloatBuffer eqn) {
-        throw new UnsupportedOperationException();
+        begin("glGetClipPlanef");
+        arg("pname", pname);
+        arg("eqn", eqn.toString());
+        end();
+        mgl11.glGetClipPlanef(pname, eqn);
+        checkError();
     }
 
     public void glGetClipPlanex(int pname, int[] eqn, int offset) {
-        throw new UnsupportedOperationException();
+        begin("glGetClipPlanex");
+        arg("pname", pname);
+        arg("eqn", eqn.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glGetClipPlanex(pname, eqn, offset);
     }
 
     public void glGetClipPlanex(int pname, IntBuffer eqn) {
-        throw new UnsupportedOperationException();
+        begin("glGetClipPlanex");
+        arg("pname", pname);
+        arg("eqn", eqn.toString());
+        end();
+        mgl11.glGetClipPlanex(pname, eqn);
+        checkError();
     }
 
     public void glGetFixedv(int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
+        begin("glGetFixedv");
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glGetFixedv(pname, params, offset);
     }
 
     public void glGetFixedv(int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glGetFixedv");
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glGetFixedv(pname, params);
+        checkError();
     }
 
     public void glGetFloatv(int pname, float[] params, int offset) {
-        throw new UnsupportedOperationException();
+        begin("glGetFloatv");
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glGetFloatv(pname, params, offset);
     }
 
     public void glGetFloatv(int pname, FloatBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glGetFloatv");
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glGetFloatv(pname, params);
+        checkError();
     }
 
     public void glGetLightfv(int light, int pname, float[] params, int offset) {
-        throw new UnsupportedOperationException();
+        begin("glGetLightfv");
+        arg("light", light);
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glGetLightfv(light, pname, params, offset);
+        checkError();
     }
 
     public void glGetLightfv(int light, int pname, FloatBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glGetLightfv");
+        arg("light", light);
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glGetLightfv(light, pname, params);
+        checkError();
     }
 
     public void glGetLightxv(int light, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
+        begin("glGetLightxv");
+        arg("light", light);
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glGetLightxv(light, pname, params, offset);
+        checkError();
     }
 
     public void glGetLightxv(int light, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glGetLightxv");
+        arg("light", light);
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glGetLightxv(light, pname, params);
+        checkError();
     }
 
-    public void glGetMaterialfv(int face, int pname, float[] params, int offset) {
-        throw new UnsupportedOperationException();
+    public void glGetMaterialfv(int face, int pname, float[] params,
+            int offset) {
+        begin("glGetMaterialfv");
+        arg("face", face);
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glGetMaterialfv(face, pname, params, offset);
+        checkError();
     }
 
     public void glGetMaterialfv(int face, int pname, FloatBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glGetMaterialfv");
+        arg("face", face);
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glGetMaterialfv(face, pname, params);
+        checkError();
     }
 
     public void glGetMaterialxv(int face, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
+        begin("glGetMaterialxv");
+        arg("face", face);
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glGetMaterialxv(face, pname, params, offset);
+        checkError();
     }
 
     public void glGetMaterialxv(int face, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glGetMaterialxv");
+        arg("face", face);
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glGetMaterialxv(face, pname, params);
+        checkError();
     }
 
     public void glGetTexEnviv(int env, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
+        begin("glGetTexEnviv");
+        arg("env", env);
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glGetTexEnviv(env, pname, params, offset);
+        checkError();
     }
 
     public void glGetTexEnviv(int env, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glGetTexEnviv");
+        arg("env", env);
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glGetTexEnviv(env, pname, params);
+        checkError();
     }
 
     public void glGetTexEnvxv(int env, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
+        begin("glGetTexEnviv");
+        arg("env", env);
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glGetTexEnviv(env, pname, params, offset);
+        checkError();
     }
 
     public void glGetTexEnvxv(int env, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glGetTexEnviv");
+        arg("env", env);
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glGetTexEnvxv(env, pname, params);
+        checkError();
     }
 
     public void glGetTexParameterfv(int target, int pname, float[] params, int offset) {
-        throw new UnsupportedOperationException();
+        begin("glGetTexParameterfv");
+        arg("target", target);
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glGetTexParameterfv(target, pname, params, offset);
+        checkError();
     }
 
     public void glGetTexParameterfv(int target, int pname, FloatBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glGetTexParameterfv");
+        arg("target", target);
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glGetTexParameterfv(target, pname, params);
+        checkError();
     }
 
     public void glGetTexParameteriv(int target, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
+        begin("glGetTexParameteriv");
+        arg("target", target);
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glGetTexEnviv(target, pname, params, offset);
+        checkError();
     }
 
     public void glGetTexParameteriv(int target, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glGetTexParameteriv");
+        arg("target", target);
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glGetTexParameteriv(target, pname, params);
+        checkError();
     }
 
-    public void glGetTexParameterxv(int target, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
+    public void glGetTexParameterxv(int target, int pname, int[] params,
+            int offset) {
+        begin("glGetTexParameterxv");
+        arg("target", target);
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glGetTexParameterxv(target, pname, params, offset);
+        checkError();
     }
 
     public void glGetTexParameterxv(int target, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glGetTexParameterxv");
+        arg("target", target);
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glGetTexParameterxv(target, pname, params);
+        checkError();
     }
 
     public boolean glIsBuffer(int buffer) {
-        throw new UnsupportedOperationException();
+        begin("glIsBuffer");
+        arg("buffer", buffer);
+        end();
+        boolean result = mgl11.glIsBuffer(buffer);
+        checkError();
+        return result;
     }
 
     public boolean glIsEnabled(int cap) {
-        throw new UnsupportedOperationException();
+        begin("glIsEnabled");
+        arg("cap", cap);
+        end();
+        boolean result = mgl11.glIsEnabled(cap);
+        checkError();
+        return result;
     }
 
     public boolean glIsTexture(int texture) {
-        throw new UnsupportedOperationException();
+        begin("glIsTexture");
+        arg("texture", texture);
+        end();
+        boolean result = mgl11.glIsTexture(texture);
+        checkError();
+        return result;
     }
 
     public void glPointParameterf(int pname, float param) {
-        throw new UnsupportedOperationException();
+        begin("glPointParameterf");
+        arg("pname", pname);
+        arg("param", param);
+        end();
+        mgl11.glPointParameterf( pname, param);
+        checkError();
     }
 
     public void glPointParameterfv(int pname, float[] params, int offset) {
-        throw new UnsupportedOperationException();
+        begin("glPointParameterfv");
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glPointParameterfv(pname, params, offset);
+        checkError();
     }
 
     public void glPointParameterfv(int pname, FloatBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glPointParameterfv");
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glPointParameterfv(pname, params);
+        checkError();
     }
 
     public void glPointParameterx(int pname, int param) {
-        throw new UnsupportedOperationException();
+        begin("glPointParameterfv");
+        arg("pname", pname);
+        arg("param", param);
+        end();
+        mgl11.glPointParameterx( pname, param);
+        checkError();
     }
 
     public void glPointParameterxv(int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
+        begin("glPointParameterxv");
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glPointParameterxv(pname, params, offset);
+        checkError();
     }
 
     public void glPointParameterxv(int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glPointParameterxv");
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glPointParameterxv( pname, params);
+        checkError();
     }
 
     public void glPointSizePointerOES(int type, int stride, Buffer pointer) {
-        throw new UnsupportedOperationException();
+        begin("glPointSizePointerOES");
+        arg("type", type);
+        arg("stride", stride);
+        arg("params", pointer.toString());
+        end();
+        mgl11.glPointSizePointerOES( type, stride, pointer);
+        checkError();
     }
 
     public void glTexEnvi(int target, int pname, int param) {
-        throw new UnsupportedOperationException();
+        begin("glTexEnvi");
+        arg("target", target);
+        arg("pname", pname);
+        arg("param", param);
+        end();
+        mgl11.glTexEnvi(target, pname, param);
+        checkError();
     }
 
     public void glTexEnviv(int target, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
+        begin("glTexEnviv");
+        arg("target", target);
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glTexEnviv(target, pname, params, offset);
+        checkError();
     }
 
     public void glTexEnviv(int target, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glTexEnviv");
+        arg("target", target);
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glTexEnviv( target, pname, params);
+        checkError();
     }
 
-    public void glTexParameterfv(int target, int pname, float[] params, int offset) {
-        throw new UnsupportedOperationException();
+    public void glTexParameterfv(int target, int pname, float[] params,
+            int offset) {
+        begin("glTexParameterfv");
+        arg("target", target);
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glTexParameterfv( target, pname, params, offset);
+        checkError();
     }
 
     public void glTexParameterfv(int target, int pname, FloatBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glTexParameterfv");
+        arg("target", target);
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glTexParameterfv(target, pname, params);
+        checkError();
     }
 
     public void glTexParameteri(int target, int pname, int param) {
-        throw new UnsupportedOperationException();
+        begin("glTexParameterxv");
+        arg("target", target);
+        arg("pname", pname);
+        arg("param", param);
+        end();
+        mgl11.glTexParameteri(target, pname, param);
+        checkError();
     }
 
-    public void glTexParameterxv(int target, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
+    public void glTexParameterxv(int target, int pname, int[] params,
+            int offset) {
+        begin("glTexParameterxv");
+        arg("target", target);
+        arg("pname", pname);
+        arg("params", params.toString());
+        arg("offset", offset);
+        end();
+        mgl11.glTexParameterxv(target, pname, params, offset);
+        checkError();
     }
 
     public void glTexParameterxv(int target, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
+        begin("glTexParameterxv");
+        arg("target", target);
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glTexParameterxv(target, pname, params);
+        checkError();
+    }
+
+
+    public void glColorPointer(int size, int type, int stride, int offset) {
+        begin("glColorPointer");
+        arg("size", size);
+        arg("type", type);
+        arg("stride", stride);
+        arg("offset", offset);
+        end();
+        mgl11.glColorPointer(size, type, stride, offset);
+        checkError();
+    }
+
+    public void glDrawElements(int mode, int count, int type, int offset) {
+        begin("glDrawElements");
+        arg("mode", mode);
+        arg("count", count);
+        arg("type", type);
+        arg("offset", offset);
+        end();
+        mgl11.glDrawElements(mode, count, type, offset);
+        checkError();
+    }
+
+    public void glGetPointerv(int pname, Buffer[] params) {
+        begin("glGetPointerv");
+        arg("pname", pname);
+        arg("params", params.toString());
+        end();
+        mgl11.glGetPointerv(pname, params);
+        checkError();
+    }
+
+    public void glNormalPointer(int type, int stride, int offset) {
+        begin("glNormalPointer");
+        arg("type", type);
+        arg("stride", stride);
+        arg("offset", offset);
+        end();
+        mgl11.glNormalPointer(type, stride, offset);
+    }
+
+    public void glTexCoordPointer(int size, int type, int stride, int offset) {
+        begin("glTexCoordPointer");
+        arg("size", size);
+        arg("type", type);
+        arg("stride", stride);
+        arg("offset", offset);
+        end();
+        mgl11.glTexCoordPointer(size, type, stride, offset);
+    }
+
+    public void glVertexPointer(int size, int type, int stride, int offset) {
+        begin("glVertexPointer");
+        arg("size", size);
+        arg("type", type);
+        arg("stride", stride);
+        arg("offset", offset);
+        end();
+        mgl11.glVertexPointer(size, type, stride, offset);
+    }
+
+    public void glCurrentPaletteMatrixOES(int matrixpaletteindex) {
+        begin("glCurrentPaletteMatrixOES");
+        arg("matrixpaletteindex", matrixpaletteindex);
+        end();
+        mgl11Ext.glCurrentPaletteMatrixOES(matrixpaletteindex);
+        checkError();
+    }
+
+    public void glLoadPaletteFromModelViewMatrixOES() {
+        begin("glLoadPaletteFromModelViewMatrixOES");
+        end();
+        mgl11Ext.glLoadPaletteFromModelViewMatrixOES();
+        checkError();
+    }
+
+    public void glMatrixIndexPointerOES(int size, int type, int stride,
+            Buffer pointer) {
+        begin("glMatrixIndexPointerOES");
+        argPointer(size, type, stride, pointer);
+        end();
+        mgl11Ext.glMatrixIndexPointerOES(size, type, stride, pointer);
+        checkError();
+    }
+
+    public void glMatrixIndexPointerOES(int size, int type, int stride,
+            int offset) {
+        begin("glMatrixIndexPointerOES");
+        arg("size", size);
+        arg("type", type);
+        arg("stride", stride);
+        arg("offset", offset);
+        end();
+        mgl11Ext.glMatrixIndexPointerOES(size, type, stride, offset);
+        checkError();
+    }
+
+    public void glWeightPointerOES(int size, int type, int stride,
+            Buffer pointer) {
+        begin("glWeightPointerOES");
+        argPointer(size, type, stride, pointer);
+        end();
+        mgl11Ext.glWeightPointerOES(size, type, stride, pointer);
+        checkError();
+    }
+
+    public void glWeightPointerOES(int size, int type, int stride, int offset) {
+        begin("glWeightPointerOES");
+        arg("size", size);
+        arg("type", type);
+        arg("stride", stride);
+        arg("offset", offset);
+        end();
+        mgl11Ext.glWeightPointerOES(size, type, stride, offset);
+        checkError();
     }
 
     private class PointerInfo {
@@ -3010,6 +3464,9 @@
         public Buffer mPointer;
         public ByteBuffer mTempByteBuffer; // Only valid during glDrawXXX calls
 
+        public PointerInfo() {
+        }
+
         public PointerInfo(int size, int type, int stride, Buffer pointer) {
             mSize = size;
             mType = type;
@@ -3039,7 +3496,7 @@
         }
 
         public void bindByteBuffer() {
-            mTempByteBuffer = toByteBuffer(-1, mPointer);
+            mTempByteBuffer = mPointer == null ? null : toByteBuffer(-1, mPointer);
         }
 
         public void unbindByteBuffer() {
@@ -3051,10 +3508,10 @@
     private boolean mLogArgumentNames;
     private int mArgCount;
 
-    private PointerInfo mColorPointer;
-    private PointerInfo mNormalPointer;
-    private PointerInfo mTexCoordPointer;
-    private PointerInfo mVertexPointer;
+    private PointerInfo mColorPointer = new PointerInfo();
+    private PointerInfo mNormalPointer = new PointerInfo();
+    private PointerInfo mTexCoordPointer = new PointerInfo();
+    private PointerInfo mVertexPointer = new PointerInfo();
 
     boolean mColorArrayEnabled;
     boolean mNormalArrayEnabled;
diff --git a/opengl/java/android/opengl/GLSurfaceView.java b/opengl/java/android/opengl/GLSurfaceView.java
index 1e3bd72..185398b 100644
--- a/opengl/java/android/opengl/GLSurfaceView.java
+++ b/opengl/java/android/opengl/GLSurfaceView.java
@@ -372,6 +372,38 @@
         setEGLConfigChooser(new ComponentSizeChooser(redSize, greenSize,
                 blueSize, alphaSize, depthSize, stencilSize));
     }
+
+    /**
+     * Inform the default EGLContextFactory and default EGLConfigChooser
+     * which EGLContext client version to pick.
+     * <p>Use this method to create an OpenGL ES 2.0-compatible context.
+     * Example:
+     * <pre class="prettyprint">
+     *     public MyView(Context context) {
+     *         super(context);
+     *         setEGLContextClientVersion(2); // Pick an OpenGL ES 2.0 context.
+     *         setRenderer(new MyRenderer());
+     *     }
+     * </pre>
+     * <p>Note: Activities which require OpenGL ES 2.0 should indicate this by
+     * setting @lt;uses-feature android:glEsVersion="0x00020000" /> in the activity's
+     * AndroidManifest.xml file.
+     * <p>If this method is called, it must be called before {@link #setRenderer(Renderer)}
+     * is called.
+     * <p>This method only affects the behavior of the default EGLContexFactory and the
+     * default EGLConfigChooser. If
+     * {@link #setEGLContextFactory(EGLContextFactory)} has been called, then the supplied
+     * EGLContextFactory is responsible for creating an OpenGL ES 2.0-compatible context.
+     * If
+     * {@link #setEGLConfigChooser(EGLConfigChooser)} has been called, then the supplied
+     * EGLConfigChooser is responsible for choosing an OpenGL ES 2.0-compatible config.
+     * @param version The EGLContext client version to choose. Use 2 for OpenGL ES 2.0
+     */
+    public void setEGLContextClientVersion(int version) {
+        checkRenderThreadState();
+        mEGLContextClientVersion = version;
+    }
+
     /**
      * Set the rendering mode. When renderMode is
      * RENDERMODE_CONTINUOUSLY, the renderer is called
@@ -623,10 +655,15 @@
         void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context);
     }
 
-    private static class DefaultContextFactory implements EGLContextFactory {
+    private class DefaultContextFactory implements EGLContextFactory {
+        private int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
 
         public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig config) {
-            return egl.eglCreateContext(display, config, EGL10.EGL_NO_CONTEXT, null);
+            int[] attrib_list = {EGL_CONTEXT_CLIENT_VERSION, mEGLContextClientVersion,
+                    EGL10.EGL_NONE };
+
+            return egl.eglCreateContext(display, config, EGL10.EGL_NO_CONTEXT,
+                    mEGLContextClientVersion != 0 ? attrib_list : null);
         }
 
         public void destroyContext(EGL10 egl, EGLDisplay display,
@@ -680,11 +717,12 @@
         EGLConfig chooseConfig(EGL10 egl, EGLDisplay display);
     }
 
-    private static abstract class BaseConfigChooser
+    private abstract class BaseConfigChooser
             implements EGLConfigChooser {
         public BaseConfigChooser(int[] configSpec) {
-            mConfigSpec = configSpec;
+            mConfigSpec = filterConfigSpec(configSpec);
         }
+
         public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) {
             int[] num_config = new int[1];
             if (!egl.eglChooseConfig(display, mConfigSpec, null, 0,
@@ -715,9 +753,25 @@
                 EGLConfig[] configs);
 
         protected int[] mConfigSpec;
+
+        private int[] filterConfigSpec(int[] configSpec) {
+            if (mEGLContextClientVersion != 2) {
+                return configSpec;
+            }
+            /* We know none of the subclasses define EGL_RENDERABLE_TYPE.
+             * And we know the configSpec is well formed.
+             */
+            int len = configSpec.length;
+            int[] newConfigSpec = new int[len + 2];
+            System.arraycopy(configSpec, 0, newConfigSpec, 0, len-1);
+            newConfigSpec[len-1] = EGL10.EGL_RENDERABLE_TYPE;
+            newConfigSpec[len] = 4; /* EGL_OPENGL_ES2_BIT */
+            newConfigSpec[len+1] = EGL10.EGL_NONE;
+            return newConfigSpec;
+        }
     }
 
-    private static class ComponentSizeChooser extends BaseConfigChooser {
+    private class ComponentSizeChooser extends BaseConfigChooser {
         public ComponentSizeChooser(int redSize, int greenSize, int blueSize,
                 int alphaSize, int depthSize, int stencilSize) {
             super(new int[] {
@@ -793,7 +847,7 @@
      * RGB565 as possible, with or without a depth buffer.
      *
      */
-    private static class SimpleEGLConfigChooser extends ComponentSizeChooser {
+    private class SimpleEGLConfigChooser extends ComponentSizeChooser {
         public SimpleEGLConfigChooser(boolean withDepthBuffer) {
             super(4, 4, 4, 0, withDepthBuffer ? 16 : 0, 0);
             // Adjust target values. This way we'll accept a 4444 or
@@ -1401,4 +1455,5 @@
     private EGLWindowSurfaceFactory mEGLWindowSurfaceFactory;
     private GLWrapper mGLWrapper;
     private int mDebugFlags;
+    private int mEGLContextClientVersion;
 }
diff --git a/opengl/java/android/opengl/GLU.java b/opengl/java/android/opengl/GLU.java
index 49a43d0..ed64556 100644
--- a/opengl/java/android/opengl/GLU.java
+++ b/opengl/java/android/opengl/GLU.java
@@ -72,60 +72,12 @@
             float centerX, float centerY, float centerZ, float upX, float upY,
             float upZ) {
 
-        // See the OpenGL GLUT documentation for gluLookAt for a description
-        // of the algorithm. We implement it in a straightforward way:
-
-        float fx = centerX - eyeX;
-        float fy = centerY - eyeY;
-        float fz = centerZ - eyeZ;
-
-        // Normalize f
-        float rlf = 1.0f / Matrix.length(fx, fy, fz);
-        fx *= rlf;
-        fy *= rlf;
-        fz *= rlf;
-
-        // compute s = f x up (x means "cross product")
-        float sx = fy * upZ - fz * upY;
-        float sy = fz * upX - fx * upZ;
-        float sz = fx * upY - fy * upX;
-
-        // and normalize s
-        float rls = 1.0f / Matrix.length(sx, sy, sz);
-        sx *= rls;
-        sy *= rls;
-        sz *= rls;
-
-        // compute u = s x f
-        float ux = sy * fz - sz * fy;
-        float uy = sz * fx - sx * fz;
-        float uz = sx * fy - sy * fx;
-
         float[] scratch = sScratch;
         synchronized(scratch) {
-            scratch[0] = sx;
-            scratch[1] = ux;
-            scratch[2] = -fx;
-            scratch[3] = 0.0f;
-
-            scratch[4] = sy;
-            scratch[5] = uy;
-            scratch[6] = -fy;
-            scratch[7] = 0.0f;
-
-            scratch[8] = sz;
-            scratch[9] = uz;
-            scratch[10] = -fz;
-            scratch[11] = 0.0f;
-
-            scratch[12] = 0.0f;
-            scratch[13] = 0.0f;
-            scratch[14] = 0.0f;
-            scratch[15] = 1.0f;
-
+            Matrix.setLookAtM(scratch, 0, eyeX, eyeY, eyeZ, centerX, centerY, centerZ,
+                    upX, upY, upZ);
             gl.glMultMatrixf(scratch, 0);
         }
-        gl.glTranslatef(-eyeX, -eyeY, -eyeZ);
     }
 
     /**
diff --git a/opengl/java/android/opengl/GLWrapperBase.java b/opengl/java/android/opengl/GLWrapperBase.java
index 067f95f..b0f83f7 100644
--- a/opengl/java/android/opengl/GLWrapperBase.java
+++ b/opengl/java/android/opengl/GLWrapperBase.java
@@ -16,9 +16,6 @@
 
 package android.opengl;
 
-import java.nio.Buffer;
-import java.nio.FloatBuffer;
-import java.nio.IntBuffer;
 import javax.microedition.khronos.opengles.GL;
 import javax.microedition.khronos.opengles.GL10;
 import javax.microedition.khronos.opengles.GL10Ext;
@@ -32,464 +29,25 @@
  */
 abstract class GLWrapperBase
     implements GL, GL10, GL10Ext, GL11, GL11Ext {
-	public GLWrapperBase(GL gl) {
-		mgl = (GL10) gl;
-		if (gl instanceof GL10Ext) {
-			mgl10Ext = (GL10Ext) gl;
-		}
-		if (gl instanceof GL11) {
-			mgl11 = (GL11) gl;
-		}
-		if (gl instanceof GL11Ext) {
-			mgl11Ext = (GL11Ext) gl;
-		}
-		if (gl instanceof GL11ExtensionPack) {
-			mgl11ExtensionPack = (GL11ExtensionPack) gl;
-		}
-	}
-	
-	protected GL10 mgl;
-	protected GL10Ext mgl10Ext;
-	protected GL11 mgl11;
-	protected GL11Ext mgl11Ext;
-	protected GL11ExtensionPack mgl11ExtensionPack;
-
-    // Unsupported GL11 methods
-
-    public void glGetPointerv(int pname, java.nio.Buffer[] params) {
-        throw new UnsupportedOperationException();
+    public GLWrapperBase(GL gl) {
+        mgl = (GL10) gl;
+        if (gl instanceof GL10Ext) {
+            mgl10Ext = (GL10Ext) gl;
+        }
+        if (gl instanceof GL11) {
+            mgl11 = (GL11) gl;
+        }
+        if (gl instanceof GL11Ext) {
+            mgl11Ext = (GL11Ext) gl;
+        }
+        if (gl instanceof GL11ExtensionPack) {
+            mgl11ExtensionPack = (GL11ExtensionPack) gl;
+        }
     }
 
-    // VBO versions of *Pointer and *Elements methods
-    public void glColorPointer(int size, int type, int stride, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glNormalPointer(int type, int stride, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexCoordPointer(int size, int type, int stride, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glVertexPointer(int size, int type, int stride, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glDrawElements(int mode, int count, int type, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glBindBuffer(int target, int buffer) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glBufferData(int target, int size, Buffer data, int usage) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glBufferSubData(int target, int offset, int size, Buffer data) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glColor4ub(byte red, byte green, byte blue, byte alpha) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glDeleteBuffers(int n, int[] buffers, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glDeleteBuffers(int n, IntBuffer buffers) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGenBuffers(int n, int[] buffers, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGenBuffers(int n, IntBuffer buffers) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetBooleanv(int pname, boolean[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetBooleanv(int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetBufferParameteriv(int target, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetBufferParameteriv(int target, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetClipPlanef(int pname, float[] eqn, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetClipPlanef(int pname, FloatBuffer eqn) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetClipPlanex(int pname, int[] eqn, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetClipPlanex(int pname, IntBuffer eqn) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetFixedv(int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetFixedv(int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetFloatv(int pname, float[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetFloatv(int pname, FloatBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetLightfv(int light, int pname, float[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetLightfv(int light, int pname, FloatBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetLightxv(int light, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetLightxv(int light, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetMaterialfv(int face, int pname, float[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetMaterialfv(int face, int pname, FloatBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetMaterialxv(int face, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetMaterialxv(int face, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetTexEnviv(int env, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetTexEnviv(int env, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetTexEnvxv(int env, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetTexEnvxv(int env, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetTexParameterfv(int target, int pname, float[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetTexParameterfv(int target, int pname, FloatBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetTexParameteriv(int target, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetTexParameteriv(int target, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetTexParameterxv(int target, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetTexParameterxv(int target, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean glIsBuffer(int buffer) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean glIsEnabled(int cap) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean glIsTexture(int texture) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glPointParameterf(int pname, float param) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glPointParameterfv(int pname, float[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glPointParameterfv(int pname, FloatBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glPointParameterx(int pname, int param) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glPointParameterxv(int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glPointParameterxv(int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glPointSizePointerOES(int type, int stride, Buffer pointer) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexEnvi(int target, int pname, int param) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexEnviv(int target, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexEnviv(int target, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexParameterfv(int target, int pname, float[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexParameterfv(int target, int pname, FloatBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexParameteri(int target, int pname, int param) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexParameterxv(int target, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexParameterxv(int target, int pname, IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    // Unsupported GL11Ext methods
-
-    public void glCurrentPaletteMatrixOES(int matrixpaletteindex) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glLoadPaletteFromModelViewMatrixOES() {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glMatrixIndexPointerOES(int size, int type, int stride, Buffer pointer) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glMatrixIndexPointerOES(int size, int type, int stride, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glWeightPointerOES(int size, int type, int stride, Buffer pointer) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glWeightPointerOES(int size, int type, int stride, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    // Unsupported GL11ExtensionPack methods
-
-    public void glBindFramebufferOES(int target, int framebuffer) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glBindRenderbufferOES(int target, int renderbuffer) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glBlendEquation(int mode) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glBlendEquationSeparate(int modeRGB, int modeAlpha) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glBlendFuncSeparate(int srcRGB, int dstRGB, int srcAlpha, int dstAlpha) {
-        throw new UnsupportedOperationException();
-    }
-
-    int glCheckFramebufferStatusOES(int target) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glCompressedTexImage2D(int target, int level, int internalformat, int width, int height, int border, int imageSize) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glDeleteFramebuffersOES(int n, int[] framebuffers, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glDeleteFramebuffersOES(int n, java.nio.IntBuffer framebuffers) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glDeleteRenderbuffersOES(int n, int[] renderbuffers, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glDeleteRenderbuffersOES(int n, java.nio.IntBuffer renderbuffers) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glFramebufferRenderbufferOES(int target, int attachment, int renderbuffertarget, int renderbuffer) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glFramebufferTexture2DOES(int target, int attachment, int textarget, int texture, int level) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGenerateMipmapOES(int target) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGenFramebuffersOES(int n, int[] framebuffers, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGenFramebuffersOES(int n, java.nio.IntBuffer framebuffers) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGenRenderbuffersOES(int n, int[] renderbuffers, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGenRenderbuffersOES(int n, java.nio.IntBuffer renderbuffers) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetFramebufferAttachmentParameterivOES(int target, int attachment, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetFramebufferAttachmentParameterivOES(int target, int attachment, int pname, java.nio.IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetRenderbufferParameterivOES(int target, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetRenderbufferParameterivOES(int target, int pname, java.nio.IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetTexGenfv(int coord, int pname, float[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetTexGenfv(int coord, int pname, java.nio.FloatBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetTexGeniv(int coord, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetTexGeniv(int coord, int pname, java.nio.IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetTexGenxv(int coord, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glGetTexGenxv(int coord, int pname, java.nio.IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean glIsFramebufferOES(int framebuffer) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean glIsRenderbufferOES(int renderbuffer) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glRenderbufferStorageOES(int target, int internalformat, int width, int height) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexGenf(int coord, int pname, float param) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexGenfv(int coord, int pname, float[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexGenfv(int coord, int pname, java.nio.FloatBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexGeni(int coord, int pname, int param) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexGeniv(int coord, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexGeniv(int coord, int pname, java.nio.IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexGenx(int coord, int pname, int param) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexGenxv(int coord, int pname, int[] params, int offset) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void glTexGenxv(int coord, int pname, java.nio.IntBuffer params) {
-        throw new UnsupportedOperationException();
-    }
+    protected GL10 mgl;
+    protected GL10Ext mgl10Ext;
+    protected GL11 mgl11;
+    protected GL11Ext mgl11Ext;
+    protected GL11ExtensionPack mgl11ExtensionPack;
 }
diff --git a/opengl/java/android/opengl/Matrix.java b/opengl/java/android/opengl/Matrix.java
index 13ba36e..b9fd4ab 100644
--- a/opengl/java/android/opengl/Matrix.java
+++ b/opengl/java/android/opengl/Matrix.java
@@ -16,6 +16,8 @@
 
 package android.opengl;
 
+import javax.microedition.khronos.opengles.GL10;
+
 /**
  * Matrix math utilities. These methods operate on OpenGL ES format
  * matrices and vectors stored in float arrays.
@@ -582,4 +584,77 @@
         rm[rmOffset + 14] =  0.0f;
         rm[rmOffset + 15] =  1.0f;
     }
+
+    /**
+     * Define a viewing transformation in terms of an eye point, a center of
+     * view, and an up vector.
+     *
+     * @param rm returns the result
+     * @param rmOffset index into rm where the result matrix starts
+     * @param eyeX eye point X
+     * @param eyeY eye point Y
+     * @param eyeZ eye point Z
+     * @param centerX center of view X
+     * @param centerY center of view Y
+     * @param centerZ center of view Z
+     * @param upX up vector X
+     * @param upY up vector Y
+     * @param upZ up vector Z
+     */
+    public static void setLookAtM(float[] rm, int rmOffset,
+            float eyeX, float eyeY, float eyeZ,
+            float centerX, float centerY, float centerZ, float upX, float upY,
+            float upZ) {
+
+        // See the OpenGL GLUT documentation for gluLookAt for a description
+        // of the algorithm. We implement it in a straightforward way:
+
+        float fx = centerX - eyeX;
+        float fy = centerY - eyeY;
+        float fz = centerZ - eyeZ;
+
+        // Normalize f
+        float rlf = 1.0f / Matrix.length(fx, fy, fz);
+        fx *= rlf;
+        fy *= rlf;
+        fz *= rlf;
+
+        // compute s = f x up (x means "cross product")
+        float sx = fy * upZ - fz * upY;
+        float sy = fz * upX - fx * upZ;
+        float sz = fx * upY - fy * upX;
+
+        // and normalize s
+        float rls = 1.0f / Matrix.length(sx, sy, sz);
+        sx *= rls;
+        sy *= rls;
+        sz *= rls;
+
+        // compute u = s x f
+        float ux = sy * fz - sz * fy;
+        float uy = sz * fx - sx * fz;
+        float uz = sx * fy - sy * fx;
+
+        rm[rmOffset + 0] = sx;
+        rm[rmOffset + 1] = ux;
+        rm[rmOffset + 2] = -fx;
+        rm[rmOffset + 3] = 0.0f;
+
+        rm[rmOffset + 4] = sy;
+        rm[rmOffset + 5] = uy;
+        rm[rmOffset + 6] = -fy;
+        rm[rmOffset + 7] = 0.0f;
+
+        rm[rmOffset + 8] = sz;
+        rm[rmOffset + 9] = uz;
+        rm[rmOffset + 10] = -fz;
+        rm[rmOffset + 11] = 0.0f;
+
+        rm[rmOffset + 12] = 0.0f;
+        rm[rmOffset + 13] = 0.0f;
+        rm[rmOffset + 14] = 0.0f;
+        rm[rmOffset + 15] = 1.0f;
+
+        translateM(rm, rmOffset, -eyeX, -eyeY, -eyeZ);
+    }
 }
diff --git a/opengl/java/com/google/android/gles_jni/GLImpl.java b/opengl/java/com/google/android/gles_jni/GLImpl.java
index 36b6ea0..01a9c91 100644
--- a/opengl/java/com/google/android/gles_jni/GLImpl.java
+++ b/opengl/java/com/google/android/gles_jni/GLImpl.java
@@ -45,6 +45,9 @@
     Buffer _normalPointer = null;
     Buffer _texCoordPointer = null;
     Buffer _vertexPointer = null;
+    Buffer _pointSizePointerOES = null;
+    Buffer _matrixIndexPointerOES = null;
+    Buffer _weightPointerOES = null;
 
     public GLImpl() {
     }
@@ -1582,11 +1585,30 @@
 
     // C function void glPointSizePointerOES ( GLenum type, GLsizei stride, const GLvoid *pointer )
 
-    public native void glPointSizePointerOES(
+    private native void glPointSizePointerOESBounds(
+        int type,
+        int stride,
+        java.nio.Buffer pointer,
+        int remaining
+    );
+
+    public void glPointSizePointerOES(
         int type,
         int stride,
         java.nio.Buffer pointer
-    );
+    ) {
+        glPointSizePointerOESBounds(
+            type,
+            stride,
+            pointer,
+            pointer.remaining()
+        );
+        if (((type == GL_FLOAT) ||
+             (type == GL_FIXED)) &&
+            (stride >= 0)) {
+            _pointSizePointerOES = pointer;
+        }
+    }
 
     // C function void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, GLint offset )
 
@@ -1795,12 +1817,38 @@
 
     // C function void glMatrixIndexPointerOES ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer )
 
-    public native void glMatrixIndexPointerOES(
+    private native void glMatrixIndexPointerOESBounds(
+        int size,
+        int type,
+        int stride,
+        java.nio.Buffer pointer,
+        int remaining
+    );
+
+    public void glMatrixIndexPointerOES(
         int size,
         int type,
         int stride,
         java.nio.Buffer pointer
-    );
+    ) {
+        glMatrixIndexPointerOESBounds(
+            size,
+            type,
+            stride,
+            pointer,
+            pointer.remaining()
+        );
+        if (((size == 2) ||
+             (size == 3) ||
+             (size == 4)) &&
+            ((type == GL_FLOAT) ||
+             (type == GL_BYTE) ||
+             (type == GL_SHORT) ||
+             (type == GL_FIXED)) &&
+            (stride >= 0)) {
+            _matrixIndexPointerOES = pointer;
+        }
+    }
 
     // C function void glMatrixIndexPointerOES ( GLint size, GLenum type, GLsizei stride, GLint offset )
 
@@ -1813,12 +1861,28 @@
 
     // C function void glWeightPointerOES ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer )
 
-    public native void glWeightPointerOES(
+    private native void glWeightPointerOESBounds(
+        int size,
+        int type,
+        int stride,
+        java.nio.Buffer pointer,
+        int remaining
+    );
+
+    public void glWeightPointerOES(
         int size,
         int type,
         int stride,
         java.nio.Buffer pointer
-    );
+    ) {
+        glWeightPointerOESBounds(
+            size,
+            type,
+            stride,
+            pointer,
+            pointer.remaining()
+        );
+    }
 
     // C function void glWeightPointerOES ( GLint size, GLenum type, GLsizei stride, GLint offset )
 
diff --git a/opengl/libagl/fixed_asm.S b/opengl/libagl/fixed_asm.S
index 6cbc56f..05044f2 100644
--- a/opengl/libagl/fixed_asm.S
+++ b/opengl/libagl/fixed_asm.S
@@ -20,7 +20,9 @@
     .align
     
     .global gglFloatToFixed
+    .type gglFloatToFixed, %function
     .global gglFloatToFixedFast
+    .type gglFloatToFixedFast, %function
 
 
 /*
diff --git a/opengl/libagl/iterators.S b/opengl/libagl/iterators.S
index daf2937..8c86482 100644
--- a/opengl/libagl/iterators.S
+++ b/opengl/libagl/iterators.S
@@ -21,6 +21,7 @@
     .arm
     
     .global iterators0032
+    .type iterators0032, %function
 
 /*
  * iterators0032
diff --git a/opengl/libs/GLES_CM/gl.cpp b/opengl/libs/GLES_CM/gl.cpp
index 0c9352e..e7757a8 100644
--- a/opengl/libs/GLES_CM/gl.cpp
+++ b/opengl/libs/GLES_CM/gl.cpp
@@ -47,6 +47,12 @@
         GLsizei stride, const GLvoid *pointer, GLsizei count);
 GL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type,
         GLsizei stride, const GLvoid *pointer, GLsizei count);
+GL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type,
+        GLsizei stride, const GLvoid *pointer, GLsizei count);
+GL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type,
+        GLsizei stride, const GLvoid *pointer, GLsizei count);
+GL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type,
+        GLsizei stride, const GLvoid *pointer, GLsizei count);
 }
 
 void glColorPointerBounds(GLint size, GLenum type, GLsizei stride,
@@ -66,6 +72,21 @@
     glVertexPointer(size, type, stride, pointer);
 }
 
+void GL_APIENTRY glPointSizePointerOESBounds(GLenum type,
+        GLsizei stride, const GLvoid *pointer, GLsizei count) {
+    glPointSizePointerOES(type, stride, pointer);
+}
+
+GL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type,
+        GLsizei stride, const GLvoid *pointer, GLsizei count) {
+    glMatrixIndexPointerOES(size, type, stride, pointer);
+}
+
+GL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type,
+        GLsizei stride, const GLvoid *pointer, GLsizei count) {
+    glWeightPointerOES(size, type, stride, pointer);
+}
+
 // ----------------------------------------------------------------------------
 // Actual GL entry-points
 // ----------------------------------------------------------------------------
diff --git a/opengl/tests/fillrate/Android.mk b/opengl/tests/fillrate/Android.mk
index a7d30c2..191c59b 100644
--- a/opengl/tests/fillrate/Android.mk
+++ b/opengl/tests/fillrate/Android.mk
@@ -6,6 +6,7 @@
 
 LOCAL_SHARED_LIBRARIES := \
 	libcutils \
+	libutils \
     libEGL \
     libGLESv1_CM \
     libui
diff --git a/opengl/tests/finish/Android.mk b/opengl/tests/finish/Android.mk
index 5620814..aa607c6 100644
--- a/opengl/tests/finish/Android.mk
+++ b/opengl/tests/finish/Android.mk
@@ -6,6 +6,7 @@
 
 LOCAL_SHARED_LIBRARIES := \
 	libcutils \
+	libutils \
     libEGL \
     libGLESv1_CM \
     libui
diff --git a/opengl/tests/gl2_java/Android.mk b/opengl/tests/gl2_java/Android.mk
new file mode 100644
index 0000000..34f4aee
--- /dev/null
+++ b/opengl/tests/gl2_java/Android.mk
@@ -0,0 +1,18 @@
+#########################################################################
+# OpenGL ES 2.0 Java sample
+#########################################################################
+
+TOP_LOCAL_PATH:= $(call my-dir)
+
+# Build activity
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(call all-subdir-java-files)
+
+LOCAL_PACKAGE_NAME := GL2Java
+
+include $(BUILD_PACKAGE)
diff --git a/opengl/tests/gl2_java/AndroidManifest.xml b/opengl/tests/gl2_java/AndroidManifest.xml
new file mode 100644
index 0000000..585b63f1
--- /dev/null
+++ b/opengl/tests/gl2_java/AndroidManifest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License"); 
+** you may not use this file except in compliance with the License. 
+** You may obtain a copy of the License at 
+**
+**     http://www.apache.org/licenses/LICENSE-2.0 
+**
+** Unless required by applicable law or agreed to in writing, software 
+** distributed under the License is distributed on an "AS IS" BASIS, 
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+** See the License for the specific language governing permissions and 
+** limitations under the License.
+*/
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.gl2java">
+    <uses-feature android:glEsVersion="0x00020000" />
+    <application
+            android:label="@string/gl2java_activity">
+        <activity android:name="GL2JavaActivity"
+                android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
+            	android:launchMode="singleTask"
+            	android:configChanges="orientation|keyboardHidden">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/opengl/tests/gl2_java/res/values/strings.xml b/opengl/tests/gl2_java/res/values/strings.xml
new file mode 100644
index 0000000..d718b1d
--- /dev/null
+++ b/opengl/tests/gl2_java/res/values/strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2006, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License"); 
+** you may not use this file except in compliance with the License. 
+** You may obtain a copy of the License at 
+**
+**     http://www.apache.org/licenses/LICENSE-2.0 
+**
+** Unless required by applicable law or agreed to in writing, software 
+** distributed under the License is distributed on an "AS IS" BASIS, 
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+** See the License for the specific language governing permissions and 
+** limitations under the License.
+*/
+-->
+
+<!-- This file contains resource definitions for displayed strings, allowing
+     them to be changed based on the locale and options. -->
+
+<resources>
+    <!-- Simple strings. -->
+    <string name="gl2java_activity">GL2Java</string>
+
+</resources>
+
diff --git a/opengl/tests/gl2_java/src/com/android/gl2java/GL2JavaActivity.java b/opengl/tests/gl2_java/src/com/android/gl2java/GL2JavaActivity.java
new file mode 100644
index 0000000..37654fb
--- /dev/null
+++ b/opengl/tests/gl2_java/src/com/android/gl2java/GL2JavaActivity.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.gl2java;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.WindowManager;
+
+import java.io.File;
+
+
+public class GL2JavaActivity extends Activity {
+
+    GL2JavaView mView;
+
+    @Override protected void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        mView = new GL2JavaView(getApplication());
+	setContentView(mView);
+    }
+
+    @Override protected void onPause() {
+        super.onPause();
+        mView.onPause();
+    }
+
+    @Override protected void onResume() {
+        super.onResume();
+        mView.onResume();
+    }
+}
diff --git a/opengl/tests/gl2_java/src/com/android/gl2java/GL2JavaView.java b/opengl/tests/gl2_java/src/com/android/gl2java/GL2JavaView.java
new file mode 100644
index 0000000..7f2bfd3
--- /dev/null
+++ b/opengl/tests/gl2_java/src/com/android/gl2java/GL2JavaView.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.gl2java;
+
+import android.content.Context;
+import android.opengl.GLSurfaceView;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.FloatBuffer;
+
+import javax.microedition.khronos.egl.EGL10;
+import javax.microedition.khronos.egl.EGLConfig;
+import javax.microedition.khronos.egl.EGLContext;
+import javax.microedition.khronos.egl.EGLDisplay;
+import javax.microedition.khronos.opengles.GL10;
+
+import android.opengl.GLES20;
+
+/**
+ * An implementation of SurfaceView that uses the dedicated surface for
+ * displaying an OpenGL animation.  This allows the animation to run in a
+ * separate thread, without requiring that it be driven by the update mechanism
+ * of the view hierarchy.
+ *
+ * The application-specific rendering code is delegated to a GLView.Renderer
+ * instance.
+ */
+class GL2JavaView extends GLSurfaceView {
+    private static String TAG = "GL2JavaView";
+
+    public GL2JavaView(Context context) {
+        super(context);
+        setEGLContextClientVersion(2);
+        setRenderer(new Renderer());
+    }
+
+    private static class Renderer implements GLSurfaceView.Renderer {
+
+        public Renderer() {
+            mTriangleVertices = ByteBuffer.allocateDirect(mTriangleVerticesData.length * 4)
+                .order(ByteOrder.nativeOrder()).asFloatBuffer();
+            mTriangleVertices.put(mTriangleVerticesData).position(0);
+        }
+
+        public void onDrawFrame(GL10 gl) {
+            GLES20.glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
+            GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
+            GLES20.glUseProgram(mProgram);
+            checkGlError("glUseProgram");
+
+            GLES20.glVertexAttribPointer(mvPositionHandle, 2, GLES20.GL_FLOAT, false, 0, mTriangleVertices);
+            checkGlError("glVertexAttribPointer");
+            GLES20.glEnableVertexAttribArray(mvPositionHandle);
+            checkGlError("glEnableVertexAttribArray");
+            GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 3);
+            checkGlError("glDrawArrays");
+
+        }
+
+        public void onSurfaceChanged(GL10 gl, int width, int height) {
+            GLES20.glViewport(0, 0, width, height);
+        }
+
+        public void onSurfaceCreated(GL10 gl, EGLConfig config) {
+            mProgram = createProgram(mVertexShader, mFragmentShader);
+            if (mProgram == 0) {
+                return;
+            }
+            mvPositionHandle = GLES20.glGetAttribLocation(mProgram, "vPosition");
+            checkGlError("glGetAttribLocation");
+            if (mvPositionHandle == -1) {
+                throw new RuntimeException("Could not get attrib location for vPosition");
+            }
+        }
+
+        private int loadShader(int shaderType, String source) {
+            int shader = GLES20.glCreateShader(shaderType);
+            if (shader != 0) {
+                GLES20.glShaderSource(shader, source);
+                GLES20.glCompileShader(shader);
+                int[] compiled = new int[1];
+                GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0);
+                if (compiled[0] == 0) {
+                    Log.e(TAG, "Could not compile shader " + shaderType + ":");
+                    Log.e(TAG, GLES20.glGetShaderInfoLog(shader));
+                    GLES20.glDeleteShader(shader);
+                    shader = 0;
+                }
+            }
+            return shader;
+        }
+
+        private int createProgram(String vertexSource, String fragmentSource) {
+            int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexSource);
+            if (vertexShader == 0) {
+                return 0;
+            }
+
+            int pixelShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentSource);
+            if (pixelShader == 0) {
+                return 0;
+            }
+
+            int program = GLES20.glCreateProgram();
+            if (program != 0) {
+                GLES20.glAttachShader(program, vertexShader);
+                checkGlError("glAttachShader");
+                GLES20.glAttachShader(program, pixelShader);
+                checkGlError("glAttachShader");
+                GLES20.glLinkProgram(program);
+                int[] linkStatus = new int[1];
+                GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, linkStatus, 0);
+                if (linkStatus[0] != GLES20.GL_TRUE) {
+                    Log.e(TAG, "Could not link program: ");
+                    Log.e(TAG, GLES20.glGetProgramInfoLog(program));
+                    GLES20.glDeleteProgram(program);
+                    program = 0;
+                }
+            }
+            return program;
+        }
+
+        private void checkGlError(String op) {
+            int error;
+            while ((error = GLES20.glGetError()) != GLES20.GL_NO_ERROR) {
+                Log.e(TAG, op + ": glError " + error);
+                throw new RuntimeException(op + ": glError " + error);
+            }
+        }
+
+        private final float[] mTriangleVerticesData = { 0.0f, 0.5f, -0.5f, -0.5f,
+                0.5f, -0.5f };
+
+        private FloatBuffer mTriangleVertices;
+
+        private final String mVertexShader = "attribute vec4 vPosition;\n"
+            + "void main() {\n"
+            + "  gl_Position = vPosition;\n"
+            + "}\n";
+
+        private final String mFragmentShader = "precision mediump float;\n"
+            + "void main() {\n"
+            + "  gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);\n"
+            + "}\n";
+
+        private int mProgram;
+        private int mvPositionHandle;
+
+    }
+}
+
diff --git a/opengl/tests/swapinterval/Android.mk b/opengl/tests/swapinterval/Android.mk
index 619447c..9a4145e 100644
--- a/opengl/tests/swapinterval/Android.mk
+++ b/opengl/tests/swapinterval/Android.mk
@@ -6,6 +6,7 @@
 
 LOCAL_SHARED_LIBRARIES := \
 	libcutils \
+	libutils \
     libEGL \
     libGLESv1_CM \
     libui
diff --git a/opengl/tools/glgen/gen b/opengl/tools/glgen/gen
index 9bff0b2..6c1a231 100755
--- a/opengl/tools/glgen/gen
+++ b/opengl/tools/glgen/gen
@@ -63,7 +63,7 @@
 
 pushd out > /dev/null
 mkdir classes
-javac -d classes com/google/android/gles_jni/GLImpl.java javax/microedition/khronos/opengles/GL10.java javax/microedition/khronos/opengles/GL10Ext.java javax/microedition/khronos/opengles/GL11.java javax/microedition/khronos/opengles/GL11Ext.java javax/microedition/khronos/opengles/GL11ExtensionPack.java android/opengl/GLES10.java android/opengl/GLES10Ext.java android/opengl/GLES11.java android/opengl/GLES11Ext.java
+javac -d classes com/google/android/gles_jni/GLImpl.java javax/microedition/khronos/opengles/GL10.java javax/microedition/khronos/opengles/GL10Ext.java javax/microedition/khronos/opengles/GL11.java javax/microedition/khronos/opengles/GL11Ext.java javax/microedition/khronos/opengles/GL11ExtensionPack.java android/opengl/GLES10.java android/opengl/GLES10Ext.java android/opengl/GLES11.java android/opengl/GLES11Ext.java android/opengl/GLES20.java
 popd > /dev/null
 JAVA_RESULT=$?
 if [ $JAVA_RESULT -ne 0 ]; then
@@ -109,7 +109,7 @@
     compareGenerated ../../java/javax/microedition/khronos/opengles generated/javax/microedition/khronos/opengles $x
 done
 
-for x in GLES10 GLES10Ext GLES11 GLES11Ext
+for x in GLES10 GLES10Ext GLES11 GLES11Ext GLES20
 do
     compareGenerated ../../java/android/opengl generated/android/opengl ${x}.java
     compareGenerated ../../../core/jni generated/C android_opengl_${x}.cpp
diff --git a/opengl/tools/glgen/specs/gles11/GLES20.spec b/opengl/tools/glgen/specs/gles11/GLES20.spec
new file mode 100644
index 0000000..61094d1
--- /dev/null
+++ b/opengl/tools/glgen/specs/gles11/GLES20.spec
@@ -0,0 +1,142 @@
+void glActiveTexture ( GLenum texture )

+void glAttachShader ( GLuint program, GLuint shader )

+void glBindAttribLocation ( GLuint program, GLuint index, const char *name )

+void glBindBuffer ( GLenum target, GLuint buffer )

+void glBindFramebuffer ( GLenum target, GLuint framebuffer )

+void glBindRenderbuffer ( GLenum target, GLuint renderbuffer )

+void glBindTexture ( GLenum target, GLuint texture )

+void glBlendColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha )

+void glBlendEquation ( GLenum mode )

+void glBlendEquationSeparate ( GLenum modeRGB, GLenum modeAlpha )

+void glBlendFunc ( GLenum sfactor, GLenum dfactor )

+void glBlendFuncSeparate ( GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha )

+void glBufferData ( GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage )

+void glBufferSubData ( GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data )

+GLenum glCheckFramebufferStatus ( GLenum target )

+void glClear ( GLbitfield mask )

+void glClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha )

+void glClearDepthf ( GLclampf depth )

+void glClearStencil ( GLint s )

+void glColorMask ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha )

+void glCompileShader ( GLuint shader )

+void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data )

+void glCompressedTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data )

+void glCopyTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border )

+void glCopyTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height )

+GLuint glCreateProgram ( void )

+GLuint glCreateShader ( GLenum type )

+void glCullFace ( GLenum mode )

+void glDeleteBuffers ( GLsizei n, const GLuint *buffers )

+void glDeleteFramebuffers ( GLsizei n, const GLuint *framebuffers )

+void glDeleteProgram ( GLuint program )

+void glDeleteRenderbuffers ( GLsizei n, const GLuint *renderbuffers )

+void glDeleteShader ( GLuint shader )

+void glDeleteTextures ( GLsizei n, const GLuint *textures )

+void glDepthFunc ( GLenum func )

+void glDepthMask ( GLboolean flag )

+void glDepthRangef ( GLclampf zNear, GLclampf zFar )

+void glDetachShader ( GLuint program, GLuint shader )

+void glDisable ( GLenum cap )

+void glDisableVertexAttribArray ( GLuint index )

+void glDrawArrays ( GLenum mode, GLint first, GLsizei count )

+void glDrawElements ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices )

+void glEnable ( GLenum cap )

+void glEnableVertexAttribArray ( GLuint index )

+void glFinish ( void )

+void glFlush ( void )

+void glFramebufferRenderbuffer ( GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer )

+void glFramebufferTexture2D ( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level )

+void glFrontFace ( GLenum mode )

+void glGenBuffers ( GLsizei n, GLuint *buffers )

+void glGenerateMipmap ( GLenum target )

+void glGenFramebuffers ( GLsizei n, GLuint *framebuffers )

+void glGenRenderbuffers ( GLsizei n, GLuint *renderbuffers )

+void glGenTextures ( GLsizei n, GLuint *textures )

+void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name )

+void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name )

+void glGetAttachedShaders ( GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders )

+int glGetAttribLocation ( GLuint program, const char *name )

+void glGetBooleanv ( GLenum pname, GLboolean *params )

+void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params )

+GLenum glGetError ( void )

+void glGetFloatv ( GLenum pname, GLfloat *params )

+void glGetFramebufferAttachmentParameteriv ( GLenum target, GLenum attachment, GLenum pname, GLint *params )

+void glGetIntegerv ( GLenum pname, GLint *params )

+void glGetProgramiv ( GLuint program, GLenum pname, GLint *params )

+void glGetProgramInfoLog ( GLuint program, GLsizei bufsize, GLsizei *length, char *infolog )

+void glGetRenderbufferParameteriv ( GLenum target, GLenum pname, GLint *params )

+void glGetShaderiv ( GLuint shader, GLenum pname, GLint *params )

+void glGetShaderInfoLog ( GLuint shader, GLsizei bufsize, GLsizei *length, char *infolog )

+void glGetShaderPrecisionFormat ( GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision )

+void glGetShaderSource ( GLuint shader, GLsizei bufsize, GLsizei *length, char *source )

+const GLubyte * glGetString ( GLenum name )

+void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params )

+void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params )

+void glGetUniformfv ( GLuint program, GLint location, GLfloat *params )

+void glGetUniformiv ( GLuint program, GLint location, GLint *params )

+int glGetUniformLocation ( GLuint program, const char *name )

+void glGetVertexAttribfv ( GLuint index, GLenum pname, GLfloat *params )

+void glGetVertexAttribiv ( GLuint index, GLenum pname, GLint *params )

+// void glGetVertexAttribPointerv ( GLuint index, GLenum pname, void **pointer )

+void glHint ( GLenum target, GLenum mode )

+GLboolean glIsBuffer ( GLuint buffer )

+GLboolean glIsEnabled ( GLenum cap )

+GLboolean glIsFramebuffer ( GLuint framebuffer )

+GLboolean glIsProgram ( GLuint program )

+GLboolean glIsRenderbuffer ( GLuint renderbuffer )

+GLboolean glIsShader ( GLuint shader )

+GLboolean glIsTexture ( GLuint texture )

+void glLineWidth ( GLfloat width )

+void glLinkProgram ( GLuint program )

+void glPixelStorei ( GLenum pname, GLint param )

+void glPolygonOffset ( GLfloat factor, GLfloat units )

+void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels )

+void glReleaseShaderCompiler ( void )

+void glRenderbufferStorage ( GLenum target, GLenum internalformat, GLsizei width, GLsizei height )

+void glSampleCoverage ( GLclampf value, GLboolean invert )

+void glScissor ( GLint x, GLint y, GLsizei width, GLsizei height )

+void glShaderBinary ( GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length )

+void glShaderSource ( GLuint shader )

+void glStencilFunc ( GLenum func, GLint ref, GLuint mask )

+void glStencilFuncSeparate ( GLenum face, GLenum func, GLint ref, GLuint mask )

+void glStencilMask ( GLuint mask )

+void glStencilMaskSeparate ( GLenum face, GLuint mask )

+void glStencilOp ( GLenum fail, GLenum zfail, GLenum zpass )

+void glStencilOpSeparate ( GLenum face, GLenum fail, GLenum zfail, GLenum zpass )

+void glTexImage2D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels )

+void glTexParameterf ( GLenum target, GLenum pname, GLfloat param )

+void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params )

+void glTexParameteri ( GLenum target, GLenum pname, GLint param )

+void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params )

+void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels )

+void glUniform1f ( GLint location, GLfloat x )

+void glUniform1fv ( GLint location, GLsizei count, const GLfloat *v )

+void glUniform1i ( GLint location, GLint x )

+void glUniform1iv ( GLint location, GLsizei count, const GLint *v )

+void glUniform2f ( GLint location, GLfloat x, GLfloat y )

+void glUniform2fv ( GLint location, GLsizei count, const GLfloat *v )

+void glUniform2i ( GLint location, GLint x, GLint y )

+void glUniform2iv ( GLint location, GLsizei count, const GLint *v )

+void glUniform3f ( GLint location, GLfloat x, GLfloat y, GLfloat z )

+void glUniform3fv ( GLint location, GLsizei count, const GLfloat *v )

+void glUniform3i ( GLint location, GLint x, GLint y, GLint z )

+void glUniform3iv ( GLint location, GLsizei count, const GLint *v )

+void glUniform4f ( GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w )

+void glUniform4fv ( GLint location, GLsizei count, const GLfloat *v )

+void glUniform4i ( GLint location, GLint x, GLint y, GLint z, GLint w )

+void glUniform4iv ( GLint location, GLsizei count, const GLint *v )

+void glUniformMatrix2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value )

+void glUniformMatrix3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value )

+void glUniformMatrix4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value )

+void glUseProgram ( GLuint program )

+void glValidateProgram ( GLuint program )

+void glVertexAttrib1f ( GLuint indx, GLfloat x )

+void glVertexAttrib1fv ( GLuint indx, const GLfloat *values )

+void glVertexAttrib2f ( GLuint indx, GLfloat x, GLfloat y )

+void glVertexAttrib2fv ( GLuint indx, const GLfloat *values )

+void glVertexAttrib3f ( GLuint indx, GLfloat x, GLfloat y, GLfloat z )

+void glVertexAttrib3fv ( GLuint indx, const GLfloat *values )

+void glVertexAttrib4f ( GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w )

+void glVertexAttrib4fv ( GLuint indx, const GLfloat *values )

+void glVertexAttribPointer ( GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *ptr )

+void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height )
\ No newline at end of file
diff --git a/opengl/tools/glgen/specs/gles11/checks.spec b/opengl/tools/glgen/specs/gles11/checks.spec
index 1468ab9..f917128 100644
--- a/opengl/tools/glgen/specs/gles11/checks.spec
+++ b/opengl/tools/glgen/specs/gles11/checks.spec
@@ -37,7 +37,6 @@
 glBlendEquationSeparate unsupported
 glBlendFuncSeparate unsupported
 glCheckFramebufferStatusOES unsupported return 0
-glCurrentPaletteMatrixOES unsupported
 glDeleteFramebuffersOES unsupported
 glDeleteRenderbuffersOES unsupported
 glFramebufferRenderbufferOES unsupported
@@ -52,11 +51,8 @@
 glGetTexGen unsupported
 glIsFramebufferOES unsupported return JNI_FALSE
 glIsRenderbufferOES unsupported return JNI_FALSE
-glLoadPaletteFromModelViewMatrixOES unsupported
-glMatrixIndexPointerOES unsupported
 glRenderbufferStorageOES unsupported return false
 glTexGen unsupported
 glTexGenf unsupported
 glTexGeni unsupported
 glTexGenx unsupported
-glWeightPointerOES unsupported
diff --git a/opengl/tools/glgen/specs/jsr239/glspec-checks b/opengl/tools/glgen/specs/jsr239/glspec-checks
index 063cdc7..c28e403 100644
--- a/opengl/tools/glgen/specs/jsr239/glspec-checks
+++ b/opengl/tools/glgen/specs/jsr239/glspec-checks
@@ -35,7 +35,6 @@
 glBlendEquationSeparate unsupported
 glBlendFuncSeparate unsupported
 glCheckFramebufferStatusOES unsupported return 0
-glCurrentPaletteMatrixOES unsupported
 glDeleteFramebuffersOES unsupported
 glDeleteRenderbuffersOES unsupported
 glFramebufferRenderbufferOES unsupported
@@ -50,11 +49,8 @@
 glGetTexGen unsupported
 glIsFramebufferOES unsupported return JNI_FALSE
 glIsRenderbufferOES unsupported return JNI_FALSE
-glLoadPaletteFromModelViewMatrixOES unsupported
-glMatrixIndexPointerOES unsupported
 glRenderbufferStorageOES unsupported return false
 glTexGen unsupported
 glTexGenf unsupported
 glTexGeni unsupported
 glTexGenx unsupported
-glWeightPointerOES unsupported
diff --git a/opengl/tools/glgen/src/CType.java b/opengl/tools/glgen/src/CType.java
index 826c90d..d49e9ef 100644
--- a/opengl/tools/glgen/src/CType.java
+++ b/opengl/tools/glgen/src/CType.java
@@ -44,8 +44,12 @@
         baseType.equals("void");
     }
 
+    public boolean isConstCharPointer() {
+        return isConst && isPointer && baseType.equals("char");
+    }
+
     public boolean isTypedPointer() {
-    return isPointer() && !isVoid();
+    return isPointer() && !isVoid() && !isConstCharPointer();
     }
 
     public void setBaseType(String baseType) {
diff --git a/opengl/tools/glgen/src/GenerateGLES.java b/opengl/tools/glgen/src/GenerateGLES.java
index 60775b7..08063f3 100644
--- a/opengl/tools/glgen/src/GenerateGLES.java
+++ b/opengl/tools/glgen/src/GenerateGLES.java
@@ -70,7 +70,7 @@
 
         // Generate files
         for(String suffix: new String[] {"GLES10", "GLES10Ext",
-                "GLES11", "GLES11Ext"})
+                "GLES11", "GLES11Ext", "GLES20"})
         {
             BufferedReader spec11Reader =
                 new BufferedReader(new FileReader("specs/gles11/"
diff --git a/opengl/tools/glgen/src/JType.java b/opengl/tools/glgen/src/JType.java
index df1177b..32d9fe7 100644
--- a/opengl/tools/glgen/src/JType.java
+++ b/opengl/tools/glgen/src/JType.java
@@ -6,6 +6,7 @@
     String baseType;
     boolean isArray;
     boolean isClass;
+    boolean isString;
 
     static HashMap<CType,JType> typeMapping = new HashMap<CType,JType>();
     static HashMap<CType,JType> arrayTypeMapping = new HashMap<CType,JType>();
@@ -27,7 +28,10 @@
     typeMapping.put(new CType("GLubyte"), new JType("byte"));
     typeMapping.put(new CType("GLuint"), new JType("int"));
     typeMapping.put(new CType("void"), new JType("void"));
-    typeMapping.put(new CType("GLubyte", true, true), new JType("String"));
+    typeMapping.put(new CType("GLubyte", true, true), new JType("String", false, false));
+    typeMapping.put(new CType("char", false, true), new JType("byte"));
+    typeMapping.put(new CType("char", true, true), new JType("String", false, false));
+    typeMapping.put(new CType("int"), new JType("int"));
 
     // Untyped pointers map to untyped Buffers
     typeMapping.put(new CType("GLvoid", true, true),
@@ -42,6 +46,8 @@
     // Typed pointers map to typed Buffers
     typeMapping.put(new CType("GLboolean", false, true),
             new JType("java.nio.IntBuffer", true, false));
+    typeMapping.put(new CType("GLenum", false, true),
+            new JType("java.nio.IntBuffer", true, false));
     typeMapping.put(new CType("GLfixed", false, true),
             new JType("java.nio.IntBuffer", true, false));
     typeMapping.put(new CType("GLfixed", true, true),
@@ -54,6 +60,8 @@
             new JType("java.nio.IntBuffer", true, false));
     typeMapping.put(new CType("GLint", true, true),
             new JType("java.nio.IntBuffer", true, false));
+    typeMapping.put(new CType("GLsizei", false, true),
+            new JType("java.nio.IntBuffer", true, false));
     typeMapping.put(new CType("GLuint", false, true),
             new JType("java.nio.IntBuffer", true, false));
     typeMapping.put(new CType("GLuint", true, true),
@@ -62,8 +70,11 @@
             new JType("java.nio.ShortBuffer", true, false));
 
     // Typed pointers map to arrays + offsets
+    arrayTypeMapping.put(new CType("char", false, true),
+            new JType("byte", false, true));
     arrayTypeMapping.put(new CType("GLboolean", false, true),
                  new JType("boolean", false, true));
+    arrayTypeMapping.put(new CType("GLenum", false, true), new JType("int", false, true));
     arrayTypeMapping.put(new CType("GLfixed", true, true), new JType("int", false, true));
     arrayTypeMapping.put(new CType("GLfixed", false, true), new JType("int", false, true));
     arrayTypeMapping.put(new CType("GLfloat", false, true), new JType("float", false, true));
@@ -71,6 +82,8 @@
     arrayTypeMapping.put(new CType("GLint", false, true), new JType("int", false, true));
     arrayTypeMapping.put(new CType("GLint", true, true), new JType("int", false, true));
     arrayTypeMapping.put(new CType("GLshort", true, true), new JType("short", false, true));
+    arrayTypeMapping.put(new CType("GLsizei", false, true), new JType("int", false, true));
+    arrayTypeMapping.put(new CType("GLsizei", true, true), new JType("int", false, true));
     arrayTypeMapping.put(new CType("GLuint", false, true), new JType("int", false, true));
     arrayTypeMapping.put(new CType("GLuint", true, true), new JType("int", false, true));
     arrayTypeMapping.put(new CType("GLintptr"), new JType("int", false, true));
@@ -109,6 +122,10 @@
     return isClass;
     }
 
+    public boolean isString() {
+        return baseType.equals("String");
+    }
+
     public boolean isPrimitive() {
     return !isClass() && !isArray();
     }
diff --git a/opengl/tools/glgen/src/JniCodeEmitter.java b/opengl/tools/glgen/src/JniCodeEmitter.java
index 2cdb244..e79170a 100644
--- a/opengl/tools/glgen/src/JniCodeEmitter.java
+++ b/opengl/tools/glgen/src/JniCodeEmitter.java
@@ -37,6 +37,12 @@
             jniName += "L";
         } else if (baseType.equals("byte")) {
             jniName += "B";
+        } else if (baseType.equals("String")) {
+            jniName += "Ljava/lang/String;";
+        } else if (baseType.equals("void")) {
+            // nothing.
+        } else {
+            throw new RuntimeException("Uknown primitive basetype " + baseType);
         }
         return jniName;
     }
@@ -113,10 +119,15 @@
         emitFunction(jfunc, out, false, false);
     }
 
+    boolean isPointerFunc(JFunc jfunc) {
+        String name = jfunc.getName();
+        return (name.endsWith("Pointer") || name.endsWith("PointerOES"))
+            && jfunc.getCFunc().hasPointerArg();
+    }
+
     void emitFunctionCall(JFunc jfunc, PrintStream out, String iii, boolean grabArray) {
         boolean isVoid = jfunc.getType().isVoid();
-        boolean isPointerFunc = jfunc.getName().endsWith("Pointer") &&
-            jfunc.getCFunc().hasPointerArg();
+        boolean isPointerFunc = isPointerFunc(jfunc);
 
         if (!isVoid) {
             out.println(iii +
@@ -400,9 +411,7 @@
      *   if !interfaceDecl: public <returntype> func(args) { body }
      */
     void emitFunction(JFunc jfunc, PrintStream out, boolean nativeDecl, boolean interfaceDecl) {
-        boolean isPointerFunc =
-            jfunc.getName().endsWith("Pointer") &&
-            jfunc.getCFunc().hasPointerArg();
+        boolean isPointerFunc = isPointerFunc(jfunc);
 
         if (!nativeDecl && !interfaceDecl && !isPointerFunc) {
             // If it's not a pointer function, we've already emitted it
@@ -504,6 +513,34 @@
                     out.println(iii + "    (stride >= 0)) {");
                     out.println(iii + indent + "_vertexPointer = pointer;");
                     out.println(iii + "}");
+                } else if (fname.equals("glPointSizePointerOES")) {
+                    out.println(iii + "if (((type == GL_FLOAT) ||");
+                    out.println(iii + "     (type == GL_FIXED)) &&");
+                    out.println(iii + "    (stride >= 0)) {");
+                    out.println(iii + indent + "_pointSizePointerOES = pointer;");
+                    out.println(iii + "}");
+                } else if (fname.equals("glMatrixIndexPointerOES")) {
+                    out.println(iii + "if (((size == 2) ||");
+                    out.println(iii + "     (size == 3) ||");
+                    out.println(iii + "     (size == 4)) &&");
+                    out.println(iii + "    ((type == GL_FLOAT) ||");
+                    out.println(iii + "     (type == GL_BYTE) ||");
+                    out.println(iii + "     (type == GL_SHORT) ||");
+                    out.println(iii + "     (type == GL_FIXED)) &&");
+                    out.println(iii + "    (stride >= 0)) {");
+                    out.println(iii + indent + "_matrixIndexPointerOES = pointer;");
+                    out.println(iii + "}");
+                } else if (fname.equals("glWeightPointer")) {
+                    out.println(iii + "if (((size == 2) ||");
+                    out.println(iii + "     (size == 3) ||");
+                    out.println(iii + "     (size == 4)) &&");
+                    out.println(iii + "    ((type == GL_FLOAT) ||");
+                    out.println(iii + "     (type == GL_BYTE) ||");
+                    out.println(iii + "     (type == GL_SHORT) ||");
+                    out.println(iii + "     (type == GL_FIXED)) &&");
+                    out.println(iii + "    (stride >= 0)) {");
+                    out.println(iii + indent + "_weightPointerOES = pointer;");
+                    out.println(iii + "}");
                 }
             }
 
@@ -603,9 +640,9 @@
         //
 
         String outName = "android_" + jfunc.getName();
-        boolean isPointerFunc = outName.endsWith("Pointer") &&
-            jfunc.getCFunc().hasPointerArg();
+        boolean isPointerFunc = isPointerFunc(jfunc);
         boolean isVBOPointerFunc = (outName.endsWith("Pointer") ||
+                outName.endsWith("PointerOES") ||
             outName.endsWith("DrawElements")) &&
             !jfunc.getCFunc().hasPointerArg();
         if (isPointerFunc) {
@@ -629,7 +666,7 @@
         }
 
         // Append signature to function name
-        String sig = getJniMangledName(signature).replace('.', '_');
+        String sig = getJniMangledName(signature).replace('.', '_').replace('/', '_');
         out.print("__" + sig);
         outName += "__" + sig;
 
@@ -652,6 +689,7 @@
         nativeRegistrations.add(s);
 
         List<Integer> nonPrimitiveArgs = new ArrayList<Integer>();
+        List<Integer> stringArgs = new ArrayList<Integer>();
         int numBufferArgs = 0;
         List<String> bufferArgNames = new ArrayList<String>();
 
@@ -682,6 +720,9 @@
             } else {
                 suffix = "";
             }
+            if (argType.isString()) {
+                stringArgs.add(new Integer(i));
+            }
 
             out.print(getJniType(argType) + " " + jfunc.getArgName(i) + suffix);
         }
@@ -692,14 +733,19 @@
 
         int numArrays = 0;
         int numBuffers = 0;
+        int numStrings = 0;
         for (int i = 0; i < nonPrimitiveArgs.size(); i++) {
             int idx = nonPrimitiveArgs.get(i).intValue();
-            if (jfunc.getArgType(idx).isArray()) {
+            JType argType = jfunc.getArgType(idx);
+            if (argType.isArray()) {
                 ++numArrays;
             }
-            if (jfunc.getArgType(idx).isBuffer()) {
+            if (argType.isBuffer()) {
                 ++numBuffers;
             }
+            if (argType.isString()) {
+                ++numStrings;
+            }
         }
 
         // Emit method body
@@ -736,7 +782,9 @@
                 "android::gl::ogles_context_t *ctx = getContext(_env, _this);");
         }
 
-        boolean emitExceptionCheck = (numArrays > 0 || numBuffers > 0) &&
+        boolean initializeReturnValue = stringArgs.size() > 0;
+
+        boolean emitExceptionCheck = (numArrays > 0 || numBuffers > 0 || numStrings > 0) &&
             hasNonConstArg(jfunc, cfunc, nonPrimitiveArgs);
         // mChecker.getChecks(cfunc.getName()) != null
 
@@ -759,6 +807,9 @@
             if (retval != null) {
                 out.println(indent + returnType.getDeclaration() +
                             " _returnValue = " + retval + ";");
+            } else if (initializeReturnValue) {
+                out.println(indent + returnType.getDeclaration() +
+                " _returnValue = 0;");
             } else {
                 out.println(indent + returnType.getDeclaration() +
                             " _returnValue;");
@@ -789,7 +840,7 @@
                                 jfunc.getArgName(idx) +
                                 "_base = (" + decl + ") 0;");
                 }
-                remaining = (numArrays <= 1 && numBuffers <= 1) ? "_remaining" :
+                remaining = ((numArrays + numBuffers) <= 1) ? "_remaining" :
                     "_" + cname + "Remaining";
                 out.println(indent +
                             "jint " + remaining + ";");
@@ -803,6 +854,40 @@
             out.println();
         }
 
+        // Emit local variable declaration for strings
+        if (stringArgs.size() > 0) {
+            for (int i = 0; i < stringArgs.size(); i++) {
+                int idx = stringArgs.get(i).intValue();
+                int cIndex = jfunc.getArgCIndex(idx);
+                String cname = cfunc.getArgName(cIndex);
+
+                out.println(indent + "const char* _native" + cname + " = 0;");
+            }
+
+            out.println();
+        }
+
+        // Null pointer checks and GetStringUTFChars
+        if (stringArgs.size() > 0) {
+            for (int i = 0; i < stringArgs.size(); i++) {
+                int idx = stringArgs.get(i).intValue();
+                int cIndex = jfunc.getArgCIndex(idx);
+                String cname = cfunc.getArgName(cIndex);
+
+                CType type = cfunc.getArgType(jfunc.getArgCIndex(idx));
+                String decl = type.getDeclaration();
+                out.println(indent + "if (!" + cname + ") {");
+                out.println(indent + "    _env->ThrowNew(IAEClass, \"" + cname + " == null\");");
+                out.println(indent + "    goto exit;");
+                needsExit = true;
+                out.println(indent + "}");
+
+                out.println(indent + "_native" + cname + " = _env->GetStringUTFChars(" + cname + ", 0);");
+            }
+
+            out.println();
+        }
+
         // Emit 'GetPrimitiveArrayCritical' for arrays
         // Emit 'GetPointer' calls for Buffer pointers
         int bufArgIdx = 0;
@@ -814,7 +899,7 @@
                 String cname = cfunc.getArgName(cIndex);
                 offset = numArrays <= 1 ? "offset" :
                     cname + "Offset";
-                remaining = (numArrays <= 1 && numBuffers <= 1) ? "_remaining" :
+                remaining = ((numArrays + numBuffers) <= 1) ? "_remaining" :
                     "_" + cname + "Remaining";
 
                 if (jfunc.getArgType(idx).isArray()) {
@@ -957,8 +1042,11 @@
                 out.print(indent + indent +
                           "(" +
                           typecast +
-                          ")" +
-                          cfunc.getArgName(i));
+                          ")");
+                if (cfunc.getArgType(i).isConstCharPointer()) {
+                    out.print("_native");
+                }
+                out.print(cfunc.getArgName(i));
 
                 if (i == numArgs - 1) {
                     if (isPointerFunc) {
@@ -1025,6 +1113,22 @@
             }
         }
 
+        // Emit local variable declaration for strings
+        if (stringArgs.size() > 0) {
+            for (int i = 0; i < stringArgs.size(); i++) {
+                int idx = stringArgs.get(i).intValue();
+                int cIndex = jfunc.getArgCIndex(idx);
+                String cname = cfunc.getArgName(cIndex);
+
+                out.println(indent + "if (_native" + cname + ") {");
+                out.println(indent + "    _env->ReleaseStringUTFChars(" + cname + ", _native" + cname + ");");
+                out.println(indent + "}");
+            }
+
+            out.println();
+        }
+
+
         if (!isVoid) {
             out.println(indent + "return _returnValue;");
         }
diff --git a/opengl/tools/glgen/stubs/gles11/GLES11ExtHeader.java-if b/opengl/tools/glgen/stubs/gles11/GLES11ExtHeader.java-if
index 428ccee..c5e34cd 100644
--- a/opengl/tools/glgen/stubs/gles11/GLES11ExtHeader.java-if
+++ b/opengl/tools/glgen/stubs/gles11/GLES11ExtHeader.java-if
@@ -18,6 +18,8 @@
 
 package android.opengl;
 
+import java.nio.Buffer;
+
 public class GLES11Ext {
     public static final int GL_BLEND_EQUATION_RGB_OES                               = 0x8009;
     public static final int GL_BLEND_EQUATION_ALPHA_OES                             = 0x883D;
@@ -127,4 +129,10 @@
     static {
 	    _nativeClassInit();
     }
-    
\ No newline at end of file
+    
+    private static final int GL_BYTE = GLES10.GL_BYTE;
+    private static final int GL_FIXED = GLES10.GL_FIXED;
+    private static final int GL_FLOAT = GLES10.GL_FLOAT;
+    private static final int GL_SHORT = GLES10.GL_SHORT;
+    
+    private static Buffer _matrixIndexPointerOES;
\ No newline at end of file
diff --git a/opengl/tools/glgen/stubs/gles11/GLES11ExtcHeader.cpp b/opengl/tools/glgen/stubs/gles11/GLES11ExtcHeader.cpp
index 294d1ce..2548b32 100644
--- a/opengl/tools/glgen/stubs/gles11/GLES11ExtcHeader.cpp
+++ b/opengl/tools/glgen/stubs/gles11/GLES11ExtcHeader.cpp
@@ -23,6 +23,15 @@
 #include <GLES/gl.h>
 #include <GLES/glext.h>
 
+/* special calls implemented in Android's GLES wrapper used to more
+ * efficiently bound-check passed arrays */
+extern "C" {
+GL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type, GLsizei stride,
+        const GLvoid *ptr, GLsizei count);
+GL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type, GLsizei stride,
+        const GLvoid *ptr, GLsizei count);
+}
+
 static int initialized = 0;
 
 static jclass nioAccessClass;
@@ -121,5 +130,17 @@
 					   commit ? 0 : JNI_ABORT);
 }
 
+static void *
+getDirectBufferPointer(JNIEnv *_env, jobject buffer) {
+    char* buf = (char*) _env->GetDirectBufferAddress(buffer);
+    if (buf) {
+        jint position = _env->GetIntField(buffer, positionID);
+        jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
+        buf += position << elementSizeShift;
+    } else {
+        _env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
+    }
+    return (void*) buf;
+}
 // --------------------------------------------------------------------------
 
diff --git a/opengl/tools/glgen/stubs/gles11/GLES11Header.java-if b/opengl/tools/glgen/stubs/gles11/GLES11Header.java-if
index 26f466f..81572d2 100644
--- a/opengl/tools/glgen/stubs/gles11/GLES11Header.java-if
+++ b/opengl/tools/glgen/stubs/gles11/GLES11Header.java-if
@@ -149,3 +149,4 @@
 	    _nativeClassInit();
     }
 
+    private static Buffer _pointSizePointerOES;
diff --git a/opengl/tools/glgen/stubs/gles11/GLES11cHeader.cpp b/opengl/tools/glgen/stubs/gles11/GLES11cHeader.cpp
index 294d1ce..4c297f7 100644
--- a/opengl/tools/glgen/stubs/gles11/GLES11cHeader.cpp
+++ b/opengl/tools/glgen/stubs/gles11/GLES11cHeader.cpp
@@ -23,6 +23,13 @@
 #include <GLES/gl.h>
 #include <GLES/glext.h>
 
+/* special calls implemented in Android's GLES wrapper used to more
+ * efficiently bound-check passed arrays */
+extern "C" {
+GL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type, GLsizei stride,
+        const GLvoid *ptr, GLsizei count);
+}
+
 static int initialized = 0;
 
 static jclass nioAccessClass;
@@ -121,5 +128,18 @@
 					   commit ? 0 : JNI_ABORT);
 }
 
+static void *
+getDirectBufferPointer(JNIEnv *_env, jobject buffer) {
+    char* buf = (char*) _env->GetDirectBufferAddress(buffer);
+    if (buf) {
+        jint position = _env->GetIntField(buffer, positionID);
+        jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
+        buf += position << elementSizeShift;
+    } else {
+        _env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
+    }
+    return (void*) buf;
+}
+
 // --------------------------------------------------------------------------
 
diff --git a/opengl/tools/glgen/stubs/gles11/GLES20Header.java-if b/opengl/tools/glgen/stubs/gles11/GLES20Header.java-if
new file mode 100644
index 0000000..b615e0a
--- /dev/null
+++ b/opengl/tools/glgen/stubs/gles11/GLES20Header.java-if
@@ -0,0 +1,330 @@
+**
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License"); 
+** you may not use this file except in compliance with the License. 
+** You may obtain a copy of the License at 
+**
+**     http://www.apache.org/licenses/LICENSE-2.0 
+**
+** Unless required by applicable law or agreed to in writing, software 
+** distributed under the License is distributed on an "AS IS" BASIS, 
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+** See the License for the specific language governing permissions and 
+** limitations under the License.
+*/
+
+// This source file is automatically generated
+
+package android.opengl;
+
+/** OpenGL ES 2.0
+ */
+public class GLES20 {
+    public static final int GL_ACTIVE_TEXTURE                          = 0x84E0;
+    public static final int GL_DEPTH_BUFFER_BIT                        = 0x00000100;
+    public static final int GL_STENCIL_BUFFER_BIT                      = 0x00000400;
+    public static final int GL_COLOR_BUFFER_BIT                        = 0x00004000;
+    public static final int GL_FALSE                                   = 0;
+    public static final int GL_TRUE                                    = 1;
+    public static final int GL_POINTS                                  = 0x0000;
+    public static final int GL_LINES                                   = 0x0001;
+    public static final int GL_LINE_LOOP                               = 0x0002;
+    public static final int GL_LINE_STRIP                              = 0x0003;
+    public static final int GL_TRIANGLES                               = 0x0004;
+    public static final int GL_TRIANGLE_STRIP                          = 0x0005;
+    public static final int GL_TRIANGLE_FAN                            = 0x0006;
+    public static final int GL_ZERO                                    = 0;
+    public static final int GL_ONE                                     = 1;
+    public static final int GL_SRC_COLOR                               = 0x0300;
+    public static final int GL_ONE_MINUS_SRC_COLOR                     = 0x0301;
+    public static final int GL_SRC_ALPHA                               = 0x0302;
+    public static final int GL_ONE_MINUS_SRC_ALPHA                     = 0x0303;
+    public static final int GL_DST_ALPHA                               = 0x0304;
+    public static final int GL_ONE_MINUS_DST_ALPHA                     = 0x0305;
+    public static final int GL_DST_COLOR                               = 0x0306;
+    public static final int GL_ONE_MINUS_DST_COLOR                     = 0x0307;
+    public static final int GL_SRC_ALPHA_SATURATE                      = 0x0308;
+    public static final int GL_FUNC_ADD                                = 0x8006;
+    public static final int GL_BLEND_EQUATION                          = 0x8009;
+    public static final int GL_BLEND_EQUATION_RGB                      = 0x8009;   /* same as BLEND_EQUATION */
+    public static final int GL_BLEND_EQUATION_ALPHA                    = 0x883D;
+    public static final int GL_FUNC_SUBTRACT                           = 0x800A;
+    public static final int GL_FUNC_REVERSE_SUBTRACT                   = 0x800B;
+    public static final int GL_BLEND_DST_RGB                           = 0x80C8;
+    public static final int GL_BLEND_SRC_RGB                           = 0x80C9;
+    public static final int GL_BLEND_DST_ALPHA                         = 0x80CA;
+    public static final int GL_BLEND_SRC_ALPHA                         = 0x80CB;
+    public static final int GL_CONSTANT_COLOR                          = 0x8001;
+    public static final int GL_ONE_MINUS_CONSTANT_COLOR                = 0x8002;
+    public static final int GL_CONSTANT_ALPHA                          = 0x8003;
+    public static final int GL_ONE_MINUS_CONSTANT_ALPHA                = 0x8004;
+    public static final int GL_BLEND_COLOR                             = 0x8005;
+    public static final int GL_ARRAY_BUFFER                            = 0x8892;
+    public static final int GL_ELEMENT_ARRAY_BUFFER                    = 0x8893;
+    public static final int GL_ARRAY_BUFFER_BINDING                    = 0x8894;
+    public static final int GL_ELEMENT_ARRAY_BUFFER_BINDING            = 0x8895;
+    public static final int GL_STREAM_DRAW                             = 0x88E0;
+    public static final int GL_STATIC_DRAW                             = 0x88E4;
+    public static final int GL_DYNAMIC_DRAW                            = 0x88E8;
+    public static final int GL_BUFFER_SIZE                             = 0x8764;
+    public static final int GL_BUFFER_USAGE                            = 0x8765;
+    public static final int GL_CURRENT_VERTEX_ATTRIB                   = 0x8626;
+    public static final int GL_FRONT                                   = 0x0404;
+    public static final int GL_BACK                                    = 0x0405;
+    public static final int GL_FRONT_AND_BACK                          = 0x0408;
+    public static final int GL_TEXTURE_2D                              = 0x0DE1;
+    public static final int GL_CULL_FACE                               = 0x0B44;
+    public static final int GL_BLEND                                   = 0x0BE2;
+    public static final int GL_DITHER                                  = 0x0BD0;
+    public static final int GL_STENCIL_TEST                            = 0x0B90;
+    public static final int GL_DEPTH_TEST                              = 0x0B71;
+    public static final int GL_SCISSOR_TEST                            = 0x0C11;
+    public static final int GL_POLYGON_OFFSET_FILL                     = 0x8037;
+    public static final int GL_SAMPLE_ALPHA_TO_COVERAGE                = 0x809E;
+    public static final int GL_SAMPLE_COVERAGE                         = 0x80A0;
+    public static final int GL_NO_ERROR                                = 0;
+    public static final int GL_INVALID_ENUM                            = 0x0500;
+    public static final int GL_INVALID_VALUE                           = 0x0501;
+    public static final int GL_INVALID_OPERATION                       = 0x0502;
+    public static final int GL_OUT_OF_MEMORY                           = 0x0505;
+    public static final int GL_CW                                      = 0x0900;
+    public static final int GL_CCW                                     = 0x0901;
+    public static final int GL_LINE_WIDTH                              = 0x0B21;
+    public static final int GL_ALIASED_POINT_SIZE_RANGE                = 0x846D;
+    public static final int GL_ALIASED_LINE_WIDTH_RANGE                = 0x846E;
+    public static final int GL_CULL_FACE_MODE                          = 0x0B45;
+    public static final int GL_FRONT_FACE                              = 0x0B46;
+    public static final int GL_DEPTH_RANGE                             = 0x0B70;
+    public static final int GL_DEPTH_WRITEMASK                         = 0x0B72;
+    public static final int GL_DEPTH_CLEAR_VALUE                       = 0x0B73;
+    public static final int GL_DEPTH_FUNC                              = 0x0B74;
+    public static final int GL_STENCIL_CLEAR_VALUE                     = 0x0B91;
+    public static final int GL_STENCIL_FUNC                            = 0x0B92;
+    public static final int GL_STENCIL_FAIL                            = 0x0B94;
+    public static final int GL_STENCIL_PASS_DEPTH_FAIL                 = 0x0B95;
+    public static final int GL_STENCIL_PASS_DEPTH_PASS                 = 0x0B96;
+    public static final int GL_STENCIL_REF                             = 0x0B97;
+    public static final int GL_STENCIL_VALUE_MASK                      = 0x0B93;
+    public static final int GL_STENCIL_WRITEMASK                       = 0x0B98;
+    public static final int GL_STENCIL_BACK_FUNC                       = 0x8800;
+    public static final int GL_STENCIL_BACK_FAIL                       = 0x8801;
+    public static final int GL_STENCIL_BACK_PASS_DEPTH_FAIL            = 0x8802;
+    public static final int GL_STENCIL_BACK_PASS_DEPTH_PASS            = 0x8803;
+    public static final int GL_STENCIL_BACK_REF                        = 0x8CA3;
+    public static final int GL_STENCIL_BACK_VALUE_MASK                 = 0x8CA4;
+    public static final int GL_STENCIL_BACK_WRITEMASK                  = 0x8CA5;
+    public static final int GL_VIEWPORT                                = 0x0BA2;
+    public static final int GL_SCISSOR_BOX                             = 0x0C10;
+    public static final int GL_COLOR_CLEAR_VALUE                       = 0x0C22;
+    public static final int GL_COLOR_WRITEMASK                         = 0x0C23;
+    public static final int GL_UNPACK_ALIGNMENT                        = 0x0CF5;
+    public static final int GL_PACK_ALIGNMENT                          = 0x0D05;
+    public static final int GL_MAX_TEXTURE_SIZE                        = 0x0D33;
+    public static final int GL_MAX_VIEWPORT_DIMS                       = 0x0D3A;
+    public static final int GL_SUBPIXEL_BITS                           = 0x0D50;
+    public static final int GL_RED_BITS                                = 0x0D52;
+    public static final int GL_GREEN_BITS                              = 0x0D53;
+    public static final int GL_BLUE_BITS                               = 0x0D54;
+    public static final int GL_ALPHA_BITS                              = 0x0D55;
+    public static final int GL_DEPTH_BITS                              = 0x0D56;
+    public static final int GL_STENCIL_BITS                            = 0x0D57;
+    public static final int GL_POLYGON_OFFSET_UNITS                    = 0x2A00;
+    public static final int GL_POLYGON_OFFSET_FACTOR                   = 0x8038;
+    public static final int GL_TEXTURE_BINDING_2D                      = 0x8069;
+    public static final int GL_SAMPLE_BUFFERS                          = 0x80A8;
+    public static final int GL_SAMPLES                                 = 0x80A9;
+    public static final int GL_SAMPLE_COVERAGE_VALUE                   = 0x80AA;
+    public static final int GL_SAMPLE_COVERAGE_INVERT                  = 0x80AB;
+    public static final int GL_NUM_COMPRESSED_TEXTURE_FORMATS          = 0x86A2;
+    public static final int GL_COMPRESSED_TEXTURE_FORMATS              = 0x86A3;
+    public static final int GL_DONT_CARE                               = 0x1100;
+    public static final int GL_FASTEST                                 = 0x1101;
+    public static final int GL_NICEST                                  = 0x1102;
+    public static final int GL_GENERATE_MIPMAP_HINT                    = 0x8192;
+    public static final int GL_BYTE                                    = 0x1400;
+    public static final int GL_UNSIGNED_BYTE                           = 0x1401;
+    public static final int GL_SHORT                                   = 0x1402;
+    public static final int GL_UNSIGNED_SHORT                          = 0x1403;
+    public static final int GL_INT                                     = 0x1404;
+    public static final int GL_UNSIGNED_INT                            = 0x1405;
+    public static final int GL_FLOAT                                   = 0x1406;
+    public static final int GL_FIXED                                   = 0x140C;
+    public static final int GL_DEPTH_COMPONENT                         = 0x1902;
+    public static final int GL_ALPHA                                   = 0x1906;
+    public static final int GL_RGB                                     = 0x1907;
+    public static final int GL_RGBA                                    = 0x1908;
+    public static final int GL_LUMINANCE                               = 0x1909;
+    public static final int GL_LUMINANCE_ALPHA                         = 0x190A;
+    public static final int GL_UNSIGNED_SHORT_4_4_4_4                  = 0x8033;
+    public static final int GL_UNSIGNED_SHORT_5_5_5_1                  = 0x8034;
+    public static final int GL_UNSIGNED_SHORT_5_6_5                    = 0x8363;
+    public static final int GL_FRAGMENT_SHADER                           = 0x8B30;
+    public static final int GL_VERTEX_SHADER                             = 0x8B31;
+    public static final int GL_MAX_VERTEX_ATTRIBS                        = 0x8869;
+    public static final int GL_MAX_VERTEX_UNIFORM_VECTORS                = 0x8DFB;
+    public static final int GL_MAX_VARYING_VECTORS                       = 0x8DFC;
+    public static final int GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS          = 0x8B4D;
+    public static final int GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS            = 0x8B4C;
+    public static final int GL_MAX_TEXTURE_IMAGE_UNITS                   = 0x8872;
+    public static final int GL_MAX_FRAGMENT_UNIFORM_VECTORS              = 0x8DFD;
+    public static final int GL_SHADER_TYPE                               = 0x8B4F;
+    public static final int GL_DELETE_STATUS                             = 0x8B80;
+    public static final int GL_LINK_STATUS                               = 0x8B82;
+    public static final int GL_VALIDATE_STATUS                           = 0x8B83;
+    public static final int GL_ATTACHED_SHADERS                          = 0x8B85;
+    public static final int GL_ACTIVE_UNIFORMS                           = 0x8B86;
+    public static final int GL_ACTIVE_UNIFORM_MAX_LENGTH                 = 0x8B87;
+    public static final int GL_ACTIVE_ATTRIBUTES                         = 0x8B89;
+    public static final int GL_ACTIVE_ATTRIBUTE_MAX_LENGTH               = 0x8B8A;
+    public static final int GL_SHADING_LANGUAGE_VERSION                  = 0x8B8C;
+    public static final int GL_CURRENT_PROGRAM                           = 0x8B8D;
+    public static final int GL_NEVER                                   = 0x0200;
+    public static final int GL_LESS                                    = 0x0201;
+    public static final int GL_EQUAL                                   = 0x0202;
+    public static final int GL_LEQUAL                                  = 0x0203;
+    public static final int GL_GREATER                                 = 0x0204;
+    public static final int GL_NOTEQUAL                                = 0x0205;
+    public static final int GL_GEQUAL                                  = 0x0206;
+    public static final int GL_ALWAYS                                  = 0x0207;
+    public static final int GL_KEEP                                    = 0x1E00;
+    public static final int GL_REPLACE                                 = 0x1E01;
+    public static final int GL_INCR                                    = 0x1E02;
+    public static final int GL_DECR                                    = 0x1E03;
+    public static final int GL_INVERT                                  = 0x150A;
+    public static final int GL_INCR_WRAP                               = 0x8507;
+    public static final int GL_DECR_WRAP                               = 0x8508;
+    public static final int GL_VENDOR                                  = 0x1F00;
+    public static final int GL_RENDERER                                = 0x1F01;
+    public static final int GL_VERSION                                 = 0x1F02;
+    public static final int GL_EXTENSIONS                              = 0x1F03;
+    public static final int GL_NEAREST                                 = 0x2600;
+    public static final int GL_LINEAR                                  = 0x2601;
+    public static final int GL_NEAREST_MIPMAP_NEAREST                  = 0x2700;
+    public static final int GL_LINEAR_MIPMAP_NEAREST                   = 0x2701;
+    public static final int GL_NEAREST_MIPMAP_LINEAR                   = 0x2702;
+    public static final int GL_LINEAR_MIPMAP_LINEAR                    = 0x2703;
+    public static final int GL_TEXTURE_MAG_FILTER                      = 0x2800;
+    public static final int GL_TEXTURE_MIN_FILTER                      = 0x2801;
+    public static final int GL_TEXTURE_WRAP_S                          = 0x2802;
+    public static final int GL_TEXTURE_WRAP_T                          = 0x2803;
+    public static final int GL_TEXTURE                                 = 0x1702;
+    public static final int GL_TEXTURE_CUBE_MAP                        = 0x8513;
+    public static final int GL_TEXTURE_BINDING_CUBE_MAP                = 0x8514;
+    public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_X             = 0x8515;
+    public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_X             = 0x8516;
+    public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Y             = 0x8517;
+    public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y             = 0x8518;
+    public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Z             = 0x8519;
+    public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z             = 0x851A;
+    public static final int GL_MAX_CUBE_MAP_TEXTURE_SIZE               = 0x851C;
+    public static final int GL_TEXTURE0                                = 0x84C0;
+    public static final int GL_TEXTURE1                                = 0x84C1;
+    public static final int GL_TEXTURE2                                = 0x84C2;
+    public static final int GL_TEXTURE3                                = 0x84C3;
+    public static final int GL_TEXTURE4                                = 0x84C4;
+    public static final int GL_TEXTURE5                                = 0x84C5;
+    public static final int GL_TEXTURE6                                = 0x84C6;
+    public static final int GL_TEXTURE7                                = 0x84C7;
+    public static final int GL_TEXTURE8                                = 0x84C8;
+    public static final int GL_TEXTURE9                                = 0x84C9;
+    public static final int GL_TEXTURE10                               = 0x84CA;
+    public static final int GL_TEXTURE11                               = 0x84CB;
+    public static final int GL_TEXTURE12                               = 0x84CC;
+    public static final int GL_TEXTURE13                               = 0x84CD;
+    public static final int GL_TEXTURE14                               = 0x84CE;
+    public static final int GL_TEXTURE15                               = 0x84CF;
+    public static final int GL_TEXTURE16                               = 0x84D0;
+    public static final int GL_TEXTURE17                               = 0x84D1;
+    public static final int GL_TEXTURE18                               = 0x84D2;
+    public static final int GL_TEXTURE19                               = 0x84D3;
+    public static final int GL_TEXTURE20                               = 0x84D4;
+    public static final int GL_TEXTURE21                               = 0x84D5;
+    public static final int GL_TEXTURE22                               = 0x84D6;
+    public static final int GL_TEXTURE23                               = 0x84D7;
+    public static final int GL_TEXTURE24                               = 0x84D8;
+    public static final int GL_TEXTURE25                               = 0x84D9;
+    public static final int GL_TEXTURE26                               = 0x84DA;
+    public static final int GL_TEXTURE27                               = 0x84DB;
+    public static final int GL_TEXTURE28                               = 0x84DC;
+    public static final int GL_TEXTURE29                               = 0x84DD;
+    public static final int GL_TEXTURE30                               = 0x84DE;
+    public static final int GL_TEXTURE31                               = 0x84DF;
+    public static final int GL_REPEAT                                  = 0x2901;
+    public static final int GL_CLAMP_TO_EDGE                           = 0x812F;
+    public static final int GL_MIRRORED_REPEAT                         = 0x8370;
+    public static final int GL_FLOAT_VEC2                              = 0x8B50;
+    public static final int GL_FLOAT_VEC3                              = 0x8B51;
+    public static final int GL_FLOAT_VEC4                              = 0x8B52;
+    public static final int GL_INT_VEC2                                = 0x8B53;
+    public static final int GL_INT_VEC3                                = 0x8B54;
+    public static final int GL_INT_VEC4                                = 0x8B55;
+    public static final int GL_BOOL                                    = 0x8B56;
+    public static final int GL_BOOL_VEC2                               = 0x8B57;
+    public static final int GL_BOOL_VEC3                               = 0x8B58;
+    public static final int GL_BOOL_VEC4                               = 0x8B59;
+    public static final int GL_FLOAT_MAT2                              = 0x8B5A;
+    public static final int GL_FLOAT_MAT3                              = 0x8B5B;
+    public static final int GL_FLOAT_MAT4                              = 0x8B5C;
+    public static final int GL_SAMPLER_2D                              = 0x8B5E;
+    public static final int GL_SAMPLER_CUBE                            = 0x8B60;
+    public static final int GL_VERTEX_ATTRIB_ARRAY_ENABLED                 = 0x8622;
+    public static final int GL_VERTEX_ATTRIB_ARRAY_SIZE                    = 0x8623;
+    public static final int GL_VERTEX_ATTRIB_ARRAY_STRIDE                  = 0x8624;
+    public static final int GL_VERTEX_ATTRIB_ARRAY_TYPE                    = 0x8625;
+    public static final int GL_VERTEX_ATTRIB_ARRAY_NORMALIZED              = 0x886A;
+    public static final int GL_VERTEX_ATTRIB_ARRAY_POINTER                 = 0x8645;
+    public static final int GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING          = 0x889F;
+    public static final int GL_IMPLEMENTATION_COLOR_READ_TYPE            = 0x8B9A;
+    public static final int GL_IMPLEMENTATION_COLOR_READ_FORMAT          = 0x8B9B;
+    public static final int GL_COMPILE_STATUS                          = 0x8B81;
+    public static final int GL_INFO_LOG_LENGTH                         = 0x8B84;
+    public static final int GL_SHADER_SOURCE_LENGTH                    = 0x8B88;
+    public static final int GL_SHADER_COMPILER                         = 0x8DFA;
+    public static final int GL_SHADER_BINARY_FORMATS                   = 0x8DF8;
+    public static final int GL_NUM_SHADER_BINARY_FORMATS               = 0x8DF9;
+    public static final int GL_LOW_FLOAT                               = 0x8DF0;
+    public static final int GL_MEDIUM_FLOAT                            = 0x8DF1;
+    public static final int GL_HIGH_FLOAT                              = 0x8DF2;
+    public static final int GL_LOW_INT                                 = 0x8DF3;
+    public static final int GL_MEDIUM_INT                              = 0x8DF4;
+    public static final int GL_HIGH_INT                                = 0x8DF5;
+    public static final int GL_FRAMEBUFFER                             = 0x8D40;
+    public static final int GL_RENDERBUFFER                            = 0x8D41;
+    public static final int GL_RGBA4                                   = 0x8056;
+    public static final int GL_RGB5_A1                                 = 0x8057;
+    public static final int GL_RGB565                                  = 0x8D62;
+    public static final int GL_DEPTH_COMPONENT16                       = 0x81A5;
+    public static final int GL_STENCIL_INDEX                           = 0x1901;
+    public static final int GL_STENCIL_INDEX8                          = 0x8D48;
+    public static final int GL_RENDERBUFFER_WIDTH                      = 0x8D42;
+    public static final int GL_RENDERBUFFER_HEIGHT                     = 0x8D43;
+    public static final int GL_RENDERBUFFER_INTERNAL_FORMAT            = 0x8D44;
+    public static final int GL_RENDERBUFFER_RED_SIZE                   = 0x8D50;
+    public static final int GL_RENDERBUFFER_GREEN_SIZE                 = 0x8D51;
+    public static final int GL_RENDERBUFFER_BLUE_SIZE                  = 0x8D52;
+    public static final int GL_RENDERBUFFER_ALPHA_SIZE                 = 0x8D53;
+    public static final int GL_RENDERBUFFER_DEPTH_SIZE                 = 0x8D54;
+    public static final int GL_RENDERBUFFER_STENCIL_SIZE               = 0x8D55;
+    public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE      = 0x8CD0;
+    public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME      = 0x8CD1;
+    public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL    = 0x8CD2;
+    public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3;
+    public static final int GL_COLOR_ATTACHMENT0                       = 0x8CE0;
+    public static final int GL_DEPTH_ATTACHMENT                        = 0x8D00;
+    public static final int GL_STENCIL_ATTACHMENT                      = 0x8D20;
+    public static final int GL_NONE                                    = 0;
+    public static final int GL_FRAMEBUFFER_COMPLETE                    = 0x8CD5;
+    public static final int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT       = 0x8CD6;
+    public static final int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT          = 0x8CD7;
+    public static final int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS       = 0x8CD9;
+    public static final int GL_FRAMEBUFFER_UNSUPPORTED                 = 0x8CDD;
+    public static final int GL_FRAMEBUFFER_BINDING                     = 0x8CA6;
+    public static final int GL_RENDERBUFFER_BINDING                    = 0x8CA7;
+    public static final int GL_MAX_RENDERBUFFER_SIZE                   = 0x84E8;
+    public static final int GL_INVALID_FRAMEBUFFER_OPERATION           = 0x0506;
+
+    native private static void _nativeClassInit();
+    static {
+	    _nativeClassInit();
+    }
diff --git a/opengl/tools/glgen/stubs/gles11/GLES20cHeader.cpp b/opengl/tools/glgen/stubs/gles11/GLES20cHeader.cpp
new file mode 100644
index 0000000..e451e9a
--- /dev/null
+++ b/opengl/tools/glgen/stubs/gles11/GLES20cHeader.cpp
@@ -0,0 +1,150 @@
+**
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License"); 
+** you may not use this file except in compliance with the License. 
+** You may obtain a copy of the License at 
+**
+**     http://www.apache.org/licenses/LICENSE-2.0 
+**
+** Unless required by applicable law or agreed to in writing, software 
+** distributed under the License is distributed on an "AS IS" BASIS, 
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+** See the License for the specific language governing permissions and 
+** limitations under the License.
+*/
+
+// This source file is automatically generated
+
+#include <android_runtime/AndroidRuntime.h>
+#include <utils/misc.h>
+
+#include <assert.h>
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+static int initialized = 0;
+
+static jclass nioAccessClass;
+static jclass bufferClass;
+static jclass OOMEClass;
+static jclass UOEClass;
+static jclass IAEClass;
+static jclass AIOOBEClass;
+static jmethodID getBasePointerID;
+static jmethodID getBaseArrayID;
+static jmethodID getBaseArrayOffsetID;
+static jfieldID positionID;
+static jfieldID limitID;
+static jfieldID elementSizeShiftID;
+
+/* Cache method IDs each time the class is loaded. */
+
+static void
+nativeClassInitBuffer(JNIEnv *_env)
+{
+    jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess");
+    nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal);
+
+    jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
+    bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);
+
+    getBasePointerID = _env->GetStaticMethodID(nioAccessClass,
+            "getBasePointer", "(Ljava/nio/Buffer;)J");
+    getBaseArrayID = _env->GetStaticMethodID(nioAccessClass,
+            "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;");
+    getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass,
+            "getBaseArrayOffset", "(Ljava/nio/Buffer;)I");
+
+    positionID = _env->GetFieldID(bufferClass, "position", "I");
+    limitID = _env->GetFieldID(bufferClass, "limit", "I");
+    elementSizeShiftID =
+        _env->GetFieldID(bufferClass, "_elementSizeShift", "I");
+}
+
+
+static void
+nativeClassInit(JNIEnv *_env, jclass glImplClass)
+{
+    nativeClassInitBuffer(_env);
+
+    jclass IAEClassLocal =
+        _env->FindClass("java/lang/IllegalArgumentException");
+    jclass OOMEClassLocal =
+         _env->FindClass("java/lang/OutOfMemoryError");
+    jclass UOEClassLocal =
+         _env->FindClass("java/lang/UnsupportedOperationException");
+    jclass AIOOBEClassLocal =
+         _env->FindClass("java/lang/ArrayIndexOutOfBoundsException");
+
+    IAEClass = (jclass) _env->NewGlobalRef(IAEClassLocal);
+    OOMEClass = (jclass) _env->NewGlobalRef(OOMEClassLocal);
+    UOEClass = (jclass) _env->NewGlobalRef(UOEClassLocal);
+    AIOOBEClass = (jclass) _env->NewGlobalRef(AIOOBEClassLocal);
+}
+
+static void *
+getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining)
+{
+    jint position;
+    jint limit;
+    jint elementSizeShift;
+    jlong pointer;
+    jint offset;
+    void *data;
+
+    position = _env->GetIntField(buffer, positionID);
+    limit = _env->GetIntField(buffer, limitID);
+    elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
+    *remaining = (limit - position) << elementSizeShift;
+    pointer = _env->CallStaticLongMethod(nioAccessClass,
+            getBasePointerID, buffer);
+    if (pointer != 0L) {
+        *array = NULL;
+        return (void *) (jint) pointer;
+    }
+    
+    *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass,
+            getBaseArrayID, buffer);
+    offset = _env->CallStaticIntMethod(nioAccessClass,
+            getBaseArrayOffsetID, buffer);
+    data = _env->GetPrimitiveArrayCritical(*array, (jboolean *) 0);
+    
+    return (void *) ((char *) data + offset);
+}
+
+
+static void
+releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
+{
+    _env->ReleasePrimitiveArrayCritical(array, data,
+					   commit ? 0 : JNI_ABORT);
+}
+
+static void *
+getDirectBufferPointer(JNIEnv *_env, jobject buffer) {
+    char* buf = (char*) _env->GetDirectBufferAddress(buffer);
+    if (buf) {
+        jint position = _env->GetIntField(buffer, positionID);
+        jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
+        buf += position << elementSizeShift;
+    } else {
+        _env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
+    }
+    return (void*) buf;
+}
+
+static int
+getNumCompressedTextureFormats() {
+    int numCompressedTextureFormats = 0;
+    glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &numCompressedTextureFormats);
+    return numCompressedTextureFormats;
+}
+
+static void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type,
+        GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) {
+    glVertexAttribPointer(indx, size, type, normalized, stride, pointer);
+}
+
+// --------------------------------------------------------------------------
+
diff --git a/opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.cpp b/opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.cpp
new file mode 100644
index 0000000..d92f515
--- /dev/null
+++ b/opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.cpp
@@ -0,0 +1,27 @@
+#include <string.h>
+
+/* void glGetProgramInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */
+static
+jstring
+android_glGetProgramInfoLog (JNIEnv *_env, jobject _this, jint shader) {
+    GLint infoLen = 0;
+    jstring _result = 0;
+    char* buf = 0;
+    glGetProgramiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
+    if (infoLen) {
+        char* buf = (char*) malloc(infoLen);
+        if (buf == 0) {
+            _env->ThrowNew(IAEClass, "out of memory");
+            goto exit;
+        }
+        glGetProgramInfoLog(shader, infoLen, NULL, buf);
+        _result = _env->NewStringUTF(buf);
+    } else {
+        _result = _env->NewStringUTF("");
+    }
+exit:
+    if (buf) {
+            free(buf);
+    }
+    return _result;
+}
\ No newline at end of file
diff --git a/opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.java b/opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.java
new file mode 100644
index 0000000..19504f2
--- /dev/null
+++ b/opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.java
@@ -0,0 +1,6 @@
+    // C function void glGetProgramInfoLog( GLuint program, GLsizei maxLength, GLsizei * length,
+ 	//     GLchar * infoLog);
+
+    public static native String glGetProgramInfoLog(
+        int program
+    );
diff --git a/opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.nativeReg b/opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.nativeReg
new file mode 100644
index 0000000..8553f2d
--- /dev/null
+++ b/opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.nativeReg
@@ -0,0 +1 @@
+{"glGetProgramInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetProgramInfoLog },
diff --git a/opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.cpp b/opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.cpp
new file mode 100644
index 0000000..5441d66
--- /dev/null
+++ b/opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.cpp
@@ -0,0 +1,27 @@
+#include <string.h>
+
+/* void glGetShaderInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */
+static
+jstring
+android_glGetShaderInfoLog (JNIEnv *_env, jobject _this, jint shader) {
+    GLint infoLen = 0;
+    jstring _result = 0;
+    char* buf = 0;
+    glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
+    if (infoLen) {
+        char* buf = (char*) malloc(infoLen);
+        if (buf == 0) {
+            _env->ThrowNew(IAEClass, "out of memory");
+            goto exit;
+        }
+        glGetShaderInfoLog(shader, infoLen, NULL, buf);
+        _result = _env->NewStringUTF(buf);
+    } else {
+        _result = _env->NewStringUTF("");
+    }
+exit:
+    if (buf) {
+            free(buf);
+    }
+    return _result;
+}
\ No newline at end of file
diff --git a/opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.java b/opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.java
new file mode 100644
index 0000000..1fac6be
--- /dev/null
+++ b/opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.java
@@ -0,0 +1,6 @@
+    // C function void glGetShaderInfoLog( GLuint shader, GLsizei maxLength, GLsizei * length,
+ 	//     GLchar * infoLog);
+
+    public static native String glGetShaderInfoLog(
+        int shader
+    );
diff --git a/opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.nativeReg b/opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.nativeReg
new file mode 100644
index 0000000..71163c3
--- /dev/null
+++ b/opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.nativeReg
@@ -0,0 +1 @@
+{"glGetShaderInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetShaderInfoLog },
diff --git a/opengl/tools/glgen/stubs/gles11/glShaderSource.cpp b/opengl/tools/glgen/stubs/gles11/glShaderSource.cpp
new file mode 100644
index 0000000..c274108
--- /dev/null
+++ b/opengl/tools/glgen/stubs/gles11/glShaderSource.cpp
@@ -0,0 +1,17 @@
+
+/* void glShaderSource ( GLuint shader, GLsizei count, const GLchar ** string, const GLint * length ) */
+static
+void
+android_glShaderSource
+    (JNIEnv *_env, jobject _this, jint shader, jstring string) {
+
+    if (!string) {
+        _env->ThrowNew(IAEClass, "string == null");
+        return;
+    }
+
+    const char* nativeString = _env->GetStringUTFChars(string, 0);
+    const char* strings[] = {nativeString};
+    glShaderSource(shader, 1, strings, 0);
+    _env->ReleaseStringUTFChars(string, nativeString);
+}
diff --git a/opengl/tools/glgen/stubs/gles11/glShaderSource.java b/opengl/tools/glgen/stubs/gles11/glShaderSource.java
new file mode 100644
index 0000000..a9c338a
--- /dev/null
+++ b/opengl/tools/glgen/stubs/gles11/glShaderSource.java
@@ -0,0 +1,6 @@
+    // C function void glShaderSource ( GLuint shader, GLsizei count, const GLchar ** string, const GLint* length )
+
+    public static native void glShaderSource(
+        int shader,
+        String string
+    );
diff --git a/opengl/tools/glgen/stubs/gles11/glShaderSource.nativeReg b/opengl/tools/glgen/stubs/gles11/glShaderSource.nativeReg
new file mode 100644
index 0000000..b17783a
--- /dev/null
+++ b/opengl/tools/glgen/stubs/gles11/glShaderSource.nativeReg
@@ -0,0 +1 @@
+{"glShaderSource", "(ILjava/lang/String;)V", (void *) android_glShaderSource },
diff --git a/opengl/tools/glgen/stubs/jsr239/GLCHeader.cpp b/opengl/tools/glgen/stubs/jsr239/GLCHeader.cpp
index 4494643..b3d1c6c 100644
--- a/opengl/tools/glgen/stubs/jsr239/GLCHeader.cpp
+++ b/opengl/tools/glgen/stubs/jsr239/GLCHeader.cpp
@@ -34,6 +34,12 @@
         GLsizei stride, const GLvoid *pointer, GLsizei count);
 GL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type,
         GLsizei stride, const GLvoid *pointer, GLsizei count);
+GL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type,
+        GLsizei stride, const GLvoid *pointer, GLsizei count);
+GL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type,
+        GLsizei stride, const GLvoid *pointer, GLsizei count);
+GL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type,
+        GLsizei stride, const GLvoid *pointer, GLsizei count);
 }
 
 static int initialized = 0;
diff --git a/opengl/tools/glgen/stubs/jsr239/GLImplHeader.java-impl b/opengl/tools/glgen/stubs/jsr239/GLImplHeader.java-impl
index fe60c5d..76fea3f 100644
--- a/opengl/tools/glgen/stubs/jsr239/GLImplHeader.java-impl
+++ b/opengl/tools/glgen/stubs/jsr239/GLImplHeader.java-impl
@@ -44,6 +44,9 @@
     Buffer _normalPointer = null;
     Buffer _texCoordPointer = null;
     Buffer _vertexPointer = null;
+    Buffer _pointSizePointerOES = null;
+    Buffer _matrixIndexPointerOES = null;
+    Buffer _weightPointerOES = null;
 
     public GLImpl() {
     }
diff --git a/packages/SettingsProvider/AndroidManifest.xml b/packages/SettingsProvider/AndroidManifest.xml
index 1e1d729..a542518 100644
--- a/packages/SettingsProvider/AndroidManifest.xml
+++ b/packages/SettingsProvider/AndroidManifest.xml
@@ -9,7 +9,8 @@
                  android:process="system"
                  android:backupAgent="SettingsBackupAgent"
                  android:killAfterRestore="false"
-                 android:icon="@drawable/ic_launcher_settings">
+                 android:icon="@drawable/ic_launcher_settings"
+                 android:neverEncrypt="true">
 
         <provider android:name="SettingsProvider" android:authorities="settings"
                   android:multiprocess="false"
diff --git a/packages/TtsService/src/android/tts/TtsService.java b/packages/TtsService/src/android/tts/TtsService.java
index 217d3bb..8d8ef8e 100755
--- a/packages/TtsService/src/android/tts/TtsService.java
+++ b/packages/TtsService/src/android/tts/TtsService.java
@@ -20,8 +20,10 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
+import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.pm.ResolveInfo;
 import android.media.AudioManager;
 import android.media.MediaPlayer;
 import android.media.MediaPlayer.OnCompletionListener;
@@ -39,6 +41,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Locale;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.concurrent.TimeUnit;
@@ -146,6 +149,8 @@
     private final ReentrantLock synthesizerLock = new ReentrantLock();
 
     private static SynthProxy sNativeSynth = null;
+    private String currentSpeechEngineSOFile = "";
+
     @Override
     public void onCreate() {
         super.onCreate();
@@ -153,6 +158,9 @@
 
         mResolver = getContentResolver();
 
+        currentSpeechEngineSOFile = "";
+        setEngine(getDefaultEngine());
+
         String soLibPath = "/system/lib/libttspico.so";
         if (sNativeSynth == null) {
             sNativeSynth = new SynthProxy(soLibPath);
@@ -194,6 +202,54 @@
     }
 
 
+    private int setEngine(String enginePackageName) {
+        String soFilename = "";
+        // The SVOX TTS is an exception to how the TTS packaging scheme works
+        // because it is part of the system and not a 3rd party add-on; thus
+        // its binary is actually located under /system/lib/
+        if (enginePackageName.equals("com.svox.pico")) {
+            soFilename = "/system/lib/libttspico.so";
+        } else {
+            // Find the package
+            Intent intent = new Intent("android.intent.action.START_TTS_ENGINE");
+            intent.setPackage(enginePackageName);
+            ResolveInfo[] enginesArray = new ResolveInfo[0];
+            PackageManager pm = getPackageManager();
+            List <ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0);
+            if ((resolveInfos == null) || resolveInfos.isEmpty()) {
+                Log.e(SERVICE_TAG, "Invalid TTS Engine Package: " + enginePackageName);
+                return TextToSpeech.ERROR;
+            }
+            enginesArray = resolveInfos.toArray(enginesArray);
+            // Generate the TTS .so filename from the package
+            ActivityInfo aInfo = enginesArray[0].activityInfo;
+            soFilename = aInfo.name.replace(aInfo.packageName + ".", "") + ".so";
+            soFilename = soFilename.toLowerCase();
+            soFilename = "/data/data/" + aInfo.packageName + "/lib/libtts" + soFilename;
+        }
+
+        if (currentSpeechEngineSOFile.equals(soFilename)) {
+            return TextToSpeech.SUCCESS;
+        }
+
+        File f = new File(soFilename);
+        if (!f.exists()) {
+            Log.e(SERVICE_TAG, "Invalid TTS Binary: " + soFilename);
+            return TextToSpeech.ERROR;
+        }
+
+        if (sNativeSynth != null) {
+            sNativeSynth.stopSync();
+            sNativeSynth.shutdown();
+            sNativeSynth = null;
+        }
+        sNativeSynth = new SynthProxy(soFilename);
+        currentSpeechEngineSOFile = soFilename;
+        return TextToSpeech.SUCCESS;
+    }
+
+
+
     private void setDefaultSettings() {
         setLanguage("", this.getDefaultLanguage(), getDefaultCountry(), getDefaultLocVariant());
 
@@ -209,6 +265,15 @@
                 == 1 );
     }
 
+    private String getDefaultEngine() {
+        String defaultEngine = android.provider.Settings.Secure.getString(mResolver,
+                android.provider.Settings.Secure.TTS_DEFAULT_SYNTH);
+        if (defaultEngine == null) {
+            return TextToSpeech.Engine.DEFAULT_SYNTH;
+        } else {
+            return defaultEngine;
+        }
+    }
 
     private int getDefaultRate() {
         return android.provider.Settings.Secure.getInt(mResolver,
@@ -1261,6 +1326,17 @@
             return mSelf.synthesizeToFile(callingApp, text, speakingParams, filename);
         }
 
+        /**
+         * Sets the speech synthesis engine for the TTS by specifying its packagename
+         *
+         * @param packageName  the packageName of the speech synthesis engine (ie, "com.svox.pico")
+         *
+         * @return SUCCESS or ERROR as defined in android.speech.tts.TextToSpeech.
+         */
+        public int setEngineByPackageName(String packageName) {

+            return mSelf.setEngine(packageName);

+        }
+
     };
 
 }
diff --git a/packages/VpnServices/res/values-nb/strings.xml b/packages/VpnServices/res/values-nb/strings.xml
index 9aac828..506f999 100644
--- a/packages/VpnServices/res/values-nb/strings.xml
+++ b/packages/VpnServices/res/values-nb/strings.xml
@@ -16,7 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_label" msgid="4589592829302498102">"VPN-tjenester"</string>
-    <string name="vpn_notification_title_connected" msgid="8598654486956133580">"Koblet til VPNet <xliff:g id="PROFILENAME">%s</xliff:g>"</string>
-    <string name="vpn_notification_title_disconnected" msgid="6216572264382192027">"Koblet fra VPNet <xliff:g id="PROFILENAME">%s</xliff:g>"</string>
+    <string name="vpn_notification_title_connected" msgid="8598654486956133580">"<xliff:g id="PROFILENAME">%s</xliff:g> er VPN-tilkoblet"</string>
+    <string name="vpn_notification_title_disconnected" msgid="6216572264382192027">"<xliff:g id="PROFILENAME">%s</xliff:g> er VPN-frakoblet"</string>
     <string name="vpn_notification_hint_disconnected" msgid="1952209867082269429">"Trykk for å koble til et VPN på nytt"</string>
 </resources>
diff --git a/packages/VpnServices/res/values-zh-rCN/strings.xml b/packages/VpnServices/res/values-zh-rCN/strings.xml
index ee8878f..940e210 100644
--- a/packages/VpnServices/res/values-zh-rCN/strings.xml
+++ b/packages/VpnServices/res/values-zh-rCN/strings.xml
@@ -16,7 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_label" msgid="4589592829302498102">"虚拟专用网服务"</string>
-    <string name="vpn_notification_title_connected" msgid="8598654486956133580">"VPN“<xliff:g id="PROFILENAME">%s</xliff:g>”已连接"</string>
-    <string name="vpn_notification_title_disconnected" msgid="6216572264382192027">"VPN“<xliff:g id="PROFILENAME">%s</xliff:g>”连接已断开"</string>
+    <string name="vpn_notification_title_connected" msgid="8598654486956133580">"<xliff:g id="PROFILENAME">%s</xliff:g> VPN 已连接"</string>
+    <string name="vpn_notification_title_disconnected" msgid="6216572264382192027">"<xliff:g id="PROFILENAME">%s</xliff:g> VPN 连接已断开"</string>
     <string name="vpn_notification_hint_disconnected" msgid="1952209867082269429">"轻触可重新连接到虚拟专用网。"</string>
 </resources>
diff --git a/packages/VpnServices/src/com/android/server/vpn/VpnServiceBinder.java b/packages/VpnServices/src/com/android/server/vpn/VpnServiceBinder.java
index e5be847..eeafd5a 100644
--- a/packages/VpnServices/src/com/android/server/vpn/VpnServiceBinder.java
+++ b/packages/VpnServices/src/com/android/server/vpn/VpnServiceBinder.java
@@ -26,7 +26,9 @@
 import android.net.vpn.VpnManager;
 import android.net.vpn.VpnProfile;
 import android.net.vpn.VpnState;
+import android.os.Environment;
 import android.os.IBinder;
+import android.os.SystemProperties;
 import android.util.Log;
 
 import java.io.File;
@@ -45,11 +47,18 @@
     private static final String TAG = VpnServiceBinder.class.getSimpleName();
     private static final boolean DBG = true;
 
-    private static final String STATES_FILE_PATH = "/data/misc/vpn/.states";
+    private static final String STATES_FILE_RELATIVE_PATH = "/misc/vpn/.states";
 
     // The actual implementation is delegated to the VpnService class.
     private VpnService<? extends VpnProfile> mService;
 
+    // TODO(oam): Test VPN when EFS is enabled (will do later)...
+    private static String getStateFilePath() {
+        // This call will return the correcu directory whether Encrypted FS is enabled or not
+        // Disabled: /data/misc/vpn/.states   Enabled: /data/secure/misc/vpn/.states
+	return Environment.getSecureDataDirectory().getPath() + STATES_FILE_RELATIVE_PATH;
+    }
+
     private final IBinder mBinder = new IVpnService.Stub() {
         public boolean connect(VpnProfile p, String username, String password) {
             return VpnServiceBinder.this.connect(p, username, password);
@@ -84,14 +93,14 @@
     void saveStates() throws IOException {
         if (DBG) Log.d("VpnServiceBinder", "     saving states");
         ObjectOutputStream oos =
-                new ObjectOutputStream(new FileOutputStream(STATES_FILE_PATH));
+                new ObjectOutputStream(new FileOutputStream(getStateFilePath()));
         oos.writeObject(mService);
         oos.close();
     }
 
     void removeStates() {
         try {
-            File f = new File(STATES_FILE_PATH);
+            File f = new File(getStateFilePath());
             if (f.exists()) f.delete();
         } catch (Throwable e) {
             if (DBG) Log.d("VpnServiceBinder", "     remove states: " + e);
@@ -134,7 +143,7 @@
     private void checkSavedStates() {
         try {
             ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
-                    STATES_FILE_PATH));
+                    getStateFilePath()));
             mService = (VpnService<? extends VpnProfile>) ois.readObject();
             mService.recover(this);
             ois.close();
diff --git a/preloaded-classes b/preloaded-classes
index ae527ee..1a92546 100644
--- a/preloaded-classes
+++ b/preloaded-classes
@@ -1,1722 +1,1037 @@
 # Classes which are preloaded by com.android.internal.os.ZygoteInit.
-# Automatically generated by frameworks/base/tools/preload/WritePreloadedClassFile.java.
-# MIN_LOAD_TIME_MICROS=1000
-SQLite.Blob
-SQLite.Database
-SQLite.FunctionContext
-SQLite.Stmt
-SQLite.Vm
 android.R$styleable
-android.accounts.Account
-android.accounts.AccountManager
-android.accounts.AccountManager$3
-android.accounts.AccountManager$6
-android.accounts.AccountManager$AmsTask
-android.accounts.AccountManager$AmsTask$Response
-android.accounts.AccountManager$BaseFutureTask
-android.accounts.AccountManager$BaseFutureTask$1
-android.accounts.AccountManager$BaseFutureTask$Response
-android.accounts.AccountManager$Future2Task
-android.accounts.AccountManager$GetAuthTokenByTypeAndFeaturesTask
-android.accounts.AuthenticatorDescription
-android.accounts.IAccountAuthenticatorResponse$Stub
-android.accounts.IAccountManager$Stub
-android.accounts.IAccountManager$Stub$Proxy
-android.accounts.IAccountManagerResponse$Stub
 android.app.Activity
 android.app.ActivityGroup
-android.app.ActivityManager
-android.app.ActivityManager$RunningServiceInfo
+android.app.ActivityManager$MemoryInfo$1
 android.app.ActivityManagerNative
 android.app.ActivityManagerProxy
 android.app.ActivityThread
+android.app.ActivityThread$ActivityRecord
+android.app.ActivityThread$AppBindData
 android.app.ActivityThread$ApplicationThread
+android.app.ActivityThread$ContextCleanupInfo
 android.app.ActivityThread$GcIdler
 android.app.ActivityThread$H
+android.app.ActivityThread$Idler
 android.app.ActivityThread$PackageInfo
+android.app.ActivityThread$PackageInfo$ReceiverDispatcher
 android.app.ActivityThread$PackageInfo$ReceiverDispatcher$InnerReceiver
+android.app.ActivityThread$PackageInfo$ServiceDispatcher
 android.app.ActivityThread$PackageInfo$ServiceDispatcher$InnerConnection
 android.app.ActivityThread$ProviderRecord
+android.app.ActivityThread$ProviderRefCount
 android.app.AlertDialog
-android.app.AlertDialog$Builder
 android.app.Application
 android.app.ApplicationContext
 android.app.ApplicationContext$ApplicationContentResolver
 android.app.ApplicationContext$ApplicationPackageManager
 android.app.ApplicationContext$ApplicationPackageManager$PackageRemovedReceiver
+android.app.ApplicationContext$ApplicationPackageManager$ResourceName
 android.app.ApplicationContext$SharedPreferencesImpl
-android.app.ApplicationContext$SharedPreferencesImpl$EditorImpl
 android.app.ApplicationLoaders
 android.app.ApplicationThreadNative
-android.app.BackupAgent
-android.app.DatePickerDialog
 android.app.Dialog
 android.app.ExpandableListActivity
 android.app.IActivityManager
-android.app.IActivityManager$ContentProviderHolder
+android.app.IActivityManager$ContentProviderHolder$1
 android.app.IAlarmManager$Stub
+android.app.IAlarmManager$Stub$Proxy
 android.app.IApplicationThread
-android.app.IInstrumentationWatcher$Stub
 android.app.INotificationManager$Stub
+android.app.INotificationManager$Stub$Proxy
+android.app.ISearchManager
 android.app.ISearchManager$Stub
-android.app.ISearchManagerCallback$Stub
-android.app.IServiceConnection$Stub
-android.app.IStatusBar$Stub
-android.app.ITransientNotification$Stub
-android.app.IWallpaperManager$Stub
-android.app.IWallpaperManagerCallback$Stub
+android.app.ISearchManager$Stub$Proxy
 android.app.Instrumentation
-android.app.Instrumentation$ActivityGoing
-android.app.Instrumentation$Idler
 android.app.IntentReceiverLeaked
-android.app.IntentService
-android.app.IntentService$ServiceHandler
 android.app.ListActivity
+android.app.ListActivity$1
+android.app.ListActivity$2
 android.app.LocalActivityManager
 android.app.Notification
 android.app.NotificationManager
 android.app.PendingIntent
+android.app.PendingIntent$1
 android.app.ProgressDialog
 android.app.ReceiverRestrictedContext
 android.app.ResultInfo
-android.app.SearchManager$OnCancelListener
-android.app.SearchManager$SearchManagerCallback
-android.app.SearchableInfo
+android.app.ResultInfo$1
+android.app.SearchDialog
+android.app.SearchDialog$SearchAutoComplete
 android.app.Service
+android.app.ServiceConnectionLeaked
 android.app.TabActivity
-android.app.TimePickerDialog
-android.app.WallpaperManager
-android.app.WallpaperManager$Globals
-android.appwidget.AppWidgetHost
-android.appwidget.AppWidgetHost$Callbacks
-android.appwidget.AppWidgetHostView
-android.appwidget.AppWidgetHostView$1
-android.appwidget.AppWidgetHostView$ParcelableSparseArray
-android.appwidget.AppWidgetManager
-android.appwidget.AppWidgetProvider
-android.appwidget.AppWidgetProviderInfo
-android.backup.BackupDataInput
-android.backup.BackupDataInput$EntityHeader
-android.backup.BackupDataOutput
-android.backup.BackupHelperAgent
-android.backup.BackupHelperDispatcher
-android.backup.BackupHelperDispatcher$Header
-android.backup.BackupManager
-android.backup.FileBackupHelperBase
-android.backup.IBackupManager$Stub
-android.backup.IBackupManager$Stub$Proxy
-android.backup.IRestoreObserver$Stub
-android.backup.IRestoreSession$Stub
-android.backup.RestoreSet
-android.bluetooth.BluetoothA2dp
-android.bluetooth.BluetoothAdapter
-android.bluetooth.BluetoothAudioGateway
-android.bluetooth.BluetoothClass
-android.bluetooth.BluetoothDevice
-android.bluetooth.BluetoothHeadset
-android.bluetooth.BluetoothServerSocket
-android.bluetooth.BluetoothSocket
-android.bluetooth.HeadsetBase
-android.bluetooth.IBluetooth
-android.bluetooth.IBluetooth$Stub
-android.bluetooth.IBluetooth$Stub$Proxy
-android.bluetooth.IBluetoothA2dp
-android.bluetooth.IBluetoothA2dp$Stub
-android.bluetooth.IBluetoothHeadset$Stub
-android.bluetooth.IBluetoothHeadset$Stub$Proxy
-android.bluetooth.IBluetoothPbap$Stub
-android.bluetooth.ScoSocket
 android.content.AbstractSyncableContentProvider
-android.content.AbstractSyncableContentProvider$DatabaseHelper
 android.content.AbstractTableMerger
-android.content.AsyncQueryHandler
+android.content.AsyncQueryHandler$WorkerHandler
 android.content.BroadcastReceiver
+android.content.ComponentCallbacks
 android.content.ComponentName
-android.content.ContentProvider
+android.content.ComponentName$1
 android.content.ContentProvider$Transport
-android.content.ContentProviderClient
-android.content.ContentProviderNative
-android.content.ContentProviderNative$IEntityIteratorImpl
-android.content.ContentProviderOperation
 android.content.ContentProviderProxy
-android.content.ContentProviderResult
 android.content.ContentQueryMap
+android.content.ContentQueryMap$1
 android.content.ContentResolver
 android.content.ContentResolver$CursorWrapperInner
-android.content.ContentResolver$ParcelFileDescriptorInner
 android.content.ContentValues
 android.content.Context
 android.content.ContextWrapper
-android.content.Entity
+android.content.DialogInterface
+android.content.DialogInterface$OnCancelListener
+android.content.DialogInterface$OnDismissListener
 android.content.IContentProvider
+android.content.IContentService
 android.content.IContentService$Stub
-android.content.IContentService$Stub$Proxy
-android.content.IEntityIterator$Stub
-android.content.IIntentReceiver$Stub
-android.content.IIntentSender$Stub
-android.content.ISyncAdapter$Stub
-android.content.ISyncContext$Stub
 android.content.Intent
-android.content.Intent$ShortcutIconResource
+android.content.Intent$1
 android.content.IntentFilter
-android.content.IntentSender
-android.content.IntentSender$1
 android.content.SearchRecentSuggestionsProvider
-android.content.SearchRecentSuggestionsProvider$DatabaseHelper
-android.content.SyncAdapter
-android.content.SyncAdapter$Transport
-android.content.SyncAdapterType
+android.content.ServiceConnection
+android.content.SharedPreferences
 android.content.SyncResult
-android.content.SyncStateContentProviderHelper
+android.content.SyncResult$1
 android.content.SyncStats
+android.content.SyncStats$1
 android.content.SyncableContentProvider
-android.content.TempProviderSyncAdapter
-android.content.TempProviderSyncAdapter$SyncThread
 android.content.UriMatcher
 android.content.pm.ActivityInfo
+android.content.pm.ActivityInfo$1
 android.content.pm.ApplicationInfo
-android.content.pm.ConfigurationInfo
-android.content.pm.FeatureInfo
-android.content.pm.IPackageDataObserver$Stub
-android.content.pm.IPackageInstallObserver$Stub
+android.content.pm.ApplicationInfo$1
+android.content.pm.ComponentInfo
+android.content.pm.IPackageManager
 android.content.pm.IPackageManager$Stub
 android.content.pm.IPackageManager$Stub$Proxy
-android.content.pm.IPackageStatsObserver$Stub
 android.content.pm.InstrumentationInfo
-android.content.pm.PackageInfo
+android.content.pm.InstrumentationInfo$1
+android.content.pm.PackageItemInfo
 android.content.pm.PackageManager
 android.content.pm.PackageManager$NameNotFoundException
-android.content.pm.PackageStats
-android.content.pm.PathPermission
-android.content.pm.PermissionGroupInfo
 android.content.pm.PermissionInfo
 android.content.pm.ProviderInfo
-android.content.pm.ResolveInfo
-android.content.pm.ResolveInfo$DisplayNameComparator
-android.content.pm.ServiceInfo
-android.content.pm.Signature
-android.content.res.AssetFileDescriptor
-android.content.res.AssetFileDescriptor$1
-android.content.res.AssetFileDescriptor$AutoCloseInputStream
+android.content.pm.ProviderInfo$1
+android.content.pm.ResolveInfo$1
+android.content.pm.ServiceInfo$1
 android.content.res.AssetManager
 android.content.res.AssetManager$AssetInputStream
 android.content.res.ColorStateList
 android.content.res.ColorStateList$1
-android.content.res.CompatibilityInfo
-android.content.res.CompatibilityInfo$1
-android.content.res.CompatibilityInfo$Translator
 android.content.res.Configuration
-android.content.res.Configuration$1
-android.content.res.PluralRules
 android.content.res.Resources
-android.content.res.Resources$1
+android.content.res.Resources$Theme
 android.content.res.StringBlock
-android.content.res.StringBlock$Height
 android.content.res.TypedArray
 android.content.res.XmlBlock
 android.content.res.XmlBlock$Parser
-android.content.res.XmlResourceParser
 android.database.AbstractCursor
 android.database.AbstractCursor$SelfContentObserver
 android.database.AbstractWindowedCursor
 android.database.BulkCursorNative
 android.database.BulkCursorProxy
 android.database.BulkCursorToCursorAdaptor
-android.database.CharArrayBuffer
+android.database.ContentObservable
 android.database.ContentObserver$Transport
-android.database.CursorJoiner
-android.database.CursorJoiner$Result
+android.database.Cursor
 android.database.CursorToBulkCursorAdaptor
+android.database.CursorToBulkCursorAdaptor$ContentObserverProxy
 android.database.CursorWindow
-android.database.CursorWindow$1
 android.database.CursorWrapper
 android.database.DataSetObservable
-android.database.DatabaseUtils
-android.database.DatabaseUtils$InsertHelper
-android.database.IContentObserver$Stub
-android.database.MatrixCursor
+android.database.IContentObserver$Stub$Proxy
 android.database.MergeCursor
-android.database.sqlite.SQLiteClosable
-android.database.sqlite.SQLiteContentHelper
 android.database.sqlite.SQLiteCursor
 android.database.sqlite.SQLiteDatabase
-android.database.sqlite.SQLiteDatabase$ConflictAlgorithm
-android.database.sqlite.SQLiteDebug
-android.database.sqlite.SQLiteDebug$PagerStats
+android.database.sqlite.SQLiteDatabase$CursorFactory
 android.database.sqlite.SQLiteDirectCursorDriver
-android.database.sqlite.SQLiteDoneException
-android.database.sqlite.SQLiteException
-android.database.sqlite.SQLiteOpenHelper
-android.database.sqlite.SQLiteProgram
 android.database.sqlite.SQLiteQuery
-android.database.sqlite.SQLiteQueryBuilder
 android.database.sqlite.SQLiteStatement
 android.ddm.DdmHandleAppName
 android.ddm.DdmHandleExit
 android.ddm.DdmHandleHeap
 android.ddm.DdmHandleHello
 android.ddm.DdmHandleNativeHeap
-android.ddm.DdmHandleProfiling
 android.ddm.DdmHandleThread
 android.ddm.DdmRegister
-android.debug.JNITest
-android.emoji.EmojiFactory
-android.graphics.AvoidXfermode
 android.graphics.Bitmap
-android.graphics.Bitmap$1
-android.graphics.Bitmap$CompressFormat
-android.graphics.Bitmap$Config
-android.graphics.BitmapFactory
-android.graphics.BitmapFactory$Options
 android.graphics.BitmapShader
-android.graphics.BlurMaskFilter
-android.graphics.Camera
 android.graphics.Canvas
 android.graphics.Canvas$EdgeType
 android.graphics.Color
-android.graphics.ColorFilter
-android.graphics.ColorMatrixColorFilter
-android.graphics.ComposePathEffect
-android.graphics.ComposeShader
-android.graphics.CornerPathEffect
-android.graphics.DashPathEffect
-android.graphics.DiscretePathEffect
-android.graphics.DrawFilter
-android.graphics.EmbossMaskFilter
 android.graphics.Interpolator
-android.graphics.LayerRasterizer
-android.graphics.LightingColorFilter
 android.graphics.LinearGradient
-android.graphics.MaskFilter
 android.graphics.Matrix
 android.graphics.Matrix$ScaleToFit
-android.graphics.Movie
 android.graphics.NinePatch
 android.graphics.Paint
-android.graphics.Paint$Align
-android.graphics.Paint$Cap
-android.graphics.Paint$FontMetrics
-android.graphics.Paint$FontMetricsInt
-android.graphics.Paint$Join
-android.graphics.Paint$Style
 android.graphics.PaintFlagsDrawFilter
 android.graphics.Path
 android.graphics.Path$Direction
-android.graphics.Path$FillType
-android.graphics.PathDashPathEffect
-android.graphics.PathEffect
-android.graphics.PathMeasure
 android.graphics.Picture
-android.graphics.PixelFormat
-android.graphics.PixelXorXfermode
-android.graphics.Point
-android.graphics.PointF
+android.graphics.PorterDuff
 android.graphics.PorterDuff$Mode
-android.graphics.PorterDuffColorFilter
 android.graphics.PorterDuffXfermode
-android.graphics.RadialGradient
-android.graphics.Rasterizer
 android.graphics.Rect
-android.graphics.Rect$1
 android.graphics.RectF
-android.graphics.RectF$1
 android.graphics.Region
-android.graphics.Region$1
 android.graphics.Region$Op
-android.graphics.RegionIterator
 android.graphics.Shader
 android.graphics.Shader$TileMode
-android.graphics.SumPathEffect
-android.graphics.SweepGradient
 android.graphics.Typeface
 android.graphics.Xfermode
-android.graphics.drawable.Animatable
-android.graphics.drawable.AnimatedRotateDrawable
-android.graphics.drawable.AnimatedRotateDrawable$AnimatedRotateState
 android.graphics.drawable.AnimationDrawable
-android.graphics.drawable.AnimationDrawable$AnimationState
 android.graphics.drawable.BitmapDrawable
 android.graphics.drawable.BitmapDrawable$BitmapState
-android.graphics.drawable.ClipDrawable
-android.graphics.drawable.ClipDrawable$ClipState
 android.graphics.drawable.ColorDrawable
 android.graphics.drawable.ColorDrawable$ColorState
 android.graphics.drawable.Drawable
-android.graphics.drawable.Drawable$Callback
-android.graphics.drawable.Drawable$ConstantState
 android.graphics.drawable.DrawableContainer
-android.graphics.drawable.DrawableContainer$DrawableContainerState
 android.graphics.drawable.GradientDrawable
-android.graphics.drawable.GradientDrawable$1
-android.graphics.drawable.GradientDrawable$GradientState
-android.graphics.drawable.GradientDrawable$Orientation
 android.graphics.drawable.LayerDrawable
 android.graphics.drawable.LayerDrawable$ChildDrawable
 android.graphics.drawable.LayerDrawable$LayerState
-android.graphics.drawable.LevelListDrawable
 android.graphics.drawable.NinePatchDrawable
 android.graphics.drawable.NinePatchDrawable$NinePatchState
 android.graphics.drawable.PaintDrawable
+android.graphics.drawable.RotateDrawable
+android.graphics.drawable.RotateDrawable$RotateState
+android.graphics.drawable.ScaleDrawable
+android.graphics.drawable.ScaleDrawable$ScaleState
 android.graphics.drawable.ShapeDrawable
+android.graphics.drawable.ShapeDrawable$ShapeState
 android.graphics.drawable.StateListDrawable
 android.graphics.drawable.StateListDrawable$StateListState
 android.graphics.drawable.TransitionDrawable
 android.graphics.drawable.TransitionDrawable$TransitionState
-android.graphics.drawable.shapes.RectShape
 android.graphics.drawable.shapes.RoundRectShape
-android.hardware.Camera
-android.hardware.Camera$Parameters
-android.hardware.ISensorService$Stub
 android.hardware.SensorManager
-android.hardware.SensorManager$1
-android.hardware.SensorManager$LegacyListener
-android.inputmethodservice.AbstractInputMethodService
-android.inputmethodservice.AbstractInputMethodService$AbstractInputMethodImpl
-android.inputmethodservice.AbstractInputMethodService$AbstractInputMethodSessionImpl
-android.inputmethodservice.ExtractButton
-android.inputmethodservice.ExtractEditText
-android.inputmethodservice.IInputMethodSessionWrapper
-android.inputmethodservice.IInputMethodSessionWrapper$InputMethodEventCallbackWrapper
-android.inputmethodservice.IInputMethodWrapper
-android.inputmethodservice.IInputMethodWrapper$InputMethodSessionCallbackWrapper
-android.inputmethodservice.InputMethodService
-android.inputmethodservice.InputMethodService$InputMethodImpl
-android.inputmethodservice.InputMethodService$InputMethodSessionImpl
-android.inputmethodservice.Keyboard
-android.inputmethodservice.Keyboard$Key
 android.inputmethodservice.KeyboardView
-android.inputmethodservice.KeyboardView$2
-android.inputmethodservice.SoftInputWindow
-android.location.GpsStatus
-android.location.IGpsStatusListener$Stub
-android.location.ILocationListener$Stub
 android.location.ILocationManager$Stub
-android.location.ILocationManager$Stub$Proxy
-android.location.ILocationProvider
-android.location.ILocationProvider$Stub
 android.location.Location
-android.location.LocationManager
-android.location.LocationManager$ListenerTransport
-android.media.AmrInputStream
-android.media.AudioFormat
 android.media.AudioManager
-android.media.AudioRecord
-android.media.AudioSystem
-android.media.AudioTrack
-android.media.ExifInterface
 android.media.IAudioService$Stub
 android.media.IAudioService$Stub$Proxy
-android.media.JetPlayer
-android.media.MediaMetadataRetriever
-android.media.MediaPlayer
-android.media.MediaPlayer$OnVideoSizeChangedListener
-android.media.MediaRecorder
-android.media.MediaScanner
-android.media.MediaScannerConnection$MediaScannerConnectionClient
-android.media.Metadata
-android.media.Ringtone
-android.media.RingtoneManager
-android.media.ToneGenerator
-android.net.ConnectivityManager
-android.net.Credentials
-android.net.DhcpInfo
-android.net.DhcpInfo$1
-android.net.IConnectivityManager$Stub
-android.net.IConnectivityManager$Stub$Proxy
-android.net.LocalServerSocket
 android.net.LocalSocket
+android.net.LocalSocketAddress
 android.net.LocalSocketAddress$Namespace
 android.net.LocalSocketImpl
 android.net.LocalSocketImpl$SocketInputStream
 android.net.LocalSocketImpl$SocketOutputStream
-android.net.NetworkConnectivityListener
 android.net.NetworkConnectivityListener$State
 android.net.NetworkInfo
 android.net.NetworkInfo$DetailedState
-android.net.NetworkInfo$State
-android.net.NetworkUtils
+android.net.SSLCertificateSocketFactory
 android.net.Uri
+android.net.Uri$1
+android.net.Uri$AbstractHierarchicalUri
+android.net.Uri$AbstractPart
 android.net.Uri$HierarchicalUri
 android.net.Uri$OpaqueUri
 android.net.Uri$Part
+android.net.Uri$Part$EmptyPart
+android.net.Uri$PathPart
 android.net.Uri$PathSegments
 android.net.Uri$StringUri
 android.net.WebAddress
 android.net.http.AndroidHttpClient
 android.net.http.AndroidHttpClient$1
 android.net.http.AndroidHttpClient$2
-android.net.http.AndroidHttpClientConnection
-android.net.http.CertificateChainValidator
-android.net.http.Connection
-android.net.http.ConnectionThread
+android.net.http.AndroidHttpClient$CurlLogger
 android.net.http.DomainNameChecker
+android.net.http.CertificateChainValidator
 android.net.http.EventHandler
-android.net.http.Headers
 android.net.http.HttpsConnection
-android.net.http.Request
-android.net.http.RequestHandle
 android.net.http.RequestQueue
-android.net.http.RequestQueue$ActivePool
-android.net.http.SslCertificate
-android.net.http.SslCertificate$DName
 android.net.http.SslError
-android.net.vpn.IVpnService$Stub
-android.net.vpn.IVpnService$Stub$Proxy
-android.net.vpn.PptpProfile
-android.net.vpn.VpnManager
-android.net.vpn.VpnType
 android.net.wifi.IWifiManager$Stub
-android.net.wifi.IWifiManager$Stub$Proxy
-android.net.wifi.ScanResult
 android.net.wifi.SupplicantState
 android.net.wifi.WifiConfiguration
-android.net.wifi.WifiConfiguration$EnterpriseField
 android.net.wifi.WifiInfo
-android.net.wifi.WifiManager
-android.net.wifi.WifiNative
-android.opengl.GLES10
-android.opengl.GLES10Ext
-android.opengl.GLES11
-android.opengl.GLES11Ext
-android.opengl.GLU
-android.opengl.GLUtils
-android.opengl.Matrix
-android.opengl.Visibility
-android.os.AsyncTask$1
-android.os.AsyncTask$2
-android.os.AsyncTask$3
-android.os.AsyncTask$Status
-android.os.Base64Utils
+android.opengl.Material
 android.os.Binder
 android.os.BinderProxy
 android.os.Build
-android.os.Build$VERSION
 android.os.Bundle
-android.os.DeadObjectException
-android.os.Debug
-android.os.Debug$MemoryInfo
-android.os.Debug$MemoryInfo$1
+android.os.Bundle$1
 android.os.Environment
-android.os.FileObserver$ObserverThread
 android.os.FileUtils
-android.os.FileUtils$FileStatus
 android.os.Handler
 android.os.HandlerThread
 android.os.IBinder
-android.os.ICheckinService$Stub
-android.os.IInterface
-android.os.IMountService$Stub
-android.os.IMountService$Stub$Proxy
-android.os.INetStatService$Stub
-android.os.IParentalControlCallback$Stub
 android.os.IPowerManager$Stub
 android.os.IPowerManager$Stub$Proxy
+android.os.IServiceManager
 android.os.IVibratorService$Stub
+android.os.IVibratorService$Stub$Proxy
 android.os.Looper
-android.os.MemoryFile
 android.os.Message
-android.os.NetStat
+android.os.Message$1
+android.os.MessageQueue
+android.os.MessageQueue$IdleHandler
 android.os.Parcel
-android.os.Parcel$1
-android.os.ParcelFileDescriptor
-android.os.ParcelFileDescriptor$1
-android.os.Parcelable
-android.os.Parcelable$Creator
 android.os.PatternMatcher
-android.os.PerformanceCollector
-android.os.Power
+android.os.PatternMatcher$1
 android.os.PowerManager
+android.os.PowerManager$WakeLock
+android.os.PowerManager$WakeLock$1
 android.os.Process
-android.os.RemoteCallbackList
-android.os.RemoteException
-android.os.ResultReceiver
-android.os.ResultReceiver$MyResultReceiver
 android.os.ServiceManager
 android.os.ServiceManagerNative
-android.os.StatFs
-android.os.SystemClock
-android.os.SystemProperties
-android.os.UEventObserver
-android.pim.EventRecurrence
-android.pim.ICalendar
-android.pim.ICalendar$Component
-android.pim.ICalendar$Parameter
-android.pim.ICalendar$ParserState
-android.pim.ICalendar$Property
-android.pim.RecurrenceSet
+android.os.ServiceManagerProxy
+android.os.Vibrator
 android.preference.CheckBoxPreference
-android.preference.CheckBoxPreference$SavedState
 android.preference.DialogPreference
 android.preference.EditTextPreference
-android.preference.EditTextPreference$SavedState
-android.preference.EditTextPreference$SavedState$1
-android.preference.GenericInflater
 android.preference.ListPreference
-android.preference.ListPreference$SavedState
 android.preference.Preference
-android.preference.Preference$BaseSavedState
 android.preference.PreferenceActivity
-android.preference.PreferenceCategory
 android.preference.PreferenceGroup
 android.preference.PreferenceGroupAdapter
-android.preference.PreferenceInflater
 android.preference.PreferenceManager
 android.preference.PreferenceScreen
 android.preference.RingtonePreference
-android.preference.SeekBarPreference
-android.preference.VolumePreference
-android.preference.VolumePreference$SeekBarVolumizer
-android.provider.Browser
-android.provider.Calendar
-android.provider.Calendar$Attendees
-android.provider.Calendar$BusyBits
-android.provider.Calendar$CalendarAlerts
-android.provider.Calendar$Calendars
-android.provider.Calendar$Events
-android.provider.Calendar$Instances
-android.provider.Calendar$Reminders
-android.provider.CallLog
-android.provider.CallLog$Calls
-android.provider.Checkin
-android.provider.Checkin$Events
-android.provider.Checkin$Events$Tag
-android.provider.Checkin$Properties
-android.provider.Checkin$Properties$Tag
-android.provider.Checkin$Stats
-android.provider.Checkin$Stats$Tag
-android.provider.Contacts
-android.provider.Contacts$ContactMethods
-android.provider.ContactsContract
-android.provider.ContactsContract$CommonDataKinds$Email
-android.provider.ContactsContract$CommonDataKinds$Im
-android.provider.ContactsContract$CommonDataKinds$Organization
-android.provider.ContactsContract$CommonDataKinds$Phone
-android.provider.ContactsContract$CommonDataKinds$StructuredPostal
-android.provider.ContactsContract$Contacts
-android.provider.ContactsContract$Data
-android.provider.ContactsContract$DataColumnsWithJoins
-android.provider.ContactsContract$PhoneLookup
-android.provider.ContactsContract$Presence
-android.provider.ContactsContract$RawContacts
-android.provider.Downloads
-android.provider.DrmStore$Audio
-android.provider.Gmail
-android.provider.Gmail$AttachmentOrigin
-android.provider.Gmail$AttachmentRendition
-android.provider.Gmail$BecomeActiveNetworkCursor
-android.provider.Gmail$ConversationCursor
-android.provider.Gmail$CursorStatus
-android.provider.Gmail$LabelMap
-android.provider.Gmail$MailCursor
-android.provider.Gmail$MessageCursor
-android.provider.Gmail$PersonalLevel
-android.provider.Im$Account
-android.provider.Im$Avatars
-android.provider.Im$Chats
-android.provider.Im$Contacts
-android.provider.Im$Messages
-android.provider.Im$Provider
-android.provider.MediaStore
-android.provider.MediaStore$Audio$Albums
-android.provider.MediaStore$Audio$Artists
-android.provider.MediaStore$Audio$Media
-android.provider.MediaStore$Images$Media
-android.provider.MediaStore$Images$Thumbnails
-android.provider.SearchRecentSuggestions
-android.provider.Settings
-android.provider.Settings$Gservices
-android.provider.Settings$NameValueTable
-android.provider.Settings$Secure
-android.provider.Settings$SettingNotFoundException
-android.provider.Settings$System
-android.provider.SocialContract
-android.provider.Telephony$BaseMmsColumns
-android.provider.Telephony$Mms
-android.provider.Telephony$Mms$Draft
-android.provider.Telephony$Mms$Inbox
-android.provider.Telephony$MmsSms
-android.provider.Telephony$Sms
-android.provider.Telephony$Sms$Conversations
-android.provider.Telephony$Sms$Intents
-android.provider.Telephony$Sms$Outbox
-android.provider.Telephony$Threads
-android.provider.UserDictionary
-android.provider.UserDictionary$Words
-android.security.KeyStore
-android.security.Md5MessageDigest
-android.security.MessageDigest
-android.security.Sha1MessageDigest
-android.server.BluetoothA2dpService
-android.server.BluetoothEventLoop
-android.server.BluetoothService
-android.server.data.CrashData
-android.speech.IRecognitionListener$Stub
-android.speech.IRecognitionService$Stub
-android.speech.RecognitionResult
-android.speech.RecognitionServiceUtil
-android.speech.RecognitionServiceUtil$Connection
-android.speech.srec.MicrophoneInputStream
-android.speech.srec.Recognizer
-android.speech.srec.Recognizer$Grammar
-android.speech.tts.ITts
-android.speech.tts.ITts$Stub
-android.speech.tts.ITts$Stub$Proxy
-android.speech.tts.ITtsCallback$Stub
-android.speech.tts.TextToSpeech
-android.speech.tts.TextToSpeech$2
-android.telephony.NeighboringCellInfo
-android.telephony.PhoneNumberFormattingTextWatcher
+android.sax.RootElement
+android.server.search.SearchableInfo
+android.server.search.SearchableInfo$1
 android.telephony.PhoneNumberUtils
-android.telephony.PhoneStateListener$1
+android.telephony.PhoneStateListener
 android.telephony.ServiceState
-android.telephony.SignalStrength
-android.telephony.SmsMessage
-android.telephony.SmsMessage$MessageClass
 android.telephony.TelephonyManager
-android.text.AndroidCharacter
-android.text.Annotation
+android.telephony.SmsManager
+android.telephony.SmsMessage
 android.text.AutoText
 android.text.BoringLayout
+android.text.BoringLayout$Metrics
 android.text.DynamicLayout
+android.text.DynamicLayout$ChangeWatcher
+android.text.Editable
 android.text.Editable$Factory
-android.text.Html
+android.text.GetChars
+android.text.GraphicsOperations
 android.text.Html$HtmlParser
-android.text.HtmlToSpannedConverter
-android.text.HtmlToSpannedConverter$Bold
-android.text.IClipboard$Stub
+android.text.InputFilter
 android.text.Layout
 android.text.Layout$Alignment
+android.text.Layout$Directions
 android.text.Layout$Ellipsizer
-android.text.Layout$SpannedEllipsizer
-android.text.LoginFilter
-android.text.LoginFilter$UsernameFilterGMail
+android.text.NoCopySpan
+android.text.NoCopySpan$Concrete
+android.text.PackedIntVector
+android.text.PackedObjectVector
+android.text.ParcelableSpan
 android.text.Selection
+android.text.Selection$END
+android.text.Selection$START
+android.text.SpanWatcher
+android.text.Spannable
+android.text.Spannable$Factory
 android.text.SpannableString
 android.text.SpannableStringBuilder
 android.text.SpannableStringInternal
+android.text.Spanned
 android.text.SpannedString
 android.text.StaticLayout
+android.text.Styled
+android.text.TextPaint
 android.text.TextUtils
+android.text.TextUtils$1
+android.text.TextUtils$EllipsizeCallback
 android.text.TextUtils$SimpleStringSplitter
 android.text.TextUtils$TruncateAt
-android.text.format.DateFormat
+android.text.TextWatcher
 android.text.format.DateUtils
-android.text.format.Formatter
 android.text.format.Time
 android.text.method.ArrowKeyMovementMethod
 android.text.method.BaseKeyListener
-android.text.method.DialerKeyListener
-android.text.method.HideReturnsTransformationMethod
-android.text.method.LinkMovementMethod
+android.text.method.KeyListener
 android.text.method.MetaKeyKeyListener
-android.text.method.PasswordTransformationMethod
+android.text.method.MovementMethod
 android.text.method.QwertyKeyListener
 android.text.method.ReplacementTransformationMethod
 android.text.method.ReplacementTransformationMethod$SpannedReplacementCharSequence
-android.text.method.ScrollingMovementMethod
 android.text.method.SingleLineTransformationMethod
 android.text.method.TextKeyListener
 android.text.method.TextKeyListener$Capitalize
-android.text.style.BulletSpan
-android.text.style.ClickableSpan
-android.text.style.DynamicDrawableSpan
-android.text.style.ImageSpan
+android.text.method.TextKeyListener$SettingsObserver
+android.text.method.TransformationMethod
+android.text.style.AlignmentSpan
+android.text.style.CharacterStyle
+android.text.style.ForegroundColorSpan
+android.text.style.LeadingMarginSpan
+android.text.style.LineBackgroundSpan
+android.text.style.LineHeightSpan
 android.text.style.MetricAffectingSpan
-android.text.style.QuoteSpan
+android.text.style.ParagraphStyle
+android.text.style.ReplacementSpan
 android.text.style.StyleSpan
-android.text.style.TextAppearanceSpan
 android.text.style.URLSpan
-android.text.style.UnderlineSpan
+android.text.style.UpdateAppearance
+android.text.style.UpdateLayout
+android.text.style.WrapTogetherSpan
 android.text.util.Linkify
-android.text.util.Linkify$1
-android.text.util.Linkify$4
-android.text.util.Rfc822Tokenizer
-android.text.util.Rfc822Validator
+android.util.AndroidRuntimeException
 android.util.AttributeSet
-android.util.DayOfMonthCursor
 android.util.DisplayMetrics
-android.util.EventLog
-android.util.EventLog$Event
-android.util.EventLog$List
-android.util.FinitePool
 android.util.FloatMath
-android.util.Log
-android.util.LongSparseArray
-android.util.Pair
 android.util.SparseArray
-android.util.SparseIntArray
-android.util.StateSet
-android.util.TimingLogger
 android.util.TypedValue
-android.util.Xml
-android.util.Xml$Encoding
 android.util.Xml$XmlSerializerFactory
 android.view.AbsSavedState
+android.view.ContextMenu
+android.view.ContextMenu$ContextMenuInfo
 android.view.ContextThemeWrapper
 android.view.Display
 android.view.FocusFinder
-android.view.GestureDetector
+android.view.FocusFinder$1
 android.view.GestureDetector$SimpleOnGestureListener
-android.view.IRotationWatcher$Stub
+android.view.Gravity
+android.view.IWindow
 android.view.IWindow$Stub
+android.view.IWindowManager
 android.view.IWindowManager$Stub
 android.view.IWindowManager$Stub$Proxy
+android.view.IWindowSession
 android.view.IWindowSession$Stub
 android.view.IWindowSession$Stub$Proxy
 android.view.KeyCharacterMap
-android.view.KeyCharacterMap$KeyData
 android.view.KeyEvent
+android.view.KeyEvent$1
+android.view.KeyEvent$Callback
 android.view.LayoutInflater
+android.view.LayoutInflater$Factory
+android.view.Menu
 android.view.MenuInflater
-android.view.MenuInflater$MenuState
+android.view.MenuItem
 android.view.MotionEvent
-android.view.OrientationEventListener$SensorEventListenerImpl
+android.view.MotionEvent$1
 android.view.Surface
-android.view.Surface$1
-android.view.Surface$CompatibleCanvas
-android.view.SurfaceSession
+android.view.SurfaceHolder
 android.view.SurfaceView
-android.view.SurfaceView$2
-android.view.SurfaceView$MyWindow
+android.view.TouchDelegate
 android.view.VelocityTracker
 android.view.View
+android.view.View$AttachInfo
 android.view.View$AttachInfo$Callbacks
-android.view.View$AttachInfo$InvalidateInfo
 android.view.View$BaseSavedState
+android.view.View$BaseSavedState$1
+android.view.View$MeasureSpec
+android.view.View$OnCreateContextMenuListener
+android.view.View$ScrollabilityCache
 android.view.ViewConfiguration
-android.view.ViewDebug
 android.view.ViewGroup
-android.view.ViewParent
+android.view.ViewGroup$LayoutParams
+android.view.ViewGroup$MarginLayoutParams
+android.view.ViewManager
 android.view.ViewRoot
 android.view.ViewRoot$1
 android.view.ViewRoot$InputMethodCallback
+android.view.ViewRoot$RunQueue
+android.view.ViewRoot$TrackballAxis
 android.view.ViewRoot$W
 android.view.ViewStub
+android.view.ViewTreeObserver
+android.view.ViewTreeObserver$InternalInsetsInfo
+android.view.ViewTreeObserver$OnPreDrawListener
 android.view.Window
+android.view.Window$Callback
+android.view.Window$LocalWindowManager
+android.view.WindowLeaked
+android.view.WindowManager
 android.view.WindowManager$LayoutParams
+android.view.WindowManager$LayoutParams$1
 android.view.WindowManagerImpl
-android.view.accessibility.AccessibilityEvent
-android.view.accessibility.AccessibilityManager
-android.view.accessibility.AccessibilityManager$1
-android.view.accessibility.IAccessibilityManager$Stub
-android.view.accessibility.IAccessibilityManagerClient$Stub
+android.view.animation.AccelerateDecelerateInterpolator
 android.view.animation.AlphaAnimation
 android.view.animation.Animation
 android.view.animation.AnimationSet
 android.view.animation.LinearInterpolator
-android.view.animation.ScaleAnimation
 android.view.animation.Transformation
 android.view.inputmethod.BaseInputConnection
 android.view.inputmethod.CompletionInfo
+android.view.inputmethod.CompletionInfo$1
+
 android.view.inputmethod.EditorInfo
+android.view.inputmethod.EditorInfo$1
+
 android.view.inputmethod.ExtractedText
+android.view.inputmethod.ExtractedText$1
+
 android.view.inputmethod.ExtractedTextRequest
+android.view.inputmethod.ExtractedTextRequest$1
+
 android.view.inputmethod.InputBinding
-android.view.inputmethod.InputConnectionWrapper
+android.view.inputmethod.InputBinding$1
+android.view.inputmethod.InputConnection
+android.view.inputmethod.InputMethod
+android.view.inputmethod.InputMethod$SessionCallback
+
+android.view.inputmethod.InputMethodInfo
+android.view.inputmethod.InputMethodInfo$1
 android.view.inputmethod.InputMethodManager
 android.view.inputmethod.InputMethodManager$1
+android.view.inputmethod.InputMethodManager$2
 android.view.inputmethod.InputMethodManager$ControlledInputConnectionWrapper
+android.view.inputmethod.InputMethodManager$H
+
+android.view.inputmethod.InputMethodSession
+android.view.inputmethod.InputMethodSession$EventCallback
 android.webkit.BrowserFrame
-android.webkit.CacheLoader
 android.webkit.CacheManager
-android.webkit.CacheManager$CacheResult
 android.webkit.CallbackProxy
-android.webkit.CallbackProxy$ResultTransport
-android.webkit.ContentLoader
 android.webkit.CookieManager
-android.webkit.CookieManager$CookieComparator
 android.webkit.CookieSyncManager
-android.webkit.DataLoader
-android.webkit.DateSorter
-android.webkit.FrameLoader
-android.webkit.GeolocationPermissions
-android.webkit.GoogleLocationSettingManager
-android.webkit.HTML5VideoViewProxy
-android.webkit.HttpAuthHandler
 android.webkit.HttpDateTime
 android.webkit.JWebCoreJavaBridge
 android.webkit.LoadListener
 android.webkit.MimeTypeMap
-android.webkit.Network
-android.webkit.PluginManager
-android.webkit.SslErrorHandler
-android.webkit.StreamLoader
 android.webkit.URLUtil
 android.webkit.WebBackForwardList
-android.webkit.WebChromeClient
 android.webkit.WebHistoryItem
 android.webkit.WebIconDatabase
+android.webkit.WebIconDatabase$EventHandler
+android.webkit.WebIconDatabase$EventHandler$1
+android.webkit.WebIconDatabase$EventHandler$IconResult
 android.webkit.WebSettings
+android.webkit.WebSettings$EventHandler
+android.webkit.WebSettings$EventHandler$1
+android.webkit.WebSettings$LayoutAlgorithm
+android.webkit.WebSettings$RenderPriority
 android.webkit.WebSettings$TextSize
-android.webkit.WebStorage
 android.webkit.WebSyncManager
 android.webkit.WebSyncManager$SyncHandler
 android.webkit.WebTextView
 android.webkit.WebView
-android.webkit.WebView$1
-android.webkit.WebView$HitTestResult
-android.webkit.WebView$RequestFormData
-android.webkit.WebViewClient
+android.webkit.WebView$ExtendedZoomControls
+android.webkit.WebView$PrivateHandler
 android.webkit.WebViewCore
 android.webkit.WebViewCore$CursorData
-android.webkit.WebViewCore$TextSelectionData
-android.webkit.WebViewCore$TouchUpData
+android.webkit.WebViewCore$EventHub
+android.webkit.WebViewCore$EventHub$1
+android.webkit.WebViewCore$WebCoreThread
+android.webkit.WebViewCore$WebCoreThread$1
 android.webkit.WebViewDatabase
 android.widget.AbsListView
-android.widget.AbsListView$3
 android.widget.AbsListView$CheckForLongPress
+android.widget.AbsListView$CheckForTap
+android.widget.AbsListView$LayoutParams
 android.widget.AbsListView$PerformClick
 android.widget.AbsListView$RecycleBin
 android.widget.AbsListView$SavedState
+android.widget.AbsListView$SavedState$1
 android.widget.AbsSeekBar
 android.widget.AbsSpinner
-android.widget.AbsSpinner$SavedState
 android.widget.AbsoluteLayout
+android.widget.AbsoluteLayout$LayoutParams
 android.widget.AdapterView
 android.widget.AdapterView$AdapterDataSetObserver
-android.widget.AlphabetIndexer
-android.widget.AnalogClock
-android.widget.AnalogClock$1
-android.widget.AppSecurityPermissions
-android.widget.AppSecurityPermissions$1
-android.widget.AppSecurityPermissions$State
 android.widget.ArrayAdapter
 android.widget.AutoCompleteTextView
+android.widget.AutoCompleteTextView$DropDownItemClickListener
 android.widget.AutoCompleteTextView$DropDownListView
 android.widget.BaseAdapter
-android.widget.BaseExpandableListAdapter
 android.widget.Button
 android.widget.CheckBox
+android.widget.Checkable
 android.widget.CheckedTextView
-android.widget.Chronometer
 android.widget.CompoundButton
-android.widget.CompoundButton$SavedState
 android.widget.CursorAdapter
-android.widget.CursorFilter
+android.widget.CursorAdapter$ChangeObserver
+android.widget.CursorAdapter$MyDataSetObserver
 android.widget.CursorTreeAdapter
-android.widget.CursorTreeAdapter$MyCursorHelper$MyDataSetObserver
-android.widget.DatePicker
-android.widget.DatePicker$1
 android.widget.EditText
-android.widget.ExpandableListConnector
-android.widget.ExpandableListConnector$GroupMetadata
-android.widget.ExpandableListConnector$PositionMetadata
-android.widget.ExpandableListPosition
 android.widget.ExpandableListView
-android.widget.ExpandableListView$SavedState
-android.widget.FastScroller
-android.widget.FastScroller$ScrollFade
-android.widget.Filter
 android.widget.FrameLayout
 android.widget.FrameLayout$LayoutParams
-android.widget.GridView
+android.widget.Gallery
 android.widget.HeaderViewListAdapter
-android.widget.HorizontalScrollView
-android.widget.ImageButton
 android.widget.ImageView
 android.widget.ImageView$ScaleType
 android.widget.LinearLayout
 android.widget.LinearLayout$LayoutParams
 android.widget.ListView
+android.widget.ListView$ArrowScrollFocusResult
 android.widget.ListView$SavedState
-android.widget.MediaController
-android.widget.MediaController$3
-android.widget.MediaController$4
-android.widget.MediaController$MediaPlayerControl
-android.widget.MultiAutoCompleteTextView
+android.widget.ListView$SavedState$1
 android.widget.PopupWindow
-android.widget.PopupWindow$1
-android.widget.PopupWindow$PopupViewContainer
 android.widget.ProgressBar
-android.widget.ProgressBar$SavedState
-android.widget.QuickContactBadge
-android.widget.RadioButton
 android.widget.RadioGroup
-android.widget.RadioGroup$CheckedStateTracker
-android.widget.RadioGroup$PassThroughHierarchyChangeListener
 android.widget.RatingBar
 android.widget.RelativeLayout
-android.widget.RelativeLayout$DependencyGraph
-android.widget.RelativeLayout$DependencyGraph$Node
-android.widget.RelativeLayout$DependencyGraph$Node$1
+android.widget.RelativeLayout$LayoutParams
 android.widget.RemoteViews
-android.widget.RemoteViews$ReflectionAction
-android.widget.RemoteViews$SetOnClickPendingIntent
-android.widget.ResourceCursorAdapter
-android.widget.ResourceCursorTreeAdapter
 android.widget.ScrollBarDrawable
 android.widget.ScrollView
 android.widget.Scroller
 android.widget.SeekBar
-android.widget.SimpleAdapter
 android.widget.SimpleCursorAdapter
-android.widget.SimpleCursorTreeAdapter
 android.widget.SlidingDrawer
 android.widget.Spinner
+android.widget.Spinner$DropDownAdapter
 android.widget.TabHost
-android.widget.TabHost$1
-android.widget.TabHost$2
-android.widget.TabHost$FactoryContentStrategy
-android.widget.TabHost$IntentContentStrategy
-android.widget.TabHost$LabelAndIconIndicatorStrategy
-android.widget.TabHost$OnTabChangeListener
 android.widget.TabWidget
 android.widget.TableLayout
-android.widget.TableLayout$PassThroughHierarchyChangeListener
 android.widget.TableRow
 android.widget.TextView
+android.widget.TextView$1
+android.widget.TextView$Blink
 android.widget.TextView$BufferType
 android.widget.TextView$ChangeWatcher
 android.widget.TextView$CharWrapper
-android.widget.TextView$CommitSelectionReceiver
+android.widget.TextView$Drawables
+android.widget.TextView$InputContentType
+android.widget.TextView$InputMethodState
+android.widget.TextView$Marquee
 android.widget.TextView$MenuHandler
 android.widget.TextView$SavedState
-android.widget.TimePicker
-android.widget.TimePicker$2
-android.widget.Toast
-android.widget.Toast$TN
+android.widget.TextView$SavedState$1
+android.widget.ToggleButton
 android.widget.TwoLineListItem
-android.widget.VideoView
-android.widget.VideoView$1
-android.widget.VideoView$2
-android.widget.VideoView$3
-android.widget.VideoView$4
-android.widget.VideoView$5
-android.widget.VideoView$6
 android.widget.ViewAnimator
 android.widget.ViewSwitcher
 android.widget.ZoomButton
-android.widget.ZoomButton$1
-android.widget.ZoomButtonsController
-android.widget.ZoomButtonsController$3
-android.widget.ZoomButtonsController$5
-android.widget.ZoomButtonsController$Container
 android.widget.ZoomControls
-com.android.internal.R$styleable
-com.android.internal.app.AlertActivity
-com.android.internal.app.AlertController
-com.android.internal.app.AlertController$AlertParams
-com.android.internal.app.AlertController$AlertParams$1
-com.android.internal.app.AlertController$RecycleListView
-com.android.internal.app.ChooserActivity
-com.android.internal.app.ResolverActivity
-com.android.internal.app.ResolverActivity$ResolveListAdapter
-com.android.internal.app.RingtonePickerActivity
-com.android.internal.appwidget.IAppWidgetHost$Stub
-com.android.internal.appwidget.IAppWidgetService$Stub
-com.android.internal.appwidget.IAppWidgetService$Stub$Proxy
-com.android.internal.content.SyncStateContentProviderHelper
 com.android.internal.database.ArrayListCursor
 com.android.internal.database.SortCursor
-com.android.internal.graphics.NativeUtils
-com.android.internal.location.DummyLocationProvider
-com.android.internal.location.GpsLocationProvider
+com.android.internal.appwidget.IAppWidgetService$Stub
+com.android.internal.http.multipart.FilePart
+com.android.internal.http.multipart.MultipartEntity
+com.android.internal.http.multipart.Part
+com.android.internal.http.multipart.PartSource
+com.android.internal.http.multipart.StringPart
+com.android.internal.logging.AndroidConfig
 com.android.internal.logging.AndroidHandler
-com.android.internal.logging.AndroidHandler$1
 com.android.internal.os.AndroidPrintStream
-com.android.internal.os.BinderInternal
 com.android.internal.os.BinderInternal$GcWatcher
-com.android.internal.os.HandlerCaller
-com.android.internal.os.IResultReceiver$Stub
 com.android.internal.os.LoggingPrintStream
 com.android.internal.os.LoggingPrintStream$1
 com.android.internal.os.RuntimeInit
 com.android.internal.os.RuntimeInit$1
 com.android.internal.os.RuntimeInit$UncaughtHandler
-com.android.internal.os.SamplingProfilerIntegration
-com.android.internal.os.ZygoteConnection
-com.android.internal.os.ZygoteConnection$Arguments
-com.android.internal.os.ZygoteInit
 com.android.internal.os.ZygoteInit$MethodAndArgsCaller
+com.android.internal.policy.IPolicy
 com.android.internal.policy.PolicyManager
 com.android.internal.policy.impl.PhoneLayoutInflater
 com.android.internal.policy.impl.PhoneWindow
+com.android.internal.policy.impl.PhoneWindow$1
+com.android.internal.policy.impl.PhoneWindow$ContextMenuCallback
 com.android.internal.policy.impl.PhoneWindow$DecorView
-com.android.internal.policy.impl.PhoneWindow$DrawableFeatureState
+com.android.internal.policy.impl.PhoneWindow$PanelFeatureState
 com.android.internal.policy.impl.PhoneWindow$PanelFeatureState$SavedState
-com.android.internal.policy.impl.PhoneWindowManager
+com.android.internal.policy.impl.PhoneWindow$PanelFeatureState$SavedState$1
 com.android.internal.policy.impl.Policy
-com.android.internal.preference.YesNoPreference
-com.android.internal.telephony.DefaultPhoneNotifier
-com.android.internal.telephony.GsmAlphabet
+com.android.internal.telephony.Connection$DisconnectCause
+com.android.internal.telephony.Connection$PostDialState
 com.android.internal.telephony.IPhoneStateListener$Stub
-com.android.internal.telephony.IPhoneSubInfo$Stub
-com.android.internal.telephony.ISms$Stub
-com.android.internal.telephony.ISms$Stub$Proxy
 com.android.internal.telephony.ITelephony$Stub
-com.android.internal.telephony.ITelephony$Stub$Proxy
-com.android.internal.telephony.ITelephonyRegistry$Stub
-com.android.internal.telephony.ITelephonyRegistry$Stub$Proxy
-com.android.internal.telephony.IccCard$State
+com.android.internal.telephony.Phone
+com.android.internal.telephony.Phone$DataActivityState
 com.android.internal.telephony.Phone$DataState
 com.android.internal.telephony.Phone$State
-com.android.internal.telephony.PhoneFactory
+com.android.internal.telephony.Phone$SuppService
+com.android.internal.telephony.PhoneBase
 com.android.internal.telephony.PhoneStateIntentReceiver
-com.android.internal.telephony.SmsAddress
-com.android.internal.telephony.SmsMessageBase
-com.android.internal.telephony.gsm.GsmSmsAddress
-com.android.internal.telephony.gsm.SmsMessage
-com.android.internal.telephony.gsm.SmsMessage$PduParser
-com.android.internal.util.ArrayUtils
+com.android.internal.telephony.IccCard$State
+com.android.internal.telephony.BaseCommands
+com.android.internal.telephony.CallForwardInfo
+com.android.internal.telephony.CommandsInterface
+com.android.internal.telephony.DriverCall
+com.android.internal.telephony.DriverCall$State
+com.android.internal.telephony.gsm.GsmConnection
+com.android.internal.telephony.gsm.GSMPhone
+com.android.internal.telephony.GsmAlphabet
+com.android.internal.telephony.gsm.GsmMmiCode
+com.android.internal.telephony.gsm.SimCard
+com.android.internal.telephony.ISms$Stub
+com.android.internal.telephony.RIL
+com.android.internal.telephony.ServiceStateTracker
+
+com.android.internal.telephony.gsm.stk.ComprehensionTlvTag
+com.android.internal.telephony.gsm.stk.ResultCode
 com.android.internal.util.FastXmlSerializer
-com.android.internal.util.XmlUtils
-com.android.internal.view.BaseIWindow
 com.android.internal.view.IInputConnectionWrapper
+com.android.internal.view.IInputConnectionWrapper$MyHandler
+com.android.internal.view.IInputConnectionWrapper$SomeArgs
+
+com.android.internal.view.IInputContext
 com.android.internal.view.IInputContext$Stub
 com.android.internal.view.IInputContext$Stub$Proxy
+
+com.android.internal.view.IInputContextCallback
 com.android.internal.view.IInputContextCallback$Stub
+com.android.internal.view.IInputContextCallback$Stub$Proxy
+
+com.android.internal.view.IInputMethod
 com.android.internal.view.IInputMethod$Stub
+com.android.internal.view.IInputMethod$Stub$Proxy
+
+com.android.internal.view.IInputMethodCallback
 com.android.internal.view.IInputMethodCallback$Stub
 com.android.internal.view.IInputMethodCallback$Stub$Proxy
+
+com.android.internal.view.IInputMethodClient
 com.android.internal.view.IInputMethodClient$Stub
+com.android.internal.view.IInputMethodClient$Stub$Proxy
+
+com.android.internal.view.IInputMethodManager
 com.android.internal.view.IInputMethodManager$Stub
 com.android.internal.view.IInputMethodManager$Stub$Proxy
+
+com.android.internal.view.IInputMethodSession
 com.android.internal.view.IInputMethodSession$Stub
+com.android.internal.view.IInputMethodSession$Stub$Proxy
+
 com.android.internal.view.InputBindResult
+com.android.internal.view.InputBindResult$1
+
 com.android.internal.view.InputConnectionWrapper
 com.android.internal.view.InputConnectionWrapper$InputContextCallback
-com.android.internal.view.menu.ContextMenuBuilder
 com.android.internal.view.menu.ExpandedMenuView
 com.android.internal.view.menu.IconMenuItemView
 com.android.internal.view.menu.IconMenuView
-com.android.internal.view.menu.IconMenuView$SavedState
 com.android.internal.view.menu.ListMenuItemView
 com.android.internal.view.menu.MenuBuilder
-com.android.internal.view.menu.MenuBuilder$MenuType
+com.android.internal.view.menu.MenuBuilder$Callback
 com.android.internal.view.menu.MenuDialogHelper
 com.android.internal.view.menu.MenuItemImpl
 com.android.internal.view.menu.SubMenuBuilder
-com.android.internal.widget.ContactHeaderWidget
-com.android.internal.widget.DialogTitle
-com.android.internal.widget.EditableInputConnection
-com.android.internal.widget.LockPatternUtils
+com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient
+com.android.internal.widget.LockPatternView
 com.android.internal.widget.NumberPicker
-com.android.internal.widget.NumberPicker$1
-com.android.internal.widget.NumberPicker$NumberRangeKeyListener
 com.android.internal.widget.NumberPickerButton
 com.android.internal.widget.RotarySelector
 com.android.internal.widget.Smileys
 com.google.android.gles_jni.EGLDisplayImpl
 com.google.android.gles_jni.EGLImpl
-com.google.android.gles_jni.EGLSurfaceImpl
 com.google.android.gles_jni.GLImpl
-com.google.android.mms.util.SqliteWrapper
+com.google.android.mms.ContentType
+com.google.android.mms.pdu.CharacterSets
+com.google.android.mms.pdu.PduPart
+com.google.android.mms.pdu.PduPersister
 com.google.android.net.GoogleHttpClient
-com.google.android.net.GoogleHttpClient$WrappedSocketFactory
-com.google.android.net.NetworkStatsEntity
-com.google.android.net.ParentalControl
-com.google.android.net.ParentalControl$RemoteCallback
-com.google.android.net.ParentalControlState
-com.google.android.net.ParentalControlState$1
 com.google.android.net.UrlRules
 com.google.android.net.UrlRules$Rule
 com.ibm.icu4jni.charset.CharsetDecoderICU
 com.ibm.icu4jni.charset.CharsetEncoderICU
 com.ibm.icu4jni.charset.CharsetICU
-com.ibm.icu4jni.charset.CharsetProviderICU
-com.ibm.icu4jni.charset.NativeConverter
-com.ibm.icu4jni.common.ErrorCode
-com.ibm.icu4jni.lang.UCharacter
-com.ibm.icu4jni.regex.NativeRegEx
 com.ibm.icu4jni.text.CollationAttribute
-com.ibm.icu4jni.text.CollationKey
-com.ibm.icu4jni.text.Collator
 com.ibm.icu4jni.text.DecimalFormat
 com.ibm.icu4jni.text.DecimalFormatSymbols
-com.ibm.icu4jni.text.NativeBreakIterator
-com.ibm.icu4jni.text.NativeCollation
-com.ibm.icu4jni.text.NativeDecimalFormat
 com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute
 com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol
 com.ibm.icu4jni.text.RuleBasedCollator
-com.ibm.icu4jni.text.RuleBasedNumberFormat
-com.ibm.icu4jni.util.Resources
 com.ibm.icu4jni.util.Resources$DefaultTimeZones
-com.ibm.icu4jni.util.Resources$Locale
-dalvik.system.NativeStart
+dalvik.system.DexFile
 dalvik.system.PathClassLoader
-dalvik.system.SamplingProfiler
-dalvik.system.SamplingProfiler$State
-dalvik.system.TouchDex
-dalvik.system.VMDebug
-dalvik.system.VMRuntime
-dalvik.system.VMStack
-dalvik.system.Zygote
 java.beans.PropertyChangeEvent
+java.beans.PropertyChangeListener
 java.beans.PropertyChangeSupport
 java.io.BufferedInputStream
-java.io.BufferedReader
 java.io.ByteArrayInputStream
-java.io.Closeable
-java.io.DataInput
-java.io.DataInputStream
-java.io.DataOutput
-java.io.DataOutputStream
-java.io.EmulatedFieldsForDumping
-java.io.EmulatedFieldsForLoading
+java.io.ByteArrayOutputStream
 java.io.File
 java.io.FileDescriptor
 java.io.FileInputStream
 java.io.FileInputStream$RepositioningLock
 java.io.FileNotFoundException
-java.io.FileOutputStream
-java.io.FilterOutputStream
-java.io.FilterReader
-java.io.Flushable
-java.io.InputStream
-java.io.InputStreamReader
-java.io.ObjectInput
-java.io.ObjectInputStream
-java.io.ObjectInputStream$GetField
-java.io.ObjectOutput
-java.io.ObjectOutputStream
+java.io.FilterInputStream
+java.io.IOException
 java.io.ObjectStreamClass
-java.io.ObjectStreamClass$3
-java.io.ObjectStreamClass$OSCThreadLocalCache
-java.io.ObjectStreamConstants
-java.io.ObjectStreamField
-java.io.OutputStream
-java.io.OutputStreamWriter
-java.io.PrintStream
 java.io.PrintWriter
-java.io.PushbackReader
 java.io.RandomAccessFile
-java.io.Reader
-java.io.Serializable
-java.io.StreamCorruptedException
-java.io.StringReader
+java.io.RandomAccessFile$RepositionLock
 java.io.StringWriter
 java.io.Writer
-java.lang.AbstractStringBuilder
-java.lang.Appendable
-java.lang.ArrayIndexOutOfBoundsException
-java.lang.Boolean
-java.lang.BootClassLoader
-java.lang.Byte
-java.lang.CharSequence
-java.lang.Character
 java.lang.Character$valueOfCache
 java.lang.Class
 java.lang.ClassCache
-java.lang.ClassCache$EnumComparator
-java.lang.ClassLoader
-java.lang.ClassLoader$SystemClassLoader
-java.lang.Cloneable
-java.lang.Comparable
-java.lang.Double
-java.lang.Enum
-java.lang.Error
-java.lang.Exception
-java.lang.Float
+java.lang.ClassNotFoundException
 java.lang.IllegalArgumentException
+java.lang.IllegalStateException
 java.lang.Integer
 java.lang.Integer$valueOfCache
-java.lang.InternalError
-java.lang.InterruptedException
-java.lang.Iterable
-java.lang.LangAccessImpl
 java.lang.LinkageError
 java.lang.Long
 java.lang.Long$valueOfCache
-java.lang.Math
 java.lang.NoClassDefFoundError
-java.lang.NoSuchFieldError
-java.lang.NoSuchMethodError
-java.lang.Number
 java.lang.NumberFormatException
 java.lang.Object
-java.lang.OutOfMemoryError
-java.lang.Package
-java.lang.Readable
-java.lang.Runnable
 java.lang.Runtime
 java.lang.RuntimeException
-java.lang.RuntimePermission
-java.lang.SecurityException
-java.lang.Short
 java.lang.Short$valueOfCache
-java.lang.StackOverflowError
-java.lang.StackTraceElement
-java.lang.StrictMath
 java.lang.String
-java.lang.String$CaseInsensitiveComparator
 java.lang.StringBuffer
 java.lang.StringBuilder
-java.lang.System
-java.lang.SystemProperties
 java.lang.Thread
-java.lang.Thread$State
-java.lang.Thread$UncaughtExceptionHandler
-java.lang.ThreadGroup
-java.lang.ThreadGroup$ChildrenGroupsLock
-java.lang.ThreadGroup$ChildrenThreadsLock
 java.lang.ThreadLocal
 java.lang.ThreadLocal$Values
 java.lang.Throwable
-java.lang.UnsatisfiedLinkError
-java.lang.UnsupportedOperationException
-java.lang.VMClassLoader
 java.lang.VMThread
-java.lang.VirtualMachineError
-java.lang.Void
-java.lang.annotation.Annotation
-java.lang.ref.PhantomReference
-java.lang.ref.Reference
 java.lang.ref.ReferenceQueue
 java.lang.ref.SoftReference
 java.lang.ref.WeakReference
-java.lang.reflect.AccessibleObject
-java.lang.reflect.AnnotatedElement
-java.lang.reflect.Array
 java.lang.reflect.Constructor
-java.lang.reflect.Field
-java.lang.reflect.GenericDeclaration
-java.lang.reflect.InvocationHandler
-java.lang.reflect.Member
 java.lang.reflect.Method
 java.lang.reflect.Modifier
-java.lang.reflect.Proxy
-java.lang.reflect.ReflectionAccessImpl
-java.lang.reflect.Type
 java.math.BigDecimal
 java.math.BigInt
 java.math.BigInteger
 java.math.Multiplication
-java.net.DatagramPacket
-java.net.HttpURLConnection
-java.net.Inet4Address
+java.net.ContentHandler
 java.net.InetAddress
-java.net.InetAddress$1
-java.net.InetAddress$2
+java.net.InetAddress$CacheElement
 java.net.InetAddress$WaitReachable
-java.net.InetSocketAddress
 java.net.JarURLConnection
 java.net.NegativeCache
-java.net.NetworkInterface
-java.net.Proxy
-java.net.Proxy$Type
-java.net.ProxySelector
+java.net.NetPermission
 java.net.ProxySelectorImpl
-java.net.ResponseCache
-java.net.ServerSocket
-java.net.Socket
-java.net.SocketImpl
-java.net.SocketOptions
-java.net.SocketTimeoutException
+java.net.Socket$ConnectLock
 java.net.URI
 java.net.URL
 java.net.URLConnection
 java.net.URLConnection$DefaultContentHandler
 java.net.URLStreamHandler
-java.nio.BaseByteBuffer
-java.nio.Buffer
-java.nio.BufferFactory
-java.nio.ByteBuffer
 java.nio.ByteOrder
-java.nio.CharArrayBuffer
-java.nio.CharBuffer
 java.nio.CharSequenceAdapter
-java.nio.CharToByteBufferAdapter
 java.nio.DirectByteBuffer
-java.nio.DirectByteBuffer$SafeAddress
-java.nio.FloatToByteBufferAdapter
-java.nio.HeapByteBuffer
-java.nio.IntBuffer
-java.nio.IntToByteBufferAdapter
-java.nio.NIOAccess
-java.nio.ReadWriteCharArrayBuffer
 java.nio.ReadWriteDirectByteBuffer
-java.nio.ReadWriteHeapByteBuffer
+java.nio.ReadWriteIntArrayBuffer
+java.nio.ReadWriteShortArrayBuffer
 java.nio.ShortBuffer
 java.nio.ShortToByteBufferAdapter
-java.nio.channels.ByteChannel
-java.nio.channels.Channel
-java.nio.channels.FileChannel
-java.nio.channels.GatheringByteChannel
-java.nio.channels.InterruptibleChannel
-java.nio.channels.ReadableByteChannel
-java.nio.channels.ScatteringByteChannel
-java.nio.channels.WritableByteChannel
-java.nio.channels.spi.AbstractInterruptibleChannel
-java.nio.channels.spi.AbstractInterruptibleChannel$1
-java.nio.charset.Charset
-java.nio.charset.Charset$1
-java.nio.charset.CharsetDecoder
 java.nio.charset.CharsetEncoder
-java.nio.charset.CoderResult
-java.nio.charset.CodingErrorAction
-java.nio.charset.spi.CharsetProvider
-java.security.AccessController
-java.security.BasicPermission
-java.security.Guard
-java.security.KeyFactory
+java.security.AccessControlContext
+java.security.GeneralSecurityException
 java.security.KeyStore
 java.security.MessageDigest
-java.security.NoSuchAlgorithmException
-java.security.Permission
-java.security.PrivilegedAction
-java.security.PrivilegedExceptionAction
+java.security.ProtectionDomain
 java.security.Provider
 java.security.SecureRandom
 java.security.Security
-java.security.Security$SecurityDoor
-java.security.cert.CertPath
 java.security.cert.CertPathValidator
-java.security.cert.CertificateException
 java.security.cert.CertificateFactory
-java.security.cert.CertificateParsingException
-java.security.cert.PKIXCertPathValidatorResult
 java.security.cert.PKIXParameters
+java.security.cert.TrustAnchor
+java.security.cert.X509CertSelector
 java.security.cert.X509Certificate
-java.security.interfaces.RSAPublicKey
-java.security.spec.X509EncodedKeySpec
-java.text.AttributedCharacterIterator$Attribute
-java.text.CollationKey
 java.text.Collator
 java.text.DateFormat
 java.text.DateFormat$Field
-java.text.DateFormatSymbols
 java.text.DecimalFormat
 java.text.DecimalFormatSymbols
-java.text.Format
-java.text.Format$Field
+java.text.MessageFormat
 java.text.NumberFormat
+java.text.RuleBasedCollator
 java.text.SimpleDateFormat
-java.util.AbstractCollection
-java.util.AbstractList
 java.util.AbstractList$FullListIterator
 java.util.AbstractList$SimpleListIterator
-java.util.AbstractList$SubAbstractList
-java.util.AbstractList$SubAbstractListRandomAccess
-java.util.AbstractMap
-java.util.AbstractQueue
-java.util.AbstractSequentialList
-java.util.AbstractSet
 java.util.ArrayList
 java.util.Arrays
 java.util.Arrays$ArrayList
-java.util.BitSet
 java.util.Calendar
-java.util.Collection
-java.util.Collections
-java.util.Collections$EmptyList
-java.util.Collections$EmptyMap
-java.util.Collections$EmptySet
-java.util.Collections$SingletonList
-java.util.Collections$SingletonSet
 java.util.Collections$SynchronizedCollection
-java.util.Collections$SynchronizedList
-java.util.Collections$SynchronizedRandomAccessList
-java.util.Collections$UnmodifiableCollection
-java.util.Collections$UnmodifiableCollection$1
 java.util.Collections$UnmodifiableList
 java.util.Collections$UnmodifiableMap
-java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet
 java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$1
-java.util.Collections$UnmodifiableRandomAccessList
-java.util.Collections$UnmodifiableSet
-java.util.Comparator
-java.util.Currency
 java.util.Date
-java.util.Dictionary
 java.util.EnumMap
-java.util.EnumSet
-java.util.Enumeration
+java.util.EventListener
+java.util.EventObject
 java.util.Formatter
-java.util.Formatter$FormatToken
-java.util.Formatter$ParserStateMachine
-java.util.Formatter$Transformer
 java.util.GregorianCalendar
 java.util.HashMap
-java.util.HashMap$HashIterator
-java.util.HashMap$HashMapEntry
-java.util.HashMap$KeyIterator
-java.util.HashMap$KeySet
 java.util.HashSet
 java.util.Hashtable
-java.util.Hashtable$HashtableEntry
-java.util.Hashtable$KeyEnumeration
 java.util.IdentityHashMap
-java.util.Iterator
 java.util.LinkedHashMap
-java.util.LinkedHashMap$KeyIterator
-java.util.LinkedHashMap$ValueIterator
 java.util.LinkedList
-java.util.LinkedList$LinkIterator
+java.util.LinkedList$Link
 java.util.List
 java.util.Locale
-java.util.Map
-java.util.Map$Entry
-java.util.MiniEnumSet
-java.util.MiniEnumSet$MiniEnumSetIterator
-java.util.Observable
-java.util.PriorityQueue
 java.util.Properties
-java.util.PropertyPermission
-java.util.RandomAccess
+java.util.Random
 java.util.ResourceBundle
-java.util.Set
 java.util.SimpleTimeZone
-java.util.SortedMap
-java.util.SortedSet
-java.util.SpecialAccess
-java.util.Stack
-java.util.StringTokenizer
-java.util.TimSort
 java.util.TimeZone
 java.util.TreeMap
-java.util.TreeMap$1
-java.util.TreeMap$UnboundedKeyIterator
+java.util.TreeMap$MapEntry
 java.util.TreeSet
-java.util.UUID
 java.util.Vector
-java.util.Vector$1
 java.util.WeakHashMap
-java.util.WeakHashMap$1
-java.util.WeakHashMap$1$1
 java.util.WeakHashMap$Entry
-java.util.concurrent.AbstractExecutorService
-java.util.concurrent.ArrayBlockingQueue
 java.util.concurrent.ConcurrentHashMap
-java.util.concurrent.ConcurrentHashMap$Segment
 java.util.concurrent.ConcurrentLinkedQueue
-java.util.concurrent.ConcurrentLinkedQueue$Node
-java.util.concurrent.CopyOnWriteArrayList
-java.util.concurrent.CopyOnWriteArrayList$COWIterator
-java.util.concurrent.CountDownLatch
-java.util.concurrent.CountDownLatch$Sync
-java.util.concurrent.Executors$DefaultThreadFactory
-java.util.concurrent.Executors$DelegatedExecutorService
-java.util.concurrent.Executors$FinalizableDelegatedExecutorService
-java.util.concurrent.Executors$RunnableAdapter
-java.util.concurrent.FutureTask
-java.util.concurrent.FutureTask$Sync
+java.util.concurrent.DelayQueue
 java.util.concurrent.LinkedBlockingQueue
 java.util.concurrent.ScheduledThreadPoolExecutor
 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue
-java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask
-java.util.concurrent.Semaphore
-java.util.concurrent.SynchronousQueue
-java.util.concurrent.SynchronousQueue$TransferStack
-java.util.concurrent.SynchronousQueue$TransferStack$SNode
-java.util.concurrent.ThreadPoolExecutor
-java.util.concurrent.ThreadPoolExecutor$AbortPolicy
-java.util.concurrent.ThreadPoolExecutor$Worker
 java.util.concurrent.TimeUnit
+java.util.concurrent.atomic.AtomicBoolean
 java.util.concurrent.atomic.AtomicInteger
-java.util.concurrent.atomic.AtomicLong
-java.util.concurrent.atomic.AtomicReference
 java.util.concurrent.atomic.UnsafeAccess
 java.util.concurrent.locks.AbstractQueuedSynchronizer
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject
 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
+java.util.concurrent.locks.Lock
+java.util.concurrent.locks.LockSupport
 java.util.concurrent.locks.ReentrantLock
 java.util.concurrent.locks.ReentrantLock$FairSync
 java.util.concurrent.locks.ReentrantLock$NonfairSync
 java.util.concurrent.locks.ReentrantLock$Sync
 java.util.concurrent.locks.ReentrantReadWriteLock
 java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync
-java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock
-java.util.concurrent.locks.ReentrantReadWriteLock$Sync
+java.util.concurrent.locks.UnsafeAccess
 java.util.jar.Attributes
 java.util.jar.Attributes$Name
+java.util.jar.InitManifest
+java.util.jar.JarEntry
 java.util.jar.JarFile
+java.util.jar.JarFile$1JarFileEnumerator
+java.util.jar.JarFile$JarFileInputStream
 java.util.jar.JarVerifier
 java.util.jar.Manifest
 java.util.logging.ErrorManager
+java.util.logging.Formatter
 java.util.logging.Handler
 java.util.logging.Level
 java.util.logging.LogManager
+java.util.logging.LogManager$1
+java.util.logging.LogManager$2
+java.util.logging.LogManager$2$1
+java.util.logging.LogManager$3
 java.util.logging.LogRecord
 java.util.logging.Logger
-java.util.regex.MatchResult
+java.util.logging.LoggingPermission
+java.util.logging.SimpleFormatter
 java.util.regex.Matcher
 java.util.regex.Pattern
-java.util.zip.Adler32
-java.util.zip.CRC32
-java.util.zip.Checksum
-java.util.zip.Deflater
 java.util.zip.DeflaterOutputStream
-java.util.zip.GZIPOutputStream
 java.util.zip.Inflater
 java.util.zip.InflaterInputStream
+java.util.zip.ZipConstants
 java.util.zip.ZipEntry
+java.util.zip.ZipEntry$LittleEndianReader
 java.util.zip.ZipFile
-javax.crypto.Cipher
-javax.crypto.CipherSpi
-javax.crypto.Mac
-javax.crypto.spec.SecretKeySpec
-javax.microedition.khronos.egl.EGL
-javax.microedition.khronos.egl.EGL10
+java.util.zip.ZipFile$2
+java.util.zip.ZipFile$RAFStream
 javax.microedition.khronos.egl.EGLContext
-javax.microedition.khronos.opengles.GL
-javax.microedition.khronos.opengles.GL10
-javax.microedition.khronos.opengles.GL10Ext
-javax.microedition.khronos.opengles.GL11
-javax.microedition.khronos.opengles.GL11Ext
-javax.microedition.khronos.opengles.GL11ExtensionPack
-javax.net.ssl.DefaultHostnameVerifier
 javax.net.ssl.HttpsURLConnection
-javax.net.ssl.KeyManagerFactory
-javax.net.ssl.SSLContext
-javax.net.ssl.SSLServerSocket
-javax.net.ssl.SSLSession
-javax.net.ssl.SSLSocket
-javax.net.ssl.SSLSocketFactory
-javax.net.ssl.TrustManagerFactory
-javax.net.ssl.X509ExtendedKeyManager
+javax.net.ssl.SSLHandshakeException
 javax.security.auth.x500.X500Principal
 javax.security.cert.X509Certificate
-javax.xml.parsers.SAXParserFactory
+javax.security.cert.X509Certificate$2
 junit.framework.Assert
 org.apache.commons.codec.binary.Base64
 org.apache.commons.codec.binary.Hex
 org.apache.commons.logging.LogFactory
 org.apache.commons.logging.impl.Jdk14Logger
-org.apache.commons.logging.impl.WeakHashtable
-org.apache.harmony.crypto.internal.NullCipherSpi
-org.apache.harmony.dalvik.NativeTestTarget
+org.apache.harmony.archive.util.Util
+org.apache.harmony.dalvik.ddmc.Chunk
 org.apache.harmony.dalvik.ddmc.ChunkHandler
 org.apache.harmony.dalvik.ddmc.DdmServer
-org.apache.harmony.kernel.vm.LangAccess
-org.apache.harmony.kernel.vm.ReflectionAccess
-org.apache.harmony.lang.annotation.AnnotationFactory
-org.apache.harmony.lang.annotation.AnnotationMember
-org.apache.harmony.lang.annotation.AnnotationMember$DefaultValues
-org.apache.harmony.luni.internal.net.www.protocol.http.HttpConfiguration
-org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection
+org.apache.harmony.dalvik.ddmc.DdmVmInternal
+org.apache.harmony.luni.internal.net.www.protocol.file.FileURLConnection
+org.apache.harmony.luni.internal.net.www.protocol.file.Handler
+org.apache.harmony.luni.internal.net.www.protocol.http.Handler
+org.apache.harmony.luni.internal.net.www.protocol.https.Handler
 org.apache.harmony.luni.internal.net.www.protocol.jar.Handler
+org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnectionImpl
+org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnectionImpl$1
+org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnectionImpl$JarURLConnectionInputStream
 org.apache.harmony.luni.internal.util.TimezoneGetter
 org.apache.harmony.luni.internal.util.ZoneInfo
 org.apache.harmony.luni.internal.util.ZoneInfoDB
-org.apache.harmony.luni.net.GenericIPMreq
 org.apache.harmony.luni.net.PlainSocketImpl
-org.apache.harmony.luni.platform.Endianness
-org.apache.harmony.luni.platform.ICommonDataTypes
-org.apache.harmony.luni.platform.IFileSystem
-org.apache.harmony.luni.platform.IMemorySystem
-org.apache.harmony.luni.platform.INetworkSystem
-org.apache.harmony.luni.platform.OSFileSystem
-org.apache.harmony.luni.platform.OSMemory
-org.apache.harmony.luni.platform.OSNetworkSystem
-org.apache.harmony.luni.platform.Platform
 org.apache.harmony.luni.platform.PlatformAddress
-org.apache.harmony.luni.platform.PlatformAddressFactory
-org.apache.harmony.luni.platform.RuntimeMemorySpy
-org.apache.harmony.luni.util.FloatingPointParser
-org.apache.harmony.luni.util.InputStreamExposer
-org.apache.harmony.luni.util.Msg
-org.apache.harmony.luni.util.NumberConverter
-org.apache.harmony.luni.util.PriviAction
-org.apache.harmony.luni.util.ThreadLocalCache
-org.apache.harmony.luni.util.ThreadLocalCache$1
 org.apache.harmony.luni.util.TwoKeyHashMap
-org.apache.harmony.luni.util.Util
-org.apache.harmony.nio.AddressUtil
-org.apache.harmony.nio.FileChannelFactory
-org.apache.harmony.nio.internal.DirectBuffer
-org.apache.harmony.nio.internal.FileChannelImpl
 org.apache.harmony.nio.internal.FileChannelImpl$RepositioningLock
 org.apache.harmony.nio.internal.LockManager
 org.apache.harmony.nio.internal.LockManager$1
-org.apache.harmony.nio.internal.WriteOnlyFileChannel
-org.apache.harmony.security.asn1.ASN1Any
-org.apache.harmony.security.asn1.ASN1Constructured
+org.apache.harmony.nio.internal.ReadOnlyFileChannel
+org.apache.harmony.security.asn1.ASN1BitString
+org.apache.harmony.security.asn1.ASN1BitString$ASN1NamedBitList
+org.apache.harmony.security.asn1.ASN1Boolean
+org.apache.harmony.security.asn1.ASN1Explicit
 org.apache.harmony.security.asn1.ASN1GeneralizedTime
+org.apache.harmony.security.asn1.ASN1Implicit
 org.apache.harmony.security.asn1.ASN1Integer
-org.apache.harmony.security.asn1.ASN1Oid
-org.apache.harmony.security.asn1.ASN1Sequence
+org.apache.harmony.security.asn1.ASN1OctetString
 org.apache.harmony.security.asn1.ASN1SetOf
 org.apache.harmony.security.asn1.ASN1StringType
-org.apache.harmony.security.asn1.ASN1Type
-org.apache.harmony.security.asn1.ASN1ValueCollection
-org.apache.harmony.security.asn1.BerInputStream
-org.apache.harmony.security.asn1.DerInputStream
-org.apache.harmony.security.asn1.DerOutputStream
+org.apache.harmony.security.asn1.ASN1StringType$1
+org.apache.harmony.security.asn1.ASN1StringType$2
+org.apache.harmony.security.asn1.ASN1StringType$3
+org.apache.harmony.security.asn1.ASN1StringType$4
+org.apache.harmony.security.asn1.ASN1StringType$5
+org.apache.harmony.security.asn1.ASN1StringType$6
+org.apache.harmony.security.asn1.ASN1StringType$7
+org.apache.harmony.security.asn1.ASN1UTCTime
+org.apache.harmony.security.asn1.BitString
+org.apache.harmony.security.fortress.Engine
 org.apache.harmony.security.fortress.SecurityUtils
 org.apache.harmony.security.fortress.Services
 org.apache.harmony.security.pkcs7.ContentInfo
-org.apache.harmony.security.provider.cert.DRLCertFactory
 org.apache.harmony.security.provider.cert.X509CertFactoryImpl
 org.apache.harmony.security.provider.cert.X509CertImpl
 org.apache.harmony.security.provider.cert.X509CertPathImpl
 org.apache.harmony.security.provider.crypto.RandomBitsSupplier
 org.apache.harmony.security.provider.crypto.SHA1PRNG_SecureRandomImpl
-org.apache.harmony.security.provider.crypto.SHA1_MessageDigestImpl
 org.apache.harmony.security.utils.AlgNameMapper
 org.apache.harmony.security.x501.AttributeTypeAndValue
-org.apache.harmony.security.x501.AttributeTypeAndValue$2
+org.apache.harmony.security.x501.AttributeValue
 org.apache.harmony.security.x501.DirectoryString
 org.apache.harmony.security.x501.DirectoryString$1
 org.apache.harmony.security.x501.Name
 org.apache.harmony.security.x501.Name$1
 org.apache.harmony.security.x509.AlgorithmIdentifier
+org.apache.harmony.security.x509.AlgorithmIdentifier$1
 org.apache.harmony.security.x509.BasicConstraints
+org.apache.harmony.security.x509.BasicConstraints$1
 org.apache.harmony.security.x509.Certificate
-org.apache.harmony.security.x509.EDIPartyName
+org.apache.harmony.security.x509.Certificate$1
 org.apache.harmony.security.x509.Extension
 org.apache.harmony.security.x509.Extension$1
+org.apache.harmony.security.x509.Extension$2
 org.apache.harmony.security.x509.Extensions
+org.apache.harmony.security.x509.Extensions$1
 org.apache.harmony.security.x509.GeneralName
 org.apache.harmony.security.x509.GeneralNames
 org.apache.harmony.security.x509.KeyUsage
 org.apache.harmony.security.x509.ORAddress
-org.apache.harmony.security.x509.OtherName
 org.apache.harmony.security.x509.SubjectPublicKeyInfo
+org.apache.harmony.security.x509.SubjectPublicKeyInfo$1
 org.apache.harmony.security.x509.TBSCertificate
+org.apache.harmony.security.x509.TBSCertificate$1
 org.apache.harmony.security.x509.Time
+org.apache.harmony.security.x509.Time$1
 org.apache.harmony.security.x509.Validity
-org.apache.harmony.text.BidiWrapper
-org.apache.harmony.text.internal.nls.Messages
-org.apache.harmony.xml.ExpatAttributes
+org.apache.harmony.security.x509.Validity$1
 org.apache.harmony.xml.ExpatParser
-org.apache.harmony.xml.ExpatParser$ExpatLocator
 org.apache.harmony.xml.ExpatPullParser
-org.apache.harmony.xml.ExpatPullParser$ByteDocument
-org.apache.harmony.xml.ExpatPullParser$CharDocument
-org.apache.harmony.xml.ExpatPullParser$Document$SaxHandler
-org.apache.harmony.xml.ExpatPullParser$NamespaceStack
-org.apache.harmony.xml.ExpatPullParser$StartDocumentEvent
 org.apache.harmony.xml.ExpatReader
-org.apache.harmony.xml.parsers.SAXParserFactoryImpl
-org.apache.harmony.xml.parsers.SAXParserImpl
-org.apache.harmony.xnet.provider.jsse.AbstractSessionContext
 org.apache.harmony.xnet.provider.jsse.ClientSessionContext
-org.apache.harmony.xnet.provider.jsse.FileClientSessionCache
-org.apache.harmony.xnet.provider.jsse.FileClientSessionCache$Impl
-org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl
-org.apache.harmony.xnet.provider.jsse.KeyManagerImpl
-org.apache.harmony.xnet.provider.jsse.NativeCrypto
-org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigest
-org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigestJDK
-org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigestJDK$MD5
-org.apache.harmony.xnet.provider.jsse.OpenSSLServerSocketImpl
 org.apache.harmony.xnet.provider.jsse.OpenSSLSessionImpl
-org.apache.harmony.xnet.provider.jsse.OpenSSLSocketFactoryImpl
 org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl
-org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$LoggerHolder
-org.apache.harmony.xnet.provider.jsse.ProtocolVersion
+org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$Finalizer
+org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream
+org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLOutputStream
 org.apache.harmony.xnet.provider.jsse.SSLContextImpl
 org.apache.harmony.xnet.provider.jsse.SSLParameters
-org.apache.harmony.xnet.provider.jsse.ServerSessionContext
 org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl
 org.apache.harmony.xnet.provider.jsse.TrustManagerImpl
 org.apache.http.HttpHost
+org.apache.http.HttpRequestInterceptor
 org.apache.http.HttpVersion
-org.apache.http.NoHttpResponseException
-org.apache.http.ProtocolException
+org.apache.http.auth.AuthSchemeRegistry
 org.apache.http.client.HttpClient
-org.apache.http.client.entity.UrlEncodedFormEntity
-org.apache.http.client.methods.HttpEntityEnclosingRequestBase
-org.apache.http.client.methods.HttpGet
-org.apache.http.client.methods.HttpPost
+org.apache.http.client.RequestDirector
 org.apache.http.client.methods.HttpRequestBase
-org.apache.http.client.utils.URLEncodedUtils
-org.apache.http.conn.BasicManagedEntity
-org.apache.http.conn.params.ConnManagerParams
+org.apache.http.client.protocol.RequestAddCookies
+org.apache.http.client.protocol.RequestDefaultHeaders
+org.apache.http.client.protocol.RequestProxyAuthentication
+org.apache.http.client.protocol.RequestTargetAuthentication
+org.apache.http.client.protocol.ResponseProcessCookies
 org.apache.http.conn.params.ConnManagerParams$1
 org.apache.http.conn.params.ConnRouteParams
-org.apache.http.conn.routing.BasicRouteDirector
 org.apache.http.conn.routing.HttpRoute
 org.apache.http.conn.routing.RouteInfo$LayerType
 org.apache.http.conn.routing.RouteInfo$TunnelType
@@ -1724,99 +1039,79 @@
 org.apache.http.conn.scheme.PlainSocketFactory
 org.apache.http.conn.scheme.Scheme
 org.apache.http.conn.scheme.SchemeRegistry
-org.apache.http.conn.ssl.AbstractVerifier
 org.apache.http.conn.ssl.AllowAllHostnameVerifier
+org.apache.http.conn.ssl.BrowserCompatHostnameVerifier
 org.apache.http.conn.ssl.SSLSocketFactory
+org.apache.http.conn.ssl.StrictHostnameVerifier
 org.apache.http.conn.util.InetAddressUtils
-org.apache.http.entity.AbstractHttpEntity
-org.apache.http.entity.BasicHttpEntity
-org.apache.http.entity.ByteArrayEntity
-org.apache.http.entity.StringEntity
-org.apache.http.impl.AbstractHttpClientConnection
+org.apache.http.cookie.CookieSpecRegistry
 org.apache.http.impl.DefaultConnectionReuseStrategy
 org.apache.http.impl.DefaultHttpResponseFactory
 org.apache.http.impl.EnglishReasonPhraseCatalog
 org.apache.http.impl.HttpConnectionMetricsImpl
 org.apache.http.impl.SocketHttpClientConnection
 org.apache.http.impl.auth.BasicSchemeFactory
+org.apache.http.impl.auth.DigestSchemeFactory
 org.apache.http.impl.client.AbstractAuthenticationHandler
 org.apache.http.impl.client.AbstractHttpClient
-org.apache.http.impl.client.BasicCookieStore
 org.apache.http.impl.client.BasicCredentialsProvider
-org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy
 org.apache.http.impl.client.DefaultHttpClient
 org.apache.http.impl.client.DefaultHttpRequestRetryHandler
+org.apache.http.impl.client.DefaultProxyAuthenticationHandler
 org.apache.http.impl.client.DefaultRedirectHandler
-org.apache.http.impl.client.DefaultRequestDirector
 org.apache.http.impl.client.DefaultTargetAuthenticationHandler
+org.apache.http.impl.client.DefaultUserTokenHandler
 org.apache.http.impl.client.EntityEnclosingRequestWrapper
-org.apache.http.impl.client.RequestWrapper
 org.apache.http.impl.conn.AbstractClientConnAdapter
-org.apache.http.impl.conn.AbstractPooledConnAdapter
 org.apache.http.impl.conn.DefaultClientConnection
 org.apache.http.impl.conn.DefaultClientConnectionOperator
 org.apache.http.impl.conn.DefaultHttpRoutePlanner
 org.apache.http.impl.conn.DefaultResponseParser
-org.apache.http.impl.conn.SingleClientConnManager
-org.apache.http.impl.conn.SingleClientConnManager$1
-org.apache.http.impl.conn.SingleClientConnManager$ConnAdapter
-org.apache.http.impl.conn.SingleClientConnManager$PoolEntry
-org.apache.http.impl.conn.tsccm.AbstractConnPool
+org.apache.http.impl.conn.IdleConnectionHandler
 org.apache.http.impl.conn.tsccm.BasicPoolEntry
-org.apache.http.impl.conn.tsccm.BasicPooledConnAdapter
+org.apache.http.impl.conn.tsccm.BasicPoolEntryRef
 org.apache.http.impl.conn.tsccm.ConnPoolByRoute
-org.apache.http.impl.conn.tsccm.ConnPoolByRoute$1
+org.apache.http.impl.conn.tsccm.RefQueueWorker
+org.apache.http.impl.conn.tsccm.RouteSpecificPool
 org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager
-org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager$1
-org.apache.http.impl.cookie.AbstractCookieAttributeHandler
 org.apache.http.impl.cookie.BasicClientCookie
-org.apache.http.impl.cookie.BestMatchSpec
 org.apache.http.impl.cookie.BestMatchSpecFactory
-org.apache.http.impl.cookie.BrowserCompatSpec
-org.apache.http.impl.cookie.CookieSpecBase
+org.apache.http.impl.cookie.BrowserCompatSpecFactory
 org.apache.http.impl.cookie.DateUtils
-org.apache.http.impl.cookie.DateUtils$DateFormatHolder
-org.apache.http.impl.cookie.NetscapeDomainHandler
-org.apache.http.impl.cookie.NetscapeDraftSpec
-org.apache.http.impl.cookie.RFC2109Spec
-org.apache.http.impl.cookie.RFC2109VersionHandler
-org.apache.http.impl.cookie.RFC2965Spec
+org.apache.http.impl.cookie.NetscapeDraftSpecFactory
+org.apache.http.impl.cookie.RFC2109SpecFactory
+org.apache.http.impl.cookie.RFC2965SpecFactory
+org.apache.http.impl.entity.EntityDeserializer
+org.apache.http.impl.entity.EntitySerializer
+org.apache.http.impl.entity.LaxContentLengthStrategy
 org.apache.http.impl.entity.StrictContentLengthStrategy
-org.apache.http.impl.io.AbstractSessionInputBuffer
-org.apache.http.impl.io.AbstractSessionOutputBuffer
-org.apache.http.impl.io.ChunkedInputStream
-org.apache.http.impl.io.ContentLengthInputStream
 org.apache.http.impl.io.HttpRequestWriter
+org.apache.http.impl.io.HttpTransportMetricsImpl
 org.apache.http.impl.io.SocketInputBuffer
 org.apache.http.impl.io.SocketOutputBuffer
-org.apache.http.message.AbstractHttpMessage
-org.apache.http.message.BasicHeader
-org.apache.http.message.BasicHeaderElement
-org.apache.http.message.BasicHeaderElementIterator
 org.apache.http.message.BasicHeaderValueParser
-org.apache.http.message.BasicHttpRequest
+org.apache.http.message.BasicHttpEntityEnclosingRequest
 org.apache.http.message.BasicHttpResponse
 org.apache.http.message.BasicLineFormatter
 org.apache.http.message.BasicLineParser
-org.apache.http.message.BasicListHeaderIterator
-org.apache.http.message.BasicNameValuePair
-org.apache.http.message.BasicRequestLine
-org.apache.http.message.BasicTokenIterator
-org.apache.http.message.HeaderGroup
-org.apache.http.params.AbstractHttpParams
 org.apache.http.params.BasicHttpParams
-org.apache.http.params.HttpConnectionParams
-org.apache.http.params.HttpProtocolParams
-org.apache.http.protocol.BasicHttpContext
 org.apache.http.protocol.BasicHttpProcessor
 org.apache.http.protocol.HTTP
+org.apache.http.protocol.HttpRequestExecutor
+org.apache.http.protocol.HttpRequestInterceptorList
+org.apache.http.protocol.HttpResponseInterceptorList
+org.apache.http.protocol.RequestConnControl
+org.apache.http.protocol.RequestContent
+org.apache.http.protocol.RequestExpectContinue
+org.apache.http.protocol.RequestTargetHost
+org.apache.http.protocol.RequestUserAgent
+org.apache.http.util.ByteArrayBuffer
 org.apache.http.util.CharArrayBuffer
+org.apache.http.util.EntityUtils
 org.apache.http.util.VersionInfo
-org.bouncycastle.asn1.ASN1Encodable
-org.bouncycastle.asn1.ASN1EncodableVector
-org.bouncycastle.asn1.ASN1Sequence
 org.bouncycastle.asn1.DERBitString
-org.bouncycastle.asn1.DERNull
+org.bouncycastle.asn1.DERIA5String
+org.bouncycastle.asn1.DERInteger
 org.bouncycastle.asn1.DERObject
 org.bouncycastle.asn1.DERObjectIdentifier
 org.bouncycastle.asn1.DEROctetString
@@ -1824,62 +1119,41 @@
 org.bouncycastle.asn1.DERSequence
 org.bouncycastle.asn1.DERSet
 org.bouncycastle.asn1.DERTaggedObject
-org.bouncycastle.asn1.iana.IANAObjectIdentifiers
+org.bouncycastle.asn1.DERUTCTime
+org.bouncycastle.asn1.DERUTF8String
+org.bouncycastle.asn1.OrderedTable
 org.bouncycastle.asn1.nist.NISTObjectIdentifiers
-org.bouncycastle.asn1.oiw.OIWObjectIdentifiers
 org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers
-org.bouncycastle.asn1.x509.BasicConstraints
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
 org.bouncycastle.asn1.x509.RSAPublicKeyStructure
+org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
 org.bouncycastle.asn1.x509.TBSCertificateStructure
 org.bouncycastle.asn1.x509.Time
 org.bouncycastle.asn1.x509.X509CertificateStructure
-org.bouncycastle.asn1.x509.X509DefaultEntryConverter
+org.bouncycastle.asn1.x509.X509Extension
 org.bouncycastle.asn1.x509.X509Extensions
 org.bouncycastle.asn1.x509.X509Name
-org.bouncycastle.crypto.BufferedBlockCipher
-org.bouncycastle.crypto.PBEParametersGenerator
-org.bouncycastle.crypto.digests.GeneralDigest
-org.bouncycastle.crypto.digests.SHA1Digest
+org.bouncycastle.asn1.x509.X509NameElementList
+org.bouncycastle.asn1.x9.X9ObjectIdentifiers
 org.bouncycastle.crypto.engines.AESFastEngine
-org.bouncycastle.crypto.generators.PKCS12ParametersGenerator
-org.bouncycastle.crypto.macs.HMac
-org.bouncycastle.crypto.paddings.PKCS7Padding
-org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher
-org.bouncycastle.crypto.params.KeyParameter
-org.bouncycastle.jce.provider.BouncyCastleProvider
 org.bouncycastle.jce.provider.CertPathValidatorUtilities
-org.bouncycastle.jce.provider.IndexedPKIXParameters
-org.bouncycastle.jce.provider.JCEBlockCipher
 org.bouncycastle.jce.provider.JCEBlockCipher$AES
-org.bouncycastle.jce.provider.JCEMac
-org.bouncycastle.jce.provider.JCEMac$SHA1
 org.bouncycastle.jce.provider.JCERSAPublicKey
-org.bouncycastle.jce.provider.JDKKeyFactory
+org.bouncycastle.jce.provider.JDKKeyFactory$RSA
 org.bouncycastle.jce.provider.JDKKeyStore
-org.bouncycastle.jce.provider.JDKX509CertificateFactory
+org.bouncycastle.jce.provider.JDKKeyStore$StoreEntry
 org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi
-org.bouncycastle.jce.provider.PKIXPolicyNode
-org.bouncycastle.jce.provider.WrapCipherSpi
+org.bouncycastle.jce.provider.RSAUtil
 org.bouncycastle.jce.provider.X509CertificateObject
-org.ccil.cowan.tagsoup.AttributesImpl
-org.ccil.cowan.tagsoup.Element
-org.ccil.cowan.tagsoup.ElementType
 org.ccil.cowan.tagsoup.HTMLScanner
-org.ccil.cowan.tagsoup.HTMLSchema
 org.ccil.cowan.tagsoup.Parser
-org.ccil.cowan.tagsoup.Schema
 org.json.JSONArray
 org.json.JSONObject
 org.json.JSONStringer
-org.json.JSONTokener
 org.kxml2.io.KXmlParser
 org.kxml2.io.KXmlSerializer
-org.openssl.NativeBN
-org.xml.sax.Attributes
-org.xml.sax.InputSource
-org.xml.sax.helpers.AttributesImpl
 org.xml.sax.helpers.DefaultHandler
-org.xmlpull.v1.XmlPullParser
+org.xml.sax.helpers.NewInstance
 org.xmlpull.v1.XmlPullParserFactory
-org.xmlpull.v1.XmlSerializer
+org.xmlpull.v1.sax2.Driver
 sun.misc.Unsafe
diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java
index 3307932..ad0fb0c 100644
--- a/services/java/com/android/server/BackupManagerService.java
+++ b/services/java/com/android/server/BackupManagerService.java
@@ -22,6 +22,10 @@
 import android.app.IApplicationThread;
 import android.app.IBackupAgent;
 import android.app.PendingIntent;
+import android.backup.IBackupManager;
+import android.backup.IRestoreObserver;
+import android.backup.IRestoreSession;
+import android.backup.RestoreSet;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
@@ -31,11 +35,10 @@
 import android.content.pm.ApplicationInfo;
 import android.content.pm.IPackageDataObserver;
 import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.PackageManager;
 import android.content.pm.Signature;
+import android.content.pm.PackageManager.NameNotFoundException;
 import android.net.Uri;
-import android.provider.Settings;
 import android.os.Binder;
 import android.os.Bundle;
 import android.os.Environment;
@@ -47,20 +50,15 @@
 import android.os.Process;
 import android.os.RemoteException;
 import android.os.SystemClock;
+import android.os.SystemProperties;
+import android.provider.Settings;
 import android.util.EventLog;
 import android.util.Log;
 import android.util.SparseArray;
 
-import android.backup.IBackupManager;
-import android.backup.IRestoreObserver;
-import android.backup.IRestoreSession;
-import android.backup.RestoreSet;
-
 import com.android.internal.backup.BackupConstants;
-import com.android.internal.backup.LocalTransport;
 import com.android.internal.backup.IBackupTransport;
-
-import com.android.server.PackageManagerBackupAgent;
+import com.android.internal.backup.LocalTransport;
 import com.android.server.PackageManagerBackupAgent.Metadata;
 
 import java.io.EOFException;
@@ -70,7 +68,6 @@
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.RandomAccessFile;
-import java.lang.String;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -216,7 +213,10 @@
                 Settings.Secure.BACKUP_ENABLED, 0) != 0;
         mProvisioned = Settings.Secure.getInt(context.getContentResolver(),
                 Settings.Secure.BACKUP_PROVISIONED, 0) != 0;
-        mBaseStateDir = new File(Environment.getDataDirectory(), "backup");
+        // If Encrypted file systems is enabled or disabled, this call will return the
+        // correct directory.
+        mBaseStateDir = new File(Environment.getSecureDataDirectory(), "backup");
+        mBaseStateDir.mkdirs();
         mDataDir = Environment.getDownloadCacheDirectory();
 
         // Alarm receivers for scheduled backups & initialization operations
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index 27b631e..9980be7 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -112,23 +112,9 @@
         public NetworkAttributes(String init) {
             String fragments[] = init.split(",");
             mName = fragments[0].toLowerCase();
-            if (fragments[1].toLowerCase().equals("wifi")) {
-                mRadio = ConnectivityManager.TYPE_WIFI;
-            } else {
-                mRadio = ConnectivityManager.TYPE_MOBILE;
-            }
-            if (mName.equals("default")) {
-                mType = mRadio;
-            } else if (mName.equals("mms")) {
-                mType = ConnectivityManager.TYPE_MOBILE_MMS;
-            } else if (mName.equals("supl")) {
-                mType = ConnectivityManager.TYPE_MOBILE_SUPL;
-            } else if (mName.equals("dun")) {
-                mType = ConnectivityManager.TYPE_MOBILE_DUN;
-            } else if (mName.equals("hipri")) {
-                mType = ConnectivityManager.TYPE_MOBILE_HIPRI;
-            }
-            mPriority = Integer.parseInt(fragments[2]);
+            mType = Integer.parseInt(fragments[1]);
+            mRadio = Integer.parseInt(fragments[2]);
+            mPriority = Integer.parseInt(fragments[3]);
             mLastState = NetworkInfo.State.UNKNOWN;
         }
         public boolean isDefault() {
@@ -136,22 +122,15 @@
         }
     }
     NetworkAttributes[] mNetAttributes;
+    int mNetworksDefined;
 
     private static class RadioAttributes {
-        public String mName;
-        public int mPriority;
         public int mSimultaneity;
         public int mType;
         public RadioAttributes(String init) {
             String fragments[] = init.split(",");
-            mName = fragments[0].toLowerCase();
-            mPriority = Integer.parseInt(fragments[1]);
-            mSimultaneity = Integer.parseInt(fragments[2]);
-            if (mName.equals("wifi")) {
-                mType = ConnectivityManager.TYPE_WIFI;
-            } else {
-                mType = ConnectivityManager.TYPE_MOBILE;
-            }
+            mType = Integer.parseInt(fragments[0]);
+            mSimultaneity = Integer.parseInt(fragments[1]);
         }
     }
     RadioAttributes[] mRadioAttributes;
@@ -208,48 +187,87 @@
 
         mNetworkPreference = getPersistedNetworkPreference();
 
+        mRadioAttributes = new RadioAttributes[ConnectivityManager.MAX_RADIO_TYPE+1];
+        mNetAttributes = new NetworkAttributes[ConnectivityManager.MAX_NETWORK_TYPE+1];
+
         // Load device network attributes from resources
-        mNetAttributes = new NetworkAttributes[
-                ConnectivityManager.MAX_NETWORK_TYPE+1];
-        mRadioAttributes = new RadioAttributes[
-                ConnectivityManager.MAX_RADIO_TYPE+1];
-        String[] naStrings = context.getResources().getStringArray(
-                com.android.internal.R.array.networkAttributes);
-        // TODO - what if the setting has gaps/unknown types?
-        for (String a : naStrings) {
-            NetworkAttributes n = new NetworkAttributes(a);
-            mNetAttributes[n.mType] = n;
-        }
         String[] raStrings = context.getResources().getStringArray(
                 com.android.internal.R.array.radioAttributes);
-        for (String a : raStrings) {
-            RadioAttributes r = new RadioAttributes(a);
+        for (String raString : raStrings) {
+            RadioAttributes r = new RadioAttributes(raString);
+            if (r.mType > ConnectivityManager.MAX_RADIO_TYPE) {
+                Log.e(TAG, "Error in radioAttributes - ignoring attempt to define type " + r.mType);
+                continue;
+            }
+            if (mRadioAttributes[r.mType] != null) {
+                Log.e(TAG, "Error in radioAttributes - ignoring attempt to redefine type " +
+                        r.mType);
+                continue;
+            }
             mRadioAttributes[r.mType] = r;
         }
 
-        // high priority first
-        mPriorityList = new int[naStrings.length];
-        {
-            int priority = 0; //lowest
-            int nextPos = naStrings.length-1;
-            while (nextPos>-1) {
-                for (int i = 0; i < mNetAttributes.length; i++) {
-                    if(mNetAttributes[i].mPriority == priority) {
-                        mPriorityList[nextPos--] = i;
-                    }
+        String[] naStrings = context.getResources().getStringArray(
+                com.android.internal.R.array.networkAttributes);
+        for (String naString : naStrings) {
+            try {
+                NetworkAttributes n = new NetworkAttributes(naString);
+                if (n.mType > ConnectivityManager.MAX_NETWORK_TYPE) {
+                    Log.e(TAG, "Error in networkAttributes - ignoring attempt to define type " +
+                            n.mType);
+                    continue;
                 }
-                priority++;
+                if (mNetAttributes[n.mType] != null) {
+                    Log.e(TAG, "Error in networkAttributes - ignoring attempt to redefine type " +
+                            n.mType);
+                    continue;
+                }
+                if (mRadioAttributes[n.mRadio] == null) {
+                    Log.e(TAG, "Error in networkAttributes - ignoring attempt to use undefined " +
+                            "radio " + n.mRadio + " in network type " + n.mType);
+                    continue;
+                }
+                mNetAttributes[n.mType] = n;
+                mNetworksDefined++;
+            } catch(Exception e) {
+                // ignore it - leave the entry null
             }
         }
 
-        mNetRequestersPids =
-                new ArrayList[ConnectivityManager.MAX_NETWORK_TYPE+1];
-        for (int i=0; i<=ConnectivityManager.MAX_NETWORK_TYPE; i++) {
+        // high priority first
+        mPriorityList = new int[mNetworksDefined];
+        {
+            int insertionPoint = mNetworksDefined-1;
+            int currentLowest = 0;
+            int nextLowest = 0;
+            while (insertionPoint > -1) {
+                for (NetworkAttributes na : mNetAttributes) {
+                    if (na == null) continue;
+                    if (na.mPriority < currentLowest) continue;
+                    if (na.mPriority > currentLowest) {
+                        if (na.mPriority < nextLowest || nextLowest == 0) {
+                            nextLowest = na.mPriority;
+                        }
+                        continue;
+                    }
+                    mPriorityList[insertionPoint--] = na.mType;
+                }
+                currentLowest = nextLowest;
+                nextLowest = 0;
+            }
+        }
+
+        mNetRequestersPids = new ArrayList[ConnectivityManager.MAX_NETWORK_TYPE+1];
+        for (int i : mPriorityList) {
             mNetRequestersPids[i] = new ArrayList();
         }
 
         mFeatureUsers = new ArrayList();
 
+        mNumDnsEntries = 0;
+
+        mTestMode = SystemProperties.get("cm.test.mode").equals("true")
+                && SystemProperties.get("ro.build.type").equals("eng");
         /*
          * Create the network state trackers for Wi-Fi and mobile
          * data. Maybe this could be done with a factory class,
@@ -257,49 +275,33 @@
          * the number of different network types is not going
          * to change very often.
          */
-        if (DBG) Log.v(TAG, "Starting Wifi Service.");
-        WifiStateTracker wst = new WifiStateTracker(context, mHandler);
-        WifiService wifiService = new WifiService(context, wst);
-        ServiceManager.addService(Context.WIFI_SERVICE, wifiService);
-        mNetTrackers[ConnectivityManager.TYPE_WIFI] = wst;
+        for (int netType : mPriorityList) {
+            switch (mNetAttributes[netType].mRadio) {
+            case ConnectivityManager.TYPE_WIFI:
+                if (DBG) Log.v(TAG, "Starting Wifi Service.");
+                WifiStateTracker wst = new WifiStateTracker(context, mHandler);
+                WifiService wifiService = new WifiService(context, wst);
+                ServiceManager.addService(Context.WIFI_SERVICE, wifiService);
+                mNetTrackers[ConnectivityManager.TYPE_WIFI] = wst;
+                wst.startMonitoring();
 
-        mNetTrackers[ConnectivityManager.TYPE_MOBILE] =
-                new MobileDataStateTracker(context, mHandler,
-                ConnectivityManager.TYPE_MOBILE, Phone.APN_TYPE_DEFAULT,
-                "MOBILE");
-
-        mNetTrackers[ConnectivityManager.TYPE_MOBILE_MMS] =
-                new MobileDataStateTracker(context, mHandler,
-                ConnectivityManager.TYPE_MOBILE_MMS, Phone.APN_TYPE_MMS,
-                "MOBILE_MMS");
-
-        mNetTrackers[ConnectivityManager.TYPE_MOBILE_SUPL] =
-                new MobileDataStateTracker(context, mHandler,
-                ConnectivityManager.TYPE_MOBILE_SUPL, Phone.APN_TYPE_SUPL,
-                "MOBILE_SUPL");
-
-        mNetTrackers[ConnectivityManager.TYPE_MOBILE_DUN] =
-                new MobileDataStateTracker(context, mHandler,
-                ConnectivityManager.TYPE_MOBILE_DUN, Phone.APN_TYPE_DUN,
-                "MOBILE_DUN");
-
-        mNetTrackers[ConnectivityManager.TYPE_MOBILE_HIPRI] =
-                new MobileDataStateTracker(context, mHandler,
-                ConnectivityManager.TYPE_MOBILE_HIPRI, Phone.APN_TYPE_HIPRI,
-                "MOBILE_HIPRI");
-
-        mNumDnsEntries = 0;
-
-        mTestMode = SystemProperties.get("cm.test.mode").equals("true")
-                && SystemProperties.get("ro.build.type").equals("eng");
-
-        for (NetworkStateTracker t : mNetTrackers)
-            t.startMonitoring();
-
-        // Constructing this starts it too
-        mWifiWatchdogService = new WifiWatchdogService(context, wst);
+                // Constructing this starts it too
+                mWifiWatchdogService = new WifiWatchdogService(context, wst);
+                break;
+            case ConnectivityManager.TYPE_MOBILE:
+                mNetTrackers[netType] = new MobileDataStateTracker(context, mHandler,
+                    netType, mNetAttributes[netType].mName);
+                mNetTrackers[netType].startMonitoring();
+                break;
+            default:
+                Log.e(TAG, "Trying to create a DataStateTracker for an unknown radio type " +
+                        mNetAttributes[netType].mRadio);
+                continue;
+            }
+        }
     }
 
+
     /**
      * Sets the preferred network.
      * @param preference the new preference
@@ -307,6 +309,7 @@
     public synchronized void setNetworkPreference(int preference) {
         enforceChangePermission();
         if (ConnectivityManager.isNetworkTypeValid(preference) &&
+                mNetAttributes[preference] != null &&
                 mNetAttributes[preference].isDefault()) {
             if (mNetworkPreference != preference) {
                 persistNetworkPreference(preference);
@@ -354,7 +357,7 @@
             return;
 
         for (int t=0; t <= ConnectivityManager.MAX_RADIO_TYPE; t++) {
-            if (t != mNetworkPreference &&
+            if (t != mNetworkPreference && mNetTrackers[t] != null &&
                     mNetTrackers[t].getNetworkInfo().isConnected()) {
                 if (DBG) {
                     Log.d(TAG, "tearing down " +
@@ -385,7 +388,7 @@
     public NetworkInfo getActiveNetworkInfo() {
         enforceAccessPermission();
         for (int type=0; type <= ConnectivityManager.MAX_NETWORK_TYPE; type++) {
-            if (!mNetAttributes[type].isDefault()) {
+            if (mNetAttributes[type] == null || !mNetAttributes[type].isDefault()) {
                 continue;
             }
             NetworkStateTracker t = mNetTrackers[type];
@@ -412,10 +415,10 @@
 
     public NetworkInfo[] getAllNetworkInfo() {
         enforceAccessPermission();
-        NetworkInfo[] result = new NetworkInfo[mNetTrackers.length];
+        NetworkInfo[] result = new NetworkInfo[mNetworksDefined];
         int i = 0;
         for (NetworkStateTracker t : mNetTrackers) {
-            result[i++] = t.getNetworkInfo();
+            if(t != null) result[i++] = t.getNetworkInfo();
         }
         return result;
     }
@@ -424,7 +427,7 @@
         boolean result = true;
         enforceChangePermission();
         for (NetworkStateTracker t : mNetTrackers) {
-            result = t.setRadio(turnOn) && result;
+            if (t != null) result = t.setRadio(turnOn) && result;
         }
         return result;
     }
@@ -492,7 +495,8 @@
                     ": " + feature);
         }
         enforceChangePermission();
-        if (!ConnectivityManager.isNetworkTypeValid(networkType)) {
+        if (!ConnectivityManager.isNetworkTypeValid(networkType) ||
+                mNetAttributes[networkType] == null) {
             return Phone.APN_REQUEST_FAILED;
         }
 
@@ -658,7 +662,10 @@
                 }
             }
             tracker =  mNetTrackers[usedNetworkType];
-            if(usedNetworkType != networkType) {
+            if (tracker == null) {
+                return -1;
+            }
+            if (usedNetworkType != networkType) {
                 Integer currentPid = new Integer(pid);
                 reassessPidDns(pid, true);
                 mNetRequestersPids[usedNetworkType].remove(currentPid);
@@ -696,9 +703,10 @@
         }
         NetworkStateTracker tracker = mNetTrackers[networkType];
 
-        if (!tracker.getNetworkInfo().isConnected() || tracker.isTeardownRequested()) {
+        if (tracker == null || !tracker.getNetworkInfo().isConnected() ||
+                tracker.isTeardownRequested()) {
             if (DBG) {
-                Log.d(TAG, "requestRouteToHost on down network (" + networkType + " - dropped");
+                Log.d(TAG, "requestRouteToHost on down network (" + networkType + ") - dropped");
             }
             return false;
         }
@@ -736,7 +744,7 @@
         int numConnectedNets = 0;
 
         for (NetworkStateTracker nt : mNetTrackers) {
-            if (nt.getNetworkInfo().isConnected() &&
+            if (nt != null && nt.getNetworkInfo().isConnected() &&
                     !nt.isTeardownRequested()) {
                 ++numConnectedNets;
             }
@@ -813,9 +821,8 @@
             int newPriority = -1;
             for (int checkType=0; checkType <=
                     ConnectivityManager.MAX_NETWORK_TYPE; checkType++) {
-                if (checkType == prevNetType) {
-                    continue;
-                }
+                if (checkType == prevNetType) continue;
+                if (mNetAttributes[checkType] == null) continue;
                 if (mNetAttributes[checkType].isDefault()) {
                     /* TODO - if we have multiple nets we could use
                      * we may want to put more thought into which we choose
@@ -824,11 +831,9 @@
                         newType = checkType;
                         break;
                     }
-                    if (mRadioAttributes[mNetAttributes[checkType].mRadio].
-                            mPriority > newPriority) {
+                    if (mNetAttributes[checkType].mPriority > newPriority) {
                         newType = checkType;
-                        newPriority = mRadioAttributes[mNetAttributes[newType].
-                                mRadio].mPriority;
+                        newPriority = mNetAttributes[newType].mPriority;
                     }
                 }
             }
@@ -1197,7 +1202,7 @@
         }
         pw.println();
         for (NetworkStateTracker nst : mNetTrackers) {
-            if (nst.getNetworkInfo().isConnected()) {
+            if (nst != null && nst.getNetworkInfo().isConnected()) {
                 pw.println("Active network: " + nst.getNetworkInfo().
                         getTypeName());
             }
diff --git a/services/java/com/android/server/Installer.java b/services/java/com/android/server/Installer.java
index fe3ad15..6a7d432 100644
--- a/services/java/com/android/server/Installer.java
+++ b/services/java/com/android/server/Installer.java
@@ -166,11 +166,17 @@
 		}
 	}
 
-    public int install(String name, int uid, int gid) {
+    public int install(String name, boolean useEncryptedFilesystem, int uid, int gid) {
         StringBuilder builder = new StringBuilder("install");
         builder.append(' ');
         builder.append(name);
         builder.append(' ');
+        if (useEncryptedFilesystem) {
+            builder.append('1');
+        } else {
+            builder.append('0');
+        }
+        builder.append(' ');
         builder.append(uid);
         builder.append(' ');
         builder.append(gid);
@@ -203,24 +209,42 @@
         return execute(builder.toString());
     }
 
-    public int remove(String name) {
+    public int remove(String name, boolean useEncryptedFilesystem) {
         StringBuilder builder = new StringBuilder("remove");
         builder.append(' ');
         builder.append(name);
+        builder.append(' ');
+        if (useEncryptedFilesystem) {
+            builder.append('1');
+        } else {
+            builder.append('0');
+        }
         return execute(builder.toString());
     }
 
-    public int deleteCacheFiles(String name) {
+    public int deleteCacheFiles(String name, boolean useEncryptedFilesystem) {
         StringBuilder builder = new StringBuilder("rmcache");
         builder.append(' ');
         builder.append(name);
+        builder.append(' ');
+        if (useEncryptedFilesystem) {
+            builder.append('1');
+        } else {
+            builder.append('0');
+        }
         return execute(builder.toString());
     }
     
-    public int clearUserData(String name) {
+    public int clearUserData(String name, boolean useEncryptedFilesystem) {
         StringBuilder builder = new StringBuilder("rmuserdata");
         builder.append(' ');
         builder.append(name);
+        builder.append(' ');
+        if (useEncryptedFilesystem) {
+            builder.append('1');
+        } else {
+            builder.append('0');
+        }
         return execute(builder.toString());
     }
     
@@ -249,7 +273,7 @@
     }
     
     public int getSizeInfo(String pkgName, String apkPath,
-            String fwdLockApkPath, PackageStats pStats) {
+            String fwdLockApkPath, PackageStats pStats, boolean useEncryptedFilesystem) {
         StringBuilder builder = new StringBuilder("getsize");
         builder.append(' ');
         builder.append(pkgName);
@@ -257,6 +281,12 @@
         builder.append(apkPath);
         builder.append(' ');
         builder.append(fwdLockApkPath != null ? fwdLockApkPath : "!");
+        builder.append(' ');
+        if (useEncryptedFilesystem) {
+            builder.append('1');
+        } else {
+            builder.append('0');
+        }
 
         String s = transaction(builder.toString());
         String res[] = s.split(" ");
diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java
index 3320a53..6ed488d 100644
--- a/services/java/com/android/server/PackageManagerService.java
+++ b/services/java/com/android/server/PackageManagerService.java
@@ -122,6 +122,8 @@
 
     private static final boolean GET_CERTIFICATES = true;
 
+    private static final String SYSTEM_PROPERTY_EFS_ENABLED = "persist.security.efs.enabled";
+
     private static final int REMOVE_EVENTS =
         FileObserver.CLOSE_WRITE | FileObserver.DELETE | FileObserver.MOVED_FROM;
     private static final int ADD_EVENTS =
@@ -154,6 +156,10 @@
     // This is where all application persistent data goes.
     final File mAppDataDir;
 
+    // If Encrypted File System feature is enabled, all application persistent data
+    // should go here instead.
+    final File mSecureAppDataDir;
+
     // This is the object monitoring the framework dir.
     final FileObserver mFrameworkInstallObserver;
 
@@ -416,6 +422,7 @@
 
             File dataDir = Environment.getDataDirectory();
             mAppDataDir = new File(dataDir, "data");
+            mSecureAppDataDir = new File(dataDir, "secure/data");
             mDrmAppPrivateInstallDir = new File(dataDir, "app-private");
 
             if (mInstaller == null) {
@@ -425,6 +432,7 @@
                 File miscDir = new File(dataDir, "misc");
                 miscDir.mkdirs();
                 mAppDataDir.mkdirs();
+                mSecureAppDataDir.mkdirs();
                 mDrmAppPrivateInstallDir.mkdirs();
             }
 
@@ -567,7 +575,7 @@
                 mAppInstallDir.mkdirs(); // scanDirLI() assumes this dir exists
             }
             //look for any incomplete package installations
-            ArrayList<String> deletePkgsList = mSettings.getListOfIncompleteInstallPackages();
+            ArrayList<PackageSetting> deletePkgsList = mSettings.getListOfIncompleteInstallPackages();
             //clean up list
             for(int i = 0; i < deletePkgsList.size(); i++) {
                 //clean up here
@@ -622,20 +630,20 @@
         }
     }
 
-    void cleanupInstallFailedPackage(String packageName) {
+    void cleanupInstallFailedPackage(PackageSetting pkgSettings) {
         if (mInstaller != null) {
-            int retCode = mInstaller.remove(packageName);
+            boolean useSecureFS = useEncryptedFilesystemForPackage(pkgSettings.pkg);
+            int retCode = mInstaller.remove(pkgSettings.name, useSecureFS);
             if (retCode < 0) {
                 Log.w(TAG, "Couldn't remove app data directory for package: "
-                           + packageName + ", retcode=" + retCode);
+                           + pkgSettings.name + ", retcode=" + retCode);
             }
         } else {
             //for emulator
-            PackageParser.Package pkg = mPackages.get(packageName);
-            File dataDir = new File(pkg.applicationInfo.dataDir);
+            File dataDir = new File(pkgSettings.pkg.applicationInfo.dataDir);
             dataDir.delete();
         }
-        mSettings.removePackageLP(packageName);
+        mSettings.removePackageLP(pkgSettings.name);
     }
 
     void readPermissions() {
@@ -2150,6 +2158,11 @@
         return performed ? DEX_OPT_PERFORMED : DEX_OPT_SKIPPED;
     }
 
+    private static boolean useEncryptedFilesystemForPackage(PackageParser.Package pkg) {
+        return Environment.isEncryptedFilesystemEnabled() &&
+                ((pkg.applicationInfo.flags & ApplicationInfo.FLAG_NEVER_ENCRYPT) == 0);
+    }
+    
     private PackageParser.Package scanPackageLI(
         File scanFile, File destCodeFile, File destResourceFile,
         PackageParser.Package pkg, int parseFlags, int scanMode) {
@@ -2358,8 +2371,9 @@
         }
 
         if (removeExisting) {
+            boolean useEncryptedFSDir = useEncryptedFilesystemForPackage(pkg);
             if (mInstaller != null) {
-                int ret = mInstaller.remove(pkgName);
+                int ret = mInstaller.remove(pkgName, useEncryptedFSDir);
                 if (ret != 0) {
                     String msg = "System package " + pkg.packageName
                             + " could not have data directory erased after signature change.";
@@ -2389,7 +2403,12 @@
             pkg.applicationInfo.dataDir = dataPath.getPath();
         } else {
             // This is a normal package, need to make its data directory.
-            dataPath = new File(mAppDataDir, pkgName);
+            boolean useEncryptedFSDir = useEncryptedFilesystemForPackage(pkg);
+            if (useEncryptedFSDir) {
+                dataPath = new File(mSecureAppDataDir, pkgName);
+            } else {
+                dataPath = new File(mAppDataDir, pkgName);
+            }
             if (dataPath.exists()) {
                 mOutPermissions[1] = 0;
                 FileUtils.getPermissions(dataPath.getPath(), mOutPermissions);
@@ -2402,7 +2421,7 @@
                         // If this is a system app, we can at least delete its
                         // current data so the application will still work.
                         if (mInstaller != null) {
-                            int ret = mInstaller.remove(pkgName);
+                            int ret = mInstaller.remove(pkgName, useEncryptedFSDir);
                             if(ret >= 0) {
                                 // Old data gone!
                                 String msg = "System package " + pkg.packageName
@@ -2413,7 +2432,7 @@
                                 recovered = true;
 
                                 // And now re-install the app.
-                                ret = mInstaller.install(pkgName, pkg.applicationInfo.uid,
+                                ret = mInstaller.install(pkgName, useEncryptedFSDir, pkg.applicationInfo.uid,
                                         pkg.applicationInfo.uid);
                                 if (ret == -1) {
                                     // Ack should not happen!
@@ -2453,7 +2472,7 @@
                     Log.v(TAG, "Want this data dir: " + dataPath);
                 //invoke installer to do the actual installation
                 if (mInstaller != null) {
-                    int ret = mInstaller.install(pkgName, pkg.applicationInfo.uid,
+                    int ret = mInstaller.install(pkgName, useEncryptedFSDir, pkg.applicationInfo.uid,
                             pkg.applicationInfo.uid);
                     if(ret < 0) {
                         // Error from installer
@@ -3810,7 +3829,13 @@
             PackageParser.Package pkg, boolean forwardLocked, boolean newInstall,
             String installerPackageName, PackageInstalledInfo res) {
         // Remember this for later, in case we need to rollback this install
-        boolean dataDirExists = (new File(mAppDataDir, pkgName)).exists();
+        boolean dataDirExists;
+
+        if (useEncryptedFilesystemForPackage(pkg)) {
+            dataDirExists = (new File(mSecureAppDataDir, pkgName)).exists();
+        } else {
+            dataDirExists = (new File(mAppDataDir, pkgName)).exists();
+        }
         res.name = pkgName;
         synchronized(mPackages) {
             if (mPackages.containsKey(pkgName) || mAppDirs.containsKey(destFilePath)) {
@@ -4540,8 +4565,9 @@
             deletedPs = mSettings.mPackages.get(packageName);
         }
         if ((flags&PackageManager.DONT_DELETE_DATA) == 0) {
+            boolean useEncryptedFSDir = useEncryptedFilesystemForPackage(p);
             if (mInstaller != null) {
-                int retCode = mInstaller.remove(packageName);
+                int retCode = mInstaller.remove(packageName, useEncryptedFSDir);
                 if (retCode < 0) {
                     Log.w(TAG, "Couldn't remove app data or cache directory for package: "
                                + packageName + ", retcode=" + retCode);
@@ -4783,6 +4809,8 @@
                 p = ps.pkg;
             }
         }
+        boolean useEncryptedFSDir = false;
+
         if(!dataOnly) {
             //need to check this only for fully installed applications
             if (p == null) {
@@ -4794,9 +4822,10 @@
                 Log.w(TAG, "Package " + packageName + " has no applicationInfo.");
                 return false;
             }
+            useEncryptedFSDir = useEncryptedFilesystemForPackage(p);
         }
         if (mInstaller != null) {
-            int retCode = mInstaller.clearUserData(packageName);
+            int retCode = mInstaller.clearUserData(packageName, useEncryptedFSDir);
             if (retCode < 0) {
                 Log.w(TAG, "Couldn't remove cache files for package: "
                         + packageName);
@@ -4847,8 +4876,9 @@
             Log.w(TAG, "Package " + packageName + " has no applicationInfo.");
             return false;
         }
+        boolean useEncryptedFSDir = useEncryptedFilesystemForPackage(p);
         if (mInstaller != null) {
-            int retCode = mInstaller.deleteCacheFiles(packageName);
+            int retCode = mInstaller.deleteCacheFiles(packageName, useEncryptedFSDir);
             if (retCode < 0) {
                 Log.w(TAG, "Couldn't remove cache files for package: "
                            + packageName);
@@ -4910,9 +4940,10 @@
             }
             publicSrcDir = isForwardLocked(p) ? applicationInfo.publicSourceDir : null;
         }
+        boolean useEncryptedFSDir = useEncryptedFilesystemForPackage(p);
         if (mInstaller != null) {
             int res = mInstaller.getSizeInfo(packageName, p.mPath,
-                    publicSrcDir, pStats);
+                    publicSrcDir, pStats, useEncryptedFSDir);
             if (res < 0) {
                 return false;
             } else {
@@ -6061,11 +6092,18 @@
         Settings() {
             File dataDir = Environment.getDataDirectory();
             File systemDir = new File(dataDir, "system");
+            // TODO(oam): This secure dir creation needs to be moved somewhere else (later)
+            File systemSecureDir = new File(dataDir, "secure/system");
             systemDir.mkdirs();
+            systemSecureDir.mkdirs();
             FileUtils.setPermissions(systemDir.toString(),
                     FileUtils.S_IRWXU|FileUtils.S_IRWXG
                     |FileUtils.S_IROTH|FileUtils.S_IXOTH,
                     -1, -1);
+            FileUtils.setPermissions(systemSecureDir.toString(),
+                    FileUtils.S_IRWXU|FileUtils.S_IRWXG
+                    |FileUtils.S_IROTH|FileUtils.S_IXOTH,
+                    -1, -1);
             mSettingsFilename = new File(systemDir, "packages.xml");
             mBackupSettingsFilename = new File(systemDir, "packages-backup.xml");
         }
@@ -6726,15 +6764,15 @@
             return mReadMessages.toString();
         }
 
-        ArrayList<String> getListOfIncompleteInstallPackages() {
+        ArrayList<PackageSetting> getListOfIncompleteInstallPackages() {
             HashSet<String> kList = new HashSet<String>(mPackages.keySet());
             Iterator<String> its = kList.iterator();
-            ArrayList<String> ret = new ArrayList<String>();
+            ArrayList<PackageSetting> ret = new ArrayList<PackageSetting>();
             while(its.hasNext()) {
                 String key = its.next();
                 PackageSetting ps = mPackages.get(key);
                 if(ps.getInstallStatus() == PKG_INSTALL_INCOMPLETE) {
-                    ret.add(key);
+                    ret.add(ps);
                 }
             }
             return ret;
diff --git a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java
index 422cc19..75e8b65 100755
--- a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java
@@ -561,15 +561,7 @@
     public DataState getDataConnectionState() {
         DataState ret = DataState.DISCONNECTED;
 
-        if ((SystemProperties.get("adb.connected", "").length() > 0)
-                && (SystemProperties.get("android.net.use-adb-networking", "")
-                        .length() > 0)) {
-            // We're connected to an ADB host and we have USB networking
-            // turned on. No matter what the radio state is,
-            // we report data connected
-
-            ret = DataState.CONNECTED;
-        } else if (mSST == null) {
+        if (mSST == null) {
              // Radio Technology Change is ongoning, dispose() and removeReferences() have
              // already been called
 
diff --git a/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java b/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java
index 2843cde..33d150a 100755
--- a/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java
@@ -293,15 +293,7 @@
     public DataState getDataConnectionState() {
         DataState ret = DataState.DISCONNECTED;
 
-        if ((SystemProperties.get("adb.connected", "").length() > 0)
-                && (SystemProperties.get("android.net.use-adb-networking", "")
-                .length() > 0)) {
-            // We're connected to an ADB host and we have USB networking
-            // turned on. No matter what the radio state is,
-            // we report data connected
-
-            ret = DataState.CONNECTED;
-        } else if (mSST == null) {
+        if (mSST == null) {
             // Radio Technology Change is ongoning, dispose() and removeReferences() have
             // already been called
 
diff --git a/tests/AndroidTests/src/com/android/unit_tests/UriTest.java b/tests/AndroidTests/src/com/android/unit_tests/UriTest.java
index d17e2c3..42066d9 100644
--- a/tests/AndroidTests/src/com/android/unit_tests/UriTest.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/UriTest.java
@@ -541,4 +541,33 @@
         assertEquals(nestedUrl,
                 Uri.decode(uri.getQueryParameters("nested").get(0)));
     }
+
+    public void testGetQueryParameterEdgeCases() {
+        Uri uri;
+
+        // key at beginning of URL
+        uri = Uri.parse("http://test/").buildUpon()
+            .appendQueryParameter("key", "a b")
+            .appendQueryParameter("keya", "c d")
+            .appendQueryParameter("bkey", "e f")
+            .build();
+        assertEquals("a b", uri.getQueryParameter("key"));
+
+        // key in middle of URL
+        uri = Uri.parse("http://test/").buildUpon()
+            .appendQueryParameter("akeyb", "a b")
+            .appendQueryParameter("keya", "c d")
+            .appendQueryParameter("key", "e f")
+            .appendQueryParameter("bkey", "g h")
+            .build();
+        assertEquals("e f", uri.getQueryParameter("key"));
+
+        // key at end of URL
+        uri = Uri.parse("http://test/").buildUpon()
+            .appendQueryParameter("akeyb", "a b")
+            .appendQueryParameter("keya", "c d")
+            .appendQueryParameter("key", "y z")
+            .build();
+        assertEquals("y z", uri.getQueryParameter("key"));
+    }
 }
diff --git a/tools/preload/20080522.compiled b/tools/preload/20080522.compiled
new file mode 100644
index 0000000..a2af422
--- /dev/null
+++ b/tools/preload/20080522.compiled
Binary files differ
diff --git a/tools/preload/20090811.compiled b/tools/preload/20090811.compiled
new file mode 100644
index 0000000..6dbeca0
--- /dev/null
+++ b/tools/preload/20090811.compiled
Binary files differ
diff --git a/tools/preload/20090922.compiled b/tools/preload/20090922.compiled
deleted file mode 100644
index fc66405..0000000
--- a/tools/preload/20090922.compiled
+++ /dev/null
Binary files differ
diff --git a/tools/preload/Android.mk b/tools/preload/Android.mk
index 65b7d1a..f325870 100644
--- a/tools/preload/Android.mk
+++ b/tools/preload/Android.mk
@@ -8,7 +8,6 @@
 	MemoryUsage.java \
 	Operation.java \
 	Policy.java \
-	PrintBugReports.java \
 	PrintCsv.java \
 	PrintHtmlDiff.java \
 	PrintPsTree.java \
diff --git a/tools/preload/LoadedClass.java b/tools/preload/LoadedClass.java
index 02cff10..86e5dfc 100644
--- a/tools/preload/LoadedClass.java
+++ b/tools/preload/LoadedClass.java
@@ -15,11 +15,7 @@
  */
 
 import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 /**
  * A loaded class.
@@ -54,30 +50,6 @@
         this.systemClass = systemClass;
     }
 
-    /**
-     * Returns true if this class was loaded by more than one proc.
-     */
-    boolean isSharable() {
-        Set<String> procNames = new HashSet<String>();
-        for (Operation load : loads) {
-            if (load.process.fromZygote()) {
-                procNames.add(load.process.name);
-                if (procNames.size() > 1) {
-                    return true;
-                }
-            }
-        }
-        for (Operation init : initializations) {
-            if (init.process.fromZygote()) {
-                procNames.add(init.process.name);
-                if (procNames.size() > 1) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
     void measureMemoryUsage() {
         this.memoryUsage = MemoryUsage.forClass(name);
     }
diff --git a/tools/preload/PrintBugReports.java b/tools/preload/PrintBugReports.java
deleted file mode 100644
index a6d4187..0000000
--- a/tools/preload/PrintBugReports.java
+++ /dev/null
@@ -1,272 +0,0 @@
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.io.DataInputStream;
-import java.io.FileInputStream;
-import java.util.Map;
-import java.util.List;
-import java.util.HashMap;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.Set;
-import java.util.TreeSet;
-import java.util.Iterator;
-
-/**
- * Prints HTML reports that can be attached to bugs.
- */
-public class PrintBugReports {
-
-    private static final String DIR = "out/preload";
-    private static boolean PRINT_MEMORY_USAGE = false;
-
-    private static final Comparator<LoadedClass> DEFAULT_ORDER
-            = new Comparator<LoadedClass>() {
-        public int compare(LoadedClass a, LoadedClass b) {
-            // Longest load time first.
-            int diff = b.medianTimeMicros() - a.medianTimeMicros();
-            if (diff != 0) {
-                return diff;
-            }
-
-            return a.name.compareTo(b.name);
-        }
-    };
-
-    public static void main(String[] args)
-            throws IOException, ClassNotFoundException {
-        Root root = Root.fromFile(args[0]);
-        String baseUrl = "";
-        if (args.length > 1) {
-            baseUrl = args[1];
-        }
-
-        new File(DIR).mkdirs();
-
-        Map<String, List<Proc>> procsByName = new HashMap<String, List<Proc>>();
-        for (Proc proc : root.processes.values()) {
-            if (proc.fromZygote()) {
-                List<Proc> procs = procsByName.get(proc.name);
-                if (procs == null) {
-                    procs = new ArrayList<Proc>();
-                    procsByName.put(proc.name, procs);
-                }
-                procs.add(proc);
-            }
-        }
-
-        Set<LoadedClass> coreClasses = new TreeSet<LoadedClass>(DEFAULT_ORDER);
-        Set<LoadedClass> frameworkClasses = new TreeSet<LoadedClass>(DEFAULT_ORDER);
-
-        for (List<Proc> procs : procsByName.values()) {
-            Proc first = procs.get(0);
-            Set<LoadedClass> classes = new TreeSet<LoadedClass>(DEFAULT_ORDER);
-            Set<LoadedClass> sharedClasses
-                    = new TreeSet<LoadedClass>(DEFAULT_ORDER);
-            for (Proc proc : procs) {
-                for (Operation operation : proc.operations) {
-                    LoadedClass clazz = operation.loadedClass;
-                    if (clazz.isSharable() && clazz.systemClass) {
-                        if (clazz.name.startsWith("dalvik")
-                                || clazz.name.startsWith("org")
-                                || clazz.name.startsWith("java")) {
-                            coreClasses.add(clazz);
-                        } else {
-                            frameworkClasses.add(clazz);
-                        }
-                        sharedClasses.add(clazz);
-                    } else {
-                        classes.add(clazz);
-                    }
-                }
-            }
-            printApplicationHtml(first.name, root.baseline, classes,
-                    sharedClasses);
-        }
-
-        printHtml("core", root.baseline, coreClasses);
-        printHtml("framework", root.baseline, frameworkClasses);
-
-        PrintStream out = new PrintStream(DIR + "/toc.html");
-        out.println("<html><body>");
-        out.println("<a href='" + baseUrl
-                + "/core.html'>core</a><br/>");
-        out.println("<a href='" + baseUrl
-                + "/framework.html'>framework</a><br/>");
-
-        for (String s : new TreeSet<String>(procsByName.keySet())) {
-            out.println("<a href='" + baseUrl + "/"
-                    + s + ".html'>" + s + "</a><br/>");
-        }
-        out.println("</body></html>");
-        out.close();
-    }
-
-    static void printApplicationHtml(String name, MemoryUsage baseline,
-            Iterable<LoadedClass> classes, Iterable<LoadedClass> sharedClasses)
-            throws IOException {
-        PrintStream out = new PrintStream(DIR + "/" + name + ".html");
-
-        printHeader(name, out);
-        out.println("<body>");
-        out.println("<h1><tt>" + name + "</tt></h1>");
-        out.println("<p><i>Click a column header to sort by that column.</i></p>");
-
-        out.println("<p><a href=\"#shared\">Shared Classes</a></p>");
-
-        out.println("<h3>Application-Specific Classes</h3>");
-
-        out.println("<p>These classes were loaded only by " + name + ". If"
-                + " the value of the <i>Preloaded</i> column is <i>yes</i> or "
-                + " <i>no</i>, the class is in the boot classpath; if it's not"
-                + " part of the published API, consider"
-                + " moving it into the APK.</p>");
-
-        printTable(out, baseline, classes, false);
-
-        out.println("<p><a href=\"#\">Top</a></p>");
-
-        out.println("<a name=\"shared\"/><h3>Shared Classes</h3>");
-
-        out.println("<p>These classes are in the boot classpath. They are used"
-                + " by " + name + " as well as others.");
-
-        printTable(out, baseline, sharedClasses, true);
-
-        out.println("</body></html>");
-        out.close();
-    }
-
-    static void printHtml(String name, MemoryUsage baseline,
-            Iterable<LoadedClass> classes)
-            throws IOException {
-        PrintStream out = new PrintStream(DIR + "/" + name + ".html");
-
-        printHeader(name, out);
-        out.println("<body>");
-        out.println("<h1><tt>" + name + "</tt></h1>");
-        out.println("<p><i>Click a column header to sort by that column.</i></p>");
-
-        printTable(out, baseline, classes, true);
-
-        out.println("</body></html>");
-        out.close();
-    }
-
-    private static void printHeader(String name, PrintStream out)
-            throws IOException {
-        out.println("<html><head>");
-        out.println("<title>" + name + "</title>");
-        out.println("<style>");
-        out.println("a, th, td, h1, h3, p { font-family: arial }");
-        out.println("th, td { font-size: small }");
-        out.println("</style>");
-        out.println("<script language=\"javascript\">");
-        out.write(SCRIPT);
-        out.println("</script>");
-        out.println("</head>");
-    }
-
-    static void printTable(PrintStream out, MemoryUsage baseline,
-            Iterable<LoadedClass> classes, boolean showProcNames) {
-        out.println("<p><table border=\"1\" cellpadding=\"5\""
-                + " class=\"sortable\" cellspacing=\"0\">");
-
-        out.println("<thead bgcolor=\"#eeeeee\"><tr>");
-        out.println("<th>Name</th>");
-        out.println("<th>Preloaded</th>");
-        out.println("<th>Total Time (us)</th>");
-        out.println("<th>Load Time (us)</th>");
-        out.println("<th>Init Time (us)</th>");
-        if (PRINT_MEMORY_USAGE) {
-            out.println("<th>Total Heap (B)</th>");
-            out.println("<th>Dalvik Heap (B)</th>");
-            out.println("<th>Native Heap (B)</th>");
-            out.println("<th>Total Pages (kB)</th>");
-            out.println("<th>Dalvik Pages (kB)</th>");
-            out.println("<th>Native Pages (kB)</th>");
-            out.println("<th>Other Pages (kB)</th>");
-        }
-        if (showProcNames) {
-            out.println("<th>Loaded by</th>");
-        }
-        out.println("</tr></thead>");
-
-        for (LoadedClass clazz : classes) {
-            out.println("<tr>");
-            out.println("<td>" + clazz.name + "</td>");
-
-            out.println("<td>" + ((clazz.systemClass)
-                    ? ((clazz.preloaded) ? "yes" : "no") : "n/a") + "</td>");
-
-            out.println("<td>" + clazz.medianTimeMicros() + "</td>");
-            out.println("<td>" + clazz.medianLoadTimeMicros() + "</td>");
-            out.println("<td>" + clazz.medianInitTimeMicros() + "</td>");
-
-            if (PRINT_MEMORY_USAGE) {
-                if (clazz.memoryUsage.isAvailable()) {
-                    MemoryUsage subtracted
-                            = clazz.memoryUsage.subtract(baseline);
-
-                    long totalHeap = subtracted.javaHeapSize()
-                            + subtracted.nativeHeapSize;
-                    out.println("<td>" + totalHeap + "</td>");
-                    out.println("<td>" + subtracted.javaHeapSize() + "</td>");
-                    out.println("<td>" + subtracted.nativeHeapSize + "</td>");
-
-                    out.println("<td>" + subtracted.totalPages() + "</td>");
-                    out.println("<td>" + subtracted.javaPagesInK() + "</td>");
-                    out.println("<td>" + subtracted.nativePagesInK() + "</td>");
-                    out.println("<td>" + subtracted.otherPagesInK() + "</td>");
-                } else {
-                    for (int i = 0; i < 7; i++) {
-                        out.println("<td>&nbsp;</td>");
-                    }
-                }
-            }
-
-            if (showProcNames) {
-                out.println("<td>");
-                Set<String> procNames = new TreeSet<String>();
-                for (Operation op : clazz.loads) {
-                    procNames.add(op.process.name);
-                }
-                for (Operation op : clazz.initializations) {
-                    procNames.add(op.process.name);
-                }
-                if (procNames.size() <= 3) {
-                    for (String name : procNames) {
-                        out.print(name + "<br/>");
-                    }
-                } else {
-                    Iterator<String> i = procNames.iterator();
-                    out.print(i.next() + "<br/>");
-                    out.print(i.next() + "<br/>");
-                    out.print("...and " + (procNames.size() - 2)
-                            + " others.");
-                }
-                out.println("</td>");
-            }
-
-            out.println("</tr>");
-        }
-
-        out.println("</table></p>");
-    }
-
-    static byte[] SCRIPT;
-    static {
-        try {
-            File script = new File(
-                    "frameworks/base/tools/preload/sorttable.js");
-            int length = (int) script.length();
-            SCRIPT = new byte[length];
-            DataInputStream in = new DataInputStream(
-                    new FileInputStream(script));
-            in.readFully(SCRIPT);
-            in.close();
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-    }
-}
diff --git a/tools/preload/Root.java b/tools/preload/Root.java
index 3f12dea..0bc29bf 100644
--- a/tools/preload/Root.java
+++ b/tools/preload/Root.java
@@ -46,8 +46,7 @@
     final Map<String, LoadedClass> loadedClasses
             = new HashMap<String, LoadedClass>();
 
-//    MemoryUsage baseline = MemoryUsage.baseline();
-    MemoryUsage baseline = MemoryUsage.NOT_AVAILABLE;
+    MemoryUsage baseline = MemoryUsage.baseline();
 
     /**
      * Records class loads and initializations.
@@ -74,7 +73,7 @@
                     if (loadedClass.systemClass) {
                         // Only measure memory for classes in the boot
                         // classpath.
-//                        loadedClass.measureMemoryUsage();
+                        loadedClass.measureMemoryUsage();
                     }
                     loadedClasses.put(name, loadedClass);
                 }
diff --git a/tools/preload/WritePreloadedClassFile.java b/tools/preload/WritePreloadedClassFile.java
index 757d17d3..96c539b 100644
--- a/tools/preload/WritePreloadedClassFile.java
+++ b/tools/preload/WritePreloadedClassFile.java
@@ -32,7 +32,7 @@
     /**
      * Preload any class that take longer to load than MIN_LOAD_TIME_MICROS us.
      */
-    static final int MIN_LOAD_TIME_MICROS = 1000;
+    static final int MIN_LOAD_TIME_MICROS = 1250;
 
     public static void main(String[] args) throws IOException,
             ClassNotFoundException {
diff --git a/tools/preload/preload.ipr b/tools/preload/preload.ipr
index dddca3b..0c9621c 100644
--- a/tools/preload/preload.ipr
+++ b/tools/preload/preload.ipr
@@ -364,7 +364,7 @@
   </component>
   <component name="ProjectFileVersion" converted="true" />
   <component name="ProjectKey">
-    <option name="state" value="project:///Volumes/Android/eclair/frameworks/base/tools/preload/preload.ipr" />
+    <option name="state" value="project:///Volumes/Android/donut/frameworks/base/tools/preload/preload.ipr" />
   </component>
   <component name="ProjectModuleManager">
     <modules>
diff --git a/tools/preload/sorttable.js b/tools/preload/sorttable.js
index f03859e..25bccb2 100644
--- a/tools/preload/sorttable.js
+++ b/tools/preload/sorttable.js
@@ -6,7 +6,7 @@
   
   Instructions:
   Download this file
-  Add <script src="sorttable.js"> to your HTML
+  Add <script src="sorttable.js"></script> to your HTML
   Add class="sortable" to any table you'd like to make sortable
   Click on the headers to sort
   
@@ -88,7 +88,6 @@
 	      }
 	      // make it clickable to sort
 	      headrow[i].sorttable_columnindex = i;
-	      headrow[i].style.cursor = "pointer";
 	      headrow[i].sorttable_tbody = table.tBodies[0];
 	      dean_addEvent(headrow[i],"click", function(e) {
 
diff --git a/vpn/java/android/net/vpn/VpnManager.java b/vpn/java/android/net/vpn/VpnManager.java
index 6df612e..ce40b5d 100644
--- a/vpn/java/android/net/vpn/VpnManager.java
+++ b/vpn/java/android/net/vpn/VpnManager.java
@@ -16,11 +16,15 @@
 
 package android.net.vpn;
 
+import java.io.File;
+
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.ServiceConnection;
+import android.os.Environment;
+import android.os.SystemProperties;
 import android.util.Log;
 
 /**
@@ -65,7 +69,7 @@
     /** Error code to indicate a successful connection. */
     public static final int VPN_ERROR_NO_ERROR = 0;
 
-    public static final String PROFILES_PATH = "/data/misc/vpn/profiles";
+    public static final String PROFILES_PATH = "/misc/vpn/profiles";
 
     private static final String PACKAGE_PREFIX =
             VpnManager.class.getPackage().getName() + ".";
@@ -77,7 +81,13 @@
     private static final String ACTION_VPN_SETTINGS =
             PACKAGE_PREFIX + "SETTINGS";
 
-    private static final String TAG = VpnManager.class.getSimpleName();
+    public static final String TAG = VpnManager.class.getSimpleName();
+
+    // TODO(oam): Test VPN when EFS is enabled (will do later)...
+    public static String getProfilePath() {
+        // This call will return the correct path if Encrypted FS is enabled or not.
+        return Environment.getSecureDataDirectory().getPath() + PROFILES_PATH;
+    }
 
     /**
      * Returns all supported VPN types.